Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java |
index 23e12bfefb916ed14040ff19f3d1d221bab2abe9..60d3de9586b5f92dfc802b9e783d462574008cb9 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java |
@@ -5,7 +5,6 @@ |
package org.chromium.chrome.browser.customtabs; |
import android.app.Activity; |
-import android.app.Application; |
import android.app.PendingIntent; |
import android.content.Context; |
import android.content.Intent; |
@@ -136,6 +135,8 @@ |
// prerender and hidden tab loads with unmatching fragments. |
private boolean mIsFirstLoad; |
+ private final CustomTabsConnection mConnection = CustomTabsConnection.getInstance(); |
+ |
private static class PageLoadMetricsObserver implements PageLoadMetrics.Observer { |
private final CustomTabsConnection mConnection; |
private final CustomTabsSessionToken mSession; |
@@ -238,9 +239,7 @@ |
String url = IntentHandler.getUrlFromIntent(intent); |
if (TextUtils.isEmpty(url)) return false; |
- CustomTabsConnection connection = CustomTabsConnection.getInstance( |
- (Application) ContextUtils.getApplicationContext()); |
- connection.onHandledIntent(session, url, intent); |
+ CustomTabsConnection.getInstance().onHandledIntent(session, url, intent); |
sActiveContentHandler.loadUrlAndTrackFromTimestamp(new LoadUrlParams(url), |
IntentHandler.getTimestampFromIntent(intent)); |
return true; |
@@ -316,16 +315,14 @@ |
public void onStart() { |
super.onStart(); |
mIsClosing = false; |
- CustomTabsConnection.getInstance(getApplication()) |
- .keepAliveForSession(mIntentDataProvider.getSession(), |
- mIntentDataProvider.getKeepAliveServiceIntent()); |
+ mConnection.keepAliveForSession( |
+ mIntentDataProvider.getSession(), mIntentDataProvider.getKeepAliveServiceIntent()); |
} |
@Override |
public void onStop() { |
super.onStop(); |
- CustomTabsConnection.getInstance(getApplication()) |
- .dontKeepAliveForSession(mIntentDataProvider.getSession()); |
+ mConnection.dontKeepAliveForSession(mIntentDataProvider.getSession()); |
} |
@Override |
@@ -337,13 +334,11 @@ |
super.preInflationStartup(); |
mSession = mIntentDataProvider.getSession(); |
supportRequestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY); |
- CustomTabsConnection connection = CustomTabsConnection.getInstance(getApplication()); |
- mSpeculatedUrl = connection.getSpeculatedUrl(mSession); |
+ mSpeculatedUrl = mConnection.getSpeculatedUrl(mSession); |
mHasSpeculated = !TextUtils.isEmpty(mSpeculatedUrl); |
- if (getSavedInstanceState() == null |
- && CustomTabsConnection.hasWarmUpBeenFinished(getApplication())) { |
+ if (getSavedInstanceState() == null && CustomTabsConnection.hasWarmUpBeenFinished()) { |
initializeTabModels(); |
- mMainTab = getHiddenTab(connection); |
+ mMainTab = getHiddenTab(); |
if (mMainTab == null) mMainTab = createMainTab(); |
mIsFirstLoad = true; |
loadUrlInTab(mMainTab, new LoadUrlParams(getUrlToLoad()), |
@@ -365,8 +360,7 @@ |
getToolbarManager().setCloseButtonDrawable(mIntentDataProvider.getCloseButtonDrawable()); |
getToolbarManager().setShowTitle(mIntentDataProvider.getTitleVisibilityState() |
== CustomTabsIntent.SHOW_PAGE_TITLE); |
- if (CustomTabsConnection.getInstance(getApplication()) |
- .shouldHideDomainForSession(mSession)) { |
+ if (mConnection.shouldHideDomainForSession(mSession)) { |
getToolbarManager().setUrlBarHidden(true); |
} |
int toolbarColor = mIntentDataProvider.getToolbarColor(); |
@@ -419,11 +413,10 @@ |
public void finishNativeInitialization() { |
if (!mIntentDataProvider.isInfoPage()) FirstRunSignInProcessor.start(this); |
- final CustomTabsConnection connection = CustomTabsConnection.getInstance(getApplication()); |
// If extra headers have been passed, cancel any current prerender, as |
// prerendering doesn't support extra headers. |
if (IntentHandler.getExtraHeadersFromIntent(getIntent()) != null) { |
- connection.cancelSpeculation(mSession); |
+ mConnection.cancelSpeculation(mSession); |
} |
getTabModelSelector().getModel(false).addObserver(mTabModelObserver); |
@@ -533,11 +526,11 @@ |
} |
}; |
recordClientPackageName(); |
- connection.showSignInToastIfNecessary(mSession, getIntent()); |
+ mConnection.showSignInToastIfNecessary(mSession, getIntent()); |
String url = getUrlToLoad(); |
- String packageName = connection.getClientPackageNameForSession(mSession); |
+ String packageName = mConnection.getClientPackageNameForSession(mSession); |
if (TextUtils.isEmpty(packageName)) { |
- packageName = connection.extractCreatorPackage(getIntent()); |
+ packageName = mConnection.extractCreatorPackage(getIntent()); |
} |
DataUseTabUIManager.onCustomTabInitialNavigation(mMainTab, packageName, url); |
@@ -562,15 +555,15 @@ |
* Encapsulates CustomTabsConnection#takeHiddenTab() |
* with additional initialization logic. |
*/ |
- private Tab getHiddenTab(CustomTabsConnection connection) { |
+ private Tab getHiddenTab() { |
String url = getUrlToLoad(); |
- String referrerUrl = connection.getReferrer(mSession, getIntent()); |
- Tab tab = connection.takeHiddenTab(mSession, url, referrerUrl); |
+ String referrerUrl = mConnection.getReferrer(mSession, getIntent()); |
+ Tab tab = mConnection.takeHiddenTab(mSession, url, referrerUrl); |
mUsingHiddenTab = tab != null; |
if (!mUsingHiddenTab) return null; |
RecordHistogram.recordEnumeratedHistogram("CustomTabs.WebContentsStateOnLaunch", |
WEBCONTENTS_STATE_PRERENDERED_WEBCONTENTS, WEBCONTENTS_STATE_MAX); |
- tab.setAppAssociatedWith(connection.getClientPackageNameForSession(mSession)); |
+ tab.setAppAssociatedWith(mConnection.getClientPackageNameForSession(mSession)); |
if (mIntentDataProvider.shouldEnableEmbeddedMediaExperience()) { |
tab.enableEmbeddedMediaExperience(true); |
} |
@@ -579,8 +572,7 @@ |
} |
private Tab createMainTab() { |
- CustomTabsConnection connection = CustomTabsConnection.getInstance(getApplication()); |
- WebContents webContents = takeWebContents(connection); |
+ WebContents webContents = takeWebContents(); |
int assignedTabId = IntentUtils.safeGetIntExtra( |
getIntent(), IntentHandler.EXTRA_TAB_ID, Tab.INVALID_TAB_ID); |
@@ -588,7 +580,7 @@ |
getIntent(), IntentHandler.EXTRA_PARENT_TAB_ID, Tab.INVALID_TAB_ID); |
Tab tab = new Tab(assignedTabId, parentTabId, false, this, getWindowAndroid(), |
TabLaunchType.FROM_EXTERNAL_APP, null, null); |
- tab.setAppAssociatedWith(connection.getClientPackageNameForSession(mSession)); |
+ tab.setAppAssociatedWith(mConnection.getClientPackageNameForSession(mSession)); |
tab.initialize( |
webContents, getTabContentManager(), |
new CustomTabDelegateFactory( |
@@ -605,10 +597,10 @@ |
return tab; |
} |
- private WebContents takeWebContents(CustomTabsConnection connection) { |
+ private WebContents takeWebContents() { |
mUsingPrerender = true; |
int webContentsStateOnLaunch = WEBCONTENTS_STATE_PRERENDERED_WEBCONTENTS; |
- WebContents webContents = takePrerenderedWebContents(connection); |
+ WebContents webContents = takePrerenderedWebContents(); |
if (webContents == null) { |
mUsingPrerender = false; |
@@ -631,17 +623,15 @@ |
RecordHistogram.recordEnumeratedHistogram("CustomTabs.WebContentsStateOnLaunch", |
webContentsStateOnLaunch, WEBCONTENTS_STATE_MAX); |
- if (!mUsingPrerender) { |
- connection.resetPostMessageHandlerForSession(mSession, webContents); |
- } |
+ if (!mUsingPrerender) mConnection.resetPostMessageHandlerForSession(mSession, webContents); |
return webContents; |
} |
- private WebContents takePrerenderedWebContents(CustomTabsConnection connection) { |
+ private WebContents takePrerenderedWebContents() { |
String url = getUrlToLoad(); |
- String referrerUrl = connection.getReferrer(mSession, getIntent()); |
- return connection.takePrerenderedUrl(mSession, url, referrerUrl); |
+ String referrerUrl = mConnection.getReferrer(mSession, getIntent()); |
+ return mConnection.takePrerenderedUrl(mSession, url, referrerUrl); |
} |
private WebContents takeAsyncWebContents() { |
@@ -658,8 +648,7 @@ |
mTabObserver = new CustomTabObserver( |
getApplication(), mSession, mIntentDataProvider.isOpenedByChrome()); |
- mMetricsObserver = new PageLoadMetricsObserver( |
- CustomTabsConnection.getInstance(getApplication()), mSession, tab); |
+ mMetricsObserver = new PageLoadMetricsObserver(mConnection, mSession, tab); |
tab.addObserver(mTabObserver); |
prepareTabBackground(tab); |
@@ -672,8 +661,7 @@ |
} |
private void recordClientPackageName() { |
- String clientName = CustomTabsConnection.getInstance(getApplication()) |
- .getClientPackageNameForSession(mSession); |
+ String clientName = mConnection.getClientPackageNameForSession(mSession); |
if (TextUtils.isEmpty(clientName)) clientName = mIntentDataProvider.getClientPackageName(); |
final String packageName = clientName; |
if (TextUtils.isEmpty(packageName) || packageName.contains(getPackageName())) return; |
@@ -732,8 +720,7 @@ |
@Override |
public void onPauseWithNative() { |
super.onPauseWithNative(); |
- CustomTabsConnection.getInstance(getApplication()).notifyNavigationEvent( |
- mSession, CustomTabsCallback.TAB_HIDDEN); |
+ mConnection.notifyNavigationEvent(mSession, CustomTabsCallback.TAB_HIDDEN); |
} |
@Override |
@@ -787,8 +774,7 @@ |
IntentHandler.addReferrerAndHeaders(params, intent); |
if (params.getReferrer() == null) { |
- params.setReferrer(CustomTabsConnection.getInstance(getApplication()) |
- .getReferrerForSession(mSession)); |
+ params.setReferrer(mConnection.getReferrerForSession(mSession)); |
} |
// See ChromeTabCreator#getTransitionType(). This marks the navigation chain as starting |
// from an external intent (unless otherwise specified by an extra in the intent). |
@@ -1098,8 +1084,7 @@ |
mMainTab = null; |
// mHasCreatedTabEarly == true => mMainTab != null in the rest of the code. |
mHasCreatedTabEarly = false; |
- CustomTabsConnection.getInstance(getApplication()).resetPostMessageHandlerForSession( |
- mSession, null); |
+ mConnection.resetPostMessageHandlerForSession(mSession, null); |
tab.detachAndStartReparenting(intent, startActivityOptions, finalizeCallback); |
} else { |
// Temporarily allowing disk access while fixing. TODO: http://crbug.com/581860 |