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

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

Issue 2702273004: bindings: Simplifies WindowProxyManager and its relation to Frame. (Closed)
Patch Set: Addressed review comments. Created 3 years, 10 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/WindowProxyManager.cpp
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp
index 43350caabe273ee755cb9bfda43f13cfea0302c9..c13ba99340e555e13bda3253cf18af045f463c94 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp
@@ -12,7 +12,6 @@ namespace {
WindowProxy* createWindowProxyForFrame(v8::Isolate* isolate,
Frame& frame,
-
RefPtr<DOMWrapperWorld> world) {
if (frame.isLocalFrame()) {
return LocalWindowProxy::create(isolate, toLocalFrame(frame),
@@ -23,41 +22,25 @@ WindowProxy* createWindowProxyForFrame(v8::Isolate* isolate,
}
}
-DEFINE_TRACE(WindowProxyManagerBase) {
+DEFINE_TRACE(WindowProxyManager) {
visitor->trace(m_frame);
visitor->trace(m_windowProxy);
visitor->trace(m_isolatedWorlds);
}
-WindowProxy* WindowProxyManagerBase::windowProxy(DOMWrapperWorld& world) {
- WindowProxy* windowProxy = nullptr;
- if (world.isMainWorld()) {
- windowProxy = m_windowProxy.get();
- } else {
- IsolatedWorldMap::iterator iter = m_isolatedWorlds.find(world.worldId());
- if (iter != m_isolatedWorlds.end()) {
- windowProxy = iter->value.get();
- } else {
- windowProxy = createWindowProxyForFrame(m_isolate, *m_frame, &world);
- m_isolatedWorlds.set(world.worldId(), windowProxy);
- }
- }
- return windowProxy;
-}
-
-void WindowProxyManagerBase::clearForClose() {
+void WindowProxyManager::clearForClose() {
m_windowProxy->clearForClose();
for (auto& entry : m_isolatedWorlds)
entry.value->clearForClose();
}
-void WindowProxyManagerBase::clearForNavigation() {
+void WindowProxyManager::clearForNavigation() {
m_windowProxy->clearForNavigation();
for (auto& entry : m_isolatedWorlds)
entry.value->clearForNavigation();
}
-void WindowProxyManagerBase::releaseGlobals(
+void WindowProxyManager::releaseGlobals(
HashMap<DOMWrapperWorld*, v8::Local<v8::Object>>& map) {
map.insert(&m_windowProxy->world(), m_windowProxy->releaseGlobal());
for (auto& entry : m_isolatedWorlds)
@@ -65,23 +48,40 @@ void WindowProxyManagerBase::releaseGlobals(
windowProxy(entry.value->world())->releaseGlobal());
}
-void WindowProxyManagerBase::setGlobals(
+void WindowProxyManager::setGlobals(
const HashMap<DOMWrapperWorld*, v8::Local<v8::Object>>& map) {
for (auto& entry : map)
windowProxy(*entry.key)->setGlobal(entry.value);
}
-WindowProxyManagerBase::WindowProxyManagerBase(Frame& frame)
+WindowProxyManager::WindowProxyManager(Frame& frame)
: m_isolate(v8::Isolate::GetCurrent()),
m_frame(&frame),
m_windowProxy(createWindowProxyForFrame(m_isolate,
frame,
&DOMWrapperWorld::mainWorld())) {}
+WindowProxy* WindowProxyManager::windowProxyMaybeUninitialized(
+ DOMWrapperWorld& world) {
+ WindowProxy* windowProxy = nullptr;
+ if (world.isMainWorld()) {
+ windowProxy = m_windowProxy.get();
+ } else {
+ IsolatedWorldMap::iterator iter = m_isolatedWorlds.find(world.worldId());
+ if (iter != m_isolatedWorlds.end()) {
+ windowProxy = iter->value.get();
+ } else {
+ windowProxy = createWindowProxyForFrame(m_isolate, *m_frame, &world);
+ m_isolatedWorlds.set(world.worldId(), windowProxy);
+ }
+ }
+ return windowProxy;
+}
+
void LocalWindowProxyManager::updateSecurityOrigin(
SecurityOrigin* securityOrigin) {
- static_cast<LocalWindowProxy*>(mainWorldProxy())
- ->updateSecurityOrigin(securityOrigin);
+ if (isMainWorldProxyInitialized())
+ mainWorldProxy()->updateSecurityOrigin(securityOrigin);
dcheng 2017/02/23 19:02:36 Hmm... updateSecurityOrigin() also checks this, so
Yuki 2017/03/09 14:58:53 Done.
for (auto& entry : isolatedWorlds()) {
auto* isolatedWindowProxy =
static_cast<LocalWindowProxy*>(entry.value.get());

Powered by Google App Engine
This is Rietveld 408576698