Themes: Fix ResourceNotFoundException when updating  applied theme

If the user has a theme applied and there is an update to that theme,
then the themed apps will crash. This is because the theme's APK path changes,
but the apps do not update their resources. Apps were not updating their resources
because updateConfiguration() determined that the config (which only has pkgName) hasn't changed.

The problem is fixed by first applying the default theme config and then re-applying the
updated theme.

SystemUI was crashing with a NPE while verifying this fix, so a NP check was added to SystemUI as well.

Change-Id: I00e32fc1535b4d279fcb37c35f868501ecc1dd19

Conflicts:
	packages/SystemUI/src/com/android/systemui/quicksettings/UserTile.java
IconPackHelper: Respect the original size of bitmap icons

When use icon packs on low-resolution devices, for example, my HDPI
phone, it seems that using the size returned by
getLauncherLargeIconSize() will cause a blurness on
some icons that are not included in the icon pack because of the compose
function.

This patch respects the original size of the icon if the icon is an
instance of BitmapDrawable but use the size returned by
getLauncherLargeIconSize() if the icon is an instance of PaintDrawable.
This will remove icon blurness on low-resolution devices.

Change-Id: Ifcb39020d934a9c7cb409e1206a179d64f99aa37
Restore lazy loading of LoadedApk resources

This was broken in 8fff544ec349593cfa61ae2f5ec59419fff666b6. Since that change,
resources are always initialized in getPackageInfo(), even if they haven't been
loaded before (mResources == null).

It shouldn't be necessary in *any* case to preload the resources at this point.
Anything using the resources should call LoadedApk.getResources(), which will
initialize them just when needed. Setting mResources to null resets the cache
and will force a reload the next time the resources are requested.

Change-Id: I9bc9986297478e99752b1e2b9bd04dab3dcc9656
Themes: Support applying components from multiple themes [1/3]

The current implementation assumes the components being passed
into the ThemeService belong to the same theme.  This patch uses
a Map instead of a List to pass in a mapping of components to
package names, allowing us to apply several components from
different themes.

Requesting a theme change now takes a Map<String, String> which
maps components to the theme package name they will be applied
from.
Example:
    Map<String, String> componentMap = new HashMap<String,String>();
    componentMap.add(ThemesColumns.MODIFIES_ICONS, "com.mytheme.blue");
    componentMap.add(ThemesColumns.MODIFIES_OVERLAYS, "com.mytheme.red");

    ThemeManager tm = (ThemeManager) contex.getSystemService(Context.THEME_SERVICE);
    tm.requestThemeChange(componentMap);

Change-Id: I13fa17eabecb824884fe522d5dc1822a4d7c55f4
Merge remote-tracking branch 'pa/kitkat' into kitkat-next
Recents: Cleanup and fix visibility of ClearAll buttons

- Make it clean. Also this is a short life patch, top corner clear all will
  be moved as a function of hw buttons (ex long pressing desired assigned button ),
  reflects PA logic and muscle memory with soft navbar implement.

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>

Recents: Need to consider if pie is on along with immersive

- Checking just the on the spot stored value result always true then

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>

Recents: Fix rushness

- Missing parenthesis

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>
Themes: Find wp asset when APK has dir entries

Some APKs are compiled with folders included as zip entries in the APK. This was causing
lockscreen wp to not correctly be set.

Change-Id: I9eca7878b29e3cfcb43abc4a9dab084d9c200b83
Make the "hidden battery" still appear in QS

While the hidden battery indicator mode implemented in the Settings
application should only hide the indicator in the status bar, it also
happens to hide it inside the QS tile for the battery which in turn
leaves an ugly UI. This commit provides a workaround by specifying
in which cases the indicator is being used for QS and providing a
special case for that.

Change-Id: Iede5dedfc90343d5b9f768aefc4a53b2aa56a1da
Add SET_WALLPAPER permission to SystemUI

If an exception is thrown in updateWallpaperLocked, a call to
WallpaperManager.clear() is made.  This requires the SET_WALLPAPER
permission and will throw a SecurityException if that permission
is not granted to SystemUI.

Change-Id: I61811b65dcfe8b15f0e9030f7aa6d1dc09cea351
SystemUI: Restore bounds when loading new gradient

This fixes an issue introduced with the reloading of the nav bar
transitions after a theme change in Change-Id: I256afc30fc018ea752769029c5246bc7310c23a6

Change-Id: I648039506b826583d554b2a0cf4f6ab9a9bb1de8
Catch all exceptions when retrieving ComposedIconInfo

It is possible to receive a TransactionTooLargeException when
getting the composed icon info from the package manager service.
We should catch these exceptions to avoid unnecessary crashes.

For reference:
The Binder transaction buffer has a limited fixed size, currently 1Mb,
which is shared by all transactions in progress for the process.
Consequently this exception can be thrown when there are many transactions
in progress even when most of the individual transactions are of moderate size.

see http://developer.android.com/reference/android/os/TransactionTooLargeException.html
for more details.

Change-Id: I70d35dc4926125bfbef5d8c5fb8ed6d6fcdbf159
Merge "Add SET_WALLPAPER permission to SystemUI" into kitkat
Merge "SystemUI: Restore bounds when loading new gradient" into kitkat
Merge "Catch all exceptions when retrieving ComposedIconInfo" into kitkat
Merge remote-tracking branch 'pa/kitkat' into kitkat
DialogFragement: Add null pointer check for mDialog for protection

DialogFragement can be dissmissed just after the Dialog is
established. This will cause NullPointerException.

Add null pointer check for mDialog for protection

CRs-fixed: 549689

Change-Id: If57f81d03a8ec2906598363b681ea38806fb2a90
Merge "Make the "hidden battery" still appear in QS" into kitkat
Merge remote-tracking branch 'pa/kitkat' into one+
base: Implement updated CDMA signal strength values

Change-Id: I6dd5d95e52282b1686858134d89c09705bda435b
SystemUI: Make percentage appear for hidden batt

This commit makes the battery percentage appear in QS when the user
chooses the "hidden battery" option as the battery style. Prior to
this commit, the same battery style was used for the QS tile just
without the percentage indicator. This means no major changes are
being introduced but the usability is being improved as the user
can glance at the QS tile to see the exact percentage instead of
being forced to open the linked Settings page.

Fixes AOSPA-687.

Change-Id: I2131332f2639721f99e149d3add0eb2877b4debe