Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/preferences/MainPreferences.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.preferences;
6
7 import android.content.Context;
8 import android.os.Handler;
9 import android.preference.Preference;
10 import android.preference.Preference.OnPreferenceClickListener;
11 import android.preference.PreferenceFragment;
12 import android.view.Menu;
13 import android.view.MenuInflater;
14 import android.view.MenuItem;
15
16 import com.google.android.apps.chrome.R;
17
18 import org.chromium.chrome.browser.PasswordUIView;
19 import org.chromium.chrome.browser.autofill.PersonalDataManager;
20 import org.chromium.chrome.browser.bookmarkimport.AndroidBrowserImporter;
21 import org.chromium.chrome.browser.bookmarkimport.ImportBookmarksAlertDialog;
22 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
23 import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
24 import org.chromium.chrome.browser.preferences.bandwidth.BandwidthReductionPrefe rences;
25 import org.chromium.chrome.browser.signin.AccountAdder;
26 import org.chromium.chrome.browser.signin.AddGoogleAccountDialogFragment;
27 import org.chromium.chrome.browser.signin.AddGoogleAccountDialogFragment.AddGoog leAccountListener;
28 import org.chromium.chrome.browser.signin.SigninManager;
29 import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
30 import org.chromium.chrome.browser.sync.ui.ChooseAccountFragment;
31 import org.chromium.chrome.browser.util.FeatureUtilities;
32 import org.chromium.sync.signin.AccountManagerHelper;
33 import org.chromium.sync.signin.ChromeSigninController;
34
35 /**
36 * The main settings screen, shown when the user first opens Settings.
37 */
38 public class MainPreferences extends PreferenceFragment implements SignInStateOb server {
39
40 public static final String PREF_SIGN_IN = "sign_in";
41 public static final String PREF_DOCUMENT_MODE = "document_mode";
42 public static final String PREF_AUTOFILL_SETTINGS = "autofill_settings";
43 public static final String PREF_SAVED_PASSWORDS = "saved_passwords";
44 public static final String PREF_HOMEPAGE = "homepage";
45 public static final String PREF_REDUCE_DATA_USAGE = "reduce_data_usage";
46
47 public static final String ACCOUNT_PICKER_DIALOG_TAG = "account_picker_dialo g_tag";
48
49 private SignInPreference mSignInPreference;
50 private ManagedPreferenceDelegate mManagedPreferenceDelegate;
51
52 public MainPreferences() {
53 setHasOptionsMenu(true);
54 mManagedPreferenceDelegate = createManagedPreferenceDelegate();
55 }
56
57 @Override
58 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
59 if (getActivity() == null) return;
60
61 AndroidBrowserImporter androidBrowserImporter = new AndroidBrowserImport er(getActivity());
62 if (androidBrowserImporter.areBookmarksAccessible()) {
63 menu.add(Menu.NONE, R.id.menu_id_import_bookmarks, Menu.NONE,
64 R.string.import_bookmarks);
65 }
66 }
67
68 @Override
69 public boolean onOptionsItemSelected(MenuItem item) {
70 if (item.getItemId() == R.id.menu_id_import_bookmarks) {
71 ImportBookmarksAlertDialog importBookmarksFragment =
72 new ImportBookmarksAlertDialog();
73 importBookmarksFragment.show(getFragmentManager(), null);
74 return true;
75 }
76 return false;
77 }
78
79 @Override
80 public void onResume() {
81 super.onResume();
82 SigninManager.get(getActivity()).addSignInStateObserver(this);
83 updatePreferences();
84 }
85
86 @Override
87 public void onPause() {
88 super.onPause();
89 SigninManager.get(getActivity()).removeSignInStateObserver(this);
90 unregisterSignInPref();
91 }
92
93 private void updatePreferences() {
94 if (getPreferenceScreen() != null) getPreferenceScreen().removeAll();
95 addPreferencesFromResource(R.xml.main_preferences);
96
97 registerSignInPref();
98 mSignInPreference.setOnPreferenceClickListener(new OnPreferenceClickList ener() {
99 @Override
100 public boolean onPreferenceClick(Preference preference) {
101 if (!ChromeSigninController.get(getActivity()).isSignedIn()) {
102 displayAccountPicker();
103 return true;
104 }
105 return false;
106 }
107 });
108
109 Preference documentMode = findPreference(PREF_DOCUMENT_MODE);
110 if (FeatureUtilities.isDocumentModeEligible(getActivity())) {
111 setOnOffSummary(documentMode,
112 !DocumentModeManager.getInstance(getActivity()).isOptedOutOf DocumentMode());
113 } else {
114 getPreferenceScreen().removePreference(documentMode);
115 }
116
117 ChromeBasePreference autofillPref =
118 (ChromeBasePreference) findPreference(PREF_AUTOFILL_SETTINGS);
119 setOnOffSummary(autofillPref, PersonalDataManager.isAutofillEnabled());
120 autofillPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
121
122 ChromeBasePreference passwordsPref =
123 (ChromeBasePreference) findPreference(PREF_SAVED_PASSWORDS);
124 if (PasswordUIView.shouldUseSmartLockBranding()) {
125 passwordsPref.setTitle(getResources().getString(
126 R.string.prefs_smart_lock_for_passwords));
127 }
128 setOnOffSummary(passwordsPref,
129 PrefServiceBridge.getInstance().isRememberPasswordsEnabled());
130 passwordsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
131
132 Preference homepagePref = findPreference(PREF_HOMEPAGE);
133 if (HomepageManager.shouldShowHomepageSetting()) {
134 setOnOffSummary(homepagePref,
135 HomepageManager.getInstance(getActivity()).getPrefHomepageEn abled());
136 } else {
137 getPreferenceScreen().removePreference(homepagePref);
138 }
139
140 ChromeBasePreference bandwidthReduction =
141 (ChromeBasePreference) findPreference(PREF_REDUCE_DATA_USAGE);
142 if (DataReductionProxySettings.getInstance().isDataReductionProxyAllowed ()) {
143 bandwidthReduction.setSummary(
144 BandwidthReductionPreferences.generateSummary(getResources() ));
145 bandwidthReduction.setManagedPreferenceDelegate(mManagedPreferenceDe legate);
146 } else {
147 getPreferenceScreen().removePreference(bandwidthReduction);
148 }
149 }
150
151 private void setOnOffSummary(Preference pref, boolean isOn) {
152 pref.setSummary(getResources().getString(isOn ? R.string.text_on : R.str ing.text_off));
153 }
154
155 private void registerSignInPref() {
156 unregisterSignInPref();
157 mSignInPreference = (SignInPreference) findPreference(PREF_SIGN_IN);
158 mSignInPreference.registerForUpdates();
159 }
160
161 private void unregisterSignInPref() {
162 if (mSignInPreference != null) {
163 mSignInPreference.unregisterForUpdates();
164 mSignInPreference = null;
165 }
166 }
167
168 /**
169 * Displays the account picker or the add account dialog and signs the user in.
170 */
171 private void displayAccountPicker() {
172 Context context = getActivity();
173 if (context == null) return;
174
175 if (!SigninManager.get(context).isSignInAllowed()) {
176 if (SigninManager.get(context).isSigninDisabledByPolicy()) {
177 ManagedPreferencesUtils.showManagedByAdministratorToast(context) ;
178 }
179 return;
180 }
181
182 if (AccountManagerHelper.get(context).hasGoogleAccounts()) {
183 ChooseAccountFragment chooserFragment = new ChooseAccountFragment();
184 chooserFragment.show(getFragmentManager(), ACCOUNT_PICKER_DIALOG_TAG );
185 } else {
186 AddGoogleAccountDialogFragment dialog = new AddGoogleAccountDialogFr agment();
187 dialog.setListener(new AddGoogleAccountListener() {
188 @Override
189 public void onAddAccountClicked() {
190 AccountAdder.getInstance().addAccount(MainPreferences.this,
191 AccountAdder.ADD_ACCOUNT_RESULT);
192 }
193 });
194 dialog.show(getFragmentManager(), null);
195 }
196 }
197
198 // SignInStateObserver
199
200 @Override
201 public void onSignedIn() {
202 // After signing in or out of a managed account, preferences may change or become enabled
203 // or disabled.
204 new Handler().post(new Runnable() {
205 @Override
206 public void run() {
207 updatePreferences();
208 }
209 });
210 }
211
212 @Override
213 public void onSignedOut() {
214 updatePreferences();
215 }
216
217 private ManagedPreferenceDelegate createManagedPreferenceDelegate() {
218 return new ManagedPreferenceDelegate() {
219 @Override
220 public boolean isPreferenceControlledByPolicy(Preference preference) {
221 if (PREF_AUTOFILL_SETTINGS.equals(preference.getKey())) {
222 return PersonalDataManager.isAutofillManaged();
223 }
224 if (PREF_SAVED_PASSWORDS.equals(preference.getKey())) {
225 return PrefServiceBridge.getInstance().isRememberPasswordsMa naged();
226 }
227 if (PREF_REDUCE_DATA_USAGE.equals(preference.getKey())) {
228 return DataReductionProxySettings.getInstance().isDataReduct ionProxyManaged();
229 }
230 return false;
231 }
232
233 @Override
234 public boolean isPreferenceClickDisabledByPolicy(Preference preferen ce) {
235 if (PREF_AUTOFILL_SETTINGS.equals(preference.getKey())) {
236 return PersonalDataManager.isAutofillManaged()
237 && !PersonalDataManager.isAutofillEnabled();
238 }
239 if (PREF_SAVED_PASSWORDS.equals(preference.getKey())) {
240 PrefServiceBridge prefs = PrefServiceBridge.getInstance();
241 return prefs.isRememberPasswordsManaged()
242 && !prefs.isRememberPasswordsEnabled();
243 }
244 if (PREF_REDUCE_DATA_USAGE.equals(preference.getKey())) {
245 DataReductionProxySettings settings = DataReductionProxySett ings.getInstance();
246 return settings.isDataReductionProxyManaged()
247 && !settings.isDataReductionProxyEnabled();
248 }
249 return super.isPreferenceClickDisabledByPolicy(preference);
250 }
251 };
252 }
253 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698