Chromium Code Reviews| Index: chrome/browser/ui/views/tabs/tab.cc |
| diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc |
| index 4e894358c45078d50ad84550318e0cc457fed2ce..747f686820c290edee777470ed060e5bf7a33389 100644 |
| --- a/chrome/browser/ui/views/tabs/tab.cc |
| +++ b/chrome/browser/ui/views/tabs/tab.cc |
| @@ -19,8 +19,11 @@ |
| #include "chrome/browser/ui/tab_contents/core_tab_helper.h" |
| #include "chrome/browser/ui/tabs/tab_utils.h" |
| #include "chrome/browser/ui/view_ids.h" |
| +#include "chrome/browser/ui/views/frame/browser_view.h" |
| #include "chrome/browser/ui/views/tabs/alert_indicator_button.h" |
| +#include "chrome/browser/ui/views/tabs/browser_tab_strip_controller.h" |
| #include "chrome/browser/ui/views/tabs/tab_controller.h" |
| +#include "chrome/browser/ui/views/tabs/tab_strip.h" |
| #include "chrome/browser/ui/views/touch_uma/touch_uma.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/common/url_constants.h" |
| @@ -494,7 +497,8 @@ bool Tab::ThrobberView::CanProcessEventsWithinSubtree() const { |
| void Tab::ThrobberView::OnPaint(gfx::Canvas* canvas) { |
| const TabRendererData::NetworkState state = owner_->data().network_state; |
| - if (state == TabRendererData::NETWORK_STATE_NONE) |
| + if (state == TabRendererData::NETWORK_STATE_NONE || |
| + state == TabRendererData::NETWORK_STATE_ERROR) |
| return; |
| const ui::ThemeProvider* tp = GetThemeProvider(); |
| @@ -674,9 +678,10 @@ void Tab::SetData(const TabRendererData& data) { |
| void Tab::UpdateLoadingAnimation(TabRendererData::NetworkState state) { |
| if (state == data_.network_state && |
| - state == TabRendererData::NETWORK_STATE_NONE) { |
| - // If the network state is none and hasn't changed, do nothing. Otherwise we |
| - // need to advance the animation frame. |
| + (state == TabRendererData::NETWORK_STATE_NONE || |
| + state == TabRendererData::NETWORK_STATE_ERROR)) { |
| + // If the network state is none or is a network error and hasn't changed, |
| + // do nothing. Otherwise we need to advance the animation frame. |
| return; |
| } |
| @@ -1099,8 +1104,14 @@ void Tab::OnGestureEvent(ui::GestureEvent* event) { |
| } |
| void Tab::GetAccessibleNodeData(ui::AXNodeData* node_data) { |
| + TabStrip* tab_strip = static_cast<TabStrip*>(controller_); |
| + BrowserTabStripController* browser_tab_strip_controller = |
|
sky
2016/12/06 23:18:32
You shouldn't directly extract these values, rathe
edwardjung
2016/12/12 16:50:43
Done, thanks for the pointers.
On 2016/12/06 23:1
|
| + static_cast<BrowserTabStripController*>(tab_strip->controller()); |
| + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser( |
| + browser_tab_strip_controller->browser()); |
| + |
| node_data->role = ui::AX_ROLE_TAB; |
| - node_data->SetName(data_.title); |
| + node_data->SetName(browser_view->GetAccessibleWindowTitle()); |
| node_data->AddStateFlag(ui::AX_STATE_MULTISELECTABLE); |
| node_data->AddStateFlag(ui::AX_STATE_SELECTABLE); |
| controller_->UpdateTabAccessibilityState(this, node_data); |
| @@ -1185,7 +1196,8 @@ void Tab::PaintImmersiveTab(gfx::Canvas* canvas) { |
| // Paint network activity indicator. |
| // TODO(jamescook): Replace this placeholder animation with a real one. |
| // For now, let's go with a Cylon eye effect, but in blue. |
| - if (data().network_state != TabRendererData::NETWORK_STATE_NONE) { |
| + if (data().network_state != TabRendererData::NETWORK_STATE_NONE && |
| + data().network_state != TabRendererData::NETWORK_STATE_ERROR) { |
| const SkColor kEyeColor = SkColorSetARGB(alpha, 71, 138, 217); |
| int eye_width = bar_rect.width() / 3; |
| int eye_offset = bar_rect.width() * immersive_loading_step_ / |
| @@ -1390,9 +1402,10 @@ void Tab::PaintIcon(gfx::Canvas* canvas) { |
| return; |
| // Throbber will do its own painting. |
| - if (data().network_state != TabRendererData::NETWORK_STATE_NONE) |
| + if (data().network_state != TabRendererData::NETWORK_STATE_NONE && |
| + data().network_state != TabRendererData::NETWORK_STATE_ERROR) { |
| return; |
| - |
| + } |
| // Ensure that |favicon_| is created. |
| if (favicon_.isNull()) { |
| ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); |
| @@ -1442,7 +1455,8 @@ void Tab::AdvanceLoadingAnimation() { |
| return; |
| } |
| - if (state == TabRendererData::NETWORK_STATE_NONE) { |
| + if (state == TabRendererData::NETWORK_STATE_NONE || |
| + state == TabRendererData::NETWORK_STATE_ERROR) { |
| throbber_->ResetStartTimes(); |
| throbber_->SetVisible(false); |
| ScheduleIconPaint(); |