Index: chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarModelImpl.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarModelImpl.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarModelImpl.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3aa3d287b18715af296c555ce14f57a0423ac0af |
--- /dev/null |
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarModelImpl.java |
@@ -0,0 +1,125 @@ |
+// 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.toolbar; |
+ |
+import android.content.Context; |
+ |
+import com.google.android.apps.chrome.R; |
+ |
+import org.chromium.base.ApplicationStatus; |
+import org.chromium.chrome.browser.Tab; |
+import org.chromium.chrome.browser.ntp.NewTabPage; |
+import org.chromium.chrome.browser.tab.BackgroundContentViewHelper; |
+import org.chromium.chrome.browser.tab.ChromeTab; |
+import org.chromium.chrome.browser.toolbar.ToolbarModel.ToolbarModelDelegate; |
+import org.chromium.chrome.browser.util.FeatureUtilities; |
+import org.chromium.content_public.browser.WebContents; |
+ |
+/** |
+ * Contains the data and state for the toolbar. |
+ */ |
+class ToolbarModelImpl extends ToolbarModel implements ToolbarDataProvider, ToolbarModelDelegate { |
+ |
+ private ChromeTab mTab; |
+ private boolean mIsIncognito; |
+ private int mLoadProgress; |
+ private int mPrimaryColor; |
+ private boolean mIsUsingBrandColor; |
+ |
+ /** |
+ * Handle any initialization that must occur after native has been initialized. |
+ */ |
+ public void initializeWithNative() { |
+ initialize(this); |
+ } |
+ |
+ @Override |
+ public WebContents getActiveWebContents() { |
+ ChromeTab tab = getTab(); |
+ if (tab == null) return null; |
+ BackgroundContentViewHelper backgroundViewHelper = tab.getBackgroundContentViewHelper(); |
+ boolean hasPendingBackgroundPage = |
+ backgroundViewHelper != null && backgroundViewHelper.hasPendingBackgroundPage(); |
+ if (hasPendingBackgroundPage) { |
+ return backgroundViewHelper.getContentViewCore().getWebContents(); |
+ } |
+ return tab.getWebContents(); |
+ } |
+ |
+ /** |
+ * Sets the tab that contains the information to be displayed in the toolbar. |
+ * @param tab The tab associated currently with the toolbar. |
+ * @param isIncognito Whether the incognito model is currently selected, which must match the |
+ * passed in tab if non-null. |
+ */ |
+ public void setTab(ChromeTab tab, boolean isIncognito) { |
+ mTab = tab; |
+ if (mTab != null) { |
+ assert mTab.isIncognito() == isIncognito; |
+ } |
+ mIsIncognito = isIncognito; |
+ } |
+ |
+ @Override |
+ public ChromeTab getTab() { |
+ // TODO(dtrainor, tedchoc): Remove the isInitialized() check when we no longer wait for |
+ // TAB_CLOSED events to remove this tab. Otherwise there is a chance we use this tab after |
+ // {@link ChromeTab#destroy()} is called. |
+ return (mTab == null || !mTab.isInitialized()) ? null : mTab; |
+ } |
+ |
+ @Override |
+ public NewTabPage getNewTabPageForCurrentTab() { |
+ Tab currentTab = getTab(); |
+ if (currentTab != null && currentTab.getNativePage() instanceof NewTabPage) { |
+ return (NewTabPage) currentTab.getNativePage(); |
+ } |
+ return null; |
+ } |
+ |
+ @Override |
+ public boolean isIncognito() { |
+ return mIsIncognito; |
+ } |
+ |
+ /** |
+ * Set the load progress for the current tab. |
+ * @param progress The loading progress for the tab. |
+ */ |
+ public void setLoadProgress(int progress) { |
+ assert progress >= 0; |
+ assert progress <= 100; |
+ |
+ mLoadProgress = progress; |
+ } |
+ |
+ @Override |
+ public int getLoadProgress() { |
+ return mLoadProgress; |
+ } |
+ |
+ /** |
+ * Sets the primary color and changes the state for isUsingBrandColor. |
+ * @param color The primary color for the current tab. |
+ */ |
+ public void setPrimaryColor(int color) { |
+ mPrimaryColor = color; |
+ Context context = ApplicationStatus.getApplicationContext(); |
+ mIsUsingBrandColor = FeatureUtilities.isDocumentMode(context) |
+ && !isIncognito() |
+ && mPrimaryColor != context.getResources().getColor(R.color.default_primary_color) |
+ && getTab() != null && !getTab().isNativePage(); |
+ } |
+ |
+ @Override |
+ public int getPrimaryColor() { |
+ return mPrimaryColor; |
+ } |
+ |
+ @Override |
+ public boolean isUsingBrandColor() { |
+ return mIsUsingBrandColor; |
+ } |
+} |