4935 Commits

Author SHA1 Message Date
Christopher Tate
4a627c71ff Full local backup infrastructure
This is the basic infrastructure for pulling a full(*) backup of the
device's data over an adb(**) connection to the local device.  The
basic process consists of these interacting pieces:

1. The framework's BackupManagerService, which coordinates the
   collection of app data and routing to the destination.

2. A new framework-provided BackupAgent implementation called
   FullBackupAgent, which is instantiated in the target applications'
   processes in turn, and knows how to emit a datastream that contains
   all of the app's saved data files.

3. A new shell-level program called "bu" that is used to bridge from
   adb to the framework's Backup Manager.

4. adb itself, which now knows how to use 'bu' to kick off a backup
   operation and pull the resulting data stream to the desktop host.

5. A system-provided application that verifies with the user that
   an attempted backup/restore operation is in fact expected and to
   be allowed.

The full agent implementation is not used during normal operation of
the delta-based app-customized remote backup process.  Instead it's
used during user-confirmed *full* backup of applications and all their
data to a local destination, e.g. via the adb connection.

The output format is 'tar'.  This makes it very easy for the end
user to examine the resulting dataset, e.g. for purpose of extracting
files for debug purposes; as well as making it easy to contemplate
adding things like a direct gzip stage to the data pipeline during
backup/restore.  It also makes it convenient to construct and maintain
synthetic backup datasets for testing purposes.

Within the tar format, certain artificial conventions are used.
All files are stored within top-level directories according to
their semantic origin:

apps/pkgname/a/  : Application .apk file itself
apps/pkgname/obb/: The application's associated .obb containers
apps/pkgname/f/  : The subtree rooted at the getFilesDir() location
apps/pkgname/db/ : The subtree rooted at the getDatabasePath() parent
apps/pkgname/sp/ : The subtree rooted at the getSharedPrefsFile() parent
apps/pkgname/r/  : Files stored relative to the root of the app's file tree
apps/pkgname/c/  : Reserved for the app's getCacheDir() tree; not stored.

For each package, the first entry in the tar stream is a file called
"_manifest", nominally rooted at apps/pkgname.  This file contains some
metadata about the package whose data is stored in the archive.

The contents of shared storage can optionally be included in the tar
stream. It is placed in the synthetic location:

shared/...

uid/gid are ignored; app uids are assigned at install time, and the
app's data is handled from within its own execution environment, so
will automatically have the app's correct uid.

Forward-locked .apk files are never backed up.  System-partition
.apk files are not backed up unless they have been overridden by a
post-factory upgrade, in which case the current .apk *is* backed up --
i.e. the .apk that matches the on-disk data.  The manifest preceding
each application's portion of the tar stream provides version numbers
and signature blocks for version checking, as well as an indication
of whether the restore logic should expect to install the .apk before
extracting the data.

System packages can designate their own full backup agents.  This is
to manage things like the settings provider which (a) cannot be shut
down on the fly in order to do a clean snapshot of their file trees,
and (b) manage data that is not only irrelevant but actively hostile
to non-identical devices -- CDMA telephony settings would seriously
mess up a GSM device if emplaced there blind, for example.

When a full backup or restore is initiated from adb, the system will
present a confirmation UI that the user must explicitly respond to
within a short [~ 30 seconds] timeout.  This is to avoid the
possibility of malicious desktop-side software secretly grabbing a copy
of all the user's data for nefarious purposes.

(*) The backup is not strictly a full mirror.  In particular, the
    settings database is not cloned; it is handled the same way that
    it is in cloud backup/restore.  This is because some settings
    are actively destructive if cloned onto a different (or
    especially a different-model) device: telephony settings and
    AndroidID are good examples of this.

(**) On the framework side it doesn't care that it's adb; it just
    sends the tar stream to a file descriptor.  This can easily be
    retargeted around whatever transport we might decide to use
    in the future.

KNOWN ISSUES:

* the security UI is desperately ugly; no proper designs have yet
  been done for it
* restore is not yet implemented
* shared storage backup is not yet implemented
* symlinks aren't yet handled, though some infrastructure for
  dealing with them has been put in place.

