Chromium Code Reviews| 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)); |
| } |
| //////////////////////////////////////////////////////////////////////////////// |