Index: chrome/android/java/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProvider.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProvider.java |
deleted file mode 100644 |
index 3baf141b3cade70f0861ff46dacc826b6fa5df4c..0000000000000000000000000000000000000000 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProvider.java |
+++ /dev/null |
@@ -1,180 +0,0 @@ |
-// 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.os.Bundle; |
-import android.util.Pair; |
- |
-import org.chromium.base.ThreadUtils; |
-import org.chromium.base.VisibleForTesting; |
-import org.chromium.base.annotations.CalledByNative; |
-import org.chromium.base.library_loader.LibraryProcessType; |
-import org.chromium.base.library_loader.ProcessInitException; |
-import org.chromium.components.webrestriction.WebRestrictionsContentProvider; |
-import org.chromium.content.browser.BrowserStartupController; |
- |
-import java.util.concurrent.CountDownLatch; |
- |
-/** |
- * Content provider for telling other apps (e.g. WebView apps) about the supervised user URL filter. |
- */ |
-public class SupervisedUserContentProvider extends WebRestrictionsContentProvider { |
- private long mNativeSupervisedUserContentProvider = 0; |
- |
- private long getSupervisedUserContentProvider() throws ProcessInitException { |
- if (mNativeSupervisedUserContentProvider != 0) { |
- return mNativeSupervisedUserContentProvider; |
- } |
- |
- BrowserStartupController.get(getContext(), LibraryProcessType.PROCESS_BROWSER) |
- .startBrowserProcessesSync(false); |
- |
- mNativeSupervisedUserContentProvider = nativeCreateSupervisedUserContentProvider(); |
- return mNativeSupervisedUserContentProvider; |
- } |
- |
- @VisibleForTesting |
- void setNativeSupervisedUserContentProviderForTesting(long nativeProvider) { |
- mNativeSupervisedUserContentProvider = nativeProvider; |
- } |
- |
- @VisibleForTesting |
- static class SupervisedUserQueryReply { |
- final CountDownLatch mLatch = new CountDownLatch(1); |
- private Pair<Boolean, String> mResult; |
- @VisibleForTesting |
- @CalledByNative("SupervisedUserQueryReply") |
- void onQueryComplete(boolean result, String errorMessage) { |
- // This must be called precisely once per query. |
- assert mResult == null; |
- mResult = new Pair<Boolean, String>(result, errorMessage); |
- mLatch.countDown(); |
- } |
- Pair<Boolean, String> getResult() throws InterruptedException { |
- mLatch.await(); |
- return mResult; |
- } |
- } |
- |
- @Override |
- protected Pair<Boolean, String> shouldProceed(final String url) { |
- // This will be called on multiple threads (but never the UI thread), |
- // see http://developer.android.com/guide/components/processes-and-threads.html#ThreadSafe. |
- // The reply comes back on a different thread (possibly the UI thread) some time later. |
- // As such it needs to correctly match the replies to the calls. It does this by creating a |
- // reply object for each query, and passing this through the callback structure. The reply |
- // object also handles waiting for the reply. |
- assert !ThreadUtils.runningOnUiThread(); |
- final SupervisedUserQueryReply queryReply = new SupervisedUserQueryReply(); |
- ThreadUtils.runOnUiThread(new Runnable() { |
- @Override |
- public void run() { |
- try { |
- nativeShouldProceed(getSupervisedUserContentProvider(), queryReply, url); |
- } catch (ProcessInitException e) { |
- queryReply.onQueryComplete(false, null); |
- } |
- } |
- }); |
- try { |
- // This will block until an onQueryComplete call on a different thread adds |
- // something to the queue. |
- return queryReply.getResult(); |
- } catch (InterruptedException e) { |
- return new Pair<Boolean, String>(false, null); |
- } |
- } |
- |
- @Override |
- protected boolean canInsert() { |
- // Chrome always allows insertion requests. |
- return true; |
- } |
- |
- @VisibleForTesting |
- static class SupervisedUserInsertReply { |
- final CountDownLatch mLatch = new CountDownLatch(1); |
- boolean mResult; |
- @VisibleForTesting |
- @CalledByNative("SupervisedUserInsertReply") |
- void onInsertRequestSendComplete(boolean result) { |
- // This must be called precisely once per query. |
- assert mLatch.getCount() == 1; |
- mResult = result; |
- mLatch.countDown(); |
- } |
- boolean getResult() throws InterruptedException { |
- mLatch.await(); |
- return mResult; |
- } |
- } |
- |
- @Override |
- protected boolean requestInsert(final String url) { |
- // This will be called on multiple threads (but never the UI thread), |
- // see http://developer.android.com/guide/components/processes-and-threads.html#ThreadSafe. |
- // The reply comes back on a different thread (possibly the UI thread) some time later. |
- // As such it needs to correctly match the replies to the calls. It does this by creating a |
- // reply object for each query, and passing this through the callback structure. The reply |
- // object also handles waiting for the reply. |
- assert !ThreadUtils.runningOnUiThread(); |
- final SupervisedUserInsertReply insertReply = new SupervisedUserInsertReply(); |
- ThreadUtils.runOnUiThread(new Runnable() { |
- @Override |
- public void run() { |
- try { |
- nativeRequestInsert(getSupervisedUserContentProvider(), insertReply, url); |
- } catch (ProcessInitException e) { |
- insertReply.onInsertRequestSendComplete(false); |
- } |
- } |
- }); |
- try { |
- return insertReply.getResult(); |
- } catch (InterruptedException e) { |
- return false; |
- } |
- } |
- |
- @VisibleForTesting |
- @Override |
- public Bundle call(String method, String arg, Bundle bundle) { |
- if (method.equals("setFilterForTesting")) setFilterForTesting(); |
- return null; |
- } |
- |
- @VisibleForTesting |
- void setFilterForTesting() { |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- try { |
- nativeSetFilterForTesting(getSupervisedUserContentProvider()); |
- } catch (ProcessInitException e) { |
- // There is no way of returning anything sensible here, so ignore the error and |
- // do nothing. |
- } |
- } |
- }); |
- } |
- |
- @VisibleForTesting |
- @CalledByNative |
- void onSupervisedUserFilterUpdated() { |
- onFilterChanged(); |
- } |
- |
- @VisibleForTesting native long nativeCreateSupervisedUserContentProvider(); |
- |
- @VisibleForTesting |
- native void nativeShouldProceed(long nativeSupervisedUserContentProvider, |
- SupervisedUserQueryReply queryReply, String url); |
- |
- @VisibleForTesting |
- native void nativeRequestInsert(long nativeSupervisedUserContentProvider, |
- SupervisedUserInsertReply insertReply, String url); |
- |
- private native void nativeSetFilterForTesting(long nativeSupervisedUserContentProvider); |
-} |