diff options
author | flackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-02 17:25:44 +0000 |
---|---|---|
committer | flackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-02 17:25:44 +0000 |
commit | 5daf5b5c9a426988a95b651ac8d5776308c54806 (patch) | |
tree | b4995d4d62f65231f63bc72c6432b0dbaeb16e81 /ash | |
parent | 9c8ea3bf49845e4b082a680f9f0bf759c07f2f34 (diff) | |
download | chromium_src-5daf5b5c9a426988a95b651ac8d5776308c54806.zip chromium_src-5daf5b5c9a426988a95b651ac8d5776308c54806.tar.gz chromium_src-5daf5b5c9a426988a95b651ac8d5776308c54806.tar.bz2 |
Check for destroyed window observers which haven't stopped observing windows.
This is a temporary patch to catch the cause of a crashing bug and should be reverted when the bug is fixed.
BUG=177012
TEST=trybots
Review URL: https://chromiumcodereview.appspot.com/12320021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185719 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/wm/frame_painter_unittest.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ash/wm/frame_painter_unittest.cc b/ash/wm/frame_painter_unittest.cc index 4fab97b..72754b9 100644 --- a/ash/wm/frame_painter_unittest.cc +++ b/ash/wm/frame_painter_unittest.cc @@ -69,10 +69,13 @@ class ResizableWidgetDelegate : public views::WidgetDelegate { class WindowRepaintChecker : public aura::WindowObserver { public: explicit WindowRepaintChecker(aura::Window* window) - : is_paint_scheduled_(false) { - window->AddObserver(this); + : window_(window), + is_paint_scheduled_(false) { + window_->AddObserver(this); } virtual ~WindowRepaintChecker() { + if (window_) + window_->RemoveObserver(this); } bool IsPaintScheduledAndReset() { @@ -88,9 +91,12 @@ class WindowRepaintChecker : public aura::WindowObserver { is_paint_scheduled_ = true; } virtual void OnWindowDestroying(aura::Window* window) OVERRIDE { + DCHECK_EQ(window_, window); + window_ = NULL; window->RemoveObserver(this); } + aura::Window* window_; bool is_paint_scheduled_; DISALLOW_COPY_AND_ASSIGN(WindowRepaintChecker); |