Merge commit '5cb400bd72726c22f641f334951b35ce2ddcfeef'
* commit '5cb400bd72726c22f641f334951b35ce2ddcfeef':
Keep track of backup state independently for each transport
Backup transports now provide the Backup Manager with a suggested name with
which it can disambiguate any transport-specific bookkeeping that it needs to
maintain. The Manager keeps separate application backup 'state blobs' for each
transport now, preventing things from getting out of step if the device is
switched among multiple transports.
Also, the metadata backup agent is always invoked now on each backup pass. This
is cheap when there is nothing to do, but also strongly ensures that we never
wind up in a situation where a given transport destination has not been given
all of the metadata necessary for the backup set.
Merge commit 'f881762f97c74253bbc7f629380bb65739457041'
* commit 'f881762f97c74253bbc7f629380bb65739457041':
Add a method to Process to get uid for a pid.
This CL does the following:
+ adds an AbsoluteFileBackupHelper class for managing backup of files
known by absolute path, not based off of the app's getFilesDir() root
+ bumps up the collection interval from its testing-only default of 1 second
to 3 minutes
+ adds a SystemBackupAgent class to the main system package and names it as
the android:backupAgent for the main OS package. Right now this agent
only backs up & restores the wallpaper file.
+ amend the Wallpaper Service to inform the Backup Manager when the wallpaper
changes.
On the subject of the 3-minute collection interval before the backup actually
occurs: this can be short-circuited from an adb shell. Running the command
'bmgr run' will cause the Backup Manager to kick off any pending backup
operations immediately.
Merge commit '67669c9c1753b062fe2a71f89b589d01b32ba0f7'
* commit '67669c9c1753b062fe2a71f89b589d01b32ba0f7':
Modify the IBackupTransport API to support bulk restore operations.
Merge commit '2e418428987132ea66533cbc05f9c526eb59519a'
* commit '2e418428987132ea66533cbc05f9c526eb59519a':
Possibly fix an issue where we thought an app was always using GPS.
There may be some race conditions in the gps provider where it can cause a uid
to be double booked for gps usage and never released. Address this by tweaking
some locking (so mLocation and the uid array are protected by a lock both when
reading and writing). Also add some code to log a warning if someone tries to
note a particular uid multiple times, since the code will break in that case.
Finally, fix a problem in the battery stats where we weren't allowing a new Uid
structure to be created in many cases for calls coming in.
Merge commit '3a31a93b8a195ae2d0180e6dfbf292da2e581f50'
* commit '3a31a93b8a195ae2d0180e6dfbf292da2e581f50':
Add some global metadata to the restore set
In addition to the signatures of each participating application, we now also
store the versionCode of each backed-up package, plus the OS version running on
the device that contributed the backup set. We also refuse to process a backup
from a later OS revision to an earlier one, or from a later app version to an
earlier.
LocalTransport has been modified as well to be more resilient to changes in the
system's use of metadata pseudopackages.
Merge commit 'e9190a2750e1fb67e300d2c128227cc9b7339efe'
* commit 'e9190a2750e1fb67e300d2c128227cc9b7339efe':
Base64 the keys to make filenames in LocalTransport
Merge commit '3c2f8e6651178742bc685e7bd62fa8a6ca409a74'
* commit '3c2f8e6651178742bc685e7bd62fa8a6ca409a74':
Replace the stub GoogleTransport with callout to the
* changes:
Replace the stub GoogleTransport with callout to the GoogleTransportService (which lives in vendor/google). Use the Google transport by default. Also, fix a bug: Thread.run() != Thread.start()
Merge commit 'aa088447baadd2e0bbcfd18cc529645610c13ddc'
* commit 'aa088447baadd2e0bbcfd18cc529645610c13ddc':
Hold the current transport instantiated all the time.
We no longer instantiate the transport just for the duration of handling a
backup or restore operation. Instead, we hold the object forever (replacing it
if instructed to do so). This makes it easier for transports to watch system
state and help set backup timing policy.
Also fixes up the IBackupTransport documentation a bit.
The 'list sets' and 'restore token#' commands from bmgr now do what they are
supposed to. At this point we see the restore target's data being cleared
properly and its agent being launched and invoked for restore.
Merge commit '8e55eac96d768a4de68a091f57487deadf6d0a87'
* commit '8e55eac96d768a4de68a091f57487deadf6d0a87':
Bring the test transport's restore code into line
It now reconstructs the backup data stream as it was originally structured, no
longer assuming that its backed-up records can simply be concatenated into the
destination stream.
Merge commit '2fdd428e0f18384160f7c38ce3a2cd9ba7e7b2c2'
* commit '2fdd428e0f18384160f7c38ce3a2cd9ba7e7b2c2':
Fix some backup reader/writer issues; make local transport do backup
Fix the jni initializer.
Add RestoreFileHelper, BackupDataInput, and add java wrappers for the methods on BackupDataOutput.
Fix bug #1812041: activity manager crash with bad args.
Journal backup requests so that they won't be lost in a crash
Fix data connection issues.
Merge commit 'e8939bb8f1453b44788d4475a8263082d858e533'
* commit 'e8939bb8f1453b44788d4475a8263082d858e533':
AI 149797: Have SetupWizard pull the Terms of Service from the web using a new URL
As of this change, LocalTransport is successfully propagating data changes from
the backup data format into a repository stored in /cache/backup/[packagename].
Each backup key gets a separate file there for ease of manipulation and testing.
The general semantics of BackupDataReader have been tweaked, too; it now just
returns simple "we're done with the data" when it hits the end, even if no
footer has been found, because on the writing side the footer isn't being
written. Also, reading an entity now merely requires a "big enough" buffer, not
an exactly-sized one.
This is all a work in progress, but this is at least working now for purposes of
this local transport.
Still to do: proper change vs deletion detection, as well as expanding the data
format itself to include necessary metadata etc.
which allows us to set the language and country (based on MCC otherwise
locale country). If we are unable to retrieve the ToS, or verify the
content, we load the default ToS (en_US) from the device.
BUG=1856455
Automated import of CL 149797
Merge commit '9bbc21a773cbdfbef2876a75c32bda5839647751'
* commit '9bbc21a773cbdfbef2876a75c32bda5839647751':
Flesh out restore interface on manager; work up most of LocalTransport
Merge commit 'b6391d6377883586995127c9926c1b5b8035fd60'
* commit 'b6391d6377883586995127c9926c1b5b8035fd60':
Allow arrays of values for power profile data.
Parse arrays for data that has different levels with non-linear
power increase.
Track radio data awake_time from kernel and mobile/total data
transfers.
Use dummy values for default power_profile.xml. Actual values will
be in a product overlay.
Merge commit '9e09e0f439ab30b8856d46827623652d09b7477b'
* commit '9e09e0f439ab30b8856d46827623652d09b7477b':
zygote: Add CAP_SYS_NICE to system server capabilities
Merge commit 'df01deaacff82b918b4f0ba774d5ad3087543629'
* commit 'df01deaacff82b918b4f0ba774d5ad3087543629':
More restore plumbing, plus add suggested-backoff to transport API
Adds most of the code for a background-thread restore process, structured much
like the backup thread. Broke some common functionality out into a helper
function for doing a synchronous wait for a requested agent to attach.
Added a method to IBackupTransport whereby the transport will be asked for
an opinion on whether this is a good time for a backup to happen. It will
reply with the results of its policymaking around backoff intervals, time-of-day
selection, etc.
We now supply an array of RestoreSet objects instead of wacky Bundle
shenanigans. Also, pushed beginRestoreSession() out to the BackupManager
concrete interface class so that SetupWizard can use it.
(beginRestoreSession() is @hide, non-privileged apps cannot use it. It's
also guarded by android.permission.BACKUP enforcement.)