Index: chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc |
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc |
index 21c34bebee5fc5843b5a1554f7cea70cd6f25836..c7315c6a72d9379e9142b88f0a52d3d9107375a6 100644 |
--- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc |
+++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc |
@@ -34,6 +34,9 @@ |
#include "components/omnibox/browser/autocomplete_match.h" |
#include "components/prefs/pref_service.h" |
#include "content/public/browser/browser_thread.h" |
+#include "content/public/browser/navigation_controller.h" |
+#include "content/public/browser/navigation_entry.h" |
+#include "content/public/browser/navigation_handle.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/browser/plugin_service.h" |
#include "content/public/browser/user_metrics.h" |
@@ -54,8 +57,17 @@ namespace { |
TabRendererData::NetworkState TabContentsNetworkState( |
WebContents* contents) { |
- if (!contents || !contents->IsLoadingToDifferentDocument()) |
+ if (!contents) |
return TabRendererData::NETWORK_STATE_NONE; |
+ |
+ if (!contents->IsLoadingToDifferentDocument()) { |
+ content::NavigationEntry* entry = |
+ contents->GetController().GetLastCommittedEntry(); |
+ if (entry && (entry->GetPageType() == content::PAGE_TYPE_ERROR)) |
+ return TabRendererData::NETWORK_STATE_ERROR; |
+ return TabRendererData::NETWORK_STATE_NONE; |
+ } |
+ |
if (contents->IsWaitingForResponse()) |
return TabRendererData::NETWORK_STATE_WAITING; |
return TabRendererData::NETWORK_STATE_LOADING; |
@@ -180,10 +192,12 @@ class BrowserTabStripController::TabContextMenuContents |
// BrowserTabStripController, public: |
BrowserTabStripController::BrowserTabStripController(Browser* browser, |
- TabStripModel* model) |
+ TabStripModel* model, |
+ BrowserView* browser_view) |
: model_(model), |
tabstrip_(NULL), |
browser_(browser), |
+ browser_view_(browser_view), |
hover_tab_selector_(model), |
weak_ptr_factory_(this) { |
model_->AddObserver(this); |
@@ -389,14 +403,13 @@ void BrowserTabStripController::StackedLayoutMaybeChanged() { |
} |
void BrowserTabStripController::OnStartedDraggingTabs() { |
- BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_); |
- if (browser_view && !immersive_reveal_lock_.get()) { |
+ if (browser_view_ && !immersive_reveal_lock_.get()) { |
sky
2017/01/03 23:11:41
browser_view_ should never be null, right?
edwardjung
2017/01/05 16:59:45
Done.
|
// The top-of-window views should be revealed while the user is dragging |
// tabs in immersive fullscreen. The top-of-window views may not be already |
// revealed if the user is attempting to attach a tab to a tabstrip |
// belonging to an immersive fullscreen window. |
immersive_reveal_lock_.reset( |
- browser_view->immersive_mode_controller()->GetRevealedLock( |
+ browser_view_->immersive_mode_controller()->GetRevealedLock( |
ImmersiveModeController::ANIMATE_REVEAL_NO)); |
} |
} |
@@ -416,8 +429,13 @@ void BrowserTabStripController::CheckFileSupported(const GURL& url) { |
} |
SkColor BrowserTabStripController::GetToolbarTopSeparatorColor() const { |
- return BrowserView::GetBrowserViewForBrowser(browser_)->frame() |
- ->GetFrameView()->GetToolbarTopSeparatorColor(); |
+ return browser_view_->frame()->GetFrameView()->GetToolbarTopSeparatorColor(); |
+} |
+ |
+base::string16 BrowserTabStripController::GetAccessibleTabName( |
+ const Tab* tab) const { |
+ return browser_view_->GetAccessibleTabLabel( |
+ false /* include_app_name */, tabstrip_->GetModelIndexOfTab(tab)); |
} |
//////////////////////////////////////////////////////////////////////////////// |