Commit Graph

191 Commits

Author SHA1 Message Date
Amith Yamasani
12b8e134c1 Move the account picker class name to a config resource.
For customization in derived products.

Bug: 8379133
Change-Id: I1dba4734f322455f0b0dd9c009be2ddc8d6b7d22
2013-03-14 11:43:56 -07:00
Amith Yamasani
c8a1ff4036 Make account cloning API public
Change-Id: If48d93dab49afcaaa301a5a3aa514f3d4dd3bab8
2013-03-08 15:29:55 -08:00
Amith Yamasani
67df64b3a4 Shared accounts and sharing of apps
API and preliminary implementation for sharing primary user accounts with a secondary user.
AbstractAccountAuthenticator has new methods to retrieve and apply a bundle of credentials
to clone an account from the primary to a restricted secondary user. The AccountManagerService
initiates the account clone when it starts up the user and detects that the user has
a shared account registered that hasn't been converted to a real account.

AccountManager also has new hidden APIs to add/remove/get shared accounts. There might be
further improvements to this API to make shared accounts hidden/visible to select apps.

AccountManagerService has a new table to store the shared account information.

Added ability in PackageManager to install and uninstall packages for a secondary user. This
is required when the primary user selects a few apps to share with a restricted user.

Remove shared accounts from secondary users when primary user removes the account.

Change-Id: I9378ed0d8c1cc66baf150a4bec0ede56f6f8b06b
2013-03-06 09:49:44 -08:00
Jeff Sharkey
7a96c39c51 Move lingering services to services.jar.
This helps reduce the pressure on framework.jar, and makes it clear
that it should only be used by the system_server.

Bug: 7333397
Change-Id: I0858904239535380fbf30562b793e277d8c3f054
2012-12-11 09:50:50 -08:00
Amith Yamasani
cb2f707f86 am cb5cb740: am aecee8a9: am 717797db: am f763b717: Merge "Authenticate correct user\'s account when pattern fails multiple times." into jb-mr1-dev
* commit 'cb5cb740b587744150df7414bdc2974144e9167a':
  Authenticate correct user's account when pattern fails multiple times.
2012-11-08 06:17:59 -08:00
Amith Yamasani
2c7bc26a74 Authenticate correct user's account when pattern fails multiple times.
Bug: 7473142

Provide hidden methods in AccountManager for querying accounts and
authenticating for a specific user. Lockscreen is running in the
system process. Allow only system process to access accounts across
users.

Also make sure to launch the lock settings screen on the just reset
user using startActivityAsUser()

Change-Id: Ifefc0039ba2b51396b8bd0268f36d5271a3d8676
2012-11-05 18:17:40 -08:00
Jeff Sharkey
b97c91dbdf am 9fb2695c: am 628025fd: am bd4f2181: Merge "Defer more Account actions until user starting." into jb-mr1-dev
* commit '9fb2695c3ed806a4dee755e730b50935c7bb10f6':
  Defer more Account actions until user starting.
2012-10-18 00:12:35 -07:00
Jeff Sharkey
e4996bbd51 Defer more Account actions until user starting.
Instead of explicitly scanning OWNER accounts, move to using the
"user starting" call path for consistency.

Bug: 7358086
Change-Id: Ied3289a074aafa48259d828db1d68804912589b3
2012-10-17 15:05:52 -07:00
Jeff Sharkey
5a5b3b4928 am cd25032d: am 21973701: am 0dd0b144: Merge "Include all accounts in dumpsys." into jb-mr1-dev
* commit 'cd25032d019259ed70490ec9e653a66367766450':
  Include all accounts in dumpsys.
2012-10-10 14:36:47 -07:00
Jeff Sharkey
6eb9620ff2 Include all accounts in dumpsys.
Allow accounts to be loaded when a user is stopped, but always
validate accounts against a freshly queried PMS cache when the user
actually starts.

Bug: 7276595
Change-Id: I0382064c73123c243bc6f6e5da8fc3d0a8b73442
2012-10-10 14:06:23 -07:00
Jeff Sharkey
86e0935a1f am ebb97455: am 62dee3d8: am 0fca2a3e: Merge "Fix build, only invalidate when creating user." into jb-mr1-dev
* commit 'ebb97455327161157432fc0f3effce27990075e5':
  Fix build, only invalidate when creating user.
2012-10-10 08:42:15 -07:00
Jeff Sharkey
4a55653e34 am abd0c099: am 45ed828a: am c85e16ca: Merge "Make RegisteredServicesCache multi-user aware." into jb-mr1-dev
* commit 'abd0c099c75d85ebca9281c7937b5b5b86f6066f':
  Make RegisteredServicesCache multi-user aware.
