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

Unified Diff: Source/core/loader/FrameLoader.cpp

Issue 1200043002: Revert of Oilpan: enable appcache + move DocumentLoader to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/loader/FrameLoader.h ('k') | Source/core/loader/FrameLoaderClient.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/loader/FrameLoader.cpp
diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp
index 6dac27da809150d82b073765dd61bfaf258ded19..81dccfc934bbef72ffa70c5ee442d43c4bb35a20 100644
--- a/Source/core/loader/FrameLoader.cpp
+++ b/Source/core/loader/FrameLoader.cpp
@@ -179,9 +179,6 @@
{
visitor->trace(m_frame);
visitor->trace(m_progressTracker);
- visitor->trace(m_documentLoader);
- visitor->trace(m_provisionalDocumentLoader);
- visitor->trace(m_policyDocumentLoader);
visitor->trace(m_currentItem);
visitor->trace(m_provisionalItem);
visitor->trace(m_deferredHistoryLoad);
@@ -318,7 +315,7 @@
// DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL can cause the DocumentLoader to get deref'ed and possible destroyed,
// so protect it with a RefPtr.
- RefPtrWillBeRawPtr<DocumentLoader> documentLoader(m_frame->document()->loader());
+ RefPtr<DocumentLoader> documentLoader(m_frame->document()->loader());
UseCounter::count(*m_frame->document(), UseCounter::ReplaceDocumentViaJavaScriptURL);
@@ -647,15 +644,6 @@
client()->didStopLoading();
}
-void FrameLoader::detachDocumentLoader(RefPtrWillBeMember<DocumentLoader>& loader)
-{
- if (!loader)
- return;
-
- loader->detachFromFrame();
- loader = nullptr;
-}
-
void FrameLoader::loadInSameDocument(const KURL& url, PassRefPtr<SerializedScriptValue> stateObject, FrameLoadType type, ClientRedirectPolicy clientRedirect)
{
// If we have a state object, we cannot also be a new navigation.
@@ -664,7 +652,9 @@
// If we have a provisional request for a different document, a fragment scroll should cancel it.
if (m_provisionalDocumentLoader) {
m_provisionalDocumentLoader->stopLoading();
- detachDocumentLoader(m_provisionalDocumentLoader);
+ if (m_provisionalDocumentLoader)
+ m_provisionalDocumentLoader->detachFromFrame();
+ m_provisionalDocumentLoader = nullptr;
if (!m_frame->host())
return;
}
@@ -977,8 +967,9 @@
if (m_documentLoader)
m_documentLoader->stopLoading();
- detachDocumentLoader(m_provisionalDocumentLoader);
- detachDocumentLoader(m_policyDocumentLoader);
+ if (m_provisionalDocumentLoader)
+ m_provisionalDocumentLoader->detachFromFrame();
+ m_provisionalDocumentLoader = nullptr;
m_checkTimer.stop();
m_frame->navigationScheduler().cancel();
@@ -1018,7 +1009,7 @@
bool FrameLoader::prepareForCommit()
{
PluginScriptForbiddenScope forbidPluginDestructorScripting;
- RefPtrWillBeRawPtr<DocumentLoader> pdl = m_provisionalDocumentLoader;
+ RefPtr<DocumentLoader> pdl = m_provisionalDocumentLoader;
if (m_documentLoader) {
client()->dispatchWillClose();
@@ -1033,7 +1024,7 @@
return false;
if (m_documentLoader) {
FrameNavigationDisabler navigationDisabler(m_frame);
- detachDocumentLoader(m_documentLoader);
+ m_documentLoader->detachFromFrame();
}
// detachFromFrame() will abort XHRs that haven't completed, which can
// trigger event listeners for 'abort'. These event listeners might detach
@@ -1152,9 +1143,9 @@
// The caller must protect a reference to m_frame.
ASSERT(m_frame->refCount() > 1);
#endif
- detachDocumentLoader(m_documentLoader);
- detachDocumentLoader(m_provisionalDocumentLoader);
- detachDocumentLoader(m_policyDocumentLoader);
+ if (m_documentLoader)
+ m_documentLoader->detachFromFrame();
+ m_documentLoader = nullptr;
Frame* parent = m_frame->tree().parent();
if (parent && parent->isLocalFrame())
@@ -1186,7 +1177,8 @@
client()->dispatchDidFailProvisionalLoad(error, historyCommitType);
if (loader != m_provisionalDocumentLoader)
return;
- detachDocumentLoader(m_provisionalDocumentLoader);
+ m_provisionalDocumentLoader->detachFromFrame();
+ m_provisionalDocumentLoader = nullptr;
m_progressTracker->progressCompleted();
} else {
ASSERT(loader == m_documentLoader);
@@ -1291,7 +1283,8 @@
// stopAllLoaders can detach the LocalFrame, so protect it.
RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
if ((!m_policyDocumentLoader->shouldContinueForNavigationPolicy(request, frameLoadRequest.shouldCheckMainWorldContentSecurityPolicy(), navigationPolicy) || !shouldClose()) && m_policyDocumentLoader) {
- detachDocumentLoader(m_policyDocumentLoader);
+ m_policyDocumentLoader->detachFromFrame();
+ m_policyDocumentLoader = nullptr;
return;
}
@@ -1305,7 +1298,9 @@
if (m_provisionalDocumentLoader) {
m_provisionalDocumentLoader->stopLoading();
- detachDocumentLoader(m_provisionalDocumentLoader);
+ if (m_provisionalDocumentLoader)
+ m_provisionalDocumentLoader->detachFromFrame();
+ m_provisionalDocumentLoader = nullptr;
}
m_checkTimer.stop();
« no previous file with comments | « Source/core/loader/FrameLoader.h ('k') | Source/core/loader/FrameLoaderClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698