Index: third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp |
index 1f94c6f472547851aa03ba867ae0b6e9965d2ec7..dcbb2e3f0c2cee7c862c805b4805c5f97408a0c3 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp |
@@ -78,20 +78,26 @@ |
namespace blink { |
-ScriptController::ScriptController(LocalFrame* frame) |
- : m_windowProxyManager(LocalWindowProxyManager::create(*frame)) {} |
- |
-DEFINE_TRACE(ScriptController) { |
- visitor->trace(m_windowProxyManager); |
-} |
+ScriptController::ScriptController(LocalFrame& frame) |
+ : LocalWindowProxyManager(frame) {} |
void ScriptController::clearForClose() { |
- m_windowProxyManager->clearForClose(); |
+ LocalWindowProxyManager::clearForClose(); |
MainThreadDebugger::instance()->didClearContextsForFrame(frame()); |
} |
void ScriptController::updateSecurityOrigin(SecurityOrigin* securityOrigin) { |
- m_windowProxyManager->updateSecurityOrigin(securityOrigin); |
+ // This is a little hacky, but a LocalWindowProxyManager can only hold |
+ // LocalWindowProxy objects, so the downcast to LocalWindowProxy is safe. |
+ static_cast<LocalWindowProxy*>(mainWorldProxy()) |
Yuki
2017/01/13 10:41:59
Did you make WindowProxyManagerImplHelper::mainWor
dcheng
2017/01/13 18:57:30
Originally, I wrote it this way for consistency or
|
+ ->updateSecurityOrigin(securityOrigin); |
+ for (auto& entry : isolatedWorlds()) { |
+ auto* isolatedWindowProxy = |
+ static_cast<LocalWindowProxy*>(entry.value.get()); |
+ SecurityOrigin* isolatedSecurityOrigin = |
+ isolatedWindowProxy->world().isolatedWorldSecurityOrigin(); |
+ isolatedWindowProxy->updateSecurityOrigin(isolatedSecurityOrigin); |
+ } |
} |
namespace { |
@@ -209,12 +215,6 @@ void ScriptController::executeScriptInMainWorld( |
InspectorUpdateCountersEvent::data()); |
} |
-LocalWindowProxy* ScriptController::windowProxy(DOMWrapperWorld& world) { |
- LocalWindowProxy* windowProxy = m_windowProxyManager->windowProxy(world); |
- windowProxy->initializeIfNeeded(); |
- return windowProxy; |
-} |
- |
bool ScriptController::shouldBypassMainWorldCSP() { |
v8::HandleScope handleScope(isolate()); |
v8::Local<v8::Context> context = isolate()->GetCurrentContext(); |
@@ -235,8 +235,7 @@ TextPosition ScriptController::eventHandlerPosition() const { |
void ScriptController::enableEval() { |
v8::HandleScope handleScope(isolate()); |
- v8::Local<v8::Context> v8Context = |
- m_windowProxyManager->mainWorldProxy()->contextIfInitialized(); |
+ v8::Local<v8::Context> v8Context = mainWorldProxy()->contextIfInitialized(); |
if (v8Context.IsEmpty()) |
return; |
v8Context->AllowCodeGenerationFromStrings(true); |
@@ -244,8 +243,7 @@ void ScriptController::enableEval() { |
void ScriptController::disableEval(const String& errorMessage) { |
v8::HandleScope handleScope(isolate()); |
- v8::Local<v8::Context> v8Context = |
- m_windowProxyManager->mainWorldProxy()->contextIfInitialized(); |
+ v8::Local<v8::Context> v8Context = mainWorldProxy()->contextIfInitialized(); |
if (v8Context.IsEmpty()) |
return; |
v8Context->AllowCodeGenerationFromStrings(false); |
@@ -285,15 +283,15 @@ void ScriptController::registerExtensionIfNeeded(v8::Extension* extension) { |
registeredExtensions().push_back(extension); |
} |
-void ScriptController::clearWindowProxy() { |
- // V8 binding expects ScriptController::clearWindowProxy only be called when a |
- // frame is loading a new page. This creates a new context for the new page. |
- m_windowProxyManager->clearForNavigation(); |
+void ScriptController::clearForNavigation() { |
Yuki
2017/01/13 10:42:00
nit: Could you put clearForClose and clearForNavig
dcheng
2017/01/13 18:57:30
Done.
|
+ // V8 binding expects ScriptController::clearForNavigation() only be called |
+ // when a frame is loading a new page. |
+ WindowProxyManagerBase::clearForNavigation(); |
Yuki
2017/01/13 10:42:00
Given LocalWindowProxyManager is a direct base cla
dcheng
2017/01/13 18:57:30
Done.
|
MainThreadDebugger::instance()->didClearContextsForFrame(frame()); |
} |
void ScriptController::updateDocument() { |
- m_windowProxyManager->mainWorldProxy()->updateDocument(); |
+ mainWorldProxy()->updateDocument(); |
} |
bool ScriptController::canExecuteScripts( |