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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderTest.java

Issue 1452603002: Supervised user web restrictions content provider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reply to more comments including changing interthread communication Created 5 years 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: chrome/android/javatests/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..432f48fb716a7a4097d9a679df22474883a8a2a2
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderTest.java
@@ -0,0 +1,112 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.superviseduser;
+
+import android.accounts.Account;
+import android.content.ContentProviderClient;
+import android.content.ContentResolver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.RemoteException;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.childaccounts.ChildAccountService;
+import org.chromium.chrome.browser.preferences.PrefServiceBridge;
+import org.chromium.chrome.test.ChromeActivityTestCaseBase;
+import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
+import org.chromium.components.webrestriction.WebRestrictionsContentProvider;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+
+/**
+ * Instrumentation test for SupervisedUserContentProvider.
+ */
+public class SupervisedUserContentProviderTest extends ChromeActivityTestCaseBase<ChromeActivity> {
+ private static final String DEFAULT_ACCOUNT = "test@gmail.com";
+ private static final String AUTHORITY_SUFFIX = ".SupervisedUserProvider";
+ private ContentResolver mResolver;
+ private String mAuthority;
+ private Uri mUri;
+
+ public SupervisedUserContentProviderTest() {
+ super(ChromeActivity.class);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ mResolver = getInstrumentation().getContext().getContentResolver();
+ assertNotNull(mResolver);
+ mAuthority = getInstrumentation().getTargetContext().getPackageName() + AUTHORITY_SUFFIX;
+ mUri = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(mAuthority)
+ .path("authorized")
+ .build();
+ SigninTestUtil.get().resetSigninState();
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ SigninTestUtil.get().resetSigninState();
+ super.tearDown();
+ }
+
+ @Override
+ public void startMainActivity() throws InterruptedException {
+ SigninTestUtil.setUpAuthForTest(getInstrumentation());
+
+ // In principle the SupervisedUserContentProvider should work whenever Chrome is installed
+ // (even if it isn't running), but to test it we need to set up a dummy child, and to do
+ // this within a test we need to start Chrome.
+ startMainActivityOnBlankPage();
+ }
+
+ @SmallTest
+ public void testNoSupervisedUser() throws RemoteException, ExecutionException {
+ assertFalse(ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() {
+
+ @Override
+ public Boolean call() throws Exception {
+ PrefServiceBridge.getInstance().setSupervisedUserId("");
+ return ChildAccountService.isChildAccount();
+ }
+
+ }));
+ ContentProviderClient client = mResolver.acquireContentProviderClient(mAuthority);
+ assertNotNull(client);
+ Cursor cursor = client.query(mUri, null, "url = 'http://google.com'", null, null);
+ assertNotNull(cursor);
+ assertEquals(WebRestrictionsContentProvider.PROCEED, cursor.getInt(0));
+ cursor = client.query(mUri, null, "url = 'http://www.notgoogle.com'", null, null);
+ assertNotNull(cursor);
+ assertEquals(WebRestrictionsContentProvider.PROCEED, cursor.getInt(0));
+ }
+
+ @SmallTest
+ public void testWithSupervisedUser() throws RemoteException, ExecutionException {
+ final Account account = SigninTestUtil.get().addAndSignInTestAccount();
+ assertNotNull(account);
+ assertTrue(ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() {
+
+ @Override
+ public Boolean call() throws Exception {
+ PrefServiceBridge.getInstance().setSupervisedUserId("ChildAccountSUID");
+ return ChildAccountService.isChildAccount();
+ }
+
+ }));
+ ContentProviderClient client = mResolver.acquireContentProviderClient(mAuthority);
+ assertNotNull(client);
+ // setFilter for testing sets a default filter that blocks by default.
+ mResolver.call(mUri, "setFilterForTesting", null, null);
+ Cursor cursor = client.query(mUri, null, "url = 'http://www.google.com'", null, null);
+ assertNotNull(cursor);
+ assertEquals(WebRestrictionsContentProvider.BLOCKED, cursor.getInt(0));
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698