2012-10-10 08:42:10 -07:00
Jeff Sharkey
9d0791bf6a Fix build, only invalidate when creating user.
Bug: 7276595
Change-Id: I322f9d76a682b2d45fc556e35381442458168fe5
2012-10-10 00:01:26 -07:00
Jeff Sharkey
6ab72d74b8 Make RegisteredServicesCache multi-user aware.
RegisteredServicesCache is used to track account authenticators and
sync adapters, which can vary based on user.  This change requires
that callers now provide a userId when making cache requests.  It
continues persisting into a single file for now, which is keyed based
on UID.

It now watches for package broadcasts from all users, and scans
packages on-demand.  It changes cache callers to provide a relevant
userId, and evicts cache entries when users are stopped.

Changes SyncManager to only work with accounts from running users,
only kicking off pending syncs once a user is started.

Bug: 7276595, 7316150
Change-Id: I79466a84aa69aa37e4bd9691c5d6221d3662ff29
2012-10-09 21:39:19 -07:00
Dianne Hackborn
d6a2666a39 am 1f7a6220: am cd11b223: Merge "Fix issue #7214090: Need to be able to post notifications to all users" into jb-mr1-dev
* commit '1f7a6220c0935f10f2aab6d297ca033b36a33503':
  Fix issue #7214090: Need to be able to post notifications to all users
2012-09-24 11:03:24 -07:00
Dianne Hackborn
50cdf7c306 Fix issue #7214090: Need to be able to post notifications to all users
Also fix a bunch of system services that should be doing this.  And
while doing that, found I needed to fix PendingIntent to evaluate
USER_CURRENT at the point of sending, not creation.

Note that this may end up with us having some notification shown to
non-primary users that lead to settings UI that should only be for
the primary user (such as the vpn notification).  I'm not sure what
to do about this, maybe we need a different UI to come up there or
something, but showing the actual notification for those users at
least seems less broken than not telling them at all.

Change-Id: Iffc51e2d7c847e3d05064d292ab93937646a1ab7
2012-09-24 10:55:46 -07:00
Jatin Lodhia
dbef28ab73 am 4dc67287: am 836033d6: Merge "Update account list on account picker activity resume" into jb-mr1-dev
* commit '4dc67287774495e192193e888fae6603ed85c4be':
  Update account list on account picker activity resume
2012-09-17 11:29:54 -07:00
Jatin Lodhia
8d16778efd Update account list on account picker activity resume
Activities which help select an account gather the list of accounts only during create and dont update it agian. When a user moves out of the account selection activity by clicking home page, deletes an accout in the background and comes back to the earlier accout selection activity, the deleted account still exists as an option. This cl fixes this by updating the account list on resume.

Bug: 7135608
Change-Id: Idc9a2fa6451b032310c0ad66f6db0e2f0967feeb
2012-09-13 18:23:10 -07:00
Mark Fickett
0d42d5424d Merge "Fix docs typo: startActivityWithResult should be startActivityForResult." 2012-09-05 08:14:03 -07:00
Mark Fickett
ab249e08db Fix docs typo: startActivityWithResult should be startActivityForResult.
Change-Id: Ieb75798475fa5cfaa9bf1f1493e03b9ab27f63e3
2012-09-05 09:45:47 -04:00
Dianne Hackborn
2701f325a6 Merge "Remove Binder.getOrigCallingUid()." into jb-mr1-dev 2012-08-31 16:23:47 -07:00
Amith Yamasani
61f57379ca Centralize the creation of the user system directory
Environment.getUserSystemDirectory(int userId)

Use it all relevant places that was hardcoding it.
Also, wipe out the user's system directory when user is removed, otherwise old state
might be transferred to a new user.

Change-Id: I788ce9c4cf9624229e65efa7047bc0c019ccef0a
2012-08-31 15:33:21 -07:00
Dianne Hackborn
4120375d46 Remove Binder.getOrigCallingUid().
Replaced all remaining places that used it with explicit user
specification.

While doing this, I ran into stuff that was creating PendingIntent
objects (that now need to specify the explicit user they are for),
which are also posting notifications...  but have no way to specify
the user for the notification.

So the notification manager in the system process now also gets a
formal concept of a user associated with the notification, which
is passed in to all the necessary aidl calls.  I also removed the
old deprecated aidl interface for posting/cancelling notifications,
since we now always need a user supplied.

There is more work that needs to be done here, though.  For example
I think we need to be able to specify USER_ALL for a notification that
should be shown to all users (such as low storage or low battery).
Along with that, the PendingIntent creation needs to be tweaked to
be able to handle USER_CURRENT by evaluating the user at the point the
pending intent is sent.

That's for another change, however.

