Index: third_party/WebKit/Source/core/dom/DOMImplementation.cpp |
diff --git a/third_party/WebKit/Source/core/dom/DOMImplementation.cpp b/third_party/WebKit/Source/core/dom/DOMImplementation.cpp |
index 5c7975e2c94c5fb777ecb1d96de93c7e7abc6cf0..8b4ac92c0d8b5ad40c65a9c9470da4eb5881ae26 100644 |
--- a/third_party/WebKit/Source/core/dom/DOMImplementation.cpp |
+++ b/third_party/WebKit/Source/core/dom/DOMImplementation.cpp |
@@ -225,9 +225,17 @@ Document* DOMImplementation::createDocument(const String& type, const DocumentIn |
if (type == "application/xhtml+xml") |
return XMLDocument::createXHTML(init); |
- PluginData* pluginData = 0; |
- if (init.frame() && init.frame()->page() && init.frame()->loader().allowPlugins(NotAboutToInstantiatePlugin)) |
- pluginData = init.frame()->pluginData(); |
+ PluginData* pluginData = nullptr; |
+ if (init.frame() && init.frame()->page() && init.frame()->loader().allowPlugins(NotAboutToInstantiatePlugin)) { |
+ // If the document is being created for the main frame, init.frame()->tree().top()->securityContext() returns nullptr. |
+ // For that reason, the origin must be retrieved directly from init.url(). |
+ if (init.frame()->isMainFrame()) { |
+ RefPtr<SecurityOrigin> origin = SecurityOrigin::create(init.url()); |
+ pluginData = init.frame()->page()->pluginData(origin.get()); |
+ } else { |
+ pluginData = init.frame()->page()->pluginData(init.frame()->tree().top()->securityContext()->getSecurityOrigin()); |
+ } |
+ } |
// PDF is one image type for which a plugin can override built-in support. |
// We do not want QuickTime to take over all image types, obviously. |