Index: third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h |
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h |
index f05f501ed29d34552f860647dd7446eedfb9b473..35f442746d7bc400437f211006ae807772a46650 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h |
+++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h |
@@ -30,10 +30,13 @@ class WindowProxyManagerBase : public GarbageCollected<WindowProxyManagerBase> { |
void clearForClose(); |
void CORE_EXPORT clearForNavigation(); |
- void CORE_EXPORT |
- releaseGlobals(HashMap<DOMWrapperWorld*, v8::Local<v8::Object>>&); |
- void CORE_EXPORT |
- setGlobals(const HashMap<DOMWrapperWorld*, v8::Local<v8::Object>>&); |
+ // Globals are passed in a vector to maintain their order: global object for |
+ // the main world is always first. This is needed to prevent bugs like |
+ // https://crbug.com/700077. |
+ using GlobalsVector = |
+ Vector<std::pair<DOMWrapperWorld*, v8::Local<v8::Object>>>; |
+ void CORE_EXPORT releaseGlobals(GlobalsVector&); |
+ void CORE_EXPORT setGlobals(const GlobalsVector&); |
protected: |
using IsolatedWorldMap = HeapHashMap<int, Member<WindowProxy>>; |