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

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

Issue 2390543002: Reflow comments in core/dom/. (Closed)
Patch Set: Reformat comments in core/dom/. Created 4 years, 2 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
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 "core/dom/ScriptRunner.h" 5 #include "core/dom/ScriptRunner.h"
6 6
7 #include "core/dom/Document.h" 7 #include "core/dom/Document.h"
8 #include "core/dom/Element.h" 8 #include "core/dom/Element.h"
9 #include "core/dom/ScriptLoader.h" 9 #include "core/dom/ScriptLoader.h"
10 #include "platform/heap/Handle.h" 10 #include "platform/heap/Handle.h"
(...skipping 27 matching lines...) Expand all
38 : ScriptLoader(element, false, false, false) {} 38 : ScriptLoader(element, false, false, false) {}
39 }; 39 };
40 40
41 class ScriptRunnerTest : public testing::Test { 41 class ScriptRunnerTest : public testing::Test {
42 public: 42 public:
43 ScriptRunnerTest() 43 ScriptRunnerTest()
44 : m_document(Document::create()), 44 : m_document(Document::create()),
45 m_element(m_document->createElement("foo", ASSERT_NO_EXCEPTION)) {} 45 m_element(m_document->createElement("foo", ASSERT_NO_EXCEPTION)) {}
46 46
47 void SetUp() override { 47 void SetUp() override {
48 // We have to create ScriptRunner after initializing platform, because we ne ed 48 // We have to create ScriptRunner after initializing platform, because we
49 // Platform::current()->currentThread()->scheduler()->loadingTaskRunner() 49 // need Platform::current()->currentThread()->scheduler()->
50 // to be initialized before creating ScriptRunner to save it in constructor. 50 // loadingTaskRunner() to be initialized before creating ScriptRunner to
51 // save it in constructor.
51 m_scriptRunner = ScriptRunner::create(m_document.get()); 52 m_scriptRunner = ScriptRunner::create(m_document.get());
52 } 53 }
53 54
54 void TearDown() override { m_scriptRunner.release(); } 55 void TearDown() override { m_scriptRunner.release(); }
55 56
56 Persistent<Document> m_document; 57 Persistent<Document> m_document;
57 Persistent<Element> m_element; 58 Persistent<Element> m_element;
58 TestingPlatformSupportWithMockScheduler m_platform; 59 TestingPlatformSupportWithMockScheduler m_platform;
59 Persistent<ScriptRunner> m_scriptRunner; 60 Persistent<ScriptRunner> m_scriptRunner;
60 WTF::Vector<int> m_order; 61 WTF::Vector<int> m_order;
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 scriptLoader = scriptLoader3; 189 scriptLoader = scriptLoader3;
189 EXPECT_CALL(*scriptLoader2, execute()).WillOnce(Invoke([scriptLoader, this] { 190 EXPECT_CALL(*scriptLoader2, execute()).WillOnce(Invoke([scriptLoader, this] {
190 m_order.append(2); 191 m_order.append(2);
191 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::Async); 192 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::Async);
192 })); 193 }));
193 194
194 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] { 195 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] {
195 m_order.append(3); 196 m_order.append(3);
196 })); 197 }));
197 198
198 // Make sure that re-entrant calls to notifyScriptReady don't cause ScriptRunn er::execute to do 199 // Make sure that re-entrant calls to notifyScriptReady don't cause
199 // more work than expected. 200 // ScriptRunner::execute to do more work than expected.
200 m_platform.runSingleTask(); 201 m_platform.runSingleTask();
201 EXPECT_THAT(m_order, ElementsAre(1)); 202 EXPECT_THAT(m_order, ElementsAre(1));
202 203
203 m_platform.runSingleTask(); 204 m_platform.runSingleTask();
204 EXPECT_THAT(m_order, ElementsAre(1, 2)); 205 EXPECT_THAT(m_order, ElementsAre(1, 2));
205 206
206 m_platform.runSingleTask(); 207 m_platform.runSingleTask();
207 EXPECT_THAT(m_order, ElementsAre(1, 2, 3)); 208 EXPECT_THAT(m_order, ElementsAre(1, 2, 3));
208 } 209 }
209 210
(...skipping 24 matching lines...) Expand all
234 m_order.append(2); 235 m_order.append(2);
235 m_scriptRunner->queueScriptForExecution(scriptLoader, 236 m_scriptRunner->queueScriptForExecution(scriptLoader,
236 ScriptRunner::InOrder); 237 ScriptRunner::InOrder);
237 m_scriptRunner->notifyScriptReady(scriptLoader3, ScriptRunner::InOrder); 238 m_scriptRunner->notifyScriptReady(scriptLoader3, ScriptRunner::InOrder);
238 })); 239 }));
239 240
240 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] { 241 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] {
241 m_order.append(3); 242 m_order.append(3);
242 })); 243 }));
243 244
244 // Make sure that re-entrant calls to queueScriptForExecution don't cause Scri ptRunner::execute to do 245 // Make sure that re-entrant calls to queueScriptForExecution don't cause
245 // more work than expected. 246 // ScriptRunner::execute to do more work than expected.
246 m_platform.runSingleTask(); 247 m_platform.runSingleTask();
247 EXPECT_THAT(m_order, ElementsAre(1)); 248 EXPECT_THAT(m_order, ElementsAre(1));
248 249
249 m_platform.runSingleTask(); 250 m_platform.runSingleTask();
250 EXPECT_THAT(m_order, ElementsAre(1, 2)); 251 EXPECT_THAT(m_order, ElementsAre(1, 2));
251 252
252 m_platform.runSingleTask(); 253 m_platform.runSingleTask();
253 EXPECT_THAT(m_order, ElementsAre(1, 2, 3)); 254 EXPECT_THAT(m_order, ElementsAre(1, 2, 3));
254 } 255 }
255 256
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 EXPECT_CALL(*scriptLoader1, execute()).WillOnce(Invoke([this] { 379 EXPECT_CALL(*scriptLoader1, execute()).WillOnce(Invoke([this] {
379 m_order.append(1); 380 m_order.append(1);
380 })); 381 }));
381 EXPECT_CALL(*scriptLoader2, execute()).WillOnce(Invoke([this] { 382 EXPECT_CALL(*scriptLoader2, execute()).WillOnce(Invoke([this] {
382 m_order.append(2); 383 m_order.append(2);
383 })); 384 }));
384 385
385 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::InOrder); 386 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::InOrder);
386 m_platform.runUntilIdle(); 387 m_platform.runUntilIdle();
387 388
388 // At this moment all tasks can be already executed. Make sure that we do not crash here. 389 // At this moment all tasks can be already executed. Make sure that we do not
390 // crash here.
389 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::InOrder); 391 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::InOrder);
390 m_platform.runUntilIdle(); 392 m_platform.runUntilIdle();
391 393
392 EXPECT_THAT(m_order, ElementsAre(1, 2)); 394 EXPECT_THAT(m_order, ElementsAre(1, 2));
393 } 395 }
394 396
395 TEST_F(ScriptRunnerTest, TasksWithDeadScriptRunner) { 397 TEST_F(ScriptRunnerTest, TasksWithDeadScriptRunner) {
396 Persistent<MockScriptLoader> scriptLoader1 = 398 Persistent<MockScriptLoader> scriptLoader1 =
397 MockScriptLoader::create(m_element.get()); 399 MockScriptLoader::create(m_element.get());
398 Persistent<MockScriptLoader> scriptLoader2 = 400 Persistent<MockScriptLoader> scriptLoader2 =
399 MockScriptLoader::create(m_element.get()); 401 MockScriptLoader::create(m_element.get());
400 402
401 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true)); 403 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true));
402 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true)); 404 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true));
403 405
404 m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::Async); 406 m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::Async);
405 m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::Async); 407 m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::Async);
406 408
407 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::Async); 409 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::Async);
408 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::Async); 410 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::Async);
409 411
410 m_scriptRunner.release(); 412 m_scriptRunner.release();
411 413
412 ThreadState::current()->collectAllGarbage(); 414 ThreadState::current()->collectAllGarbage();
413 415
414 // m_scriptRunner is gone. We need to make sure that ScriptRunner::Task do not access dead object. 416 // m_scriptRunner is gone. We need to make sure that ScriptRunner::Task do not
417 // access dead object.
415 EXPECT_CALL(*scriptLoader1, execute()).Times(0); 418 EXPECT_CALL(*scriptLoader1, execute()).Times(0);
416 EXPECT_CALL(*scriptLoader2, execute()).Times(0); 419 EXPECT_CALL(*scriptLoader2, execute()).Times(0);
417 420
418 m_platform.runUntilIdle(); 421 m_platform.runUntilIdle();
419 } 422 }
420 423
421 } // namespace blink 424 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/ScriptLoader.cpp ('k') | third_party/WebKit/Source/core/dom/ScriptedAnimationController.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698