Commit Graph

17 Commits

Author SHA1 Message Date
Christopher Tate
9bbc21a773 Flesh out restore interface on manager; work up most of LocalTransport 2009-06-10 20:38:54 -07:00
Christopher Tate
9b3905c4a2 Revamp IRestoreSession a bit
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.)
2009-06-08 16:01:24 -07:00
Christopher Tate
8c850b792f Add IRestoreSession interface for the restore flow
Restore is a fairly complicated, somewhat stateful process, so we introduce
a new interface to encapsulate the various bits and pieces into a nicely
separable component.  In particular, this will make it much cleaner to
open and interrogate an expensive-to-construct transport and then reuse it
for the actual restore process itself.
2009-06-07 19:33:20 -07:00
Christopher Tate
043dadc751 More backup work
* Put in some permission enforcement around agent connection notification
  and full-backup scheduling.
* Full backup now applies to any package, not just backup participants who
  have declared their own android:backupAgent
* The process of running the backup operation on the set of apps who have
  been queued for it is now done in a separate thread, with a notification
  mechanism from the main Backup Manager service to pass along new-agent
  binding knowledge.  There's no longer one do-backup message on the primary
  Handler per target application.
* The new backup thread sets up the desired transport now and passes
  along the newly backed-up data to it for each backup target.  Two
  transports have been defined so far, GoogleTransport and AdbTransport;
  both are stubs at present.

Note that at present the backup data output file seems to be properly
created, but after doBackup() is called on the test app's agent it's
still zero size.
2009-06-03 20:42:15 -07:00
Christopher Tate
181fafaf48 Retool the backup process to use a new 'BackupAgent' class
Backups will be handled by launching the application in a special
mode under which no activities or services will be started, only
the BackupAgent subclass named in the app's android:backupAgent
manifest property.  This takes the place of the BackupService class
used earlier during development.

In the cases of *full* backup or restore, an application that does
not supply its own BackupAgent will be launched in a restricted
manner; in particular, it will be using the default Application
class rather than any manifest-declared one.  This ensures that the
app is not running any code that may try to manipulate its data
while the backup system reads/writes its data set.
2009-05-31 13:10:03 -07:00
Joe Onorato
d2110dbce0 Hook up the backup data writer, and add a utility to read the backup data files. 2009-05-20 11:24:20 -07:00
Marco Nelissen
4fb27ba22d Remove unnecessary code. 2009-05-14 14:18:23 -07:00
Joe Onorato
290bb011c5 Get the backup calling through to the file backup helper.
This includes some cleanup to make the parameters match
between BackupService.onBackup and FileBackupHelper.performBackup.
2009-05-14 09:39:32 -04:00
Joe Onorato
b1a7ffef3a More backup tests 2009-05-07 15:32:48 -07:00
Christopher Tate
3799bc241b Track install/removal/update of packages that provide backup services 2009-05-06 16:13:56 -07:00
Christopher Tate
b1d790b63e Pass null as savedState to indicate a full backup is required 2009-05-06 12:38:21 -07:00
Christopher Tate
4675812386 Add a Backup Manager interface to request a full backup
Given a package name, the Backup Manager schedules a *full* (i.e. non-
incremental) backup pass for that package.  Also added the state-file
handling for distinguishing to the target between the full and incremental
backup requests.
2009-05-06 11:24:27 -07:00
Joe Onorato
f9225f89aa Add a test app for the backup 2009-05-05 18:34:31 -07:00
Christopher Tate
22b8787ed4 Squashed commit of the following:
Author: Christopher Tate <ctate@google.com>
Date:   Mon May 4 16:38:11 2009 -0700

    IBackupService now passes ParcelFileDescriptors rather than int fds

    The outlines of backup state file / data file handling are now in place as well
    in the BackupManagerService.

Author: Christopher Tate <ctate@google.com>
Date:   Thu Apr 30 12:40:19 2009 -0700

    Hide the backup stuff for now

    Also adjust based on comments:
    + changed service intent string to conform to usage guidelines
    + only publish the IBackupService binder when invoked with the right
      intent action
    + docs tweaks
2009-05-04 20:19:21 -07:00
Christopher Tate
c114eb55b4 Hide the backup stuff for now
Also adjust based on comments:
+ changed service intent string to conform to usage guidelines
+ only publish the IBackupService binder when invoked with the right
  intent action
+ docs tweaks
2009-04-30 12:40:19 -07:00
Christopher Tate
a8bf815c61 Add android.backup.BackupManager
Also tweak the dataChanged() api to have the client supply a package name.  We
don't necessarily TRUST this, but we use it to narrow the set of packages requesting
a backup pass, no longer blithely scheduling a pass for all packages associated
with the caller's uid.
2009-04-30 11:36:21 -07:00
Christopher Tate
487529a70c First baby steps towards settings backup
This change adds a sketched outline of the backup system architecture, with
all of the major pieces represented other than client-side helpers for
specific types of data.  IBackupManager and BackupService are public so that
we can write test apps against SDK-domain symbols from the outset.

What code exists in this change hasn't been tested and may crash.  It's the
beginnings of the real implementation but of course is barely begun.
2009-04-29 14:49:30 -07:00