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

Side by Side Diff: third_party/WebKit/Source/core/frame/Frame.cpp

Issue 1421113006: Detach the globals of all frames, not just the main frame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl try Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Simon Hausmann <hausmann@kde.org> 5 * 2000 Simon Hausmann <hausmann@kde.org>
6 * 2000 Stefan Schimanski <1Stein@gmx.de> 6 * 2000 Stefan Schimanski <1Stein@gmx.de>
7 * 2001 George Staikos <staikos@kde.org> 7 * 2001 George Staikos <staikos@kde.org>
8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com>
10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
(...skipping 12 matching lines...) Expand all
23 * 23 *
24 * You should have received a copy of the GNU Library General Public License 24 * You should have received a copy of the GNU Library General Public License
25 * along with this library; see the file COPYING.LIB. If not, write to 25 * along with this library; see the file COPYING.LIB. If not, write to
26 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 26 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
27 * Boston, MA 02110-1301, USA. 27 * Boston, MA 02110-1301, USA.
28 */ 28 */
29 29
30 #include "config.h" 30 #include "config.h"
31 #include "core/frame/Frame.h" 31 #include "core/frame/Frame.h"
32 32
33 #include "bindings/core/v8/WindowProxyManager.h"
33 #include "core/dom/DocumentType.h" 34 #include "core/dom/DocumentType.h"
34 #include "core/events/Event.h" 35 #include "core/events/Event.h"
35 #include "core/frame/LocalDOMWindow.h" 36 #include "core/frame/LocalDOMWindow.h"
36 #include "core/frame/FrameHost.h" 37 #include "core/frame/FrameHost.h"
37 #include "core/frame/Settings.h" 38 #include "core/frame/Settings.h"
38 #include "core/html/HTMLFrameElementBase.h" 39 #include "core/html/HTMLFrameElementBase.h"
39 #include "core/input/EventHandler.h" 40 #include "core/input/EventHandler.h"
40 #include "core/inspector/InspectorInstrumentation.h" 41 #include "core/inspector/InspectorInstrumentation.h"
41 #include "core/inspector/InstanceCounters.h" 42 #include "core/inspector/InstanceCounters.h"
42 #include "core/layout/LayoutPart.h" 43 #include "core/layout/LayoutPart.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 DEFINE_TRACE(Frame) 84 DEFINE_TRACE(Frame)
84 { 85 {
85 visitor->trace(m_treeNode); 86 visitor->trace(m_treeNode);
86 visitor->trace(m_host); 87 visitor->trace(m_host);
87 visitor->trace(m_owner); 88 visitor->trace(m_owner);
88 } 89 }
89 90
90 void Frame::detach(FrameDetachType type) 91 void Frame::detach(FrameDetachType type)
91 { 92 {
92 ASSERT(m_client); 93 ASSERT(m_client);
94 windowProxyManager()->clearWindowProxy();
dcheng 2015/10/30 15:49:46 Is there a reason to call this again here, btw? Bo
93 m_client->setOpener(0); 95 m_client->setOpener(0);
94 domWindow()->resetLocation(); 96 domWindow()->resetLocation();
95 disconnectOwnerElement(); 97 disconnectOwnerElement();
96 // After this, we must no longer talk to the client since this clears 98 // After this, we must no longer talk to the client since this clears
97 // its owning reference back to our owning LocalFrame. 99 // its owning reference back to our owning LocalFrame.
98 m_client->detached(type); 100 m_client->detached(type);
99 m_client = nullptr; 101 m_client = nullptr;
100 m_host = nullptr; 102 m_host = nullptr;
101 } 103 }
102 104
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 314
313 if (m_owner) { 315 if (m_owner) {
314 if (m_owner->isLocal()) 316 if (m_owner->isLocal())
315 toHTMLFrameOwnerElement(m_owner)->setContentFrame(*this); 317 toHTMLFrameOwnerElement(m_owner)->setContentFrame(*this);
316 } else { 318 } else {
317 page()->setMainFrame(this); 319 page()->setMainFrame(this);
318 } 320 }
319 } 321 }
320 322
321 } // namespace blink 323 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp ('k') | third_party/WebKit/Source/core/frame/LocalFrame.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698