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 5a080a60daa0722523ea07a4ebee11b6a2debf79..d88bfdfeb7af9515bdef64fbf389922ebf427d14 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,7 +1104,7 @@ void Tab::OnGestureEvent(ui::GestureEvent* event) { |
void Tab::GetAccessibleNodeData(ui::AXNodeData* node_data) { |
node_data->role = ui::AX_ROLE_TAB; |
- node_data->SetName(data_.title); |
+ node_data->SetName(controller_->GetAccessibleTabName(this)); |
node_data->AddStateFlag(ui::AX_STATE_MULTISELECTABLE); |
node_data->AddStateFlag(ui::AX_STATE_SELECTABLE); |
controller_->UpdateTabAccessibilityState(this, node_data); |
@@ -1184,7 +1189,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_ / |
@@ -1389,9 +1395,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(); |
@@ -1441,7 +1448,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(); |