DocumentsUI: Add a standalone File Manager

This commit adds a standalone mode to the DocumentsUI, to let
it act as a file manager/explorer.
You can browse your storage contents, open files, and delete them,
as well as do everything that the DocumentsUI can do (ie. sort
by name/size/type, list and grid view, recents, search, ...).

This gives us a consistent file browsing UX accross all apps
that uses the new documents API.

Change-Id: If73a3c100f010bdb766c843976d4fd3573ea805c
SystemUI: Fix screenshot animation not showing the picture properly

When taking the screenshot,the drop-in animation looks completely like a mess.
This patch fixes the problem and now the taken picture should be displayed
properly.

Change-Id: Iddb72e58a236d6a96048608ee140ce262053d5d2
Fix Icon size in DocumentsUI

For XXHDPI devices if you go into Settings/Display and Notification light and select a custom value (application) you will see a GIANT icon.

Before - http://i.imgur.com/DRkua3T.png

After - http://i.imgur.com/f7xW4tY.png

Change-Id: Ia355bddc515906134c8b3b4e67d381aaacceec78
ExternalStorageProvider: use mount point in device list

For me its is extremely unlogical that only the volume label is used
in the device list. Even more because it can be an empty string
and for a normal android user this information is not visible
anywhere else.

Using the mount point and if available the device label
separated by "-" makes much more sense and shows the same
information as all other apps that access external storage

Change-Id: I3fc3675af6640e37aa999b03ae2de2858237c638
framework: fix screenshot and rotation animation

for devices with abnormal hw rotation (e.g. hwrotation=270 or 90)

port forward from:
https://github.com/CyanogenMod/android_frameworks_base/commit/ac555b9ca9a76d13a26fc9ea40980fe57258761b#diff-d6f7bba268a742c91252cc9e64e2381a

Change-Id: I8dd0568c9261466178c737975a418321c3c634d1
bootanimation: performance/speedup enhancements

squashed from CyanogenMod 10

bootanim: Don't cache textures if they're expected to use a lot of VRAM (rmcc)
https://github.com/CyanogenMod/android_frameworks_base/commit/14f9eecd3f543a25c4a2053d6155a9396a777a3a#cmds/bootanimation

bootanimation: performance enhancements (turl)
https://github.com/CyanogenMod/android_frameworks_base/commit/e6b54405aa70d7503a114d9c90ef7518abdd7133#cmds/bootanimation

bootanimation: fix usage of LOGW (intervigilium)
https://github.com/CyanogenMod/android_frameworks_base/commit/e45cf7d232490f44aecf8f2447220a8b5ace4c10#cmds/bootanimation

bootanimation: allow using RGB565 instead of ARGB8888 (tpruvot)
https://github.com/CyanogenMod/android_frameworks_base/commit/204282870a9c69b04ad5ddecd73fafbd7996cbc0#cmds/bootanimation

Change-Id: I203fa23f77d1349fb822a7662e2cd3998ba4c814

bootanim: Don't cache textures if they're expected to use a lot of VRAM

bootanimation cached all the textures generated until the animation
was completed.
For Hi-res animations with lots of frames (like the new CM9 anim on
xhdpi devices), this implied using large amounts of video RAM, more
than most devices actually have available, causing the animation to
stall (and in some cases, gralloc to lock up); so if an animation is
expected to use a lot of RAM (rough estimation based on frame size
and number of frames), disable cache entirely and generate the textures
on demand

Change-Id: I157e5cdde2aab1d82d980d77cbedd9f127c83a1d

bootanimation: performance enhancements

This patch implements two simple performance enhancements, which
might benefit devices. They are completely opt-in by setting
the following variables.

  * TARGET_BOOTANIMATION_PRELOAD: will preload the bootanimation
    zip to memory; this is handy on devices where the storage
    might be slow. By preloading it, we get quick access to the
    zip file, and the animation doesn't stutter.

  * TARGET_BOOTANIMATION_TEXTURE_CACHE: allows maintainers to
    force texture cache on/off.

