Make sure we clean up

pruneDeadThumbnailFile need to close its cursor
in a finally block to avoid leak resouces.

Change-Id: I2646b91970e47ee80a721a2452215b7cae149d10
Base: huge cleanup

*) catch unregistering receivers to prevent crashes
*) remove unused imports
*) remove unneeded semicolons
*) manual array copy
*) string comparisons with == instead of equals()
*) unneccessary boxing and unboxing
*) codestyle
*) update gradle version
*) much much more

Change-Id: I9eb301d2096dffdda6b403e1e16fcc00e56e1e55
Fix broken assumptions in LocalePicker.

This code assumed that the locale is always 5 chars in
length and was of the form xx-YY. This is not necessarily
true. The language can be 3 letters in length and the locale
might have a script and variant.

Also cleans up several nasty pieces of code and eliminates
unnecessary array copies and improves readability by using
idiomatic java.

bug: 15873165
bug: 10090157

Change-Id: Iab1cfd7b78e5772b1245654f2153caf63a96033d
Fall back to "tl" if "fil" is absent.

For JB-MR1, there was a hack that used "tl" where
we really meant "fil" because ICU didn't have localizations
for "fil". This has now been fixed, and we now support 3 letter
language codes for AAPT so we can use "fil" where required.

For the benefit of apps that need to target older platforms,
we fall back to "tl" if the app has assets for "tl" and the
resource locale is "fil".

See bugs 7291355, 7207176 and 8049507 for more context.

Change-Id: I1ac8502525f99b40f9091d5efd2df33518d47a41
Fix LocalePicker locale filtering.

This was broken by commit b27c137087ee92674 which
removed a badly phrased check. Prior to that commit,
there was a check that excluded locales whose toString()
length was not 5.

This change reinstates that check in a less roundabout
way, by excluding BCP-47 tags that don't have a country
subtag.

bug: 16038949

Change-Id: Ic24b1df87b2e2ce47d9ae04c7759088721f27b4f
Add an internal API to get all asset locales.

This will allow us to not copy paste this code verbatim into
bundled apps.

bug: 10090157
Change-Id: I008dc683ecbef2ad8b7a26968cb3cbda7e5a8388
ActivityManager: reduce reuse recycle

These inner classes are registered as services for each system process to dump information
during certain events like ANRs.  We can combine to reduce memory footprint by eliminating
the redundant inner classes and registered services.

Change-Id: I7c85323fb42ea67503841cc0717ef915ae9c851f
Fix issue when converting fil->tl.

We should call ResourceTable::getLocales directly,
and not AssetManager::getLocales. The latter will convert
"tl" to "fil" so we'll end up thinking we have resources
for "fil" when we don't really have any.

bug: 15873165

Change-Id: I9753e4608aaecede328a40ee1f3ee6b016d0dedc
boost hint when waking screen

Change-Id: Icb1eee556506031ca45495e61f9cbdc5d02b65d0
Logging in LocalTransport on as default

The logging is LocalTransport.java is enabled by
default.

Change default to false to remove logs, as this class
states that it is only for debug.

Change-Id: Iae63c7b62edbd503c606f0aee671a9579e78843d
Allow 3 letter language codes in InputMethodUtils.

Replace locale.substring(0, 2) with a function that always
returns the first component of the locale (assumed to be the
language).

bug: 10090157

(cherry picked from commit cefc79c6b18bb2e824c299e7b9e212071e5ebc43)

Change-Id: I56b02dd0c6dc222daa3ceade841a30879449bb4a
Prevent Showing the Crash Dialog for System UI

After system ui crashes, the crash dialog can prevent the keyguard from
showing if the screen was shut off before the dialog was dismissed. The
user can't recover from this without waiting for the dialog to time out
which takes several minutes.

Not showing the dialog for system ui is a safe way of preventing this
from occuring.

Change-Id: Iac235f3af244f735ef0e043098ed84874e3a84f9
[AssetAtlas]: Fix AssetAtlas not consider all size of texture.

Symptom: Atlas service get exception because the result is null.
Root Cause: The original logic will miss the largest width in each thread.
Take two processors as an example, first thread will miss 2048, second thread will miss 1984.
With some condition, only 2048*2048 or 1984*2048 can exceed the mThreshold.
In this case, the mResults is empty and cause crash when trying to use the first result.
Solution: Adjust the boundary and the condition so that it can consider all size of texture.

