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

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

Issue 1716313002: [Herb] Set up field trial for UI prototypes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: startsWith Created 4 years, 9 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
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.preferences; 5 package org.chromium.chrome.browser.preferences;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.content.SharedPreferences; 8 import android.content.SharedPreferences;
9 import android.os.StrictMode;
10 import android.preference.PreferenceManager; 9 import android.preference.PreferenceManager;
11 import android.text.TextUtils;
12 10
13 import org.chromium.base.ApplicationStatus;
14 import org.chromium.base.CommandLine;
15 import org.chromium.base.Log;
16 import org.chromium.base.annotations.SuppressFBWarnings; 11 import org.chromium.base.annotations.SuppressFBWarnings;
17 import org.chromium.chrome.browser.ChromeSwitches; 12 import org.chromium.chrome.browser.ChromeSwitches;
18 import org.chromium.chrome.browser.ChromeVersionInfo;
19 import org.chromium.chrome.browser.crash.MinidumpUploadService.ProcessType; 13 import org.chromium.chrome.browser.crash.MinidumpUploadService.ProcessType;
20 import org.chromium.chrome.browser.signin.SigninPromoUma; 14 import org.chromium.chrome.browser.signin.SigninPromoUma;
21 import org.chromium.ui.base.DeviceFormFactor; 15 import org.chromium.chrome.browser.util.FeatureUtilities;
22 16
23 import java.util.Locale; 17 import java.util.Locale;
24 18
25 19
26 /** 20 /**
27 * ChromePreferenceManager stores and retrieves various values in Android shared preferences. 21 * ChromePreferenceManager stores and retrieves various values in Android shared preferences.
28 */ 22 */
29 public class ChromePreferenceManager { 23 public class ChromePreferenceManager {
30 /** 24 /**
31 * Preference that denotes that Chrome has attempted to migrate from tabbed mode to document 25 * Preference that denotes that Chrome has attempted to migrate from tabbed mode to document
(...skipping 20 matching lines...) Expand all
52 private static final String ENABLE_CUSTOM_TABS = "enable_custom_tabs"; 46 private static final String ENABLE_CUSTOM_TABS = "enable_custom_tabs";
53 private static final String HERB_FLAVOR_KEY = "herb_flavor"; 47 private static final String HERB_FLAVOR_KEY = "herb_flavor";
54 48
55 private static final String SUCCESS_UPLOAD_SUFFIX = "_crash_success_upload"; 49 private static final String SUCCESS_UPLOAD_SUFFIX = "_crash_success_upload";
56 private static final String FAILURE_UPLOAD_SUFFIX = "_crash_failure_upload"; 50 private static final String FAILURE_UPLOAD_SUFFIX = "_crash_failure_upload";
57 51
58 private static final int SIGNIN_PROMO_CYCLE_IN_DAYS = 120; 52 private static final int SIGNIN_PROMO_CYCLE_IN_DAYS = 120;
59 private static final long MILLISECONDS_IN_DAY = 1000 * 60 * 60 * 24; 53 private static final long MILLISECONDS_IN_DAY = 1000 * 60 * 60 * 24;
60 54
61 private static ChromePreferenceManager sPrefs; 55 private static ChromePreferenceManager sPrefs;
62 private static String sCachedHerbFlavor;
63 private static boolean sIsHerbFlavorCached;
64 56
65 private final SharedPreferences mSharedPreferences; 57 private final SharedPreferences mSharedPreferences;
66 private final Context mContext; 58 private final Context mContext;
67 59
68 private ChromePreferenceManager(Context context) { 60 private ChromePreferenceManager(Context context) {
69 mContext = context.getApplicationContext(); 61 mContext = context.getApplicationContext();
70 mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mCont ext); 62 mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mCont ext);
71 } 63 }
72 64
73 /** 65 /**
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 318
327 /** 319 /**
328 * Sets the number of tap gestures that have been received when not waiting for the promo. 320 * Sets the number of tap gestures that have been received when not waiting for the promo.
329 * @param count Number of taps that have been received when not waiting for the promo. 321 * @param count Number of taps that have been received when not waiting for the promo.
330 */ 322 */
331 public void setContextualSearchTapCount(int count) { 323 public void setContextualSearchTapCount(int count) {
332 writeInt(CONTEXTUAL_SEARCH_TAP_COUNT, count); 324 writeInt(CONTEXTUAL_SEARCH_TAP_COUNT, count);
333 } 325 }
334 326
335 /** 327 /**
336 * @return Which flavor of Herb is active, or null if a prototype isn't bein g tested. 328 * @return Which UI prototype the user is testing. This is cached from nativ e via
329 * {@link FeatureUtilities#cacheHerbFlavor}.
337 */ 330 */
338 public static String getHerbFlavor() { 331 public String getCachedHerbFlavor() {
339 if (!sIsHerbFlavorCached) { 332 return mSharedPreferences.getString(HERB_FLAVOR_KEY, ChromeSwitches.HERB _FLAVOR_DISABLED);
340 Context context = ApplicationStatus.getApplicationContext();
341 if (ChromeVersionInfo.isStableBuild() || ChromeVersionInfo.isBetaBui ld()) return null;
342 if (DeviceFormFactor.isTablet(context)) return null;
343
344 // Allowing disk access for preferences while prototyping.
345 sCachedHerbFlavor = null;
346 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads( );
347 try {
348 sCachedHerbFlavor =
349 ChromePreferenceManager.getInstance(context).getHerbFlav orInternal();
350 } finally {
351 StrictMode.setThreadPolicy(oldPolicy);
352 }
353
354 sIsHerbFlavorCached = true;
355 Log.d(TAG, "Retrieved Herb flavor: " + sCachedHerbFlavor);
356 }
357
358 return sCachedHerbFlavor;
359 }
360
361 private String getHerbFlavorInternal() {
362 return mSharedPreferences.getString(HERB_FLAVOR_KEY, null);
363 } 333 }
364 334
365 /** 335 /**
366 * Caches which flavor of Herb the user prefers from native. 336 * Caches which UI prototype the user is testing.
367 */ 337 */
368 public static boolean cacheHerbFlavor() { 338 public void setCachedHerbFlavor(String flavor) {
369 String oldFlavor = getHerbFlavor(); 339 writeString(HERB_FLAVOR_KEY, flavor);
370 String newFlavor =
371 CommandLine.getInstance().getSwitchValue(ChromeSwitches.HERB_FLA VOR, null);
372 sCachedHerbFlavor = newFlavor;
373 Log.d(TAG, "Caching Herb flavor: " + sCachedHerbFlavor);
374
375 if (!TextUtils.equals(oldFlavor, newFlavor)) {
376 Context context = ApplicationStatus.getApplicationContext();
377 ChromePreferenceManager.getInstance(context).writeString(HERB_FLAVOR _KEY, newFlavor);
378 return true;
379 }
380 return false;
381 } 340 }
382 341
383 /** 342 /**
384 * Writes the given int value to the named shared preference. 343 * Writes the given int value to the named shared preference.
385 * 344 *
386 * @param key The name of the preference to modify. 345 * @param key The name of the preference to modify.
387 * @param value The new value for the preference. 346 * @param value The new value for the preference.
388 */ 347 */
389 private void writeInt(String key, int value) { 348 private void writeInt(String key, int value) {
390 SharedPreferences.Editor ed = mSharedPreferences.edit(); 349 SharedPreferences.Editor ed = mSharedPreferences.edit();
391 ed.putInt(key, value); 350 ed.putInt(key, value);
392 ed.apply(); 351 ed.apply();
393 } 352 }
394 353
395 /** 354 /**
396 * Writes the given String to the named shared preference. 355 * Writes the given String to the named shared preference.
397 * 356 *
398 * @param key The name of the preference to modify. 357 * @param key The name of the preference to modify.
399 * @param value The new value for the preference. 358 * @param value The new value for the preference.
400 */ 359 */
401 private void writeString(String key, String value) { 360 private void writeString(String key, String value) {
402 SharedPreferences.Editor ed = mSharedPreferences.edit(); 361 SharedPreferences.Editor ed = mSharedPreferences.edit();
403 ed.putString(key, value); 362 ed.putString(key, value);
404 ed.apply(); 363 ed.apply();
405 } 364 }
406 } 365 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698