| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/loader/modulescript/ModuleTreeLinker.h" | 5 #include "core/loader/modulescript/ModuleTreeLinker.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ScriptModule.h" | 7 #include "bindings/core/v8/ScriptModule.h" |
| 8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
| 9 #include "bindings/core/v8/V8Binding.h" | 9 #include "bindings/core/v8/V8Binding.h" |
| 10 #include "bindings/core/v8/V8BindingForTesting.h" | 10 #include "bindings/core/v8/V8BindingForTesting.h" |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 Persistent<ModuleTreeLinkerTestModulator> modulator_; | 218 Persistent<ModuleTreeLinkerTestModulator> modulator_; |
| 219 }; | 219 }; |
| 220 | 220 |
| 221 void ModuleTreeLinkerTest::SetUp() { | 221 void ModuleTreeLinkerTest::SetUp() { |
| 222 dummy_page_holder_ = DummyPageHolder::Create(IntSize(500, 500)); | 222 dummy_page_holder_ = DummyPageHolder::Create(IntSize(500, 500)); |
| 223 RefPtr<ScriptState> script_state = | 223 RefPtr<ScriptState> script_state = |
| 224 ToScriptStateForMainWorld(&dummy_page_holder_->GetFrame()); | 224 ToScriptStateForMainWorld(&dummy_page_holder_->GetFrame()); |
| 225 modulator_ = new ModuleTreeLinkerTestModulator(script_state); | 225 modulator_ = new ModuleTreeLinkerTestModulator(script_state); |
| 226 } | 226 } |
| 227 | 227 |
| 228 TEST_F(ModuleTreeLinkerTest, fetchTreeNoDeps) { | 228 TEST_F(ModuleTreeLinkerTest, FetchTreeNoDeps) { |
| 229 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); | 229 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); |
| 230 | 230 |
| 231 KURL url(kParsedURLString, "http://example.com/root.js"); | 231 KURL url(kParsedURLString, "http://example.com/root.js"); |
| 232 ModuleScriptFetchRequest module_request( | 232 ModuleScriptFetchRequest module_request( |
| 233 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); | 233 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); |
| 234 TestModuleTreeClient* client = new TestModuleTreeClient; | 234 TestModuleTreeClient* client = new TestModuleTreeClient; |
| 235 registry->Fetch(module_request, AncestorList(), | 235 registry->Fetch(module_request, AncestorList(), |
| 236 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), | 236 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), |
| 237 client); | 237 client); |
| 238 | 238 |
| 239 EXPECT_FALSE(client->WasNotifyFinished()) | 239 EXPECT_FALSE(client->WasNotifyFinished()) |
| 240 << "ModuleTreeLinker should always finish asynchronously."; | 240 << "ModuleTreeLinker should always finish asynchronously."; |
| 241 EXPECT_FALSE(client->GetModuleScript()); | 241 EXPECT_FALSE(client->GetModuleScript()); |
| 242 | 242 |
| 243 GetModulator()->ResolveSingleModuleScriptFetch(url, {}); | 243 GetModulator()->ResolveSingleModuleScriptFetch(url, {}); |
| 244 EXPECT_TRUE(client->WasNotifyFinished()); | 244 EXPECT_TRUE(client->WasNotifyFinished()); |
| 245 ASSERT_TRUE(client->GetModuleScript()); | 245 ASSERT_TRUE(client->GetModuleScript()); |
| 246 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), | 246 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), |
| 247 ModuleInstantiationState::kInstantiated); | 247 ModuleInstantiationState::kInstantiated); |
| 248 } | 248 } |
| 249 | 249 |
| 250 TEST_F(ModuleTreeLinkerTest, fetchTreeInstantiationFailure) { | 250 TEST_F(ModuleTreeLinkerTest, FetchTreeInstantiationFailure) { |
| 251 GetModulator()->SetInstantiateShouldFail(true); | 251 GetModulator()->SetInstantiateShouldFail(true); |
| 252 | 252 |
| 253 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); | 253 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); |
| 254 | 254 |
| 255 KURL url(kParsedURLString, "http://example.com/root.js"); | 255 KURL url(kParsedURLString, "http://example.com/root.js"); |
| 256 ModuleScriptFetchRequest module_request( | 256 ModuleScriptFetchRequest module_request( |
| 257 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); | 257 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); |
| 258 TestModuleTreeClient* client = new TestModuleTreeClient; | 258 TestModuleTreeClient* client = new TestModuleTreeClient; |
| 259 registry->Fetch(module_request, AncestorList(), | 259 registry->Fetch(module_request, AncestorList(), |
| 260 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), | 260 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), |
| 261 client); | 261 client); |
| 262 | 262 |
| 263 EXPECT_FALSE(client->WasNotifyFinished()) | 263 EXPECT_FALSE(client->WasNotifyFinished()) |
| 264 << "ModuleTreeLinker should always finish asynchronously."; | 264 << "ModuleTreeLinker should always finish asynchronously."; |
| 265 EXPECT_FALSE(client->GetModuleScript()); | 265 EXPECT_FALSE(client->GetModuleScript()); |
| 266 | 266 |
| 267 GetModulator()->ResolveSingleModuleScriptFetch(url, {}); | 267 GetModulator()->ResolveSingleModuleScriptFetch(url, {}); |
| 268 EXPECT_TRUE(client->WasNotifyFinished()); | 268 EXPECT_TRUE(client->WasNotifyFinished()); |
| 269 ASSERT_TRUE(client->GetModuleScript()); | 269 ASSERT_TRUE(client->GetModuleScript()); |
| 270 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), | 270 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), |
| 271 ModuleInstantiationState::kErrored); | 271 ModuleInstantiationState::kErrored); |
| 272 } | 272 } |
| 273 | 273 |
| 274 TEST_F(ModuleTreeLinkerTest, fetchTreeWithSingleDependency) { | 274 TEST_F(ModuleTreeLinkerTest, FetchTreeWithSingleDependency) { |
| 275 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); | 275 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); |
| 276 | 276 |
| 277 KURL url(kParsedURLString, "http://example.com/root.js"); | 277 KURL url(kParsedURLString, "http://example.com/root.js"); |
| 278 ModuleScriptFetchRequest module_request( | 278 ModuleScriptFetchRequest module_request( |
| 279 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); | 279 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); |
| 280 TestModuleTreeClient* client = new TestModuleTreeClient; | 280 TestModuleTreeClient* client = new TestModuleTreeClient; |
| 281 registry->Fetch(module_request, AncestorList(), | 281 registry->Fetch(module_request, AncestorList(), |
| 282 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), | 282 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), |
| 283 client); | 283 client); |
| 284 | 284 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 297 | 297 |
| 298 GetModulator()->ResolveDependentTreeFetch( | 298 GetModulator()->ResolveDependentTreeFetch( |
| 299 url_dep1, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); | 299 url_dep1, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); |
| 300 EXPECT_TRUE(client->WasNotifyFinished()); | 300 EXPECT_TRUE(client->WasNotifyFinished()); |
| 301 | 301 |
| 302 ASSERT_TRUE(client->GetModuleScript()); | 302 ASSERT_TRUE(client->GetModuleScript()); |
| 303 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), | 303 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), |
| 304 ModuleInstantiationState::kInstantiated); | 304 ModuleInstantiationState::kInstantiated); |
| 305 } | 305 } |
| 306 | 306 |
| 307 TEST_F(ModuleTreeLinkerTest, fetchTreeWith3Deps) { | 307 TEST_F(ModuleTreeLinkerTest, FetchTreeWith3Deps) { |
| 308 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); | 308 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); |
| 309 | 309 |
| 310 KURL url(kParsedURLString, "http://example.com/root.js"); | 310 KURL url(kParsedURLString, "http://example.com/root.js"); |
| 311 ModuleScriptFetchRequest module_request( | 311 ModuleScriptFetchRequest module_request( |
| 312 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); | 312 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); |
| 313 TestModuleTreeClient* client = new TestModuleTreeClient; | 313 TestModuleTreeClient* client = new TestModuleTreeClient; |
| 314 registry->Fetch(module_request, AncestorList(), | 314 registry->Fetch(module_request, AncestorList(), |
| 315 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), | 315 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), |
| 316 client); | 316 client); |
| 317 | 317 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 347 GetModulator()->ResolveDependentTreeFetch( | 347 GetModulator()->ResolveDependentTreeFetch( |
| 348 url_dep, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); | 348 url_dep, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); |
| 349 } | 349 } |
| 350 | 350 |
| 351 EXPECT_TRUE(client->WasNotifyFinished()); | 351 EXPECT_TRUE(client->WasNotifyFinished()); |
| 352 ASSERT_TRUE(client->GetModuleScript()); | 352 ASSERT_TRUE(client->GetModuleScript()); |
| 353 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), | 353 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), |
| 354 ModuleInstantiationState::kInstantiated); | 354 ModuleInstantiationState::kInstantiated); |
| 355 } | 355 } |
| 356 | 356 |
| 357 TEST_F(ModuleTreeLinkerTest, fetchTreeWith3Deps1Fail) { | 357 TEST_F(ModuleTreeLinkerTest, FetchTreeWith3Deps1Fail) { |
| 358 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); | 358 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); |
| 359 | 359 |
| 360 KURL url(kParsedURLString, "http://example.com/root.js"); | 360 KURL url(kParsedURLString, "http://example.com/root.js"); |
| 361 ModuleScriptFetchRequest module_request( | 361 ModuleScriptFetchRequest module_request( |
| 362 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); | 362 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); |
| 363 TestModuleTreeClient* client = new TestModuleTreeClient; | 363 TestModuleTreeClient* client = new TestModuleTreeClient; |
| 364 registry->Fetch(module_request, AncestorList(), | 364 registry->Fetch(module_request, AncestorList(), |
| 365 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), | 365 ModuleGraphLevel::kTopLevelModuleFetch, GetModulator(), |
| 366 client); | 366 client); |
| 367 | 367 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 EXPECT_FALSE(client->GetModuleScript()); | 406 EXPECT_FALSE(client->GetModuleScript()); |
| 407 | 407 |
| 408 // Check below doesn't crash. | 408 // Check below doesn't crash. |
| 409 url_dep = url_deps.back(); | 409 url_dep = url_deps.back(); |
| 410 url_deps.pop_back(); | 410 url_deps.pop_back(); |
| 411 GetModulator()->ResolveDependentTreeFetch( | 411 GetModulator()->ResolveDependentTreeFetch( |
| 412 url_dep, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); | 412 url_dep, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); |
| 413 EXPECT_TRUE(url_deps.IsEmpty()); | 413 EXPECT_TRUE(url_deps.IsEmpty()); |
| 414 } | 414 } |
| 415 | 415 |
| 416 TEST_F(ModuleTreeLinkerTest, fetchDependencyTree) { | 416 TEST_F(ModuleTreeLinkerTest, FetchDependencyTree) { |
| 417 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); | 417 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); |
| 418 | 418 |
| 419 KURL url(kParsedURLString, "http://example.com/depth1.js"); | 419 KURL url(kParsedURLString, "http://example.com/depth1.js"); |
| 420 ModuleScriptFetchRequest module_request( | 420 ModuleScriptFetchRequest module_request( |
| 421 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); | 421 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); |
| 422 TestModuleTreeClient* client = new TestModuleTreeClient; | 422 TestModuleTreeClient* client = new TestModuleTreeClient; |
| 423 registry->Fetch( | 423 registry->Fetch( |
| 424 module_request, | 424 module_request, |
| 425 AncestorList{KURL(kParsedURLString, "http://example.com/root.js")}, | 425 AncestorList{KURL(kParsedURLString, "http://example.com/root.js")}, |
| 426 ModuleGraphLevel::kDependentModuleFetch, GetModulator(), client); | 426 ModuleGraphLevel::kDependentModuleFetch, GetModulator(), client); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 442 GetModulator()->ResolveDependentTreeFetch( | 442 GetModulator()->ResolveDependentTreeFetch( |
| 443 url_dep2, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); | 443 url_dep2, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); |
| 444 | 444 |
| 445 EXPECT_TRUE(client->WasNotifyFinished()); | 445 EXPECT_TRUE(client->WasNotifyFinished()); |
| 446 ASSERT_TRUE(client->GetModuleScript()); | 446 ASSERT_TRUE(client->GetModuleScript()); |
| 447 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), | 447 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), |
| 448 ModuleInstantiationState::kInstantiated); | 448 ModuleInstantiationState::kInstantiated); |
| 449 } | 449 } |
| 450 | 450 |
| 451 } // namespace blink | 451 } // namespace blink |
| OLD | NEW |