Themes: add ability to theme quick settings battery tiles

This is to make the battery tiles more uniform to the rest
of quick settings and also allow the background to be themed

http://i.imgur.com/AA5bkMK.png

Change-Id: Iec03572a0fa3619d2652f30b6c260a278ed0c86b

Conflicts:
	packages/SystemUI/res/layout/quick_settings_tile_battery.xml
	packages/SystemUI/res/layout/quick_settings_tile_dock_battery.xml

(cherry picked from commit e905f0bf2d428db251bbe234c3defc35ed04b10a)
HeadsUp: Respect system decorations when adding view.

    - FLAG_LAYOUT_IN_SCREEN ignores system decorations, so
    a heads up view in landscape would end up underneath the navbar

    - FLAG_LAYOUT_NO_LIMITS allows the window to exceed the screen
    limits all together

      Removing both these flags makes Heads Up respect both system
    decorations and the screen limits.

Change-Id: I6f111e1c5701d493979be0cb596f11bc1b437fda
(cherry picked from commit 7a57e51d9f39dc80f8f0a1358396c8ece29b29e8)
SlimRecents: Rework show top most task feature

recently introduced this feature needed a bit rework. Basic changes

- do not call settings provider on every preload to prevent high IO work.
  Use our observer for that
- Use internal flag logic to mark topmost task
- Move interpretation of the expanded state into the card
- Due that topmost task is always collapsed do not show expanded icon at all
- Minor cleanup

PS:
- set mFirstTask to null if it is not used

Change-Id: Ifaabc035b6b9bd2d4527d5b34a1bca9c80a74e32
(cherry picked from commit b86b4cb5c17ef2943b644e78599aad2ac04d6805)
Implement DocumentsProvider.createDocument and deleteDocument

Fixes AOSPA-431
This is needed to delete and create files/folders in DocumentsUI.
Some open questions are:
1. Are the methods implementented according to their description?
E.g I'm not sure whether deleteDocument should be able to delete folders, too.
2. I first didn't want to modify public API, but deleting files from within DocumentsUI somehow doesn't work - file.canWrite() always returns false
3. So is modfying the API this way OK?

Change-Id: Ie3a9d1888decaa0f08de1a5183ffd23760be15b9
(cherry picked from commit ac4245203d32b0b146acf74bea5180e6c61ca71a)
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
(cherry picked from commit b2c0f7d25101b9d284d4009d90bd97a27eac3b5a)
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
(cherry picked from commit ac11f56e121b23def0a2736af90505818aaf67ee)
Fixed VM memory leak in AudioSystem JNI interface

The function android_media_AudioSystem_error_callback from AudioSystem
JNI interface is using FindClass function but does not delete the
reference created by VM in this function.
By doing this call, VM will add a local reference in IndirectRefTable
and it's the caller's job to delete this reference.
By not doing this, everytime this callback is called, a new reference is
added and never deleted.
The effect is crashing the VM running system_server:

E/dalvikvm( 3071): JNI ERROR (app bug): local reference table overflow (max=512)
W/dalvikvm( 3071): JNI local reference table (0x732da288) dump:
W/dalvikvm( 3071):   Last 10 entries (of 512):
W/dalvikvm( 3071):       511: 0x42a90008 java.lang.Class<android.os.Parcel>
W/dalvikvm( 3071):       510: 0x4381fd90 android.view.KeyEvent
W/dalvikvm( 3071):       509: 0x439b9808 android.view.KeyEvent
W/dalvikvm( 3071):       508: 0x42d2fe18 java.lang.Class<com.android.server.input.InputManagerService>
W/dalvikvm( 3071):       507: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       506: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       505: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       504: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       503: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       502: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):   Summary:
W/dalvikvm( 3071):       510 of java.lang.Class (3 unique instances)
W/dalvikvm( 3071):         2 of android.view.KeyEvent (2 unique instances)
E/dalvikvm( 3071): Failed adding to JNI local ref table (has 512 entries)
...
E/dalvikvm( 3071): VM aborting

In this case, PID 3071 is system server.

Change-Id: I0c113eb72256984854d59a3ccef11a8d23f96e79
Signed-off-by: Robert Chiras <robert.chiras@intel.com>
(cherry picked from commit a9233406a1c5cb8e319aa064c654a02a97ff2cbb)
Ensure to add persistent apps to LruProcess list on app restart

This change will ensure to add Persistent Apps to mLruProcesses
if not already present while restarting.Previously, on some
occasions, the process was not getting added to the list
resulting in SecurityException as this process was not found
in the mLruProcesses.