Change-Id: Ia8347611e23b398af36ea22c36dff0a276b1ce91
2011-05-10 17:52:51 -07:00
Dianne Hackborn
aa9d84c37e resolved conflicts for merge of 05be6d6f to master
Change-Id: Ic6a6c5bb300f6f1d43f9ed550b284282b4f16212
2011-05-09 19:00:59 -07:00
Dianne Hackborn
05be6d6fe0 am 4907d1d5: am 0c6cbf41: Merge "Better compat mode part one: start scaling windows." into honeycomb-mr2
* commit '4907d1d5e2c7d244b07579b8c52153df69754e85':
  Better compat mode part one: start scaling windows.
2011-05-09 17:10:34 -07:00
Dianne Hackborn
4907d1d5e2 am 0c6cbf41: Merge "Better compat mode part one: start scaling windows." into honeycomb-mr2
* commit '0c6cbf410a642f6e9cea7cca0a6e53a4a3cdd324':
  Better compat mode part one: start scaling windows.
2011-05-09 17:08:40 -07:00
Dianne Hackborn
e2515eebf4 Better compat mode part one: start scaling windows.
First step of improving app screen size compatibility mode.  When
running in compat mode, an application's windows are scaled up on
the screen rather than being small with 1:1 pixels.

Currently we scale the application to fill the entire screen, so
don't use an even pixel scaling.  Though this may have some
negative impact on the appearance (it looks okay to me), it has a
big benefit of allowing us to now treat these apps as normal
full-screens apps and do the normal transition animations as you
move in and out and around in them.

This introduces fun stuff in the input system to take care of
modifying pointer coordinates to account for the app window
surface scaling.  The input dispatcher is told about the scale
that is being applied to each window and, when there is one,
adjusts pointer events appropriately as they are being sent
to the transport.

Also modified is CompatibilityInfo, which has been greatly
simplified to not be so insane and incomprehendible.  It is
now simple -- when constructed it determines if the given app
is compatible with the current screen size and density, and
that is that.

There are new APIs on ActivityManagerService to put applications
that we would traditionally consider compatible with larger screens
in compatibility mode.  This is the start of a facility to have
a UI affordance for a user to switch apps in and out of
compatibility.

To test switching of modes, there is a new variation of the "am"
command to do this: am screen-compat [on|off] [package]

This mode switching has the fundamentals of restarting activities
when it is changed, though the state still needs to be persisted
and the overall mode switch cleaned up.

For the few small apps I have tested, things mostly seem to be
working well.  I know of one problem with the text selection
handles being drawn at the wrong position because at some point
the window offset is being scaled incorrectly.  There are
probably other similar issues around the interaction between
two windows because the different window coordinate spaces are
done in a hacky way instead of being formally integrated into
the window manager layout process.

Change-Id: Ie038e3746b448135117bd860859d74e360938557
2011-05-09 17:03:24 -07:00
Marco Nelissen
a301fe61c8 Fix dumpsys output.
Change-Id: If3f51fbc4608ac295fa22d0aee4008f8dce4fa50
2011-05-06 08:36:20 -07:00
Chet Haase
ed30fd8e9a Add ability for hierarchyviewer to output displaylist info
Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then
clicking the new "Dump DisplayList" button will cause the display
list for the selected node (including its children) to be output into
logcat.

Change-Id: Iad05f5f6cca0f8b465dccd962b501dc18fe6e053
2011-05-05 07:35:40 -07:00
Chet Haase
a17de9b493 Revert "Add ability for hierarchyviewer to output displaylist info"
This reverts commit b2a4b52e8d5e499d33e2765e8c47851bf0266299.
2011-05-04 18:23:12 -07:00
Irfan Sheriff
28baf6f096 Merge "Add basic walled garden check" 2011-05-04 17:58:04 -07:00
Jeff Sharkey
2a2dc6894a Merge "Return NetworkStats bundle from NM service." 2011-05-04 17:49:01 -07:00
Chet Haase
42a3a39e23 Merge "Add ability for hierarchyviewer to output displaylist info" 2011-05-04 17:30:30 -07:00
Chet Haase
b2a4b52e8d Add ability for hierarchyviewer to output displaylist info
Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then
clicking the new "Dump DisplayList" button will cause the display
list for the selected node (including its children) to be output into
logcat.

Change-Id: Id32f62569ad1ab4d533bc62987f3a7390c1bb4e6
2011-05-04 17:18:27 -07:00
Jeff Sharkey
9a13f36cdd Return NetworkStats bundle from NM service.
Introduce NetworkStats which is a collection of network statistics,
which should match the structure communicated by kernel module through
netd.  Will introduce tags and fg/bg stats later.  Kept entirely in a
flat data structure to optimize parcel speed.

