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

Side by Side Diff: Source/core/dom/ScriptRunnerTest.cpp

Issue 1303153005: Introduce WebTaskRunner Patch 3/5 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add missing #include Created 5 years, 3 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
« no previous file with comments | « Source/core/dom/ScriptRunner.cpp ('k') | Source/core/dom/ScriptedIdleTaskController.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/dom/ScriptRunner.h" 6 #include "core/dom/ScriptRunner.h"
7 7
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/dom/Element.h" 9 #include "core/dom/Element.h"
10 #include "core/dom/ScriptLoader.h" 10 #include "core/dom/ScriptLoader.h"
(...skipping 21 matching lines...) Expand all
32 explicit MockScriptLoader(Element* element) : ScriptLoader(element, false, f alse) 32 explicit MockScriptLoader(Element* element) : ScriptLoader(element, false, f alse)
33 { 33 {
34 } 34 }
35 }; 35 };
36 36
37 class MockWebThread : public WebThread { 37 class MockWebThread : public WebThread {
38 public: 38 public:
39 explicit MockWebThread(WebScheduler* webScheduler) : m_webScheduler(webSched uler) { } 39 explicit MockWebThread(WebScheduler* webScheduler) : m_webScheduler(webSched uler) { }
40 ~MockWebThread() override { } 40 ~MockWebThread() override { }
41 41
42 void postTask(const WebTraceLocation&, Task*) override { ASSERT_NOT_REACHED( ); }
43 void postDelayedTask(const WebTraceLocation&, Task*, long long) override { A SSERT_NOT_REACHED(); }
44
45 bool isCurrentThread() const override 42 bool isCurrentThread() const override
46 { 43 {
47 ASSERT_NOT_REACHED(); 44 ASSERT_NOT_REACHED();
48 return false; 45 return false;
49 } 46 }
50 47
51 PlatformThreadId threadId() const override 48 PlatformThreadId threadId() const override
52 { 49 {
53 ASSERT_NOT_REACHED(); 50 ASSERT_NOT_REACHED();
54 return 0; 51 return 0;
55 } 52 }
56 53
54 WebTaskRunner* taskRunner() override
55 {
56 ASSERT_NOT_REACHED();
57 return nullptr;
58 }
59
57 void addTaskObserver(TaskObserver*) override { ASSERT_NOT_REACHED(); } 60 void addTaskObserver(TaskObserver*) override { ASSERT_NOT_REACHED(); }
58 void removeTaskObserver(TaskObserver*) override { ASSERT_NOT_REACHED(); } 61 void removeTaskObserver(TaskObserver*) override { ASSERT_NOT_REACHED(); }
59 62
60 WebScheduler* scheduler() const override { return m_webScheduler; } 63 WebScheduler* scheduler() const override { return m_webScheduler; }
61 64
62 private: 65 private:
63 WebScheduler* m_webScheduler; 66 WebScheduler* m_webScheduler;
64 }; 67 };
65 68
69 class MockWebTaskRunner : public WebTaskRunner {
70 public:
71 explicit MockWebTaskRunner(Deque<OwnPtr<WebTaskRunner::Task>>* tasks) : m_ta sks(tasks) { }
72 ~MockWebTaskRunner() override { }
73
74 virtual void postTask(const WebTraceLocation&, Task* task)
75 {
76 m_tasks->append(adoptPtr(task));
77 }
78
79 void postDelayedTask(const WebTraceLocation&, Task* task, long long delayMs) override
80 {
81 ASSERT_NOT_REACHED();
82 }
83
84 Deque<OwnPtr<WebTaskRunner::Task>>* m_tasks; // NOT OWNED
85 };
86
66 class MockPlatform : public Platform, private WebScheduler { 87 class MockPlatform : public Platform, private WebScheduler {
67 public: 88 public:
68 MockPlatform() : m_mockWebThread(this), m_shouldYield(false), m_shouldYieldE veryOtherTime(false) { } 89 MockPlatform()
69 90 : m_mockWebThread(this)
70 void postLoadingTask(const WebTraceLocation&, WebThread::Task* task) overrid e 91 , m_mockWebTaskRunner(&m_tasks)
71 { 92 , m_shouldYield(false)
72 m_tasks.append(adoptPtr(task)); 93 , m_shouldYieldEveryOtherTime(false) { }
73 }
74 94
75 void cryptographicallyRandomValues(unsigned char* buffer, size_t length) ove rride { } 95 void cryptographicallyRandomValues(unsigned char* buffer, size_t length) ove rride { }
76 96
77 WebThread* currentThread() override { return &m_mockWebThread; } 97 WebThread* currentThread() override { return &m_mockWebThread; }
78 98
99 WebTaskRunner* loadingTaskRunner() override
100 {
101 return &m_mockWebTaskRunner;
102 }
103
104 WebTaskRunner* timerTaskRunner() override
105 {
106 ASSERT_NOT_REACHED();
107 return nullptr;
108 }
109
79 void runSingleTask() 110 void runSingleTask()
80 { 111 {
81 if (m_tasks.isEmpty()) 112 if (m_tasks.isEmpty())
82 return; 113 return;
83 m_tasks.takeFirst()->run(); 114 m_tasks.takeFirst()->run();
84 } 115 }
85 116
86 void runAllTasks() 117 void runAllTasks()
87 { 118 {
88 while (!m_tasks.isEmpty()) 119 while (!m_tasks.isEmpty())
(...skipping 13 matching lines...) Expand all
102 } 133 }
103 134
104 // NOTE if we yield 100% of the time, nothing will get run. 135 // NOTE if we yield 100% of the time, nothing will get run.
105 void setShouldYieldEveryOtherTime(bool shouldYieldEveryOtherTime) 136 void setShouldYieldEveryOtherTime(bool shouldYieldEveryOtherTime)
106 { 137 {
107 m_shouldYieldEveryOtherTime = shouldYieldEveryOtherTime; 138 m_shouldYieldEveryOtherTime = shouldYieldEveryOtherTime;
108 } 139 }
109 140
110 private: 141 private:
111 MockWebThread m_mockWebThread; 142 MockWebThread m_mockWebThread;
112 Deque<OwnPtr<WebThread::Task>> m_tasks; 143 Deque<OwnPtr<WebTaskRunner::Task>> m_tasks;
144 MockWebTaskRunner m_mockWebTaskRunner;
113 bool m_shouldYield; 145 bool m_shouldYield;
114 bool m_shouldYieldEveryOtherTime; 146 bool m_shouldYieldEveryOtherTime;
115 }; 147 };
116 148
117 class ScriptRunnerTest : public testing::Test { 149 class ScriptRunnerTest : public testing::Test {
118 public: 150 public:
119 void SetUp() override 151 void SetUp() override
120 { 152 {
121 m_document = Document::create(); 153 m_document = Document::create();
122 m_element = m_document->createElement("foo", ASSERT_NO_EXCEPTION); 154 m_element = m_document->createElement("foo", ASSERT_NO_EXCEPTION);
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 testing::Mock::VerifyAndClear(scriptLoader2.get()); 571 testing::Mock::VerifyAndClear(scriptLoader2.get());
540 testing::Mock::VerifyAndClear(scriptLoader3.get()); 572 testing::Mock::VerifyAndClear(scriptLoader3.get());
541 EXPECT_CALL(*scriptLoader2, execute()).Times(1); 573 EXPECT_CALL(*scriptLoader2, execute()).Times(1);
542 EXPECT_CALL(*scriptLoader3, execute()).Times(1); 574 EXPECT_CALL(*scriptLoader3, execute()).Times(1);
543 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true)); 575 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true));
544 EXPECT_CALL(*scriptLoader3, isReady()).WillRepeatedly(Return(true)); 576 EXPECT_CALL(*scriptLoader3, isReady()).WillRepeatedly(Return(true));
545 m_platform.runAllTasks(); 577 m_platform.runAllTasks();
546 } 578 }
547 579
548 } // namespace blink 580 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/dom/ScriptRunner.cpp ('k') | Source/core/dom/ScriptedIdleTaskController.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698