Change-Id: I26813a794e01aae316dffd3cf2bb38ab66ac69a9
(cherry picked from commit 4a3e6a334ec6b7a5ed58bca07fdad42019aa63f4)
Set an enough dirty rect for a magnification's boundary line

When using accessibility mode magnification gestures inside
a video artifacts are left on the screen when magnification
is shrunk. It's caused by an incomplete dirty rect.

1. Turn on magnification gestures (in accessibility menu)
2. Play a movie
3. Tap on the bottom of the screen 3 times to zoom.
4. Tap screen once.

The menu buttons will appear, but they will have artifacts from
zoom rectangle drawn on top of them.

The dirty rect is lacking 1 px when a width of the boundary
line is an odd number. It's calculated by the round-off half
of the boundary width.

This change solved the lacking 1 px.

Change-Id: I87f705f239babdb60a5029fd69107501bbab949a
(cherry picked from commit 758086f35a676aee2d52d6525c97bd08938b2861)
Fixing parcel leaks to avoid virtual memory leak

Client has to call recycle() on parcel object after its usage
otherwise native layer of binder won't clear the resources of
parcel which were allocated for IPC

Change-Id: Ib31ddcc92aa4ebd80bb66729922b9133692e9c9e
(cherry picked from commit 3dfa5d37eee89d991ec0d7fe37a5bc7267ad6d6c)
[Asset Manager] Fix memory leakage bug

Symptom: memory leakage
Root Cause: new SortedVector but not free it in native cpp
Solution: free the SortedVector
Project: AOSP
Note:

Change-Id: Iab5a7f2e8d8509631301e7231427927d4797c856
(cherry picked from commit 8cac453874aab5412f4dea5e7b5be47a14d4b4b7)
Remove some pointless code.

Unnecessary disk reads for values that are never
used (and cached elsewhere, so that optimization is
rendered pointless).

Change-Id: Ic14a8b53a96908bb03eae28759d7be2c217e8125
(cherry picked from commit 23fc14b517ea8546a25c7510c7b2b0a379059ffd)
update parameters in uploadToTexture() for GLES20

Google optimized the uploadToTexture with GLES3.0+,
This allows us to upload a sub-rectangle of texture,
but this has compliance issue with GLES 2.0.

With OpenGL ES 2.0 we need to copy the bitmap in a
temporary buffer if the stride doesn't match the width,
and then upload entire temporary stripes.

Change-Id: I8987cd8347913c61b7fa45bd47be1189aa6bdb05
Signed-off-by: Shenghua Lu <shenghua.lu@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Guobin Zhang<guobin.zhang@intel.com>
(cherry picked from commit 1ea21b50baa5da7f996abd89aa81438076fd4ed3)
Fix the texture ID reuse issue in HWUI.

Issue: When the layer of previous frame is destroyed, it doesn't clear the
texture id in mBoundTextures[mTextureUnit], so in the next frame, if
glGenTexture returns same texture ID of the previous frame,
the new texture is not bound.

CRs-fixed: 671736

Change-Id: Ifc5fd2115fb1863b3c006ab14b0faabeaeb4eab4
(cherry picked from commit 69769fdbc1d5306fbec044b4caa96e1aba8e91ac)
hwui: fix possible null pointer de-refrence

add layer check for  null before de-refrencing it.

issue link: http://code.google.com/p/android/issues/detail?id=61622

Conflicts:
	libs/hwui/LayerRenderer.cpp

Change-Id: I54fc21ec594effcfb1eededd80dd5b0b52645c4c
(cherry picked from commit c71fd1b7a5496f09333fa54777132ca9434b8e71)
aapt: we dont care about uncommented public symbols

export SHOW_UNCOMMENTED_SYMBOL_WARNING to show them

Change-Id: I6e6461b54e5cd3a9c09efeb8df3172e48bbfa8e5
(cherry picked from commit 826ec181137838e3cc102ca41d4c5e9e242d3ec0)
aapt: introduce SHOW_EXTENDED_WARNINGS

a quick switch for enabling various warnings we silenced

export SHOW_EXTENDED_WARNINGS to show all silenced warnings

Change-Id: I298f36469d78e335a461f5ccfc2a66aa2976ceac
(cherry picked from commit 87c7d9ce18e3c9563c46067916169ef48ffe35c0)
i dont feel like being "chatty"

Change-Id: I36b58871e9954161a55202115a295217f5d805ec
(cherry picked from commit a687b31a7636bd6d83c79a0356c7eee56f023a9f)