Commit Graph

168 Commits

Author SHA1 Message Date
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
Fred Quintana
166466d483 Fixed a bug that causes AccountManager calls to hang forever, eventually
exhausting the binder threads in the gapps process, making it unusable.

Bug: 5486091

Change-Id: I82bd197e27c2be1bf82e4e5cc1468e1c6a3e4919
2011-10-24 17:17:28 -07:00
Fred Quintana
01df6a8ee2 fix bug where the instance saving of the ChooseTypeAndAccountActivity
would only work in the case where onSaveInstanceState was called.

 - combined mExistingAccounts and mSavedAccounts into one field
 - set this field when starting the addAccount request
 - write this to the instance state if the request state
   is ADDING_ACCOUNT
 - read this field from the instance state, if any,
   when the request state is ADDING_ACCOUNT

Bug: 5459669
Change-Id: I5a7b4943de8e706cc8a21ff9f54fce4258f18b19
2011-10-17 21:06:30 -07:00
Fred Quintana
e9095bd737 reworked the flow in the account chooser
- resilient to the chooser activity being killed due to memory pressure
 - back now goes back to the main chooser screen rather than canceling
   it completely

Bug: 5358896
Bug: 5381201
Bug: 5387749

Change-Id: I10e76013b2cceffc37ea891746533d6a08f279b7
2011-10-12 14:54:57 -07:00
Costin Manolache
6d288bd2f3 Merge "b/5399355 StringIndexOutOfBoundsException from AccountManagerService" 2011-10-07 17:54:05 -07:00
Costin Manolache
85e7279d9c b/5399355 StringIndexOutOfBoundsException from AccountManagerService
Change-Id: I13426a8b57d6fcbc7a43ffd61922439b0fae332c
2011-10-07 09:42:49 -07:00
Kenny Root
3abd75ba3a Add DUMP permission checks to services
Some services have info that is not readily available any other way. Add
a permission check to those services.

Bug: 5389201
Change-Id: I5a9724ec89e1c11ef7813eeb52a6a05b3ea92af5
2011-09-29 11:04:15 -07:00
Fred Quintana
9bbdd0bf50 Fix a bug in the account chooser where relaunching an in-progress flow
results in a blank screen.

The fix involves making the first activity just call the account
type chooser to get the account type to add, rather than having
the account type chooser also kick off the AccountManager.addAccount()
request itself. Instead the first activity will get the type
back and then call AccountManager.addAccount()

Bug: 5346810
Change-Id: I4a0cf2370971b98f8ee0910f5401d97e999e546b
2011-09-27 17:24:32 -07:00
Fred Quintana
a77253a417 An extra is being written as one type and read as the wrong type.
Bug: 5342556
Change-Id: I664bd84546cb8da2936c5afe65381336a97ef5cd
2011-09-19 16:26:37 -07:00
Fred Quintana
d88324d8ab Fixed the javadoc for AccountManager.newChooseAccountIntent()
Change-Id: Ieb358fa3be46d793de1e04452819477cec786b5b
2011-09-19 11:46:33 -07:00
Fred Quintana
b04fe4e82a Continuation of the unified account chooser flow.
- made the UI match the spec
 - added ability to force the account chooser to appear
 - added ability to pass in a description that will override the stock one
 - added ability to pass in requiredFeatures for addAccount
 - added ability to pass in an authTokenType for addAccount

Bug: 5293377
Change-Id: I243c0fd6598c943b1f65753e1f5d3c86629f64f5
2011-09-16 22:55:08 -07:00
Fred Quintana
1121bb5e6f Add a generic account chooser/add account flow for apps.
The activity is launched as follows:
  Account account1 = new Account("account1@gmail.com", "com.google")
  Account account2 = new Account("account2@gmail.com", "com.google")
  ArrayList<Account> accounts = new ArrayList<Account>();
  accounts.add(account1);
  accounts.add(account2);
  String[] accountTypes = new String[]{"com.google", "com.android.exchange"};
  Bundle addAccountOptions = null;
  Intent intent = AccountManager.newChooseAccountIntent(account1, accounts,
    accountTypes, addAccountOptions);
  startActivityForResult(intent, 0);

