diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-26 18:46:38 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-26 18:46:38 +0000 |
commit | c9ab2d80de0c1858c23d579a7f50961103211267 (patch) | |
tree | defe373248b862adedcf9355896ae960496f029e | |
parent | be577c041403e19b7d2b1523677526aab3bcd916 (diff) | |
download | chromium_src-c9ab2d80de0c1858c23d579a7f50961103211267.zip chromium_src-c9ab2d80de0c1858c23d579a7f50961103211267.tar.gz chromium_src-c9ab2d80de0c1858c23d579a7f50961103211267.tar.bz2 |
Fix leak of CreateWizardBorder instance in WebPageView.
WizardBorder won't paint border it will be done by WizardPainter, WizardBorder will provide only insets.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/2281002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48298 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 5 insertions, 30 deletions
diff --git a/chrome/browser/chromeos/login/rounded_rect_painter.cc b/chrome/browser/chromeos/login/rounded_rect_painter.cc index 6503905..c527482 100644 --- a/chrome/browser/chromeos/login/rounded_rect_painter.cc +++ b/chrome/browser/chromeos/login/rounded_rect_painter.cc @@ -173,26 +173,7 @@ class RoundedRectBorder : public views::Border { void RoundedRectBorder::Paint(const views::View& view, gfx::Canvas* canvas) const { - gfx::Rect clip_rect; - if (!canvas->GetClipRect(&clip_rect)) - return; // Empty clip rectangle, nothing to paint. - - int w = view.width(); - int h = view.height(); - - gfx::Insets insets; - GetInsets(&insets); - SkRect remove; - remove.set(SkIntToScalar(insets.left()), - SkIntToScalar(insets.top()), - SkIntToScalar(w - insets.right()), - SkIntToScalar(h - insets.bottom())); - canvas->clipRect(remove, SkRegion::kDifference_Op); - - if (canvas->IntersectsClipRectInt(0, 0, w, h)) { - DrawRectWithBorder(w, h, border_, canvas); - } - canvas->clipRect(remove, SkRegion::kIntersect_Op); + // Don't paint anything. RoundedRectBorder is used to provide insets only. } void RoundedRectBorder::GetInsets(gfx::Insets* insets) const { diff --git a/chrome/browser/chromeos/login/rounded_rect_painter.h b/chrome/browser/chromeos/login/rounded_rect_painter.h index ccc9fd9..485eafc 100644 --- a/chrome/browser/chromeos/login/rounded_rect_painter.h +++ b/chrome/browser/chromeos/login/rounded_rect_painter.h @@ -29,7 +29,8 @@ struct BorderDefinition { // Creates painter to paint view background with parameters specified. views::Painter* CreateWizardPainter(const BorderDefinition* const border); -// Creates border to draw around view with parameters specified. +// Creates border to provide insets. Should be used together with WizardPainter +// that actually draws both border and background. views::Border* CreateWizardBorder(const BorderDefinition* const border); } // namespace chromeos diff --git a/chrome/browser/chromeos/login/web_page_view.cc b/chrome/browser/chromeos/login/web_page_view.cc index 0ea75b0..bd314f1 100644 --- a/chrome/browser/chromeos/login/web_page_view.cc +++ b/chrome/browser/chromeos/login/web_page_view.cc @@ -94,12 +94,11 @@ void WebPageDomView::SetTabContentsDelegate( // WebPageView, public: void WebPageView::Init() { - chromeos::CreateWizardBorder( - &chromeos::BorderDefinition::kScreenBorder)->GetInsets(&insets_); views::Painter* painter = CreateWizardPainter( &BorderDefinition::kScreenBorder); set_background( views::Background::CreateBackgroundPainter(true, painter)); + set_border(CreateWizardBorder(&BorderDefinition::kScreenBorder)); dom_view()->SetVisible(false); AddChildView(dom_view()); @@ -166,10 +165,7 @@ void WebPageView::ShowWaitingControls() { // WebPageView, views::View implementation: void WebPageView::Layout() { - dom_view()->SetBounds(insets_.left(), - insets_.top(), - bounds().width() - insets_.left() - insets_.right(), - bounds().height() - insets_.top() - insets_.bottom()); + dom_view()->SetBounds(GetLocalBounds(false)); int y = height() / 2 - throbber_->GetPreferredSize().height() / 2; throbber_->SetBounds( width() / 2 - throbber_->GetPreferredSize().width() / 2, diff --git a/chrome/browser/chromeos/login/web_page_view.h b/chrome/browser/chromeos/login/web_page_view.h index 224b89d..8197743 100644 --- a/chrome/browser/chromeos/login/web_page_view.h +++ b/chrome/browser/chromeos/login/web_page_view.h @@ -122,9 +122,6 @@ class WebPageView : public views::View { // Called by start_timer_. Shows throbber and waiting label. void ShowWaitingControls(); - // Screen border insets. Used for layout. - gfx::Insets insets_; - // Throbber shown during page load. views::Throbber* throbber_; |