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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/precache/PrecacheLauncher.java

Issue 1031003003: precache: Move the java files into //components/precache/android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/precache/PrecacheLauncher.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/precache/PrecacheLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/precache/PrecacheLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..7480c638aab866cae73f9a2c8c9fb642bb0bc84e
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/precache/PrecacheLauncher.java
@@ -0,0 +1,95 @@
+// 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.precache;
+
+import android.content.Context;
+
+import org.chromium.base.CalledByNative;
+import org.chromium.base.ThreadUtils;
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager;
+
+import java.util.concurrent.Callable;
+
+/** Class that interacts with the PrecacheManager to control precache cycles. */
+public abstract class PrecacheLauncher {
+ /** Pointer to the native PrecacheLauncher object. Set to 0 when uninitialized. */
+ private long mNativePrecacheLauncher;
+
+ /** Destroy the native PrecacheLauncher, releasing the memory that it was using. */
+ public void destroy() {
+ if (mNativePrecacheLauncher != 0) {
+ nativeDestroy(mNativePrecacheLauncher);
+ mNativePrecacheLauncher = 0;
+ }
+ }
+
+ /** Starts a precache cycle. */
+ public void start() {
+ // Lazily initialize the native PrecacheLauncher.
+ if (mNativePrecacheLauncher == 0) {
+ mNativePrecacheLauncher = nativeInit();
+ }
+ nativeStart(mNativePrecacheLauncher);
+ }
+
+ /** Cancel the precache cycle if one is ongoing. */
+ public void cancel() {
+ // Lazily initialize the native PrecacheLauncher.
+ if (mNativePrecacheLauncher == 0) {
+ mNativePrecacheLauncher = nativeInit();
+ }
+ nativeCancel(mNativePrecacheLauncher);
+ }
+
+ /** Called when a precache cycle completes. */
+ protected abstract void onPrecacheCompleted();
+
+ /**
+ * Called by native code when the precache cycle completes. This method exists because an
+ * abstract method cannot be directly called from native.
+ */
+ @CalledByNative
+ private void onPrecacheCompletedCallback() {
+ onPrecacheCompleted();
+ }
+
+ /**
+ * Returns true if precaching is enabled by either Finch or the command line flag, and also by
+ * the predictive network actions preference and current network connection type.
+ *
+ * @param privacyPreferencesManager Singleton that manages the prefetch bandwidth preference.
+ */
+ public static boolean isPrecachingEnabled(
+ final PrivacyPreferencesManager privacyPreferencesManager) {
+ if (!nativeIsPrecachingEnabled()) return false;
+ // privacyPreferencesManager.shouldPrerender() can only be executed on the UI thread.
+ return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() {
+ @Override
+ public Boolean call() {
+ return privacyPreferencesManager.shouldPrerender();
+ }
+ });
+ }
+
+ /**
+ * If precaching is enabled, then allow the PrecacheService to be launched and signal Chrome
+ * when conditions are right to start precaching. If precaching is disabled, prevent the
+ * PrecacheService from ever starting.
+ *
+ * @param privacyPreferencesManager Singleton that manages the prefetch bandwidth preference.
+ * @param context The context of the PrecacheServiceLauncher.
+ */
+ public static void updatePrecachingEnabled(PrivacyPreferencesManager privacyPreferencesManager,
+ Context context) {
+ PrecacheServiceLauncher.setIsPrecachingEnabled(context,
+ isPrecachingEnabled(privacyPreferencesManager));
+ }
+
+ private native long nativeInit();
+ private native void nativeDestroy(long nativePrecacheLauncher);
+ private native void nativeStart(long nativePrecacheLauncher);
+ private native void nativeCancel(long nativePrecacheLauncher);
+ private static native boolean nativeIsPrecachingEnabled();
+}
« no previous file with comments | « chrome/android/java/DEPS ('k') | chrome/android/java/src/org/chromium/chrome/browser/precache/PrecacheService.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698