summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-02 17:25:44 +0000
committerflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-02 17:25:44 +0000
commit5daf5b5c9a426988a95b651ac8d5776308c54806 (patch)
treeb4995d4d62f65231f63bc72c6432b0dbaeb16e81 /ash
parent9c8ea3bf49845e4b082a680f9f0bf759c07f2f34 (diff)
downloadchromium_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.cc10
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);