Change-Id: I468e14dce8def0e13e0870571e7c31ed32b6310c
2012-08-31 15:11:13 -07:00
Dianne Hackborn
79af1dd54c Switch public APIs to use new UserHandle class for identifying users.
Gets rid of "yet another integer" confusion.

Change-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee
2012-08-17 10:36:08 -07:00
Amith Yamasani
2a00329c6d UserHandle to UserSerialNo mapping
Use AtomicFile for usermanager files.

Added a MANAGE_USERS permission that apps (signature permission) can use
to create/query/modify/remove users.

Change-Id: I5cf232232d0539e7508df8ec9b216e29c2351cd9
2012-08-17 09:06:10 -07:00
Dianne Hackborn
f02b60aa4f Rename UserId to UserHandle.
This is the start of turning this into a formal public API.

Change-Id: I5786d2c320f1de41a06ed5d0f65adb68967287a0
2012-08-16 12:46:38 -07:00
Amith Yamasani
258848d2ae User Manager service to manage users and query user details
Moved a bunch of methods from PackageManager to UserManager.

Fix launching of activities from recents to correct user.

Guest creation APIs

Change-Id: I0733405e6eb2829675665e225c759d6baa2b708f
2012-08-11 18:24:07 -07:00
Dianne Hackborn
b4163a6e12 Add APIs for interacting across users.
- Expose the existing Context.sendBroadcast() as
  Context.sendBroadcastAsUser().
- Add new android:singleUser attribute for services.
- Add new INTERACT_ACROSS_USERS_FULL permission for full
  system-level access to cross-user interface (allows
  sendBroadcastAsUser() to send to any receiver).
- Add new INTERACT_ACROSS_USERS_FULL permission for
  more restricted cross-user interaction: this is required
  for android:singleUser, and allows you to use
  sendBroadcastAsUser() but only to send to your own
  receivers.

Change-Id: I0de88f6718e9505f4de72e3f45d29c0f503b76e9
2012-08-02 19:07:57 -07:00
Kenny Root
26ff6626fc Delay AccountManagerService initialization
Since applications can have Account providers, they need to be delayed
until after PackageManagerService says everything is mounted.
Otherwise the accounts associated with that provider will be removed
immediately when startup happens.

Bug: 6820670
Change-Id: Iba81765260421649f706624d0605a40ebc1347b1
2012-07-30 16:28:44 -07:00
Nicolas Falliere
9530e3a22d Added or fixed doctrings for required permissions.
Bug: 6591338
Change-Id: Ia2092f9994854701b5fa1425c371817367ae07ec
2012-06-18 17:22:34 -07:00
Alice Yang
6cab5e823a Fix bug where existing account not pre-checked
The fix was to call ListView.setItemChecked()
instead of ListView.setSelection() for setting radio button status.
Also refactored the code a bit so it's less verbose.

Bug 6588533

Change-Id: I8add072a0277183baec7c0d5634a28f2d3a28c5e
2012-05-31 15:48:51 -07:00
Amith Yamasani
90f658e17d Merge "Preserve account list in order of creation in the database." into jb-dev 2012-05-30 15:43:19 -07:00
Amith Yamasani
b483a99c6b Preserve account list in order of creation in the database.
This makes it possible to retrieve the account list in the order of creation,
if we want to display them in the account settings screen in that order.

Bug: 6579937

Change-Id: I2025aaa8b770fbb78be978dfde64ef95823fd5aa
2012-05-30 13:58:38 -07:00
Fred Quintana
3c144c3e69 Merge "Add an updateAppPermission() API call to the AccountManagerService AIDL and have the GrantCredentialsPermissionActivity call that instead of a static so that it can be made to run in a different process than the AccountManagerService. Protect this call by checking that the caller has the same UID as the system process." into jb-dev 2012-05-30 11:36:15 -07:00
Alice Yang
727c599454 New UI for account picker
- Added radio buttons to indicate the selected item
- "Add account" is one of the list options instead of a button
- Removed icons
- Added "Cancel" and "OK" buttons
- Use dialog theme
- Omit description text by default

Bug 6505441

Change-Id: I672a11481ee99e183142142bddf8f97b7b149d37
2012-05-29 13:31:04 -07:00
Fred Quintana
d9640ec712 Add an updateAppPermission() API call to the AccountManagerService AIDL
and have the GrantCredentialsPermissionActivity call that instead of a
static so that it can be made to run in a different process than the
AccountManagerService. Protect this call by checking that the caller
has the same UID as the system process.

Bug: 6545417
Change-Id: I295e65cad68883349a47e7927c171af45c89b229
2012-05-24 14:34:43 -07:00
Carlos Valdivia
cf0a881f1c Streamline the logic to add account.
This cl ensures that we immediately route the user to the add account
activity if they don't have an account and their is only one relevant
account type. Also reordered the setContent logic to reduce flicker.

