Index: third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp b/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp |
index 3fcba5514d4016c656052ed1c962fa0d90d7a9cf..fc2e9215b284b67b322f5a16ff27f740c565b5c6 100644 |
--- a/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp |
@@ -5,6 +5,7 @@ |
#include "web/WebRemoteFrameImpl.h" |
#include "bindings/core/v8/RemoteWindowProxy.h" |
+#include "bindings/core/v8/V8Window.h" |
#include "core/dom/Fullscreen.h" |
#include "core/dom/RemoteSecurityContext.h" |
#include "core/dom/SecurityContext.h" |
@@ -26,6 +27,7 @@ |
#include "web/RemoteFrameOwner.h" |
#include "web/WebLocalFrameImpl.h" |
#include "web/WebViewImpl.h" |
+#include "wtf/debug/Alias.h" |
namespace blink { |
@@ -215,9 +217,23 @@ v8::Local<v8::Context> WebRemoteFrameImpl::mainWorldScriptContext() const { |
v8::Local<v8::Context> WebRemoteFrameImpl::deprecatedMainWorldScriptContext() |
const { |
- return static_cast<RemoteWindowProxy*>( |
- frame()->windowProxy(DOMWrapperWorld::mainWorld())) |
- ->contextIfInitialized(); |
+ v8::Local<v8::Context> context = |
+ static_cast<RemoteWindowProxy*>( |
+ frame()->windowProxy(DOMWrapperWorld::mainWorld())) |
+ ->contextIfInitialized(); |
+ |
+ DOMWindow* window = frame()->domWindow(); |
+ // Prevent this local from getting optimized out, and hopefully, the heap |
+ // contents captured into minidumps. |
+ WTF::debug::alias(&window); |
+ |
+ v8::Local<v8::Object> globalProxy = context->Global(); |
+ CHECK(!globalProxy.IsEmpty()); |
+ CHECK(V8Window::hasInstance(globalProxy, v8::Isolate::GetCurrent())); |
+ CHECK(window); |
+ CHECK_EQ(window, V8Window::toImpl(globalProxy)); |
+ |
+ return context; |
} |
void WebRemoteFrameImpl::reload(WebFrameLoadType) { |