Index: third_party/WebKit/Source/core/dom/TreeScope.cpp |
diff --git a/third_party/WebKit/Source/core/dom/TreeScope.cpp b/third_party/WebKit/Source/core/dom/TreeScope.cpp |
index 2d1a1b6ee5785db7a5b02c61938eccb91f118cdc..8cd9b55c0c6594d1f5f6431034aad64b078585bc 100644 |
--- a/third_party/WebKit/Source/core/dom/TreeScope.cpp |
+++ b/third_party/WebKit/Source/core/dom/TreeScope.cpp |
@@ -370,13 +370,14 @@ Element* TreeScope::findAnchor(const String& name) |
void TreeScope::adoptIfNeeded(Node& node) |
{ |
+ // Script is forbidden to protect against event handlers firing in the middle of rescoping |
+ // in |didMoveToNewDocument| callbacks. See https://crbug.com/605766 and https://crbug.com/606651. |
+ ScriptForbiddenScope forbidScript; |
DCHECK(this); |
DCHECK(!node.isDocumentNode()); |
TreeScopeAdopter adopter(node, *this); |
- if (adopter.needsScopeChange()) { |
- ScriptForbiddenScope forbidScript; |
+ if (adopter.needsScopeChange()) |
adopter.execute(); |
- } |
} |
Element* TreeScope::retarget(const Element& target) const |