Don't call ScheduleDraw from destructor
BUG=127614
TEST=asan bot passes
Review URL: https://chromiumcodereview.appspot.com/10387062
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136377 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index 18da91cc..4b23d86 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -145,6 +145,8 @@
}
Compositor::~Compositor() {
+ // Don't call |CompositorDelegate::ScheduleDraw| from this point.
+ delegate_ = NULL;
// There's a cycle between |root_web_layer_| and |host_|, which results in
// leaking and/or crashing. Explicitly set the root layer to NULL so the cycle
// is broken.
@@ -175,7 +177,7 @@
// compositeImmediately() directly.
layout();
host_.composite();
- } else {
+ } else if (delegate_) {
delegate_->ScheduleDraw();
}
}
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc
index e50a712..b0aa874 100644
--- a/ui/compositor/layer_unittest.cc
+++ b/ui/compositor/layer_unittest.cc
@@ -336,20 +336,19 @@
#define MAYBE_ScaleReparent DISABLED_ScaleReparent
#define MAYBE_NoScaleCanvas DISABLED_NoScaleCanvas
#else
-#define MAYBE_Delegate DISABLED_Delegate
+#define MAYBE_Delegate Delegate
#define MAYBE_Draw Draw
-#define MAYBE_DrawTree DISABLED_DrawTree
+#define MAYBE_DrawTree DrawTree
#define MAYBE_Hierarchy Hierarchy
-#define MAYBE_HierarchyNoTexture DISABLED_HierarchyNoTexture
+#define MAYBE_HierarchyNoTexture HierarchyNoTexture
#define MAYBE_DrawPixels DrawPixels
#define MAYBE_SetRootLayer SetRootLayer
-#define MAYBE_CompositorObservers DISABLED_CompositorObservers
+#define MAYBE_CompositorObservers CompositorObservers
#define MAYBE_ModifyHierarchy ModifyHierarchy
#define MAYBE_Opacity Opacity
-// Real bug, see http://crbug.com/127534.
-#define MAYBE_ScaleUpDown DISABLED_ScaleUpDown
-#define MAYBE_ScaleReparent DISABLED_ScaleReparent
-#define MAYBE_NoScaleCanvas DISABLED_NoScaleCanvas
+#define MAYBE_ScaleUpDown ScaleUpDown
+#define MAYBE_ScaleReparent ScaleReparent
+#define MAYBE_NoScaleCanvas NoScaleCanvas
#endif
TEST_F(LayerWithRealCompositorTest, MAYBE_Draw) {