summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/html/imports/html_import_loader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/html/imports/html_import_loader.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/html/imports/html_import_loader.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/chromium/third_party/blink/renderer/core/html/imports/html_import_loader.cc b/chromium/third_party/blink/renderer/core/html/imports/html_import_loader.cc
index a921505e787..b23f609a9a5 100644
--- a/chromium/third_party/blink/renderer/core/html/imports/html_import_loader.cc
+++ b/chromium/third_party/blink/renderer/core/html/imports/html_import_loader.cc
@@ -96,16 +96,21 @@ HTMLImportLoader::State HTMLImportLoader::StartWritingAndParsing(
const ResourceResponse& response) {
DCHECK(controller_);
DCHECK(!imports_.IsEmpty());
- Document* master = controller_->Master();
+ Document* tree_root = controller_->TreeRoot();
document_ = MakeGarbageCollected<HTMLDocument>(
DocumentInit::Create()
.WithImportsController(controller_)
- .WithContextDocument(master->ContextDocument())
- .WithRegistrationContext(master->RegistrationContext())
- .WithContentSecurityPolicy(master->GetContentSecurityPolicy())
+ .WithExecutionContext(tree_root->GetExecutionContext())
+ .WithRegistrationContext(tree_root->RegistrationContext())
.WithURL(response.CurrentRequestUrl()));
- document_->OpenForNavigation(kAllowAsynchronousParsing, response.MimeType(),
- "UTF-8");
+ // imports expect to be able to log CSP errors, which requires binding the CSP
+ // to a CSP delegate.
+ document_->BindContentSecurityPolicy();
+ document_->OpenForNavigation(
+ RuntimeEnabledFeatures::ForceSynchronousHTMLParsingEnabled()
+ ? kAllowDeferredParsing
+ : kAllowAsynchronousParsing,
+ response.MimeType(), "UTF-8");
DocumentParser* parser = document_->Parser();
DCHECK(parser);
@@ -204,7 +209,7 @@ V0CustomElementSyncMicrotaskQueue* HTMLImportLoader::MicrotaskQueue() const {
return microtask_queue_;
}
-void HTMLImportLoader::Trace(Visitor* visitor) {
+void HTMLImportLoader::Trace(Visitor* visitor) const {
visitor->Trace(controller_);
visitor->Trace(imports_);
visitor->Trace(document_);