| Index: third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp b/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
|
| index 36b17fac2f3e53a7bd56a2fdc1146c72bd85e8dd..042c59d6de67c8d654732a5d3f9593202a98a1f3 100644
|
| --- a/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
|
| @@ -4,8 +4,8 @@
|
|
|
| #include "core/dom/ScriptRunner.h"
|
|
|
| +#include "bindings/core/v8/HTMLScriptElementOrSVGScriptElement.h"
|
| #include "core/dom/Document.h"
|
| -#include "core/dom/Element.h"
|
| #include "core/dom/ScriptLoader.h"
|
| #include "platform/heap/Handle.h"
|
| #include "platform/testing/TestingPlatformSupport.h"
|
| @@ -22,26 +22,63 @@ using ::testing::ElementsAreArray;
|
|
|
| namespace blink {
|
|
|
| -class MockScriptLoader final : public ScriptLoader {
|
| +class MockScriptLoaderClient
|
| + : public GarbageCollectedFinalized<MockScriptLoaderClient>,
|
| + public ScriptLoaderClient {
|
| + USING_GARBAGE_COLLECTED_MIXIN(MockScriptLoaderClient);
|
| +
|
| public:
|
| - static MockScriptLoader* create(Element* element) {
|
| - return new MockScriptLoader(element);
|
| + static MockScriptLoaderClient* create() {
|
| + return new testing::StrictMock<MockScriptLoaderClient>();
|
| }
|
| +
|
| + MOCK_METHOD0(dispatchLoadEvent, void());
|
| + MOCK_METHOD0(dispatchErrorEvent, void());
|
| + MOCK_CONST_METHOD0(asyncAttributeValue, bool());
|
| + MOCK_CONST_METHOD0(charsetAttributeValue, String());
|
| + MOCK_CONST_METHOD0(crossOriginAttributeValue, String());
|
| + MOCK_CONST_METHOD0(deferAttributeValue, bool());
|
| + MOCK_CONST_METHOD0(eventAttributeValue, String());
|
| + MOCK_CONST_METHOD0(forAttributeValue, String());
|
| + MOCK_CONST_METHOD0(integrityAttributeValue, String());
|
| + MOCK_CONST_METHOD0(languageAttributeValue, String());
|
| + MOCK_CONST_METHOD0(sourceAttributeValue, String());
|
| + MOCK_CONST_METHOD0(typeAttributeValue, String());
|
| +
|
| + MOCK_METHOD0(textFromChildren, String());
|
| + MOCK_CONST_METHOD0(textContent, String());
|
| + MOCK_CONST_METHOD0(hasSourceAttribute, bool());
|
| + MOCK_CONST_METHOD0(isConnected, bool());
|
| + MOCK_CONST_METHOD0(hasChildren, bool());
|
| + MOCK_CONST_METHOD0(isNonceableElement, bool());
|
| + MOCK_CONST_METHOD0(initiatorName, AtomicString());
|
| + MOCK_METHOD3(allowInlineScriptForCSP,
|
| + bool(const AtomicString&,
|
| + const WTF::OrdinalNumber&,
|
| + const String&));
|
| + MOCK_CONST_METHOD0(document, Document&());
|
| + MOCK_METHOD1(setScriptElementForBinding,
|
| + void(HTMLScriptElementOrSVGScriptElement&));
|
| +
|
| + DEFINE_INLINE_VIRTUAL_TRACE() { ScriptLoaderClient::trace(visitor); }
|
| +};
|
| +
|
| +class MockScriptLoader final : public ScriptLoader {
|
| + public:
|
| + static MockScriptLoader* create() { return new MockScriptLoader(); }
|
| ~MockScriptLoader() override {}
|
|
|
| MOCK_METHOD0(execute, void());
|
| MOCK_CONST_METHOD0(isReady, bool());
|
|
|
| private:
|
| - explicit MockScriptLoader(Element* element)
|
| - : ScriptLoader(element, false, false, false) {}
|
| + explicit MockScriptLoader()
|
| + : ScriptLoader(MockScriptLoaderClient::create(), false, false, false) {}
|
| };
|
|
|
| class ScriptRunnerTest : public testing::Test {
|
| public:
|
| - ScriptRunnerTest()
|
| - : m_document(Document::create()),
|
| - m_element(m_document->createElement("foo")) {}
|
| + ScriptRunnerTest() : m_document(Document::create()) {}
|
|
|
| void SetUp() override {
|
| // We have to create ScriptRunner after initializing platform, because we
|
| @@ -54,7 +91,6 @@ class ScriptRunnerTest : public testing::Test {
|
|
|
| protected:
|
| Persistent<Document> m_document;
|
| - Persistent<Element> m_element;
|
| Persistent<ScriptRunner> m_scriptRunner;
|
| WTF::Vector<int> m_order;
|
| ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
|
| @@ -62,7 +98,7 @@ class ScriptRunnerTest : public testing::Test {
|
| };
|
|
|
| TEST_F(ScriptRunnerTest, QueueSingleScript_Async) {
|
| - MockScriptLoader* scriptLoader = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader = MockScriptLoader::create();
|
| m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner::Async);
|
| m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::Async);
|
|
|
| @@ -71,7 +107,7 @@ TEST_F(ScriptRunnerTest, QueueSingleScript_Async) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, QueueSingleScript_InOrder) {
|
| - MockScriptLoader* scriptLoader = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader = MockScriptLoader::create();
|
| m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner::InOrder);
|
|
|
| EXPECT_CALL(*scriptLoader, isReady()).WillOnce(Return(true));
|
| @@ -83,9 +119,9 @@ TEST_F(ScriptRunnerTest, QueueSingleScript_InOrder) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, QueueMultipleScripts_InOrder) {
|
| - MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader1 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader2 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader3 = MockScriptLoader::create();
|
|
|
| HeapVector<Member<MockScriptLoader>> scriptLoaders;
|
| scriptLoaders.push_back(scriptLoader1);
|
| @@ -122,11 +158,11 @@ TEST_F(ScriptRunnerTest, QueueMultipleScripts_InOrder) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, QueueMixedScripts) {
|
| - MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader4 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader5 = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader1 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader2 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader3 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader4 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader5 = MockScriptLoader::create();
|
|
|
| m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::InOrder);
|
| m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::InOrder);
|
| @@ -171,9 +207,9 @@ TEST_F(ScriptRunnerTest, QueueMixedScripts) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, QueueReentrantScript_Async) {
|
| - MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader1 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader2 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader3 = MockScriptLoader::create();
|
|
|
| m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::Async);
|
| m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::Async);
|
| @@ -209,9 +245,9 @@ TEST_F(ScriptRunnerTest, QueueReentrantScript_Async) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, QueueReentrantScript_InOrder) {
|
| - MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader1 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader2 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader3 = MockScriptLoader::create();
|
|
|
| EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true));
|
| EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true));
|
| @@ -260,7 +296,7 @@ TEST_F(ScriptRunnerTest, QueueReentrantScript_ManyAsyncScripts) {
|
| scriptLoaders[i] = nullptr;
|
|
|
| for (int i = 0; i < 20; i++) {
|
| - scriptLoaders[i] = MockScriptLoader::create(m_element.get());
|
| + scriptLoaders[i] = MockScriptLoader::create();
|
| EXPECT_CALL(*scriptLoaders[i], isReady()).WillRepeatedly(Return(true));
|
|
|
| m_scriptRunner->queueScriptForExecution(scriptLoaders[i],
|
| @@ -293,9 +329,9 @@ TEST_F(ScriptRunnerTest, QueueReentrantScript_ManyAsyncScripts) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, ResumeAndSuspend_InOrder) {
|
| - MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader1 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader2 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader3 = MockScriptLoader::create();
|
|
|
| m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::InOrder);
|
| m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::InOrder);
|
| @@ -335,9 +371,9 @@ TEST_F(ScriptRunnerTest, ResumeAndSuspend_InOrder) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, ResumeAndSuspend_Async) {
|
| - MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader1 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader2 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader3 = MockScriptLoader::create();
|
|
|
| m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::Async);
|
| m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::Async);
|
| @@ -367,8 +403,8 @@ TEST_F(ScriptRunnerTest, ResumeAndSuspend_Async) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, LateNotifications) {
|
| - MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
|
| - MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
|
| + MockScriptLoader* scriptLoader1 = MockScriptLoader::create();
|
| + MockScriptLoader* scriptLoader2 = MockScriptLoader::create();
|
|
|
| EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true));
|
| EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true));
|
| @@ -395,10 +431,8 @@ TEST_F(ScriptRunnerTest, LateNotifications) {
|
| }
|
|
|
| TEST_F(ScriptRunnerTest, TasksWithDeadScriptRunner) {
|
| - Persistent<MockScriptLoader> scriptLoader1 =
|
| - MockScriptLoader::create(m_element.get());
|
| - Persistent<MockScriptLoader> scriptLoader2 =
|
| - MockScriptLoader::create(m_element.get());
|
| + Persistent<MockScriptLoader> scriptLoader1 = MockScriptLoader::create();
|
| + Persistent<MockScriptLoader> scriptLoader2 = MockScriptLoader::create();
|
|
|
| EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true));
|
| EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true));
|
|
|