| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.signin; | 5 package org.chromium.chrome.browser.signin; |
| 6 | 6 |
| 7 import android.accounts.Account; | 7 import android.accounts.Account; |
| 8 import android.annotation.TargetApi; | 8 import android.annotation.TargetApi; |
| 9 import android.app.Activity; | 9 import android.app.Activity; |
| 10 import android.app.Dialog; | 10 import android.app.Dialog; |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 } | 176 } |
| 177 } | 177 } |
| 178 | 178 |
| 179 /** | 179 /** |
| 180 * Initiate fetching the user accounts data (images and the full name). | 180 * Initiate fetching the user accounts data (images and the full name). |
| 181 * Fetched data will be sent to observers of ProfileDownloader. | 181 * Fetched data will be sent to observers of ProfileDownloader. |
| 182 * | 182 * |
| 183 * @param profile Profile to use. | 183 * @param profile Profile to use. |
| 184 */ | 184 */ |
| 185 private static void startFetchingAccountsInformation(Context context, Profil
e profile) { | 185 private static void startFetchingAccountsInformation(Context context, Profil
e profile) { |
| 186 Account[] accounts = AccountManagerHelper.get().getGoogleAccounts(); | 186 Account[] accounts = AccountManagerHelper.get(context).getGoogleAccounts
(); |
| 187 for (int i = 0; i < accounts.length; i++) { | 187 for (int i = 0; i < accounts.length; i++) { |
| 188 startFetchingAccountInformation(context, profile, accounts[i].name); | 188 startFetchingAccountInformation(context, profile, accounts[i].name); |
| 189 } | 189 } |
| 190 } | 190 } |
| 191 | 191 |
| 192 public void update() { | 192 public void update() { |
| 193 final Context context = getActivity(); | 193 final Context context = getActivity(); |
| 194 if (context == null) return; | 194 if (context == null) return; |
| 195 | 195 |
| 196 if (getPreferenceScreen() != null) getPreferenceScreen().removeAll(); | 196 if (getPreferenceScreen() != null) getPreferenceScreen().removeAll(); |
| 197 | 197 |
| 198 ChromeSigninController signInController = ChromeSigninController.get(); | 198 ChromeSigninController signInController = ChromeSigninController.get(con
text); |
| 199 if (!signInController.isSignedIn()) { | 199 if (!signInController.isSignedIn()) { |
| 200 // The AccountManagementFragment can only be shown when the user is
signed in. If the | 200 // The AccountManagementFragment can only be shown when the user is
signed in. If the |
| 201 // user is signed out, exit the fragment. | 201 // user is signed out, exit the fragment. |
| 202 getActivity().finish(); | 202 getActivity().finish(); |
| 203 return; | 203 return; |
| 204 } | 204 } |
| 205 | 205 |
| 206 addPreferencesFromResource(R.xml.account_management_preferences); | 206 addPreferencesFromResource(R.xml.account_management_preferences); |
| 207 | 207 |
| 208 String signedInAccountName = ChromeSigninController.get().getSignedInAcc
ountName(); | 208 String signedInAccountName = |
| 209 ChromeSigninController.get(getActivity()).getSignedInAccountName
(); |
| 209 String fullName = getCachedUserName(signedInAccountName); | 210 String fullName = getCachedUserName(signedInAccountName); |
| 210 if (TextUtils.isEmpty(fullName)) { | 211 if (TextUtils.isEmpty(fullName)) { |
| 211 fullName = ProfileDownloader.getCachedFullName(Profile.getLastUsedPr
ofile()); | 212 fullName = ProfileDownloader.getCachedFullName(Profile.getLastUsedPr
ofile()); |
| 212 } | 213 } |
| 213 if (TextUtils.isEmpty(fullName)) fullName = signedInAccountName; | 214 if (TextUtils.isEmpty(fullName)) fullName = signedInAccountName; |
| 214 | 215 |
| 215 getActivity().setTitle(fullName); | 216 getActivity().setTitle(fullName); |
| 216 | 217 |
| 217 configureSignOutSwitch(); | 218 configureSignOutSwitch(); |
| 218 configureAddAccountPreference(); | 219 configureAddAccountPreference(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 238 Preference signOutSwitch = findPreference(PREF_SIGN_OUT); | 239 Preference signOutSwitch = findPreference(PREF_SIGN_OUT); |
| 239 if (isChildAccount) { | 240 if (isChildAccount) { |
| 240 getPreferenceScreen().removePreference(signOutSwitch); | 241 getPreferenceScreen().removePreference(signOutSwitch); |
| 241 } else { | 242 } else { |
| 242 signOutSwitch.setEnabled(getSignOutAllowedPreferenceValue(getActivit
y())); | 243 signOutSwitch.setEnabled(getSignOutAllowedPreferenceValue(getActivit
y())); |
| 243 signOutSwitch.setOnPreferenceClickListener(new OnPreferenceClickList
ener() { | 244 signOutSwitch.setOnPreferenceClickListener(new OnPreferenceClickList
ener() { |
| 244 @Override | 245 @Override |
| 245 public boolean onPreferenceClick(Preference preference) { | 246 public boolean onPreferenceClick(Preference preference) { |
| 246 if (!isVisible() || !isResumed()) return false; | 247 if (!isVisible() || !isResumed()) return false; |
| 247 | 248 |
| 248 if (ChromeSigninController.get().isSignedIn() | 249 if (ChromeSigninController.get(getActivity()).isSignedIn() |
| 249 && getSignOutAllowedPreferenceValue(getActivity()))
{ | 250 && getSignOutAllowedPreferenceValue(getActivity()))
{ |
| 250 AccountManagementScreenHelper.logEvent( | 251 AccountManagementScreenHelper.logEvent( |
| 251 ProfileAccountManagementMetrics.TOGGLE_SIGNOUT, | 252 ProfileAccountManagementMetrics.TOGGLE_SIGNOUT, |
| 252 mGaiaServiceType); | 253 mGaiaServiceType); |
| 253 | 254 |
| 254 String managementDomain = | 255 String managementDomain = |
| 255 SigninManager.get(getActivity()).getManagementDo
main(); | 256 SigninManager.get(getActivity()).getManagementDo
main(); |
| 256 if (managementDomain != null) { | 257 if (managementDomain != null) { |
| 257 // Show the 'You are signing out of a managed accoun
t' dialog. | 258 // Show the 'You are signing out of a managed accoun
t' dialog. |
| 258 ConfirmManagedSyncDataDialog.showSignOutFromManagedA
ccountDialog( | 259 ConfirmManagedSyncDataDialog.showSignOutFromManagedA
ccountDialog( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 274 | 275 |
| 275 return false; | 276 return false; |
| 276 } | 277 } |
| 277 | 278 |
| 278 }); | 279 }); |
| 279 } | 280 } |
| 280 } | 281 } |
| 281 | 282 |
| 282 private void configureSyncSettings() { | 283 private void configureSyncSettings() { |
| 283 final Preferences preferences = (Preferences) getActivity(); | 284 final Preferences preferences = (Preferences) getActivity(); |
| 284 final Account account = ChromeSigninController.get().getSignedInUser(); | 285 final Account account = ChromeSigninController.get(getActivity()).getSig
nedInUser(); |
| 285 findPreference(PREF_SYNC_SETTINGS) | 286 findPreference(PREF_SYNC_SETTINGS) |
| 286 .setOnPreferenceClickListener(new OnPreferenceClickListener() { | 287 .setOnPreferenceClickListener(new OnPreferenceClickListener() { |
| 287 @Override | 288 @Override |
| 288 public boolean onPreferenceClick(Preference preference) { | 289 public boolean onPreferenceClick(Preference preference) { |
| 289 if (!isVisible() || !isResumed()) return false; | 290 if (!isVisible() || !isResumed()) return false; |
| 290 | 291 |
| 291 if (ProfileSyncService.get() == null) return true; | 292 if (ProfileSyncService.get() == null) return true; |
| 292 | 293 |
| 293 Bundle args = new Bundle(); | 294 Bundle args = new Bundle(); |
| 294 args.putString(SyncCustomizationFragment.ARGUMENT_ACCOUN
T, account.name); | 295 args.putString(SyncCustomizationFragment.ARGUMENT_ACCOUN
T, account.name); |
| 295 preferences.startFragment(SyncCustomizationFragment.clas
s.getName(), args); | 296 preferences.startFragment(SyncCustomizationFragment.clas
s.getName(), args); |
| 296 | 297 |
| 297 return true; | 298 return true; |
| 298 } | 299 } |
| 299 }); | 300 }); |
| 300 } | 301 } |
| 301 | 302 |
| 302 private void configureGoogleActivityControls() { | 303 private void configureGoogleActivityControls() { |
| 303 Preference pref = findPreference(PREF_GOOGLE_ACTIVITY_CONTROLS); | 304 Preference pref = findPreference(PREF_GOOGLE_ACTIVITY_CONTROLS); |
| 304 if (ChildAccountService.isChildAccount()) { | 305 if (ChildAccountService.isChildAccount()) { |
| 305 pref.setSummary(R.string.sign_in_google_activity_controls_message_ch
ild_account); | 306 pref.setSummary(R.string.sign_in_google_activity_controls_message_ch
ild_account); |
| 306 } | 307 } |
| 307 pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { | 308 pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { |
| 308 @Override | 309 @Override |
| 309 public boolean onPreferenceClick(Preference preference) { | 310 public boolean onPreferenceClick(Preference preference) { |
| 310 Activity activity = getActivity(); | 311 Activity activity = getActivity(); |
| 311 AppHooks.get().createGoogleActivityController().openWebAndAppAct
ivitySettings( | 312 AppHooks.get().createGoogleActivityController().openWebAndAppAct
ivitySettings( |
| 312 activity, ChromeSigninController.get().getSignedInAccoun
tName()); | 313 activity, ChromeSigninController.get(activity).getSigned
InAccountName()); |
| 313 RecordUserAction.record("Signin_AccountSettings_GoogleActivityCo
ntrolsClicked"); | 314 RecordUserAction.record("Signin_AccountSettings_GoogleActivityCo
ntrolsClicked"); |
| 314 return true; | 315 return true; |
| 315 } | 316 } |
| 316 }); | 317 }); |
| 317 } | 318 } |
| 318 | 319 |
| 319 private void configureAddAccountPreference() { | 320 private void configureAddAccountPreference() { |
| 320 ChromeBasePreference addAccount = (ChromeBasePreference) findPreference(
PREF_ADD_ACCOUNT); | 321 ChromeBasePreference addAccount = (ChromeBasePreference) findPreference(
PREF_ADD_ACCOUNT); |
| 321 | 322 |
| 322 if (ChildAccountService.isChildAccount()) { | 323 if (ChildAccountService.isChildAccount()) { |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 private void updateAccountsList() { | 409 private void updateAccountsList() { |
| 409 PreferenceScreen prefScreen = getPreferenceScreen(); | 410 PreferenceScreen prefScreen = getPreferenceScreen(); |
| 410 if (prefScreen == null) return; | 411 if (prefScreen == null) return; |
| 411 | 412 |
| 412 for (int i = 0; i < mAccountsListPreferences.size(); i++) { | 413 for (int i = 0; i < mAccountsListPreferences.size(); i++) { |
| 413 prefScreen.removePreference(mAccountsListPreferences.get(i)); | 414 prefScreen.removePreference(mAccountsListPreferences.get(i)); |
| 414 } | 415 } |
| 415 mAccountsListPreferences.clear(); | 416 mAccountsListPreferences.clear(); |
| 416 | 417 |
| 417 final Preferences activity = (Preferences) getActivity(); | 418 final Preferences activity = (Preferences) getActivity(); |
| 418 Account[] accounts = AccountManagerHelper.get().getGoogleAccounts(); | 419 Account[] accounts = AccountManagerHelper.get(activity).getGoogleAccount
s(); |
| 419 int nextPrefOrder = FIRST_ACCOUNT_PREF_ORDER; | 420 int nextPrefOrder = FIRST_ACCOUNT_PREF_ORDER; |
| 420 | 421 |
| 421 for (Account account : accounts) { | 422 for (Account account : accounts) { |
| 422 ChromeBasePreference pref = new ChromeBasePreference(activity); | 423 ChromeBasePreference pref = new ChromeBasePreference(activity); |
| 423 pref.setSelectable(false); | 424 pref.setSelectable(false); |
| 424 pref.setTitle(account.name); | 425 pref.setTitle(account.name); |
| 425 | 426 |
| 426 boolean isChildAccount = ChildAccountService.isChildAccount(); | 427 boolean isChildAccount = ChildAccountService.isChildAccount(); |
| 427 pref.setUseReducedPadding(isChildAccount); | 428 pref.setUseReducedPadding(isChildAccount); |
| 428 pref.setIcon(new BitmapDrawable(getResources(), | 429 pref.setIcon(new BitmapDrawable(getResources(), |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 dialog.setMessage(getString(R.string.wiping_profile_data_message)); | 468 dialog.setMessage(getString(R.string.wiping_profile_data_message)); |
| 468 dialog.setIndeterminate(true); | 469 dialog.setIndeterminate(true); |
| 469 return dialog; | 470 return dialog; |
| 470 } | 471 } |
| 471 } | 472 } |
| 472 | 473 |
| 473 @Override | 474 @Override |
| 474 public void onSignOutClicked() { | 475 public void onSignOutClicked() { |
| 475 // In case the user reached this fragment without being signed in, we gu
ard the sign out so | 476 // In case the user reached this fragment without being signed in, we gu
ard the sign out so |
| 476 // we do not hit a native crash. | 477 // we do not hit a native crash. |
| 477 if (!ChromeSigninController.get().isSignedIn()) return; | 478 if (!ChromeSigninController.get(getActivity()).isSignedIn()) return; |
| 478 | 479 |
| 479 final Activity activity = getActivity(); | 480 final Activity activity = getActivity(); |
| 480 final DialogFragment clearDataProgressDialog = new ClearDataProgressDial
og(); | 481 final DialogFragment clearDataProgressDialog = new ClearDataProgressDial
og(); |
| 481 SigninManager.get(activity).signOut(null, new SigninManager.WipeDataHook
s() { | 482 SigninManager.get(activity).signOut(null, new SigninManager.WipeDataHook
s() { |
| 482 @Override | 483 @Override |
| 483 public void preWipeData() { | 484 public void preWipeData() { |
| 484 clearDataProgressDialog.show( | 485 clearDataProgressDialog.show( |
| 485 activity.getFragmentManager(), CLEAR_DATA_PROGRESS_DIALO
G_TAG); | 486 activity.getFragmentManager(), CLEAR_DATA_PROGRESS_DIALO
G_TAG); |
| 486 } | 487 } |
| 487 @Override | 488 @Override |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 update(); | 536 update(); |
| 536 } | 537 } |
| 537 | 538 |
| 538 @Override | 539 @Override |
| 539 public void onSignedOut() { | 540 public void onSignedOut() { |
| 540 update(); | 541 update(); |
| 541 } | 542 } |
| 542 | 543 |
| 543 /** | 544 /** |
| 544 * Open the account management UI. | 545 * Open the account management UI. |
| 546 * @param applicationContext An application context. |
| 547 * @param profile A user profile. |
| 545 * @param serviceType A signin::GAIAServiceType that triggered the dialog. | 548 * @param serviceType A signin::GAIAServiceType that triggered the dialog. |
| 546 */ | 549 */ |
| 547 public static void openAccountManagementScreen(int serviceType) { | 550 public static void openAccountManagementScreen( |
| 548 Intent intent = PreferencesLauncher.createIntentForSettingsPage( | 551 Context applicationContext, Profile profile, int serviceType) { |
| 549 ContextUtils.getApplicationContext(), AccountManagementFragment.
class.getName()); | 552 Intent intent = PreferencesLauncher.createIntentForSettingsPage(applicat
ionContext, |
| 553 AccountManagementFragment.class.getName()); |
| 550 Bundle arguments = new Bundle(); | 554 Bundle arguments = new Bundle(); |
| 551 arguments.putInt(SHOW_GAIA_SERVICE_TYPE_EXTRA, serviceType); | 555 arguments.putInt(SHOW_GAIA_SERVICE_TYPE_EXTRA, serviceType); |
| 552 intent.putExtra(Preferences.EXTRA_SHOW_FRAGMENT_ARGUMENTS, arguments); | 556 intent.putExtra(Preferences.EXTRA_SHOW_FRAGMENT_ARGUMENTS, arguments); |
| 553 ContextUtils.getApplicationContext().startActivity(intent); | 557 applicationContext.startActivity(intent); |
| 554 } | 558 } |
| 555 | 559 |
| 556 /** | 560 /** |
| 557 * Converts a square user picture to a round user picture. | 561 * Converts a square user picture to a round user picture. |
| 558 * @param bitmap A bitmap to convert. | 562 * @param bitmap A bitmap to convert. |
| 559 * @return A rounded picture bitmap. | 563 * @return A rounded picture bitmap. |
| 560 */ | 564 */ |
| 561 public static Bitmap makeRoundUserPicture(Bitmap bitmap) { | 565 public static Bitmap makeRoundUserPicture(Bitmap bitmap) { |
| 562 if (bitmap == null) return null; | 566 if (bitmap == null) return null; |
| 563 | 567 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 689 context, profile, accountName, imageSidePixels, false); | 693 context, profile, accountName, imageSidePixels, false); |
| 690 } | 694 } |
| 691 | 695 |
| 692 /** | 696 /** |
| 693 * Prefetch the primary account image and name. | 697 * Prefetch the primary account image and name. |
| 694 * | 698 * |
| 695 * @param context A context to use. | 699 * @param context A context to use. |
| 696 * @param profile A profile to use. | 700 * @param profile A profile to use. |
| 697 */ | 701 */ |
| 698 public static void prefetchUserNamePicture(Context context, Profile profile)
{ | 702 public static void prefetchUserNamePicture(Context context, Profile profile)
{ |
| 699 final String accountName = ChromeSigninController.get().getSignedInAccou
ntName(); | 703 final String accountName = ChromeSigninController.get(context).getSigned
InAccountName(); |
| 700 if (TextUtils.isEmpty(accountName)) return; | 704 if (TextUtils.isEmpty(accountName)) return; |
| 701 if (sToNamePicture.get(accountName) != null) return; | 705 if (sToNamePicture.get(accountName) != null) return; |
| 702 | 706 |
| 703 ProfileDownloader.addObserver(new ProfileDownloader.Observer() { | 707 ProfileDownloader.addObserver(new ProfileDownloader.Observer() { |
| 704 @Override | 708 @Override |
| 705 public void onProfileDownloaded(String accountId, String fullName, S
tring givenName, | 709 public void onProfileDownloaded(String accountId, String fullName, S
tring givenName, |
| 706 Bitmap bitmap) { | 710 Bitmap bitmap) { |
| 707 if (TextUtils.equals(accountName, accountId)) { | 711 if (TextUtils.equals(accountName, accountId)) { |
| 708 updateUserNamePictureCache(accountId, fullName, bitmap); | 712 updateUserNamePictureCache(accountId, fullName, bitmap); |
| 709 ProfileDownloader.removeObserver(this); | 713 ProfileDownloader.removeObserver(this); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 728 * @param context A context | 732 * @param context A context |
| 729 * @param isAllowed True if the sign out is not disabled due to a child/EDU
account | 733 * @param isAllowed True if the sign out is not disabled due to a child/EDU
account |
| 730 */ | 734 */ |
| 731 public static void setSignOutAllowedPreferenceValue(Context context, boolean
isAllowed) { | 735 public static void setSignOutAllowedPreferenceValue(Context context, boolean
isAllowed) { |
| 732 ContextUtils.getAppSharedPreferences() | 736 ContextUtils.getAppSharedPreferences() |
| 733 .edit() | 737 .edit() |
| 734 .putBoolean(SIGN_OUT_ALLOWED, isAllowed) | 738 .putBoolean(SIGN_OUT_ALLOWED, isAllowed) |
| 735 .apply(); | 739 .apply(); |
| 736 } | 740 } |
| 737 } | 741 } |
| OLD | NEW |