Change-Id: Id54de57cd1501ed7355f2237f05726d2965aed6d
SystemUI: prevent NPE on clear recents double press

Pressing Clear all button twice fast or while the list
is clearing but not yet fully cleared causes sysui to crash due to
mRecentTaskDescriptions being null: (http://pastebin.com/2gRFvf8k)

Change-Id: I23d10edfd336041739fe80352ee01987e671dbd7
NsdService: Fix retrieving the client id

SparseArray.indexOfValue() doesn't work properly on Integer
objects, because its doing an Integer == Integer comparision.
This works for the first 127 client id's due to the boxing
implementation having static Integer objects from -128->127,
but fails on the 128th.

Walk through the clientInfo.mClientIds array manually instead.

This fixes exceptions in NsdManager of the pattern:
FATAL EXCEPTION: NsdManager
java.lang.NullPointerException
     at android.net.nsd.NsdManager$ServiceHandler.handleMessage(NsdManager.java:367)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:137)
     at android.os.HandlerThread.run(HandlerThread.java:61)

due to the client id/listener being -1.

Change-Id: I02a5392fb81f37f5da32f6e7d4619ace1ea6a0ef
BatteryStatsImpl: Avoid memory corruption due to Parcel Recycling

While processing batterystatsfile, in present code there is a race where a parcel
might be recycled while it is being written to disk in another thread.

The write process is done in 2 steps:
- write into a Parcel (memory block)
- then write this Parcel to disk using Journaled API.
The Journaled API ensures robustness against file-system issues due to power cut.
The writing is done in batch using a thread running commitPendingDataToDisk().
This function writes the parcel to disk but this parcel is a global variable
initialized by writeLocked(). If the writing takes too long time and two write
threads are launched, the parcel is freed by the second writeLocked() call;
which could cause the memory corruption.

Hence, change global Parcel variable by a Parcel parameter to commitPendingDataToDisk()
and only this function will be allowed to recycle the parcel.

Orig-Change-Id: I0e76441399f1ce74b83566edb8cf4f977dce58bf

Change-Id: I1884141d7d9c61601e2c8e07523a6e9aa6709afc
Signed-off-by: Pavan Kumar S <pavan.kumar.s@intel.com>
Signed-off-by: Jian Luo <jian.luo@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 47466
ProgressBar: Fix error of process bar cannot update on some condition.

When onDetachedFromWindow in processbar, if flag mRefreshIsPosted is true,
we should set it to false. Otherwise, this flag will stay in true status,
cannot turn to false anymore. At that condition, processbar cannot get
update.

Change-Id: I14c4e976b165ad737aae0a403a44822a7b3b2422
Author: Liang Wang <liangx.wang@intel.com>
Signed-off-by: Liang Wang <liangx.wang@intel.com>
Signed-off-by: Bing Deng <bingx.deng@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 61090
Fix the bug in replacing a fragment with itself.

Summary:

We are facing a bug that some fragments in our app got removed
randomly. We debugged the app and it seems there is a bug in
the fragment API.

When we we are trying to replace a fragment with itself. We will
try to make the operation a null op, then both `op.fragment` and
`f` will be reset to null.

  op.fragment = f = null;

But since it's inside a loop, if the list `mAdded` still have
items to be visited, the code will continue to the next
iteration. Then it will compare the fragment with null, and
reach the line:

  mManager.removeFragment(old, mTransition, mTransitionStyle);

Eventually it will delete all left fragments in the list `mAdded`.

This diff adds a break to abort the searching after we null
the operation.

Test Plan:

1) Tested with our app. No fragment is randomly removed.

Revert Plan:

Change-Id: I5dc2c07a1bb1d1da1b0fd4e5610d970d55a81e86
Tags:
Signed-off-by: Kang Zhang <kangzhang.cn@gmail.com>
Default icon is shown after uninstalling updated priv-app

If updated pre-installed app is moved from "/system/app" to
"/system/priv-app" at FOTA, PackageManager does not update its
resource path correctly. This patch fixes it.

Change-Id: Iac793bcb8fd7c5bfbafd1876640b534c6da5dddf
Apk which is not on "/system/priv-app" still has privileged flag.

When an app is moved from "/system/priv-app" it still has the
privileged flag.

Change-Id: I7713382db34697f7b68283dbbbd25a1349cbecdb