| Index: chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java
|
| index 12a3c6f7573249ae174c73481c4fc1d7312fe905..3a21d7d09fbfbc0e6b7e7aee51421e2b426a777d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java
|
| @@ -8,6 +8,7 @@ import android.annotation.TargetApi;
|
| import android.app.ActivityManager;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| +import android.content.res.Resources;
|
| import android.graphics.Rect;
|
| import android.media.AudioManager;
|
| import android.os.Build;
|
| @@ -58,6 +59,7 @@ import org.chromium.chrome.browser.policy.PolicyAuditor.AuditEvent;
|
| import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
| import org.chromium.chrome.browser.rlz.RevenueStats;
|
| import org.chromium.chrome.browser.search_engines.TemplateUrlService;
|
| +import org.chromium.chrome.browser.ssl.ConnectionSecurityLevel;
|
| import org.chromium.chrome.browser.tab.TabUma.TabCreationState;
|
| import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator;
|
| import org.chromium.chrome.browser.tabmodel.TabModel;
|
| @@ -192,6 +194,8 @@ public class ChromeTab extends Tab {
|
|
|
| private boolean mShouldClearRedirectHistoryForTabClobbering;
|
|
|
| + private final int mDefaultThemeColor;
|
| +
|
| /**
|
| * Basic constructor. This is hidden, so that explicitly named factory methods are used to
|
| * create tabs. initialize() needs to be called afterwards to complete the second level
|
| @@ -226,9 +230,16 @@ public class ChromeTab extends Tab {
|
| }
|
| };
|
| setContentViewClient(createContentViewClient());
|
| - if (mActivity != null && creationState != null) {
|
| - setTabUma(new TabUma(
|
| - this, creationState, mActivity.getTabModelSelector().getModel(incognito)));
|
| + if (mActivity != null) {
|
| + if (creationState != null) {
|
| + setTabUma(new TabUma(this, creationState,
|
| + mActivity.getTabModelSelector().getModel(incognito)));
|
| + }
|
| + Resources resources = mActivity.getResources();
|
| + mDefaultThemeColor = incognito ? resources.getColor(R.color.incognito_primary_color)
|
| + : resources.getColor(R.color.default_primary_color);
|
| + } else {
|
| + mDefaultThemeColor = 0;
|
| }
|
|
|
| if (incognito) {
|
| @@ -256,6 +267,7 @@ public class ChromeTab extends Tab {
|
| super(id, incognito, null, null);
|
| mActivity = null;
|
| mTabRedirectHandler = new TabRedirectHandler(null);
|
| + mDefaultThemeColor = 0;
|
| }
|
|
|
| /**
|
| @@ -1371,4 +1383,22 @@ public class ChromeTab extends Tab {
|
| public OverrideUrlLoadingResult getLastOverrideUrlLoadingResultForTests() {
|
| return mLastOverrideUrlLoadingResult;
|
| }
|
| +
|
| + /**
|
| + * @return The theme color based on declared color and the security state.
|
| + */
|
| + public int getThemeColor() {
|
| + int securityLevel = getSecurityLevel();
|
| + if (securityLevel == ConnectionSecurityLevel.SECURITY_ERROR
|
| + || securityLevel == ConnectionSecurityLevel.SECURITY_WARNING
|
| + || securityLevel == ConnectionSecurityLevel.SECURITY_POLICY_WARNING) {
|
| + return mDefaultThemeColor;
|
| + }
|
| + if (isShowingInterstitialPage()) return mDefaultThemeColor;
|
| + if (isIncognito()) return mDefaultThemeColor;
|
| +
|
| + int color = getWebContents().getThemeColor(mDefaultThemeColor);
|
| + color |= 0xFF000000;
|
| + return color;
|
| + }
|
| }
|
|
|