| 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));
|
| + }
|
| +}
|
|
|