summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-07 22:59:54 +0000
committerjianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-07 22:59:54 +0000
commitd944adfc26c426db11dcb8a803b454040f6b0875 (patch)
treeb0e8ff618f3c27306a5c9763b3ad6c6e093f0cfe
parent370be0703313e2fa08d95f7e2a1e7050df2efd24 (diff)
downloadchromium_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.cc7
-rw-r--r--chrome/browser/ui/panels/panel_browser_view.h9
-rw-r--r--chrome/browser/ui/panels/panel_browser_view_browsertest.cc5
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());
}
}