Note that as of this CL there is still some flicker remaining when
launching G+ without an account. But it appears to be fixed in other
apps.

Bug: 6455975
Change-Id: I91e33b4fb9618a31765b4a8651334b1c52640828
2012-05-16 17:43:17 -07:00
Amith Yamasani
856fbbedbb Merge "Don't migrate accounts.db if already migrated." 2012-04-11 16:06:03 -07:00
Amith Yamasani
a23bb38628 Don't migrate accounts.db if already migrated.
Some developers accidentally create a blank accounts.db and this
was causing accounts to vanish. This safeguards the case where both
old and new files exist.

Bug: 6168813
Change-Id: I79cf211acc5422ff1c17fe0c9af80c49227b60ac
2012-04-11 15:32:07 -07:00
Amith Yamasani
f29f2369cf Fix a race condition in SyncManager.onAccountsUpdated()
Get the full list of accounts from AccountManagerService in one shot
instead of getting them per user.

Bug: 6263091

Change-Id: I488f24749a96281ef1e2a620820399c97f471024
2012-04-11 10:29:18 -07:00
Amith Yamasani
135936072b User management and switching
Broadcast intents that get sent out when users are added/removed/switched.

More work on generating user-specific information in package manager queries.
APIs to update user name and query a user by id.
Removed Package.mSetStopped and mSetEnabled, since they're not user specific.

User removal:
- Cleanup ActivityManager, PackageManager, WallpaperManager, AppWidgetService
  and AccountManager.
- Shutdown processes belonging to the user.

Don't show vibrate option in long-press power if there's no vibrator.

Lock the screen when switching users, to force unlocking.

Change-Id: Ib23a721cb75285eef5fd6ba8c7272462764038fa
2012-03-27 11:23:01 -07:00
Fred Quintana
f57bdf3a2b Merge "Fix an initialization ordering bug due to the userprofile changes." 2012-03-20 16:19:45 -07:00
Fred Quintana
70e6190858 Fix an initialization ordering bug due to the userprofile changes.
Bug: 6194599
Change-Id: I6ebedec3b5f045374f216aa1419bfdb57141a80e
2012-03-20 14:10:16 -07:00
Amith Yamasani
219be44a4f Merge "Bind to the correct instance of the authenticator service." 2012-03-19 17:01:23 -07:00
Amith Yamasani
34daa75260 Bind to the correct instance of the authenticator service.
Otherwise you will see authentication failures on secondary users' accounts.

Change-Id: Ia3f8427f68df6048cdca65710bf673ac12a2cddb
2012-03-19 16:14:23 -07:00
Marc Blank
c6b0f99bb3 Use renameTo safely when creating the user 0 account database
* Because the user directory probably won't exist, the renameTo
  in previous code fails silently

Bug: 6188815
Change-Id: I6afd1bad9bbd1a36de7e93d9e02ed7172b1ed370
2012-03-18 19:18:49 -07:00
Ken Wakasa
f76a50ce8f Fix obvious typos under frameworks/base/core
Change-Id: Ia5fc3db1bb51824e7523885553be926bcc42d736
2012-03-09 22:48:43 +09:00
Amith Yamasani
04e0d265e3 Make SyncManager and AccountManagerService multi-user aware.
AccountManagerService
- Maintain multiple account lists, one per user
- Keep multiple databases of accounts
- Account db moved to /data/system/users/<userid>/

SyncManager
- SyncStorageEngine keeps track of multiple users' accounts.
- SyncQueue maintained as a single instance, queueing requests from
  multiple users.
- Changed some methods to take userId arguments
- Removed some deadc0de
- Store the userId in the SyncOperation, so we know which provider
  instance to bind to when queued operations are processed.

ContentService
- Pass along the userid to sync manager calls.

ActivityManagerService:
- Fixed a bug in cancelIntentSender
- Don't bring other user's task forward when resetting tasks.

Updated tests

Change-Id: If317340ef68e902787aa3f5ceb4cf96f14aea695
2012-03-08 10:52:36 -08:00
Andy McFadden
2f36229db8 Use Map.Entry, not HashMap.Entry
Map.Entry is the defined return value from entrySet().  HashMap.Entry
shouldn't be used directly.

Change-Id: Ia21598c6a73fe7eb22179ce114095f779c903084
2012-01-20 14:43:38 -08:00
Fred Quintana
2becf93d27 When in the Choose Account flow if the accounts list display was initially
skipped if the user cancels out of adding an account the flow itself should
be canceled rather than showing the accounts list display.

Bug: 5599693
Change-Id: I5075e86656e237dddcb5e1d76e432e1cf525ab79
2011-11-15 17:33:08 -08:00