Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2668)

Unified Diff: cc/trees/layer_tree_host_unittest.cc

Issue 475533004: cc: Add separate test for context-related commit aborting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_unittest.cc
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index 0e72824085ab31f68320274d98d82c9aa2079a93..20e8c2431d76293ab255247b6180a1286cf1dc9d 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -91,8 +91,8 @@ class LayerTreeHostTestSetNeedsCommit1 : public LayerTreeHostTest {
}
virtual void AfterTest() OVERRIDE {
- EXPECT_GE(1, num_commits_);
- EXPECT_GE(1, num_draws_);
+ EXPECT_LE(1, num_commits_);
+ EXPECT_LE(1, num_draws_);
}
private:
@@ -694,31 +694,6 @@ class LayerTreeHostTestUndrawnLayersPushContentBoundsLater
SINGLE_AND_MULTI_THREAD_TEST_F(
LayerTreeHostTestUndrawnLayersPushContentBoundsLater);
-class LayerTreeHostTestAbortFrameWhenInvisible : public LayerTreeHostTest {
- public:
- LayerTreeHostTestAbortFrameWhenInvisible() {}
-
- virtual void BeginTest() OVERRIDE {
- // Request a commit (from the main thread), Which will trigger the commit
- // flow from the impl side.
- layer_tree_host()->SetNeedsCommit();
- // Then mark ourselves as not visible before processing any more messages
- // on the main thread.
- layer_tree_host()->SetVisible(false);
- // If we make it without kicking a frame, we pass!
- EndTestAfterDelay(1);
- }
-
- virtual void Layout() OVERRIDE {
- ASSERT_FALSE(true);
- EndTest();
- }
-
- virtual void AfterTest() OVERRIDE {}
-};
-
-MULTI_THREAD_TEST_F(LayerTreeHostTestAbortFrameWhenInvisible);
-
// This test verifies that properties on the layer tree host are commited
// to the impl side.
class LayerTreeHostTestCommit : public LayerTreeHostTest {
@@ -4547,7 +4522,7 @@ class LayerTreeHostTestBreakSwapPromise : public LayerTreeHostTest {
// TODO(miletus): Flaky test: crbug.com/393995
// MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromise);
-class LayerTreeHostTestBreakSwapPromiseForAbortedCommit
+class LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit
: public LayerTreeHostTest {
protected:
virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
@@ -4583,7 +4558,58 @@ class LayerTreeHostTestBreakSwapPromiseForAbortedCommit
TestSwapPromiseResult swap_promise_result_;
};
-MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromiseForAbortedCommit);
+MULTI_THREAD_TEST_F(
+ LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit);
+
+class LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit
+ : public LayerTreeHostTest {
+ protected:
+ virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
+
+ virtual void DidCommit() OVERRIDE {
+ if (TestEnded())
+ return;
+ layer_tree_host()->SetDeferCommits(true);
+ layer_tree_host()->SetNeedsCommit();
+ }
+
+ virtual void DidDeferCommit() OVERRIDE {
+ layer_tree_host()->DidLoseOutputSurface();
+ scoped_ptr<SwapPromise> swap_promise(
+ new TestSwapPromise(&swap_promise_result_));
+ layer_tree_host()->QueueSwapPromise(swap_promise.Pass());
+ layer_tree_host()->SetDeferCommits(false);
+ }
+
+ virtual void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
+ bool did_handle) OVERRIDE {
+ EndTest();
+ // This lets the test finally commit and exit.
+ MainThreadTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit::
+ FindOutputSurface,
+ base::Unretained(this)));
+ }
+
+ void FindOutputSurface() {
+ layer_tree_host()->OnCreateAndInitializeOutputSurfaceAttempted(true);
+ }
+
+ virtual void AfterTest() OVERRIDE {
+ {
+ base::AutoLock lock(swap_promise_result_.lock);
+ EXPECT_FALSE(swap_promise_result_.did_swap_called);
+ EXPECT_TRUE(swap_promise_result_.did_not_swap_called);
+ EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason);
+ EXPECT_TRUE(swap_promise_result_.dtor_called);
+ }
+ }
+
+ TestSwapPromiseResult swap_promise_result_;
+};
+
+MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit);
class SimpleSwapPromiseMonitor : public SwapPromiseMonitor {
public:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698