Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
index e79e1d6bc87d987bf6a34c818af1c37f03066f07..4ef154ee1a0a60233816b9ecc2833daf1cb0f9ec 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java |
@@ -5,7 +5,6 @@ |
package org.chromium.chrome.browser.customtabs; |
import android.app.ActivityManager; |
-import android.app.Application; |
import android.app.PendingIntent; |
import android.content.Context; |
import android.content.Intent; |
@@ -27,6 +26,7 @@ |
import android.util.Pair; |
import android.widget.RemoteViews; |
+import org.chromium.base.BaseChromiumApplication; |
import org.chromium.base.CommandLine; |
import org.chromium.base.ContextUtils; |
import org.chromium.base.Log; |
@@ -180,7 +180,7 @@ |
@VisibleForTesting |
SpeculationParams mSpeculation; |
- protected final Application mApplication; |
+ protected final Context mContext; |
protected final ClientManager mClientManager; |
private final boolean mLogRequests; |
private final AtomicBoolean mWarmupHasBeenCalled = new AtomicBoolean(); |
@@ -197,21 +197,20 @@ |
* Public to be instanciable from {@link ChromeApplication}. This is however |
* intended to be private. |
*/ |
- public CustomTabsConnection(Application application) { |
+ public CustomTabsConnection() { |
super(); |
- mApplication = application; |
- mClientManager = new ClientManager(mApplication); |
+ mContext = ContextUtils.getApplicationContext(); |
+ // Command line switch values are used below. |
+ BaseChromiumApplication.initCommandLine(mContext); |
+ mClientManager = new ClientManager(mContext); |
mLogRequests = CommandLine.getInstance().hasSwitch(LOG_SERVICE_REQUESTS); |
} |
/** |
* @return The unique instance of ChromeCustomTabsConnection. |
- * TODO(estevenson): Remove Application param. |
- */ |
- @SuppressFBWarnings("BC_UNCONFIRMED_CAST") |
- public static CustomTabsConnection getInstance(Application application) { |
+ */ |
+ public static CustomTabsConnection getInstance() { |
if (sInstance.get() == null) { |
- ((ChromeApplication) application).initCommandLine(); |
sInstance.compareAndSet(null, AppHooks.get().createCustomTabsConnection()); |
} |
return sInstance.get(); |
@@ -264,17 +263,16 @@ |
/** Warmup activities that should only happen once. */ |
@SuppressFBWarnings("DM_EXIT") |
- private static void initializeBrowser(final Application app) { |
+ private static void initializeBrowser(final Context context) { |
ThreadUtils.assertOnUiThread(); |
try { |
- ChromeBrowserInitializer.getInstance(app).handleSynchronousStartupWithGpuWarmUp(); |
+ ChromeBrowserInitializer.getInstance(context).handleSynchronousStartupWithGpuWarmUp(); |
} catch (ProcessInitException e) { |
Log.e(TAG, "ProcessInitException while starting the browser process."); |
// Cannot do anything without the native library, and cannot show a |
// dialog to the user. |
System.exit(-1); |
} |
- final Context context = app.getApplicationContext(); |
ChildProcessLauncherHelper.warmUp(context); |
ChromeBrowserInitializer.initNetworkChangeNotifier(context); |
WarmupManager.getInstance().initializeViewHierarchy( |
@@ -295,8 +293,8 @@ |
/** |
* @return Whether {@link CustomTabsConnection#warmup(long)} has been called. |
*/ |
- public static boolean hasWarmUpBeenFinished(Application application) { |
- return getInstance(application).mWarmupHasBeenFinished.get(); |
+ public static boolean hasWarmUpBeenFinished() { |
+ return getInstance().mWarmupHasBeenFinished.get(); |
} |
/** |
@@ -325,7 +323,7 @@ |
// 4. RequestThrottler first access has to be done only once. |
// (1) |
- if (!initialized) initializeBrowser(mApplication); |
+ if (!initialized) initializeBrowser(mContext); |
// (2) |
if (mayCreateSpareWebContents && mSpeculation == null) { |
@@ -341,7 +339,7 @@ |
// The throttling database uses shared preferences, that can cause a |
// StrictMode violation on the first access. Make sure that this access is |
// not in mayLauchUrl. |
- RequestThrottler.loadInBackground(mApplication); |
+ RequestThrottler.loadInBackground(mContext); |
} |
} finally { |
TraceEvent.end("CustomTabsConnection.warmupInternal"); |
@@ -1009,7 +1007,7 @@ |
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) { |
do { |
ActivityManager am = |
- (ActivityManager) mApplication.getSystemService(Context.ACTIVITY_SERVICE); |
+ (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); |
// Extra paranoia here and below, some L 5.0.x devices seem to throw NPE somewhere |
// in this code. |
// See https://crbug.com/654705. |
@@ -1068,8 +1066,7 @@ |
return SPECULATION_STATUS_ON_START_NOT_ALLOWED_DATA_REDUCTION_ENABLED; |
} |
ConnectivityManager cm = |
- (ConnectivityManager) mApplication.getApplicationContext().getSystemService( |
- Context.CONNECTIVITY_SERVICE); |
+ (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); |
if (cm.isActiveNetworkMetered() && !shouldPrerenderOnCellularForSession(session)) { |
return SPECULATION_STATUS_ON_START_NOT_ALLOWED_NETWORK_METERED; |
} |
@@ -1165,7 +1162,7 @@ |
if (mExternalPrerenderHandler == null) { |
mExternalPrerenderHandler = new ExternalPrerenderHandler(); |
} |
- Rect contentBounds = ExternalPrerenderHandler.estimateContentSize(mApplication, true); |
+ Rect contentBounds = ExternalPrerenderHandler.estimateContentSize(mContext, true); |
String referrer = getReferrer(session, extrasIntent); |
boolean forced = shouldPrerenderOnCellularForSession(session); |
@@ -1220,12 +1217,12 @@ |
} |
@VisibleForTesting |
- void resetThrottling(Context context, int uid) { |
+ void resetThrottling(int uid) { |
mClientManager.resetThrottling(uid); |
} |
@VisibleForTesting |
- void ban(Context context, int uid) { |
+ void ban(int uid) { |
mClientManager.ban(uid); |
} |