summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-26 18:46:38 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-26 18:46:38 +0000
commitc9ab2d80de0c1858c23d579a7f50961103211267 (patch)
treedefe373248b862adedcf9355896ae960496f029e
parentbe577c041403e19b7d2b1523677526aab3bcd916 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/chromeos/login/rounded_rect_painter.cc21
-rw-r--r--chrome/browser/chromeos/login/rounded_rect_painter.h3
-rw-r--r--chrome/browser/chromeos/login/web_page_view.cc8
-rw-r--r--chrome/browser/chromeos/login/web_page_view.h3
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_;