Commit 3e14e766 authored by Wei Li's avatar Wei Li Committed by Commit Bot

Avoid calling layout in StatusView's constructor

Calling layout code in StatusView's constructor would need to call its
parent's virtual functions as well, which may not be ready in its
constructor. This fix moves layout code into Layout() function to avoid
such problem.

BUG=945650

Change-Id: I93526fe84e92d1f601dbb5d08cbf45e1a88c6fc6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1539031Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Commit-Queue: Wei Li <weili@chromium.org>
Cr-Commit-Position: refs/heads/master@{#644695}
parent c6744764
...@@ -147,6 +147,9 @@ class StatusBubbleViews::StatusView : public views::View { ...@@ -147,6 +147,9 @@ class StatusBubbleViews::StatusView : public views::View {
StatusView(StatusBubbleViews* status_bubble, gfx::Size popup_size); StatusView(StatusBubbleViews* status_bubble, gfx::Size popup_size);
~StatusView() override; ~StatusView() override;
// views::View:
void Layout() override;
// Set the bubble text, or hide the bubble if |text| is an empty string. // Set the bubble text, or hide the bubble if |text| is an empty string.
// Triggers an animation sequence to display if |should_animate_open| is true. // Triggers an animation sequence to display if |should_animate_open| is true.
void SetText(const base::string16& text, bool should_animate_open); void SetText(const base::string16& text, bool should_animate_open);
...@@ -192,9 +195,6 @@ class StatusBubbleViews::StatusView : public views::View { ...@@ -192,9 +195,6 @@ class StatusBubbleViews::StatusView : public views::View {
void StartHiding(); void StartHiding();
void StartShowing(); void StartShowing();
// Update text label's size.
void ResizeText();
// views::View: // views::View:
const char* GetClassName() const override; const char* GetClassName() const override;
void OnPaint(gfx::Canvas* canvas) override; void OnPaint(gfx::Canvas* canvas) override;
...@@ -239,7 +239,6 @@ StatusBubbleViews::StatusView::StatusView(StatusBubbleViews* status_bubble, ...@@ -239,7 +239,6 @@ StatusBubbleViews::StatusView::StatusView(StatusBubbleViews* status_bubble,
blended_text_color, bubble_color)); blended_text_color, bubble_color));
text->SetHorizontalAlignment(gfx::ALIGN_LEFT); text->SetHorizontalAlignment(gfx::ALIGN_LEFT);
text_ = AddChildView(std::move(text)); text_ = AddChildView(std::move(text));
ResizeText();
} }
StatusBubbleViews::StatusView::~StatusView() { StatusBubbleViews::StatusView::~StatusView() {
...@@ -247,6 +246,16 @@ StatusBubbleViews::StatusView::~StatusView() { ...@@ -247,6 +246,16 @@ StatusBubbleViews::StatusView::~StatusView() {
CancelTimer(); CancelTimer();
} }
void StatusBubbleViews::StatusView::Layout() {
gfx::Rect text_rect(kTextPositionX, 0,
popup_size_.width() - kTextHorizPadding,
popup_size_.height());
text_rect.Inset(kShadowThickness, kShadowThickness);
// Make sure the text is aligned to the right on RTL UIs.
text_rect = GetMirroredRect(text_rect);
text_->SetBoundsRect(text_rect);
}
void StatusBubbleViews::StatusView::SetText(const base::string16& text, void StatusBubbleViews::StatusView::SetText(const base::string16& text,
bool should_animate_open) { bool should_animate_open) {
if (text.empty()) { if (text.empty()) {
...@@ -387,16 +396,6 @@ void StatusBubbleViews::StatusView::StartShowing() { ...@@ -387,16 +396,6 @@ void StatusBubbleViews::StatusView::StartShowing() {
} }
} }
void StatusBubbleViews::StatusView::ResizeText() {
gfx::Rect text_rect(kTextPositionX, 0,
popup_size_.width() - kTextHorizPadding,
popup_size_.height());
text_rect.Inset(kShadowThickness, kShadowThickness);
// Make sure the text is aligned to the right on RTL UIs.
text_rect = GetMirroredRect(text_rect);
text_->SetBoundsRect(text_rect);
}
void StatusBubbleViews::StatusView::SetOpacity(float opacity) { void StatusBubbleViews::StatusView::SetOpacity(float opacity) {
GetWidget()->SetOpacity(opacity); GetWidget()->SetOpacity(opacity);
} }
...@@ -417,7 +416,7 @@ void StatusBubbleViews::StatusView::OnAnimationEnded() { ...@@ -417,7 +416,7 @@ void StatusBubbleViews::StatusView::OnAnimationEnded() {
void StatusBubbleViews::StatusView::SetWidth(int new_width) { void StatusBubbleViews::StatusView::SetWidth(int new_width) {
popup_size_.set_width(new_width); popup_size_.set_width(new_width);
ResizeText(); Layout();
} }
const char* StatusBubbleViews::StatusView::GetClassName() const { const char* StatusBubbleViews::StatusView::GetClassName() const {
......
...@@ -37,7 +37,7 @@ HistoryFocusTest.prototype = { ...@@ -37,7 +37,7 @@ HistoryFocusTest.prototype = {
}, },
}; };
TEST_F('HistoryFocusTest', 'DISABLED_All', function() { TEST_F('HistoryFocusTest', 'All', function() {
suite('<history-toolbar>', function() { suite('<history-toolbar>', function() {
let app; let app;
let toolbar; let toolbar;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment