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/V8BindingForCore.h" | 9 #include "bindings/core/v8/V8BindingForCore.h" |
10 #include "bindings/core/v8/V8BindingForTesting.h" | 10 #include "bindings/core/v8/V8BindingForTesting.h" |
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 | 496 |
497 GetModulator()->ResolveDependentTreeFetch( | 497 GetModulator()->ResolveDependentTreeFetch( |
498 url_dep2, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); | 498 url_dep2, ModuleTreeLinkerTestModulator::ResolveResult::kSuccess); |
499 | 499 |
500 EXPECT_TRUE(client->WasNotifyFinished()); | 500 EXPECT_TRUE(client->WasNotifyFinished()); |
501 ASSERT_TRUE(client->GetModuleScript()); | 501 ASSERT_TRUE(client->GetModuleScript()); |
502 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), | 502 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), |
503 ModuleInstantiationState::kInstantiated); | 503 ModuleInstantiationState::kInstantiated); |
504 } | 504 } |
505 | 505 |
| 506 TEST_F(ModuleTreeLinkerTest, FetchDependencyOfCyclicGraph) { |
| 507 ModuleTreeLinkerRegistry* registry = ModuleTreeLinkerRegistry::Create(); |
| 508 |
| 509 KURL url(kParsedURLString, "http://example.com/a.js"); |
| 510 ModuleScriptFetchRequest module_request( |
| 511 url, String(), kParserInserted, WebURLRequest::kFetchCredentialsModeOmit); |
| 512 TestModuleTreeClient* client = new TestModuleTreeClient; |
| 513 registry->Fetch( |
| 514 module_request, |
| 515 AncestorList{KURL(kParsedURLString, "http://example.com/a.js")}, |
| 516 ModuleGraphLevel::kDependentModuleFetch, GetModulator(), client); |
| 517 |
| 518 EXPECT_FALSE(client->WasNotifyFinished()) |
| 519 << "ModuleTreeLinker should always finish asynchronously."; |
| 520 EXPECT_FALSE(client->GetModuleScript()); |
| 521 |
| 522 GetModulator()->ResolveSingleModuleScriptFetch( |
| 523 url, {"./a.js"}, ModuleInstantiationState::kUninstantiated); |
| 524 |
| 525 auto ancestor_list = GetModulator()->GetAncestorListForTreeFetch(url); |
| 526 EXPECT_EQ(0u, ancestor_list.size()); |
| 527 |
| 528 EXPECT_TRUE(client->WasNotifyFinished()); |
| 529 ASSERT_TRUE(client->GetModuleScript()); |
| 530 EXPECT_EQ(client->GetModuleScript()->InstantiationState(), |
| 531 ModuleInstantiationState::kInstantiated); |
| 532 } |
| 533 |
506 } // namespace blink | 534 } // namespace blink |
OLD | NEW |