Also fixes the sign warnings related to int / size_t comparison

Change-Id: Ie92d1b0aa90b43ba39c368a2a33657a60c3a64b5

Conflicts:

	cmds/bootanimation/BootAnimation.cpp

bootanimation: fix usage of LOGW

Change-Id: I1d59df9f44f414d80058a532644cbbb40e22c701

bootanimation: allow using RGB565 instead of ARGB8888

RGB565 uses considerably less memory, and together with texture
cache, it allows us to offer a really smooth bootanimation on
not so powerful devices.

Signed-off-by: Humberto Borba <humberos@gmail.com>
Change-Id: I9da8fd7e6a587b5895519dd0983ec9b8f676771b
MountService: Add support for multiple storage configurations

Currently AOSP only supports a single storage configuration that is hardcoded
in storage_list.xml. Some device updates are now merging data and internal
storage partitions, and as a result require the storage list to support two
different variations.

By utilizing the sys.storage_legacy property this will allow for the framework
to support multiple configurations which can be determined during boot.

Change-Id: Id795520425ea3e99a5234e10c978dcdbd68a1311
Rework thumbnail handling

Since ids of media file are usually not continuous, the original file of thumbnail are sparse.
When there are big numbers files on external storage, the size of this file will be horrible.
Ex, when the id is 20000, then the .thumbnails/.thumbdata3-xx file will be 50000*10k = 488.28M.
Can refer http://stackoverflow.com/questions/12396715/android-huge-thumbdata4-file-in-dcim-folder
Because after 4.0, MediaProvider will scan any files, this will be a big problem.
So I modify MiniThumbFile.java to avoid this.
According to the id, we now produce an index file.
In this index file, one id will use BYTES_PER_MINTHUMB_INDEX(8) bytes in offset (i\d+1)*BYTES_PER_MINTHUMB_INDEX.
The data of these 8 bytes is the index of thumbnail file. The first BYTES_PER_MINTHUMB_INDEX bytes keep next available index.
And when you need insert a thumbnail, the index increase by 1. In this way, the block data in thumbnail file will be
continuous. And thus unnecessary zero paddings will not be saved.

http://jira.omnirom.org/browse/OMNI-924

Also includes: https://github.com/CyanogenMod/android_frameworks_base/commit/8bd0a83c1dcd89a74ad53ad6bc77c9dd4d3e8c71

Change-Id: Ifdf0cc77c9317935a520c67b598cae532eafba47
Fix frontOfTask assignment.

If all activities of a given stack were finishing, no activity was
marked as front-of-task. This confused ActivityManager, so make sure
there's always exactly one activity marked as front-of-task.

https://android-review.googlesource.com/#/c/98918

Change-Id: I087cbe10280d4a60aa5ccfaefe24a223523fb3f2
DocumentsUI: Allow open files instead of URIs

Check files' real path and mime type to open them only in standalone mode.
This allows, for example, installing apks.

Change-Id: I4501c694db84b8595cd3928752254a8914539972
DocumentsUI: Remove catch-all statements

This removes several "catch (Exception)" statements which violates the Android code
style guidelines and hides problems.

I left some catch-all statements in, as they seem to be intended like this (grep for
"catch (Exception").

I suggest we do not merge this before we are sure that we fixed any problems. One problem
is a crash when deleting items (I'm currently working to fix that).

PS 2: Add exception to log.
Change-Id: I483c320c7ee256acd993dd2a509c031fa5e3f09e
DocumentsUI: catch berserk apps on building recents

We should not crash Documents app because of that

Change-Id: Ie89a10c5005aef7f3e75a4f5a17f018e0fbc0814
DocumentsUI: fix recursive delete

Create one DirectoryLoader in UI thread to use for delete

Change-Id: I83a5811f152090f7812ad58ff4ee3bc13748d158