| 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..1a627346ec7aa5bcee5a8b22f90062e55b4c509e 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,22 +48,39 @@ 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())
|
| + static_cast<LocalWindowProxy*>(mainWorldProxyMaybeUninitialized())
|
| ->updateSecurityOrigin(securityOrigin);
|
| for (auto& entry : isolatedWorlds()) {
|
| auto* isolatedWindowProxy =
|
|
|