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

Side by Side Diff: content/renderer/scheduler_proxy_task_runner_browsertest.cc

Issue 363383002: Forward input tasks to the Blink scheduler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sequence numbers for tasks. 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/public/browser/content_browser_client.h"
6 #include "content/public/common/content_client.h"
7 #include "content/public/renderer/content_renderer_client.h"
8 #include "content/renderer/render_process_impl.h"
9 #include "content/renderer/render_thread_impl.h"
10 #include "content/renderer/scheduler_proxy_task_runner.h"
11 #include "content/test/mock_render_process.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace content {
15 namespace {
16
17 void testTask(int value, int* result) {
jamesr 2014/08/14 17:26:00 this is chromium, functions get UpperCase names
Sami 2014/08/15 10:16:16 Done.
18 *result = (*result << 4) | value;
19 }
20
21 } // namespace
22
23 class SchedulerProxyTaskRunnerBrowserTest : public testing::Test {
jamesr 2014/08/14 17:26:00 this fixture doesn't do anything - why even have i
Sami 2014/08/15 10:16:16 Yup, no need for this. Done.
24 public:
25 virtual ~SchedulerProxyTaskRunnerBrowserTest() {}
26 };
27
28 class DummyListener : public IPC::Listener {
29 public:
30 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE {
31 return true;
32 }
33 };
34
35 TEST_F(SchedulerProxyTaskRunnerBrowserTest, TestTaskPosting) {
36 ContentClient content_client;
37 ContentBrowserClient content_browser_client;
38 ContentRendererClient content_renderer_client;
39 SetContentClient(&content_client);
40 SetBrowserClientForTesting(&content_browser_client);
41 SetRendererClientForTesting(&content_renderer_client);
42 base::MessageLoopForIO message_loop_;
jamesr 2014/08/14 17:26:00 this is not a member variable, no trailing _
Sami 2014/08/15 10:16:16 Done.
43
44 std::string channel_id =
45 IPC::Channel::GenerateVerifiedChannelID(std::string());
46 DummyListener dummy_listener;
47 scoped_ptr<IPC::Channel> channel(
48 IPC::Channel::CreateServer(channel_id, &dummy_listener));
49 EXPECT_TRUE(channel->Connect());
50
51 scoped_ptr<MockRenderProcess> mock_process(new MockRenderProcess);
52 // Owned by mock_process.
53 RenderThreadImpl* thread = new RenderThreadImpl(channel_id);
54 thread->EnsureWebKitInitialized();
55
56 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner =
57 make_scoped_refptr(new SchedulerProxyTaskRunner<
58 &blink::WebSchedulerProxy::postInputTask>());
59 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner =
60 make_scoped_refptr(new SchedulerProxyTaskRunner<
61 &blink::WebSchedulerProxy::postCompositorTask>());
62
63 int input_order = 0;
64 int compositor_order = 0;
65
66 input_task_runner->PostTask(FROM_HERE,
67 base::Bind(&testTask, 1, &input_order));
68 compositor_task_runner->PostTask(FROM_HERE,
69 base::Bind(&testTask, 1, &compositor_order));
70 input_task_runner->PostTask(FROM_HERE,
71 base::Bind(&testTask, 2, &input_order));
72 compositor_task_runner->PostTask(FROM_HERE,
73 base::Bind(&testTask, 2, &compositor_order));
74
75 input_task_runner->PostTask(FROM_HERE,
76 base::Bind(&testTask, 3, &input_order));
77 input_task_runner->PostTask(FROM_HERE,
78 base::Bind(&testTask, 4, &input_order));
79 compositor_task_runner->PostTask(FROM_HERE,
80 base::Bind(&testTask, 3, &compositor_order));
81 compositor_task_runner->PostTask(FROM_HERE,
82 base::Bind(&testTask, 4, &compositor_order));
83
84 message_loop_.RunUntilIdle();
85
86 EXPECT_EQ(0x1234, input_order);
87 EXPECT_EQ(0x1234, compositor_order);
88 }
89
90 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698