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

Side by Side Diff: Source/core/loader/FrameLoader.cpp

Issue 1194003004: Oilpan: enable appcache + move DocumentLoader to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: add outer loader protection Created 5 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com>
6 * Copyright (C) Research In Motion Limited 2009. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2009. All rights reserved.
7 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> 7 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com>
8 * Copyright (C) 2011 Google Inc. All rights reserved. 8 * Copyright (C) 2011 Google Inc. All rights reserved.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 FrameLoader::~FrameLoader() 172 FrameLoader::~FrameLoader()
173 { 173 {
174 // Verify that this FrameLoader has been detached. 174 // Verify that this FrameLoader has been detached.
175 ASSERT(!m_progressTracker); 175 ASSERT(!m_progressTracker);
176 } 176 }
177 177
178 DEFINE_TRACE(FrameLoader) 178 DEFINE_TRACE(FrameLoader)
179 { 179 {
180 visitor->trace(m_frame); 180 visitor->trace(m_frame);
181 visitor->trace(m_progressTracker); 181 visitor->trace(m_progressTracker);
182 visitor->trace(m_documentLoader);
183 visitor->trace(m_provisionalDocumentLoader);
184 visitor->trace(m_policyDocumentLoader);
182 visitor->trace(m_currentItem); 185 visitor->trace(m_currentItem);
183 visitor->trace(m_provisionalItem); 186 visitor->trace(m_provisionalItem);
184 visitor->trace(m_deferredHistoryLoad); 187 visitor->trace(m_deferredHistoryLoad);
185 } 188 }
186 189
187 void FrameLoader::init() 190 void FrameLoader::init()
188 { 191 {
189 ResourceRequest initialRequest(KURL(ParsedURLString, emptyString())); 192 ResourceRequest initialRequest(KURL(ParsedURLString, emptyString()));
190 initialRequest.setRequestContext(WebURLRequest::RequestContextInternal); 193 initialRequest.setRequestContext(WebURLRequest::RequestContextInternal);
191 initialRequest.setFrameType(m_frame->isMainFrame() ? WebURLRequest::FrameTyp eTopLevel : WebURLRequest::FrameTypeNested); 194 initialRequest.setFrameType(m_frame->isMainFrame() ? WebURLRequest::FrameTyp eTopLevel : WebURLRequest::FrameTypeNested);
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 // This is only called by ScriptController::executeScriptIfJavaScriptURL 311 // This is only called by ScriptController::executeScriptIfJavaScriptURL
309 // and always contains the result of evaluating a javascript: url. 312 // and always contains the result of evaluating a javascript: url.
310 // This is the <iframe src="javascript:'html'"> case. 313 // This is the <iframe src="javascript:'html'"> case.
311 void FrameLoader::replaceDocumentWhileExecutingJavaScriptURL(const String& sourc e, Document* ownerDocument) 314 void FrameLoader::replaceDocumentWhileExecutingJavaScriptURL(const String& sourc e, Document* ownerDocument)
312 { 315 {
313 if (!m_frame->document()->loader()) 316 if (!m_frame->document()->loader())
314 return; 317 return;
315 318
316 // DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL can cause the DocumentLoader to get deref'ed and possible destroyed, 319 // DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL can cause the DocumentLoader to get deref'ed and possible destroyed,
317 // so protect it with a RefPtr. 320 // so protect it with a RefPtr.
318 RefPtr<DocumentLoader> documentLoader(m_frame->document()->loader()); 321 RefPtrWillBeRawPtr<DocumentLoader> documentLoader(m_frame->document()->loade r());
319 322
320 UseCounter::count(*m_frame->document(), UseCounter::ReplaceDocumentViaJavaSc riptURL); 323 UseCounter::count(*m_frame->document(), UseCounter::ReplaceDocumentViaJavaSc riptURL);
321 324
322 // Prepare a DocumentInit before clearing the frame, because it may need to 325 // Prepare a DocumentInit before clearing the frame, because it may need to
323 // inherit an aliased security context. 326 // inherit an aliased security context.
324 DocumentInit init(m_frame->document()->url(), m_frame); 327 DocumentInit init(m_frame->document()->url(), m_frame);
325 init.withNewRegistrationContext(); 328 init.withNewRegistrationContext();
326 329
327 stopAllLoaders(); 330 stopAllLoaders();
328 m_frame->detachChildren(); 331 m_frame->detachChildren();
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 { 1005 {
1003 if (m_didAccessInitialDocumentTimer.isActive()) { 1006 if (m_didAccessInitialDocumentTimer.isActive()) {
1004 m_didAccessInitialDocumentTimer.stop(); 1007 m_didAccessInitialDocumentTimer.stop();
1005 didAccessInitialDocumentTimerFired(0); 1008 didAccessInitialDocumentTimerFired(0);
1006 } 1009 }
1007 } 1010 }
1008 1011
1009 bool FrameLoader::prepareForCommit() 1012 bool FrameLoader::prepareForCommit()
1010 { 1013 {
1011 PluginScriptForbiddenScope forbidPluginDestructorScripting; 1014 PluginScriptForbiddenScope forbidPluginDestructorScripting;
1012 RefPtr<DocumentLoader> pdl = m_provisionalDocumentLoader; 1015 RefPtrWillBeRawPtr<DocumentLoader> pdl = m_provisionalDocumentLoader;
1013 1016
1014 if (m_documentLoader) { 1017 if (m_documentLoader) {
1015 client()->dispatchWillClose(); 1018 client()->dispatchWillClose();
1016 dispatchUnloadEvent(); 1019 dispatchUnloadEvent();
1017 } 1020 }
1018 m_frame->detachChildren(); 1021 m_frame->detachChildren();
1019 // The previous calls to dispatchUnloadEvent() and detachChildren() can 1022 // The previous calls to dispatchUnloadEvent() and detachChildren() can
1020 // execute arbitrary script via things like unload events. If the executed 1023 // execute arbitrary script via things like unload events. If the executed
1021 // script intiates a new load or causes the current frame to be detached, 1024 // script intiates a new load or causes the current frame to be detached,
1022 // we need to abandon the current load. 1025 // we need to abandon the current load.
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 // FIXME: We need a way to propagate insecure requests policy flags to 1485 // FIXME: We need a way to propagate insecure requests policy flags to
1483 // out-of-process frames. For now, we'll always use default behavior. 1486 // out-of-process frames. For now, we'll always use default behavior.
1484 if (!parentFrame->isLocalFrame()) 1487 if (!parentFrame->isLocalFrame())
1485 return nullptr; 1488 return nullptr;
1486 1489
1487 ASSERT(toLocalFrame(parentFrame)->document()); 1490 ASSERT(toLocalFrame(parentFrame)->document());
1488 return toLocalFrame(parentFrame)->document()->insecureNavigationsToUpgrade() ; 1491 return toLocalFrame(parentFrame)->document()->insecureNavigationsToUpgrade() ;
1489 } 1492 }
1490 1493
1491 } // namespace blink 1494 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698