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

Side by Side Diff: Source/core/frame/LocalFrame.cpp

Issue 678673002: Oilpan: clear FrameLoader during LocalFrame detach. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 if (!client()) 262 if (!client())
263 return; 263 return;
264 m_loader.detach(); 264 m_loader.detach();
265 setView(nullptr); 265 setView(nullptr);
266 willDetachFrameHost(); 266 willDetachFrameHost();
267 // Notify ScriptController that the frame is closing, since its cleanup ends up calling 267 // Notify ScriptController that the frame is closing, since its cleanup ends up calling
268 // back to FrameLoaderClient via WindowProxy. 268 // back to FrameLoaderClient via WindowProxy.
269 script().clearForClose(); 269 script().clearForClose();
270 InspectorInstrumentation::frameDetachedFromParent(this); 270 InspectorInstrumentation::frameDetachedFromParent(this);
271 Frame::detach(); 271 Frame::detach();
272 #if ENABLE(OILPAN)
273 // Clear the FrameLoader right here rather than during
274 // finalization. Too late to access various heap objects at that
275 // stage.
276 loader().clear();
277 #endif
272 } 278 }
273 279
274 void LocalFrame::disconnectOwnerElement() 280 void LocalFrame::disconnectOwnerElement()
275 { 281 {
276 if (owner()) { 282 if (owner()) {
277 if (Document* document = this->document()) 283 if (Document* document = this->document())
278 document->topDocument().clearAXObjectCache(); 284 document->topDocument().clearAXObjectCache();
279 #if ENABLE(OILPAN) 285 #if ENABLE(OILPAN)
280 // First give the plugin elements holding persisted, 286 // First give the plugin elements holding persisted,
281 // renderer-less plugins the opportunity to dispose of them. 287 // renderer-less plugins the opportunity to dispose of them.
282 for (const auto& pluginElement : m_pluginElements) 288 for (const auto& pluginElement : m_pluginElements)
283 pluginElement->disconnectContentFrame(); 289 pluginElement->disconnectContentFrame();
284 m_pluginElements.clear(); 290 m_pluginElements.clear();
285
286 // Clear the FrameView and FrameLoader right here rather than
287 // during finalization. Too late to access various heap objects
288 // at that stage.
289 setView(nullptr);
dcheng 2014/10/24 20:03:51 One quick question--is this getting handled elsewh
sof 2014/10/24 20:05:41 Yes, 5 lines up in LocalFrame::detach().
290 loader().clear();
291 #endif 291 #endif
292 } 292 }
293 Frame::disconnectOwnerElement(); 293 Frame::disconnectOwnerElement();
294 } 294 }
295 295
296 void LocalFrame::addDestructionObserver(FrameDestructionObserver* observer) 296 void LocalFrame::addDestructionObserver(FrameDestructionObserver* observer)
297 { 297 {
298 m_destructionObservers.add(observer); 298 m_destructionObservers.add(observer);
299 } 299 }
300 300
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 // We detach the FrameView's custom scroll bars as early as 784 // We detach the FrameView's custom scroll bars as early as
785 // possible to prevent m_doc->detach() from messing with the view 785 // possible to prevent m_doc->detach() from messing with the view
786 // such that its scroll bars won't be torn down. 786 // such that its scroll bars won't be torn down.
787 // 787 //
788 // FIXME: We should revisit this. 788 // FIXME: We should revisit this.
789 if (m_view) 789 if (m_view)
790 m_view->prepareForDetach(); 790 m_view->prepareForDetach();
791 } 791 }
792 792
793 } // namespace blink 793 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698