Allow mounting of multiple volumes via mass storage (framework part)

(cherry-picked from CM10)

The volumes to mount is taken from storage_list.xml (allowMassStorage)
rather than ro.additionalmounts in CM7.

Hand ported from the following patches:

commit 0233209827d95221399b1fe0185f79863fc6bf26
Author: Tony Layher <layhertony@gmail.com>
Date:   Sun Jan 2 12:46:38 2011 -0500

    forward port of 93bb95929a0c017498625a87654b4d114fe17b96 to allow mounting and sharing of mulitple volumes to MountService.

    Change-Id: I9fa3994e6e7b85360b451f57c1cdd4df921bc035

(the second part of the above patch was not ported)

commit 678fadf517126c8468ef2d8dcaea9c9fce96035b
Author: Josh Stone <cuviper@gmail.com>
Date:   Sun Nov 7 13:38:58 2010 -0800

    MountService: Remount all volumes after USB disconnect

    If USB was removed while UMS was enabled, the MountService was only
    remounting the primary share.  Any other shares, like the HTC Inc's
    emmc, were left in limbo.  This patch now iterates over *all* shared
    volumes to remount after disconnect.

    Change-Id: Ie6fd49ad80ba6fa0e4e194a386549cac786b4bbe
    Signed-off-by: Josh Stone <cuviper@gmail.com>

commit b1da9ed003edcd10ccda56fdf087e8f1b0f77b2a
Author: Josh Stone <cuviper@gmail.com>
Date:   Sat Jan 22 12:03:53 2011 -0800

    MountService: Only notify PackageManager for true ASEC changes

    MountService can be dealing with multiple mounts (emmc, sdcard), but
    only the EXTERNAL_STORAGE has any ASEC mounts on it.  Since the PMS
    updateExternalMediaStatus doesn't specify the path, we need to make sure
    it's only called for the real ASEC mount.  Otherwise we get into nasty
    race conditions when multiple mounts are coming and going, like during
    UMS transitions, and sdcard-installed apps tend to break.

    Change-Id: I85c6a601e84afd30b44270b0892686c2d864ce8d

commit c8c58f3d14fbb8c77ab1e90541e59fb74bef54cf
Author: Josh Stone <cuviper@gmail.com>
Date:   Sun Mar 6 12:34:50 2011 -0800

    MountService: Unmount secondary volumes more carefully

    Use the same message handler for unmounting both the ASEC external-
    storage path and any secondary paths like emmc.  This seems to help with
    additional race conditions encountered on Inc.

    Change-Id: Icca71756fa6721bd85da1f35b8b8c7fc7caa1eb1

commit 47495ab860ed97499e0c4268bf40b1f9c429bf99
Author: atinm <atinm.dev@gmail.com>
Date:   Sun Apr 10 14:50:41 2011 -0400

    Allow multiple shareable SD Cards by using getShareableVolumes()
    to get all the volumes that are shareable and allowing
    sharing/unsharing for all of them rather than just the hardcoded
    getExternalStorage calls.

    Unmount immediately if PM is not updating and not an ASEC
    mount. Change from Josh Stone.
    Change-Id: Iaf1a7a4484deac373e1c1d7bf16d5f22ca49fd64

    Only allow package manager for sdcard (packages aren't on
    external card).

    Change-Id: I0d148ea52dc1285905a9dd061d1ceedcfb761b52

    Take out extra logging.

    Change-Id: I6beb007700ef4be04c3eb273bbf2069c87b30011

Change-Id: I5ea83afeda6cdaf63dd15857b3827bb00afbd6d2
input: Fix workaround for broken hardware keyboard support

Using a wrong reference to mHardKeyboardAvailable caused device config
to never report physical keyboards.

Change-Id: I9b64e2d89512436c17fa8929464e2b727fba1cf3
Do not set the network mode differently for LTE+CDMA

ro.telephony.default_network can be set if needed to set a different
value for LTE+CDMA. No need to hardcode preferred network mode in the source code.

Change-Id: Iae65f72a6a3bc31d500c5ecec87368a6f2a5d117

Conflicts:

	packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
frameworks/base: Support for LTE network modes

Change-Id: I93c102f92ff2d10856d91108bb50fe5c0f06ad66
Cache resource ID lookups in aapt