Change-Id: I05a467bdc3552a2e39397b0182879351f4324389
2011-09-15 17:40:43 -07:00
Costin Manolache
e5847ada7b b/5316640 fix bundle add
Change-Id: I567c26f6d8fc1a0ea5827fd32f9012b979cbea71
2011-09-14 12:53:18 -07:00
Costin Manolache
b61e8fbabe For consistency with getAuthToken, pass UID/PID for add account. Needed for customizing the add account flow
b/5278759 API changes to pass package, options
b/5249018 consistent/customized add account UI
b/5270079 tag who adds the account

Change-Id: I1ee211d751b565c725c89aa1a429ef2f5bebe34a
2011-09-12 12:11:24 -07:00
Fred Quintana
ad93a323fe Add a form of getAuthToken that both accepts an options Bundle and
doesn't accepts an activity.

Bug: 5278759
Change-Id: I513c9b5d8a907e26b9ad3c0d5977614820a4990c
2011-09-08 14:12:49 -07:00
Fred Quintana
5d1a0c3933 Make the AbstractAccountAuthenticator return an error to the AccountManagerService
if it detects a RuntimeException.

Bug: 4726899
Change-Id: I5c478464cd0d426722257b2c5c75f964cd839ea6
2011-06-23 17:03:44 -07:00
Brian Carlstrom
46703b0995 Tolerate missing AccountManager resource, not just missing resource name
In addition to the primary change in the subject, also some minor cleanup of javadoc, typos, CloseGuard warning, etc found while working on a new AbstractAccountAuthenticator.

Change-Id: I73f3408773a43a0021a15f8d051fd3dbbdf898a5
2011-04-07 11:58:37 -07:00
repo sync
9ab66ff42f resolved conflicts for merge of 17f95e92 to honeycomb-plus-aosp
Change-Id: Ic82ab20e216d810f6372c833ac49c3856449c09c
2011-03-22 11:47:39 -07:00
Fred Quintana
eedb4df195 remove the code that clears the passwords when the sim
is replaced with a different one.

DO NOT MERGE
patched from honeycomb-mr1

Bug: 3404577
Change-Id: If11fc6be817ca1fa3dd5c085ff9696a1c5ea3a03
2011-03-07 11:11:44 -08:00
Fred Quintana
f9f240e3ad Fix a deadlock in AccountManagerService cause by different
paths of code getting the mCacheLock and DB locks in different
orders.

The philosophy I followed for this was to ensure that the
DatabaseHelper is only ever accessed from within a
synchronized(mCacheLock) block. I also renamed a bunch of
methods to make it easier to know if a given method should
be called from within this synchronized block.

Bug: 3404506
Change-Id: Ia48f95e77b77647d0717f70f1d8364da3719cc13
2011-03-01 11:23:19 -08:00
Costin Manolache
ef419b2e14 DO NOT MERGE
Backport (with modifications ) some changes from Honeycomb, that would allow authenticators to control caching and permissions.

This is backward compatible - both new and old authenticators will work with old and new framework,
but the functionality will only be present if both sides support it.

Change-Id: Ib2838cc2159f45264b38c844cd4c1d6f315d8064
2011-03-01 11:20:06 -08:00
Fred Quintana
082aa9cdc4 Merge "Make the AccountManagerService clear old grants when the package that the grants refer to is no longer installed." 2011-02-28 18:09:58 -08:00
Fred Quintana
c1a4e5dc41 Make the AccountManagerService clear old grants when the package
that the grants refer to is no longer installed.

Bug: 3425856
Change-Id: I6ec057415c8f35be91c8434ff10e6cf5c1fc47bb
2011-02-28 16:36:14 -08:00
Fred Quintana
e3e5b0994e remove the code that clears the passwords when the sim
is replaced with a different one.

Bug: 3404577
Change-Id: I3149df7040dfc56e91544010ac56b5912964d925
2011-02-25 10:39:20 -08:00