Initial pass at returning NetworkStats from NetworkManagementService,
both summary and details.  Will eventually pull data from kernel module
over netd connection.

Change-Id: I92d9f61678ec8c22e2ce26775fb035a0cf32413f
2011-05-04 16:07:21 -07:00
Robert Greenwalt
b6f8bff109 am 9c7e6fc5: am f13eb830: Merge "Add auto-restore timeout for secondary networks." into honeycomb-LTE
* commit '9c7e6fc50614cc1739d4bfbf6187893c27b01a67':
  Add auto-restore timeout for secondary networks.
2011-05-04 12:47:30 -07:00
Robert Greenwalt
9c7e6fc506 am f13eb830: Merge "Add auto-restore timeout for secondary networks." into honeycomb-LTE
* commit 'f13eb8301f4704179938e374129f2943c9c38d5f':
  Add auto-restore timeout for secondary networks.
2011-05-04 10:02:16 -07:00
Robert Greenwalt
f13eb8301f Merge "Add auto-restore timeout for secondary networks." into honeycomb-LTE 2011-05-04 09:59:30 -07:00
Mike Lockwood
20c3561284 am 10fbba21: DO NOT MERGE MountService: Fix running media scanner at boot.
* commit '10fbba21e4827a1582d97aa99e4e8d772ce04920':
  DO NOT MERGE MountService: Fix running media scanner at boot.
2011-05-04 08:57:19 -07:00
Mike Lockwood
2572051c4f am 0aa5d7b7: DO NOT MERGE Fix deadlock in MountService
* commit '0aa5d7b7f225236ac8461d0b6835b9c6152a2699':
  DO NOT MERGE Fix deadlock in MountService
2011-05-04 08:57:12 -07:00
Mike Lockwood
a2a8419db8 am e3b498be: DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods
* commit 'e3b498be0ae05367e9b84f4fac2ac5cf57a6b091':
  DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods
2011-05-04 08:57:07 -07:00
Mike Lockwood
60c768d412 am 346a2d79: DO NOT MERGE MountService: Add support for multiple volumes
* commit '346a2d79ecd627e38bc7fc6874fb627995b8bc12':
  DO NOT MERGE MountService: Add support for multiple volumes
2011-05-04 08:56:55 -07:00
Mike Lockwood
10fbba21e4 DO NOT MERGE MountService: Fix running media scanner at boot.
Change-Id: Ia56573023f21fa067a14e7d3ac5a6dbd51ecc8a7
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-04 10:41:19 -04:00
Mike Lockwood
0aa5d7b7f2 DO NOT MERGE Fix deadlock in MountService
It is not safe to call into vold with a lock held on mVolumeStates
since we will receive events back from vold on a different thread.
So in the boot completed handler we make a copy of the volume list and
then call vold to mount volumes after releasing the lock

Change-Id: Iaadfb1b8be5567c8e228a8fbc69d4d483c8dc987
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-04 10:41:19 -04:00
Mike Lockwood
e3b498be0a DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods
Change-Id: I8ba7e56797b0106dafaa6388393e5c629f27e6e6
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-04 10:41:19 -04:00
Mike Lockwood
346a2d79ec DO NOT MERGE MountService: Add support for multiple volumes
Change-Id: I18527e78a1c04023ae7bc0f269eaac082eb48d7f
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-04 10:41:19 -04:00
Robert Greenwalt
f2102f7a1a Add auto-restore timeout for secondary networks.
Settable per network so you can have not timeout for some and some for others.
If you set the old NETWORK_RESTORE_DELAY_PROP_NAME system property
(android.telephony.apn-restore) it will override this value.

Change-Id: Icca706fdc74245dce679209116660e5dc4b05d23
2011-05-03 19:10:26 -07:00
Mike Lockwood
91dd02c340 DO NOT MERGE MountService: Fix running media scanner at boot.
Change-Id: I67ff2ccde7e03143167b8c59726ffb741c96e028
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-03 21:03:56 -04:00
Mike Lockwood
b9135638c5 DO NOT MERGE Fix deadlock in MountService
It is not safe to call into vold with a lock held on mVolumeStates
since we will receive events back from vold on a different thread.
So in the boot completed handler we make a copy of the volume list and
then call vold to mount volumes after releasing the lock

