Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Unified Diff: third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp

Issue 2630693002: Make ScriptController inherit LocalWindowProxyManager
Patch Set: Add comments Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(

Powered by Google App Engine
This is Rietveld 408576698