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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java

Issue 1416173006: Start using a themed application context for constructing views in Tab (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: made mTab final Created 5 years, 2 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/tab/Tab.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
index 6e634453d15ac56c8f807701aa8b0e4c9a96810c..ea1d1af5e5db60ea5479e918ac489096a9edf44a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
@@ -15,6 +15,7 @@ import android.os.Message;
import android.provider.Browser;
import android.text.TextUtils;
import android.util.Log;
+import android.view.ContextThemeWrapper;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
@@ -135,7 +136,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
/**
* The {@link Activity} used to create {@link View}s and other Android components. Unlike
- * {@link #mApplicationContext}, this is not publicly exposed to help prevent leaking the
+ * {@link #mThemedApplicationContext}, this is not publicly exposed to help prevent leaking the
* {@link Activity}.
*/
protected final ChromeActivity mActivity;
@@ -152,7 +153,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
* An Application {@link Context}. Unlike {@link #mActivity}, this is the only one that is
* publicly exposed to help prevent leaking the {@link Activity}.
*/
- private final Context mApplicationContext;
+ private final Context mThemedApplicationContext;
/** Gives {@link Tab} a way to interact with the Android window. */
private final WindowAndroid mWindowAndroid;
@@ -543,11 +544,12 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
mParentId = parentId;
mIncognito = incognito;
mActivity = activity;
- mApplicationContext = activity != null ? activity.getApplicationContext() : null;
+ mThemedApplicationContext = activity != null ? new ContextThemeWrapper(
+ activity.getApplicationContext(), ChromeActivity.getThemeId()) : null;
mWindowAndroid = window;
mLaunchType = type;
- if (mActivity != null) {
- Resources resources = mActivity.getResources();
+ if (mThemedApplicationContext != null) {
+ Resources resources = mThemedApplicationContext.getResources();
mIdealFaviconSize = resources.getDimensionPixelSize(R.dimen.default_favicon_size);
mDefaultThemeColor = mIncognito
? ApiCompatibilityUtils.getColor(resources, R.color.incognito_primary_color)
@@ -805,7 +807,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
* @return The application {@link Context} associated with this tab.
*/
protected Context getApplicationContext() {
- return mApplicationContext;
+ return mThemedApplicationContext.getApplicationContext();
}
/**
@@ -1480,9 +1482,9 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
* {@link ContentViewCore}.
*/
protected void initContentViewCore(WebContents webContents) {
- ContentViewCore cvc = new ContentViewCore(mActivity);
- ContentView cv = ContentView.createContentView(mActivity, cvc);
- cv.setContentDescription(mActivity.getResources().getString(
+ ContentViewCore cvc = new ContentViewCore(mThemedApplicationContext);
+ ContentView cv = ContentView.createContentView(mThemedApplicationContext, cvc);
+ cv.setContentDescription(mThemedApplicationContext.getResources().getString(
R.string.accessibility_content_view));
cvc.initialize(cv, cv, webContents, getWindowAndroid());
setContentViewCore(cvc);
@@ -1518,7 +1520,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
assert false;
mContentViewParent.removeAllViews();
}
- mContentViewParent = new FrameLayout(mActivity);
+ mContentViewParent = new FrameLayout(mThemedApplicationContext);
mContentViewParent.addView(cvc.getContainerView(),
new FrameLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
@@ -1542,14 +1544,14 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
if (mInfoBarContainer == null) {
// The InfoBarContainer needs to be created after the ContentView has been natively
// initialized.
- mInfoBarContainer =
- new InfoBarContainer(mActivity, getId(), mContentViewParent, this);
+ mInfoBarContainer = new InfoBarContainer(
+ mThemedApplicationContext, getId(), mContentViewParent, this);
} else {
mInfoBarContainer.onParentViewChanged(getId(), mContentViewParent);
}
mInfoBarContainer.setContentViewCore(mContentViewCore);
- mSwipeRefreshHandler = new SwipeRefreshHandler(mActivity);
+ mSwipeRefreshHandler = new SwipeRefreshHandler(mThemedApplicationContext);
mSwipeRefreshHandler.setContentViewCore(mContentViewCore);
for (TabObserver observer : mObservers) observer.onContentChanged(this);
@@ -1559,7 +1561,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
// web views.
mContentViewCore.setShouldSetAccessibilityFocusOnPageLoad(true);
- mDownloadDelegate = new ChromeDownloadDelegate(mActivity,
+ mDownloadDelegate = new ChromeDownloadDelegate(mThemedApplicationContext,
mActivity.getTabModelSelector(), this);
cvc.setDownloadDelegate(mDownloadDelegate);
@@ -1641,7 +1643,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
// Make sure we are not adding the "Aw, snap" view over an existing one.
assert mSadTabView == null;
mSadTabView = SadTabViewFactory.createSadTabView(
- mActivity, suggestionAction, reloadButtonAction);
+ mThemedApplicationContext, suggestionAction, reloadButtonAction);
// Show the sad tab inside ContentView.
getContentViewCore().getContainerView().addView(
@@ -2138,9 +2140,9 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
@CalledByNative
public void swapWebContents(
WebContents webContents, boolean didStartLoad, boolean didFinishLoad) {
- ContentViewCore cvc = new ContentViewCore(mActivity);
- ContentView cv = ContentView.createContentView(mActivity, cvc);
- cv.setContentDescription(mActivity.getResources().getString(
+ ContentViewCore cvc = new ContentViewCore(mThemedApplicationContext);
+ ContentView cv = ContentView.createContentView(mThemedApplicationContext, cvc);
+ cv.setContentDescription(mThemedApplicationContext.getResources().getString(
R.string.accessibility_content_view));
cvc.initialize(cv, cv, webContents, getWindowAndroid());
swapContentViewCore(cvc, false, didStartLoad, didFinishLoad);

Powered by Google App Engine
This is Rietveld 408576698