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

Unified Diff: cc/test/layer_tree_test.cc

Issue 895853003: Update from https://crrev.com/314320 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 11 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 | « cc/test/layer_tree_test.h ('k') | cc/test/ordered_simple_task_runner.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/test/layer_tree_test.cc
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc
index a40a8c72bf6b8140c638207e3b3d00d80b77e4dd..d02b5104b29bc3d52323c43645d1808142e6b849 100644
--- a/cc/test/layer_tree_test.cc
+++ b/cc/test/layer_tree_test.cc
@@ -79,13 +79,14 @@ class ThreadProxyForTest : public ThreadProxy {
~ThreadProxyForTest() override {}
- void test() {
- test_hooks_->Layout();
- }
-
private:
TestHooks* test_hooks_;
+ void WillBeginImplFrame(const BeginFrameArgs& args) override {
+ ThreadProxy::WillBeginImplFrame(args);
+ test_hooks_->WillBeginImplFrame(args);
+ }
+
void ScheduledActionSendBeginMainFrame() override {
test_hooks_->ScheduledActionWillSendBeginMainFrame();
ThreadProxy::ScheduledActionSendBeginMainFrame();
@@ -130,6 +131,74 @@ class ThreadProxyForTest : public ThreadProxy {
test_hooks_(test_hooks) {}
};
+// Adapts ThreadProxy for test. Injects test hooks for testing.
+class SingleThreadProxyForTest : public SingleThreadProxy {
+ public:
+ static scoped_ptr<Proxy> Create(
+ TestHooks* test_hooks,
+ LayerTreeHost* host,
+ LayerTreeHostSingleThreadClient* client,
+ scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
+ scoped_ptr<BeginFrameSource> external_begin_frame_source) {
+ return make_scoped_ptr(new SingleThreadProxyForTest(
+ test_hooks, host, client, main_task_runner,
+ external_begin_frame_source.Pass()));
+ }
+
+ ~SingleThreadProxyForTest() override {}
+
+ private:
+ TestHooks* test_hooks_;
+
+ void WillBeginImplFrame(const BeginFrameArgs& args) override {
+ SingleThreadProxy::WillBeginImplFrame(args);
+ test_hooks_->WillBeginImplFrame(args);
+ }
+
+ void ScheduledActionSendBeginMainFrame() override {
+ test_hooks_->ScheduledActionWillSendBeginMainFrame();
+ SingleThreadProxy::ScheduledActionSendBeginMainFrame();
+ test_hooks_->ScheduledActionSendBeginMainFrame();
+ }
+
+ DrawResult ScheduledActionDrawAndSwapIfPossible() override {
+ DrawResult result =
+ SingleThreadProxy::ScheduledActionDrawAndSwapIfPossible();
+ test_hooks_->ScheduledActionDrawAndSwapIfPossible();
+ return result;
+ }
+
+ void ScheduledActionAnimate() override {
+ SingleThreadProxy::ScheduledActionAnimate();
+ test_hooks_->ScheduledActionAnimate();
+ }
+
+ void ScheduledActionCommit() override {
+ SingleThreadProxy::ScheduledActionCommit();
+ test_hooks_->ScheduledActionCommit();
+ }
+
+ void ScheduledActionBeginOutputSurfaceCreation() override {
+ SingleThreadProxy::ScheduledActionBeginOutputSurfaceCreation();
+ test_hooks_->ScheduledActionBeginOutputSurfaceCreation();
+ }
+
+ void ScheduledActionPrepareTiles() override {
+ SingleThreadProxy::ScheduledActionPrepareTiles();
+ test_hooks_->ScheduledActionPrepareTiles();
+ }
+
+ SingleThreadProxyForTest(
+ TestHooks* test_hooks,
+ LayerTreeHost* host,
+ LayerTreeHostSingleThreadClient* client,
+ scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
+ scoped_ptr<BeginFrameSource> external_begin_frame_source)
+ : SingleThreadProxy(host, client, main_task_runner,
+ external_begin_frame_source.Pass()),
+ test_hooks_(test_hooks) {}
+};
+
// Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks.
class LayerTreeHostImplForTesting : public LayerTreeHostImpl {
public:
@@ -402,11 +471,13 @@ class LayerTreeHostForTesting : public LayerTreeHost {
impl_task_runner,
external_begin_frame_source.Pass()));
} else {
- layer_tree_host->InitializeForTesting(SingleThreadProxy::Create(
- layer_tree_host.get(),
- client,
- main_task_runner,
- external_begin_frame_source.Pass()));
+ layer_tree_host->InitializeForTesting(
+ SingleThreadProxyForTest::Create(
+ test_hooks,
+ layer_tree_host.get(),
+ client,
+ main_task_runner,
+ external_begin_frame_source.Pass()));
}
return layer_tree_host.Pass();
}
@@ -431,8 +502,6 @@ class LayerTreeHostForTesting : public LayerTreeHost {
void set_test_started(bool started) { test_started_ = started; }
- void DidDeferCommit() override { test_hooks_->DidDeferCommit(); }
-
private:
LayerTreeHostForTesting(TestHooks* test_hooks,
LayerTreeHostClient* client,
@@ -524,6 +593,13 @@ void LayerTreeTest::PostAddLongAnimationToMainThread(
1.0));
}
+void LayerTreeTest::PostSetDeferCommitsToMainThread(bool defer_commits) {
+ main_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&LayerTreeTest::DispatchSetDeferCommits,
+ main_thread_weak_ptr_, defer_commits));
+}
+
void LayerTreeTest::PostSetNeedsCommitToMainThread() {
main_task_runner_->PostTask(FROM_HERE,
base::Bind(&LayerTreeTest::DispatchSetNeedsCommit,
@@ -655,6 +731,13 @@ void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation,
}
}
+void LayerTreeTest::DispatchSetDeferCommits(bool defer_commits) {
+ DCHECK(!proxy() || proxy()->IsMainThread());
+
+ if (layer_tree_host_)
+ layer_tree_host_->SetDeferCommits(defer_commits);
+}
+
void LayerTreeTest::DispatchSetNeedsCommit() {
DCHECK(!proxy() || proxy()->IsMainThread());
« no previous file with comments | « cc/test/layer_tree_test.h ('k') | cc/test/ordered_simple_task_runner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698