Change-Id: Ic9836c2e1e8a5677d0c4e33476a72081f69823a0
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-03 21:03:56 -04:00
Mike Lockwood
d967f4664f DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods
Change-Id: I43d5c1730b340f1288b58012234b38f801001b71
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-03 21:03:55 -04:00
Mike Lockwood
f097fc2fee DO NOT MERGE MountService: Add support for multiple volumes
Change-Id: I45ee0e5735a6d72c635f6d22320e8b13bccc3847
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-05-03 21:03:55 -04:00
Irfan Sheriff
2f5f4bc98b Add basic walled garden check
Use multiple DNS resolutions to the same IP address
as an indication to launch a web view for authentication

Bug: 4378442
Change-Id: Id3cf1e3c5b5bee4468665d0459ac945e5b12e730
2011-05-03 13:35:21 -07:00
Dan Morrill
e21f376434 am 75c66458: am 8325c3a8: Backporting I57c58c4083bd59f45095c184d6ca5a302f79ff6e to HC-MR1. New change since file was renamed, making cherry-pick impossible.
* commit '75c664582c5ce5d94826f37cb725b447a4d62c50':
  Backporting I57c58c4083bd59f45095c184d6ca5a302f79ff6e to HC-MR1. New change since file was renamed, making cherry-pick impossible.
2011-05-03 12:46:20 -07:00
Dan Morrill
75c664582c am 8325c3a8: Backporting I57c58c4083bd59f45095c184d6ca5a302f79ff6e to HC-MR1. New change since file was renamed, making cherry-pick impossible.
* commit '8325c3a89197e47cfc2eeb4117c927fb8cb91630':
  Backporting I57c58c4083bd59f45095c184d6ca5a302f79ff6e to HC-MR1. New change since file was renamed, making cherry-pick impossible.
2011-05-03 12:26:16 -07:00
Robert Greenwalt
a8e0dfae06 resolved conflicts for merge of db46fa25 to master
Change-Id: I8df9d5d07588fbd70e417dae567be26f645b74b6
2011-05-02 14:41:57 -07:00
Dan Morrill
8325c3a891 Backporting I57c58c4083bd59f45095c184d6ca5a302f79ff6e to HC-MR1. New change
since file was renamed, making cherry-pick impossible.

Change-Id: Idc802af57fb9926a69ed52d4e776ef57d8b647c6
2011-05-02 14:06:06 -07:00
Robert Greenwalt
db46fa25be am a47c4019: Merge "Add RouteInfo objects for tracking routes." into honeycomb-LTE
* commit 'a47c40193fcbe9ca07facea78b2828afdae5e025':
  Add RouteInfo objects for tracking routes.
2011-05-02 13:29:22 -07:00
Robert Greenwalt
aa70f101e0 Add RouteInfo objects for tracking routes.
Used to have list of gateways for default routes, but general static routes
should be supported.

Change-Id: I01730142c6139f2b833b9d48f5381d2d320b69f6
2011-05-02 11:17:30 -07:00
Conley Owens
0a1b746686 am 92618f5f: am 52749c0b: am 03daee63: Merge "frameworks/base: acquire lock on am only when needed"
* commit '92618f5fd9e4a0469d60cab39765b7c820c1976b':
  frameworks/base: acquire lock on am only when needed
2011-05-02 10:11:11 -07:00
Conley Owens
92618f5fd9 am 52749c0b: am 03daee63: Merge "frameworks/base: acquire lock on am only when needed"
* commit '52749c0b1117a05a9c853b7d54f69a281f69cf3c':
  frameworks/base: acquire lock on am only when needed
2011-04-29 16:44:20 -07:00
Conley Owens
03daee6380 Merge "frameworks/base: acquire lock on am only when needed" 2011-04-29 09:59:22 -07:00
Daisuke Miyakawa
a550bdc84a Use passive provider for location based country detection
Bug: 4345419
Change-Id: Ia3e071b97c6971538ea994fdee6029db928201d6
2011-04-28 16:18:19 -07:00
Jeff Sharkey
b7342acebc Tests for ThrottleService, NTP into TrustedTime.
Wrote initial suite of tests for ThrottleService, checking a variety
of edge cases.  Checks going over limits, updating policies, and reset
after cycle elapses.

