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

Unified Diff: components/policy/android/java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java

Issue 1387633002: Update instrumentation tests to use PreTestHooks for policies (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: components/policy/android/java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java
diff --git a/components/policy/android/java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java b/components/policy/android/java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java
index 60b40bd139a467abdc88342ece61ae473486b3ac..ea7290325a932eb0f5b3c6308cdfd4c23d6cf816 100644
--- a/components/policy/android/java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java
+++ b/components/policy/android/java/src/org/chromium/policy/AbstractAppRestrictionsProvider.java
@@ -30,6 +30,12 @@
public abstract class AbstractAppRestrictionsProvider extends PolicyProvider {
private static final String PREFERENCE_KEY = "App Restrictions";
+ /**
+ * Key of a flag to be set in the cached policy bundle. If present, the cached policies will
+ * be used instead of the ones returned by the system.
+ */
+ @VisibleForTesting public static final String STICKY_CACHE_KEY = "StickyCacheForTests";
+
private final Context mContext;
private final SharedPreferences mSharedPreferences;
private final BroadcastReceiver mAppRestrictionsChangedReceiver = new BroadcastReceiver() {
@@ -61,6 +67,10 @@ public AbstractAppRestrictionsProvider(Context context) {
*/
protected abstract String getRestrictionChangeIntentAction();
+ protected String getPreferenceCacheKey() {
+ return getClass().getCanonicalName();
+ }
+
/**
* Start listening for restrictions changes. Does nothing if this is not supported by the
* platform.
@@ -95,8 +105,12 @@ protected Bundle doInBackground(Void... params) {
@Override
protected void onPostExecute(Bundle result) {
- cachePolicies(result);
- notifySettingsAvailable(result);
+ if (cachedResult != null && cachedResult.getBoolean(STICKY_CACHE_KEY)) {
aberent 2015/10/07 11:13:02 If the cachedResult is null then this will take th
dgn 2015/10/07 14:36:57 As I understand it, the only way to get null would
aberent 2015/10/15 14:12:25 I don't like test only anything, but if you need s
+ notifySettingsAvailable(cachedResult);
+ } else {
+ cachePolicies(mSharedPreferences, result);
+ notifySettingsAvailable(result);
+ }
}
}.executeOnExecutor(mExecutor);
}
@@ -117,12 +131,12 @@ public void stopListening() {
}
}
- private void cachePolicies(Bundle policies) {
+ private static void cachePolicies(SharedPreferences prefs, Bundle policies) {
Parcel p = Parcel.obtain();
p.writeBundle(policies);
byte bytes[] = p.marshall();
String s = Base64.encodeToString(bytes, 0);
- SharedPreferences.Editor ed = mSharedPreferences.edit();
+ SharedPreferences.Editor ed = prefs.edit();
ed.putString(PREFERENCE_KEY, s);
ed.apply();
}
@@ -169,4 +183,11 @@ protected void recordStartTimeHistogram(long startTime) {
void setTaskExecutor(Executor testExecutor) {
mExecutor = testExecutor;
}
+
+ /** Context has to be the same that will be used to load the policies. */
+ @VisibleForTesting
+ public static void setCachedPoliciesForTesting(Context context, Bundle policies) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ cachePolicies(prefs, policies);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698