This speeds up certain workloads considerably, particularly
those involved in buildling apps via the SDK.  Windows-based
use should particularly benefit from the change.

Change-Id: I29f4b3a77400b201ee219729cc28a5e359c0c5e8
Camera : Powerkey shutter (1/2)

Allows user to take use power key to take pictures/videos

Change-Id: I85a1e1761199f4604672be42a3a5005227f5451a
PackageManager: fix app lib migration for device with /datadata

For devices using /datadata, dataPathString will point
to /datadata while nativeLibraryDir will point to /data/data.
Thus, compare to /data/data directly to avoid problems.

Change-Id: I11149cf9cc5a573cc85513e12d3569b514f5ffb5
Prevent scanning during DHCP process

Wi-Fi should be in active state during the entire DHCP process, and
shouldn't go to IEEE 802.11 power save mode. If the framework requests
scan during the DHCP process, the Wi-Fi chip has to start scanning
on channels different from the current one, and going to power save
mode is a prerequisite for scan. The result directly impacts user
experience: DHCP process takes longer, and even can fail.

Change-Id: I8171388bb70072e4c42cb3c074dd955da84e494b
Telephony: Add getLteOnGsmMode() method (1/2)

Same functionality as the existing getLteOnCdmaMode, but for GSM
LTE devices.
Enable with the telephony.lteOnGsmDevice system property

From CM 10.0: Ibfb47ca608e51393b99d3308e0a6c66050b3f32e
- Moved getLteOnGsmModeStatic() to TelephonyManager.
add bools to overlay for Samsung CDMA SMS decoding hacks

ported from CM7/9/10

required by : http://review.cyanogenmod.org/#/c/26918/

Change-Id: I28093cdb8770f98b94cedbff63e6121c798cf9af

Conflicts:
	core/res/res/values/symbols.xml
gps: Add support for Qualcomm GPS hardware

 * This ABI is changed, but we aren't using the new features in MR1.
 * Add a little translation for the changed fields and methods.

Change-Id: Ieecc2235b42f64fc69d4651855f4e9edfe7d738d
SystemUI: HSPA+ Support

Add the ability to recognize HSPA+ by creating a separate case for HSPAP and
include new H+ icons.

Signed-off-by: Bajee11 <bajee11@gmail.com>
Change-Id: I889a28e4b4cb49862b291641df5a00388db87551
core and telephony: Additional HSPAP support

Change-Id: I5e921d2308d873678d6ef67a91cff50d383a176b
keyguard: fix layout for 320dp devices

800x480px dpi devices have less screen space than the xhdpi devices
Google designed the layout for and the layout needs adjustment.

- Reduce the lockscreen security container size such that the clock
  widget has enough space to display its content.
- In the SIM PIN/PUK view, Google put an empty widget on top, but
  we don't have space for that, increase its size such that the
  widget practically disappears.

This should not have any effect on devices with larger screens.

Change-Id: I9e811cfd312abae24a9cad189d19e73848f6c4c1
Add Dock USB Audio Support for Samsung Car / Desk Docks 1 of 2.

Ported from CM10, original patch: http://review.cyanogenmod.com/20586

Also includes patches:
DockAudio: Always route audio back to normal on undock.
http://review.cyanogenmod.org/24830

Bugfix: Dock events can have state greater than 1
http://review.cyanogenmod.org/24995

------------------------------------------------------

Samsung docks have a non-sensing USB adio port.
Samsung get around this by having a separate Setting to route the Audio
The Changes made will only add the extra Observer if the Kernel supports the endpoint

  /sys/class/switch/dock/state

A new BroadcastReciever (SettingsChangedReceiver) is used to watch out for users changing the
Preference

The choice is made in the GalaxyS2Settings.apk (see 2 of 2)

  device/samsung/i9100/DeviceSettings/src/com/cyanogenmod/settings/device/DockFragmentActivity.java

After OnBootComplete and when the checkbox is changed, an Intent is triggered to this class.

When a Dock Event is caught if it is one the Samsung endpoint "dock" then if the users preference is
checked,
then the event is allowed to go on and route the audio.  If it is not checked then it is ignored.

Change-Id: I8e8f5001d5c651b07bb6af496bbf806732be21fa
DefaultContainerService: implement additional methods

For usage in Settings->Storage

Change-Id: I2d45198cc6ea3b84af1547873380eae2c04c0b93