When a package is uninstalled we now remove our notion of its having been backed
up, thereby forcing a backup pass if it is reinstalled at some point in the
future. Removal from the log means rewriting it and doing an atomic rename to
the canonical version. The temporary existence used during the rewrite is *not*
written synchronously; there's no need and it keeps the load on the flash part
much lower.
Because we might crash & reboot in the middle of the rewrite operation, there's
now code during init that sanity-checks the contents of the ever-backed-up log
and ensures that it's in a coherent state.
We now schedule a backup pass for any new application we see (at boot or
package-install time) for which we have never performed a backup. The
bookkeeping is a log file with the names of all the packages we've successfully
completed a backup pass on, maintained with synchronous journal-type behavior.
Also, make a bunch of private fields package-scoped to permit cheaper access
from the various worker / binder threads that run under the Backup Manager's
aegis.
* changes:
Added fade-in out animation for compatible apps (This CL only add this when the app on the top is in compatibility mode for now. I need some help to do the same when the closing app is in compatibility mode) Refactored DimAnimator
(This CL only add this when the app on the top is in compatibility mode for now. I need some help to do the same
when the closing app is in compatibility mode)
Refactored DimAnimator
The kernel can now publish a property describing the layout of virtual
hardware buttons on the touchscreen. These outside of the display
area (outside of the absolute x and y controller range the driver
reports), and when the user presses on them a key event will be
generated rather than a touch event.
This also includes a number of tweaks to the absolute controller
processing to make things work better on the new screens. For
example, we now reject down events outside of the display area.
Still left to be done is the ability to cancel a key down event,
so the user can slide up from the virtual keys to the touch screen
without causing a virtual key to execute.
This also means we should no longer do explicit calling-identity fiddling in
dump(), relying instead on the usual permission enforcement mechanism to handle
things.
This adds a new API with the activity manager to find out about movement between
activities. For my sanity, the old IActivityWatcher is now renamed to
IActivityController, and the new activity movement interface is named
IActivityWatcher.
This changes the search manager itself to use the new API to manage its state.
Note that there are still problems when going back to the search dialog after
it was hidden -- the suggestions window no longer appears until you explicitly
dismiss and re-show it.
Merge commit 'ea5c044412f6853d686e93b8bef07f4729b6ad26'
* commit 'ea5c044412f6853d686e93b8bef07f4729b6ad26':
When apps switch between system and data partition the code and
Apparently this code was not 100% correct, and now the Wifi driver is responsible
for setting the scan mode to active for hidden networks, so this is no longer needed.
Signed-off-by: Mike Lockwood <lockwood@android.com>
This is the problem where various things are listening for broadcasts
(such as battery status, PIN/PUK/Network) that an application can send
to cause harm to the system.
Solving this is tricky because many of these broadcasts are sticky,
and I have never figured out how to do permissions with sticky
broadcasts in a sane way. So instead, I am going to punt on the
general problem and just brute force it:
There is new a way for system components to declare specific
broadcast actions to be protected, which means that only the system
and the phone can send them. This is good enough for now. None
of it is exposed in the public API so we can make something a little
less stupid in the future if we ever need to.
Merge commit '463aacfbd220c9ef2f6ed915d54092289fdac05b'
* commit '463aacfbd220c9ef2f6ed915d54092289fdac05b':
wifi: WifiManager.startScan() will now do passive scans by default.
Active scans will only happen if a hidden AP is in use, or if the new method
WifiManager.startScanActive() is called.
This fixes some audio playback problems with bluetooth A2DP.
Signed-off-by: Mike Lockwood <lockwood@android.com>
Merge commit 'ed7603779282d416356ce3c9739056d632307275'
* commit 'ed7603779282d416356ce3c9739056d632307275':
Add a persistent system property to disable the adb notification.
Setting to persist.adb.notify to 0 will disable the ad notification.
You need to be root to set this, so this allows disabling the notification
only on eng and userdebug builds.
Signed-off-by: Mike Lockwood <lockwood@android.com>
This adds a new <path-permission> tag you can use inside of a <provide>
to define additional path-based permissions that broaden the global
read and write permissions. The initial use for this will be global
search, so that a content provider that is protected by permissions
can make a part of itself available to global search under another
permission. This addresses the issue with global search not being able
to request permissions it would need of providers it doesn't know
about at build time.
Merge commit '4af0a709ee08e8ae43f49d8fc5c9cae142aaf2c4'
* commit '4af0a709ee08e8ae43f49d8fc5c9cae142aaf2c4':
Make it so the notification manager doesn't mysteriously
Merge commit '1ecf5d28817f0a051e77488380dcd5bc622ea169'
* commit '1ecf5d28817f0a051e77488380dcd5bc622ea169':
Re-implementation of large screen support using window manager.
* added background filler surface to fill the outer rim. Using the same layer as dim surface because
they never co-exists (in the same window)
* clean up the obsolete code in CompatibiltyMode/ViewRoot for support large screen support.
Merge commit '1bd3e0fb7e87f1daa983d06bc396393a788181b0'
* commit '1bd3e0fb7e87f1daa983d06bc396393a788181b0':
Don't invoke the transport if doBackup supplied no data
If there's no data to be backed up, we no longer invoke the transport. We *DO*
still require that the agent have emitted a valid new state file, however.
This change also finally uncomments the code that removes the backup data file
after it has been sent to the transport, so there will be no more
packagename.data files lying around in the staging area.
We now log in dataChanged() only when an app is added to the backup set (and
*not* if it redundantly asks to be added after it's already there) and on error.
Merge commit 'a7de3845507b7bf57a2c7b26fb08f05b193697d6'
* commit 'a7de3845507b7bf57a2c7b26fb08f05b193697d6':
Only write to the pending-backup journal when necessary
We now only commit to the pending-backup journal on disk the first time that a
given package is added to the backup set. This avoids a lot of write thrashing
of the disk, particularly since Settings tends to call dataChanged() a great
many times during boot, while the Settings UI is in use, etc.
Merge commit 'c4cf22e82ba8ec4eec7051ae3a8eb397ded578d1'
* commit 'c4cf22e82ba8ec4eec7051ae3a8eb397ded578d1':
Fix the metadata-available test during restore
Merge commit 'fa6c7111fe58e09a92741c7655221c3629d3220e'
* commit 'fa6c7111fe58e09a92741c7655221c3629d3220e':
WifiService: use wifi association state to determine if we should suspend wifi instead of
Merge commit 'dbee95cacff9d2faf30638e64abe26fbeb128787'
* commit 'dbee95cacff9d2faf30638e64abe26fbeb128787':
Make enable/provisioning of the backup service a two-step process