Moved NTP code in ThrottleService into new TrustedTime interface,
which makes it easier to understand, and allows tests to provide custom
clocks.

Change-Id: I0d62b8b3a169516a2ab2d33025f6fe30dc792be8
2011-04-28 12:28:36 -07:00
Conley Owens
a6590e7fee am 13b21e60: Merge "Auto hide virtual keyboard"
* commit '13b21e608e47382cb94a0aeac13b24ac97f355d2':
  Auto hide virtual keyboard
2011-04-27 13:53:46 -07:00
Conley Owens
13b21e608e Merge "Auto hide virtual keyboard" 2011-04-27 13:20:16 -07:00
Svetoslav Ganov
a3e261d506 The accessibility input filter state was not unregistered when
no spoken feedback accessibility services are regitstered.

bug:4343996

Change-Id: Ie709ac24baa084cf3627d6adb6caf1550c399f8b
2011-04-27 12:06:28 -07:00
Svetoslav Ganov
736c2756bf Touch exploration feature, event bubling, refactor
1. Added an Input Filter that interprets the touch screen motion
   events to perfrom accessibility exploration. One finger explores.
   Tapping within a given time and distance slop on the last exlopred
   location does click and long press, respectively. Two fingers close
   and in the same diretion drag. Multiple finglers or two fingers in
   different directions or two fingers too far away are delegated to
   the view hierarchy. Non moving fingers "accidentally grabbed the
   device for the scrren" are ignored.

2. Added accessibility events for hover enter, hover exit, touch
   exoloration gesture start, and end. Accessibility hover events
   are fired by the hover pipeline. An accessibility event is
   dispatched up the view tree and the topmost view fires it.
   Thus predecessors can augment the fired event. An accessibility
   event has several records and a predecessor can optionally
   modify, delete, and add such to the event.

3. Added onPopulateAccessibilityEvent and refactored the existing
   accessibility code to use it.

4. Added API for querying the currently enabled accessibility services
   by feedback type.

Change-Id: Iea2258c07ffae9491071825d966dc453b07e5134
2011-04-22 18:30:43 -07:00
Adam Powell
3fb3d7c4e7 Revert "Touch exploration feature, event bubling, refactor"
This reverts commit ac84d3ba81f08036308b17e1ab919e43987a3df5.

There seems to be a problem with this API change. Reverting for now to
fix the build.

Change-Id: Ifa7426b080651b59afbcec2d3ede09a3ec49644c
2011-04-22 17:23:44 -07:00
Svetoslav Ganov
f9fa622cc0 Merge "Touch exploration feature, event bubling, refactor" 2011-04-22 16:29:07 -07:00
Dianne Hackborn
dacea8ce50 Start work on simulating landscape/portrait when orientation is locked.
Not yet working, so turned off.

Also fix a bug where the display size configuration became inconsistent
after a configuration change -- we now figure out everything about the
display size when computing a new configuration.
2011-04-22 11:23:13 -07:00
Svetoslav Ganov
ac84d3ba81 Touch exploration feature, event bubling, refactor
1. Added an Input Filter that interprets the touch screen motion
   events to perfrom accessibility exploration. One finger explores.
   Tapping within a given time and distance slop on the last exlopred
   location does click and long press, respectively. Two fingers close
   and in the same diretion drag. Multiple finglers or two fingers in
   different directions or two fingers too far away are delegated to
   the view hierarchy. Non moving fingers "accidentally grabbed the
   device for the scrren" are ignored.

2. Added accessibility events for hover enter, hover exit, touch
   exoloration gesture start, and end. Accessibility hover events
   are fired by the hover pipeline. An accessibility event is
   dispatched up the view tree and the topmost view fires it.
   Thus predecessors can augment the fired event. An accessibility
   event has several records and a predecessor can optionally
   modify, delete, and add such to the event.

3. Added onPopulateAccessibilityEvent and refactored the existing
   accessibility code to use it.

4. Added API for querying the currently enabled accessibility services
   by feedback type.

Change-Id: Iec03c6c3fe298de3f14cb6efdbb9b198cd531a0c
2011-04-21 18:33:52 -07:00
Dianne Hackborn
9d13264f6b Fix bug in deciding which rotation to use for an orientation.
Change-Id: Icc928c2188a5865035cafcdab2efd5bae3132b1f
2011-04-21 17:27:42 -07:00