Chromium Code Reviews| Index: content/test/test_blink_web_unit_test_support.cc |
| diff --git a/content/test/test_blink_web_unit_test_support.cc b/content/test/test_blink_web_unit_test_support.cc |
| index 7405be6f417d040cb42b0292c52396f86b370043..fd333fb8c9559b597084684441881c8d63db1673 100644 |
| --- a/content/test/test_blink_web_unit_test_support.cc |
| +++ b/content/test/test_blink_web_unit_test_support.cc |
| @@ -7,8 +7,11 @@ |
| #include "base/files/file_path.h" |
| #include "base/files/file_util.h" |
| #include "base/files/scoped_temp_dir.h" |
| +#include "base/message_loop/message_loop.h" |
|
Sami
2015/05/05 13:55:54
Do you need this for anything?
ssid
2015/05/05 16:00:06
Done.
|
| #include "base/path_service.h" |
| +#include "base/single_thread_task_runner.h" |
| #include "base/strings/utf_string_conversions.h" |
| +#include "base/thread_task_runner_handle.h" |
| #include "components/scheduler/renderer/renderer_scheduler.h" |
| #include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h" |
| #include "content/test/mock_webclipboard_impl.h" |
| @@ -41,6 +44,37 @@ |
| #include "gin/v8_initializer.h" |
| #endif |
| +namespace { |
| + |
| +class DummyTaskRunner : public base::SingleThreadTaskRunner { |
| + public: |
| + DummyTaskRunner() {} |
| + |
| + bool PostDelayedTask(const tracked_objects::Location& from_here, |
| + const base::Closure& task, |
| + base::TimeDelta delay) override { |
| + NOTREACHED(); |
| + return false; |
| + } |
| + |
| + bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, |
| + const base::Closure& task, |
| + base::TimeDelta delay) override { |
| + NOTREACHED(); |
| + return false; |
| + } |
| + |
| + // Always returns true to avoid triggering DCHECKs. |
|
Sami
2015/05/05 13:55:54
Could you make this do the right thing instead? So
ssid
2015/05/05 16:00:06
Done.
|
| + bool RunsTasksOnCurrentThread() const override { return true; } |
| + |
| + protected: |
| + ~DummyTaskRunner() override {} |
| + |
| + DISALLOW_COPY_AND_ASSIGN(DummyTaskRunner); |
| +}; |
| + |
| +} // namespace |
| + |
| namespace content { |
| TestBlinkWebUnitTestSupport::TestBlinkWebUnitTestSupport() { |
| @@ -55,13 +89,31 @@ TestBlinkWebUnitTestSupport::TestBlinkWebUnitTestSupport() { |
| gin::V8Initializer::LoadV8Snapshot(); |
| #endif |
| + scoped_refptr<base::SingleThreadTaskRunner> dummy_task_runner; |
| + scoped_ptr<base::ThreadTaskRunnerHandle> handle; |
|
Sami
2015/05/05 13:55:54
nit: |handle| is a little too nonspecific for a va
ssid
2015/05/05 16:00:06
Done.
|
| if (base::MessageLoopProxy::current()) { |
| renderer_scheduler_ = scheduler::RendererScheduler::Create(); |
| web_thread_.reset(new scheduler::WebThreadImplForRendererScheduler( |
| renderer_scheduler_.get())); |
| + } else { |
| + // Dummy task runner is initialized here because the blink::initialize |
| + // creates IsolateHolder which needs the current task runner handle. There |
| + // should be no task posted to this handle. The message loop is not created |
| + // before this initialization because tests need different kinds of message |
| + // loop which is not known upfront and each test suite that uses thread |
|
Sami
2015/05/05 13:55:54
nit: "posted to this handle" => "posted to this ta
ssid
2015/05/05 16:00:06
Done.
|
| + // bundle or message loop initializes its own. |
| + dummy_task_runner = make_scoped_refptr(new DummyTaskRunner()); |
| + handle.reset(new base::ThreadTaskRunnerHandle(dummy_task_runner)); |
| } |
| blink::initialize(this); |
| + |
| + if (dummy_task_runner.get()) { |
|
Sami
2015/05/05 13:55:54
There's no need to reset the task explicitly is th
Primiano Tucci (use gerrit)
2015/05/05 14:26:51
Nit: just if (dummy_task_runner), scoped_refptr is
Sami
2015/05/05 14:35:46
I meant the destructors of both variables would au
ssid
2015/05/05 16:00:06
Done.
|
| + // The dummy task runner is destroyed after the initialization is done. |
| + handle.reset(); |
| + dummy_task_runner = nullptr; |
| + } |
| + |
| blink::setLayoutTestMode(true); |
| blink::WebSecurityPolicy::registerURLSchemeAsLocal( |
| blink::WebString::fromUTF8("test-shell-resource")); |