diff options
author | jianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-07 22:59:54 +0000 |
---|---|---|
committer | jianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-07 22:59:54 +0000 |
commit | d944adfc26c426db11dcb8a803b454040f6b0875 (patch) | |
tree | b0e8ff618f3c27306a5c9763b3ad6c6e093f0cfe | |
parent | 370be0703313e2fa08d95f7e2a1e7050df2efd24 (diff) | |
download | chromium_src-d944adfc26c426db11dcb8a803b454040f6b0875.zip chromium_src-d944adfc26c426db11dcb8a803b454040f6b0875.tar.gz chromium_src-d944adfc26c426db11dcb8a803b454040f6b0875.tar.bz2 |
Make panel be a scoped pointer in PanelBrowserView.
BUG=none
TEST=existing browser tests
Review URL: http://codereview.chromium.org/7056075
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88229 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/panels/panel_browser_view.cc | 7 | ||||
-rw-r--r-- | chrome/browser/ui/panels/panel_browser_view.h | 9 | ||||
-rw-r--r-- | chrome/browser/ui/panels/panel_browser_view_browsertest.cc | 5 |
3 files changed, 14 insertions, 7 deletions
diff --git a/chrome/browser/ui/panels/panel_browser_view.cc b/chrome/browser/ui/panels/panel_browser_view.cc index 0ed2134..6834ff4 100644 --- a/chrome/browser/ui/panels/panel_browser_view.cc +++ b/chrome/browser/ui/panels/panel_browser_view.cc @@ -28,6 +28,7 @@ BrowserWindow* Panel::CreateNativePanel(Browser* browser, Panel* panel) { PanelBrowserView::PanelBrowserView(Browser* browser, Panel* panel) : BrowserView(browser), panel_(panel), + closed_(false), mouse_pressed_(false), mouse_dragging_(false) { } @@ -44,15 +45,13 @@ void PanelBrowserView::Init() { } void PanelBrowserView::Close() { - if (!panel_) - return; + closed_ = true; // Cancel any currently running animation since we're closing down. if (bounds_animator_.get()) bounds_animator_.reset(); ::BrowserView::Close(); - panel_ = NULL; } void PanelBrowserView::SetBounds(const gfx::Rect& bounds) { @@ -129,7 +128,7 @@ bool PanelBrowserView::OnTitleBarMousePressed(const views::MouseEvent& event) { mouse_pressed_ = true; mouse_pressed_point_ = event.location(); mouse_dragging_ = false; - panel_->manager()->StartDragging(panel_); + panel_->manager()->StartDragging(panel_.get()); return true; } diff --git a/chrome/browser/ui/panels/panel_browser_view.h b/chrome/browser/ui/panels/panel_browser_view.h index a764a98..8833ef1 100644 --- a/chrome/browser/ui/panels/panel_browser_view.h +++ b/chrome/browser/ui/panels/panel_browser_view.h @@ -7,6 +7,7 @@ #pragma once #include "base/gtest_prod_util.h" +#include "base/memory/scoped_ptr.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "ui/base/animation/animation_delegate.h" @@ -24,7 +25,8 @@ class PanelBrowserView : public ::BrowserView, PanelBrowserView(Browser* browser, Panel* panel); virtual ~PanelBrowserView(); - Panel* panel() const { return panel_; } + Panel* panel() const { return panel_.get(); } + bool closed() const { return closed_; } // Called from frame view when title bar receives a mouse event. // Return true if the event is handled. @@ -60,7 +62,10 @@ class PanelBrowserView : public ::BrowserView, PanelBrowserFrameView* GetFrameView() const; bool EndDragging(bool cancelled); - Panel* panel_; + scoped_ptr<Panel> panel_; + + // Is the panel being closed? Do not use it when it is closed. + bool closed_; // Is the mouse button currently down? bool mouse_pressed_; diff --git a/chrome/browser/ui/panels/panel_browser_view_browsertest.cc b/chrome/browser/ui/panels/panel_browser_view_browsertest.cc index eeed6ef..a35620f 100644 --- a/chrome/browser/ui/panels/panel_browser_view_browsertest.cc +++ b/chrome/browser/ui/panels/panel_browser_view_browsertest.cc @@ -513,7 +513,10 @@ IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, TitleBarMouseEvent) { // Closes all panels. for (size_t i = 0; i < browser_view_count; ++i) { browser_views[i]->panel()->Close(); - EXPECT_FALSE(browser_views[i]->panel()); + // We're only verifying that PanelBrowserView::Close has been called when + // a panel is closed. This is to make sure the dragging is ended and does + // not interfere the closing process. + EXPECT_TRUE(browser_views[i]->closed()); } } |