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

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

Issue 1853743005: Oilpan: Remove WillBe types (part 13) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 visitor->trace(m_documentLoader); 187 visitor->trace(m_documentLoader);
188 visitor->trace(m_provisionalDocumentLoader); 188 visitor->trace(m_provisionalDocumentLoader);
189 visitor->trace(m_currentItem); 189 visitor->trace(m_currentItem);
190 visitor->trace(m_provisionalItem); 190 visitor->trace(m_provisionalItem);
191 visitor->trace(m_deferredHistoryLoad); 191 visitor->trace(m_deferredHistoryLoad);
192 } 192 }
193 193
194 void FrameLoader::init() 194 void FrameLoader::init()
195 { 195 {
196 // init() may dispatch JS events, so protect a reference to m_frame. 196 // init() may dispatch JS events, so protect a reference to m_frame.
197 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 197 RawPtr<LocalFrame> protect(m_frame.get());
198 ResourceRequest initialRequest(KURL(ParsedURLString, emptyString())); 198 ResourceRequest initialRequest(KURL(ParsedURLString, emptyString()));
199 initialRequest.setRequestContext(WebURLRequest::RequestContextInternal); 199 initialRequest.setRequestContext(WebURLRequest::RequestContextInternal);
200 initialRequest.setFrameType(m_frame->isMainFrame() ? WebURLRequest::FrameTyp eTopLevel : WebURLRequest::FrameTypeNested); 200 initialRequest.setFrameType(m_frame->isMainFrame() ? WebURLRequest::FrameTyp eTopLevel : WebURLRequest::FrameTypeNested);
201 m_provisionalDocumentLoader = client()->createDocumentLoader(m_frame, initia lRequest, SubstituteData()); 201 m_provisionalDocumentLoader = client()->createDocumentLoader(m_frame, initia lRequest, SubstituteData());
202 m_provisionalDocumentLoader->startLoadingMainResource(); 202 m_provisionalDocumentLoader->startLoadingMainResource();
203 m_frame->document()->cancelParsing(); 203 m_frame->document()->cancelParsing();
204 m_stateMachine.advanceTo(FrameLoaderStateMachine::DisplayingInitialEmptyDocu ment); 204 m_stateMachine.advanceTo(FrameLoaderStateMachine::DisplayingInitialEmptyDocu ment);
205 } 205 }
206 206
207 FrameLoaderClient* FrameLoader::client() const 207 FrameLoaderClient* FrameLoader::client() const
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 // This is only called by ScriptController::executeScriptIfJavaScriptURL 317 // This is only called by ScriptController::executeScriptIfJavaScriptURL
318 // and always contains the result of evaluating a javascript: url. 318 // and always contains the result of evaluating a javascript: url.
319 // This is the <iframe src="javascript:'html'"> case. 319 // This is the <iframe src="javascript:'html'"> case.
320 void FrameLoader::replaceDocumentWhileExecutingJavaScriptURL(const String& sourc e, Document* ownerDocument) 320 void FrameLoader::replaceDocumentWhileExecutingJavaScriptURL(const String& sourc e, Document* ownerDocument)
321 { 321 {
322 if (!m_frame->document()->loader() || m_frame->document()->pageDismissalEven tBeingDispatched() != Document::NoDismissal) 322 if (!m_frame->document()->loader() || m_frame->document()->pageDismissalEven tBeingDispatched() != Document::NoDismissal)
323 return; 323 return;
324 324
325 // DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL can cause the DocumentLoader to get deref'ed and possible destroyed, 325 // DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL can cause the DocumentLoader to get deref'ed and possible destroyed,
326 // so protect it with a RefPtr. 326 // so protect it with a RefPtr.
327 RefPtrWillBeRawPtr<DocumentLoader> documentLoader(m_frame->document()->loade r()); 327 RawPtr<DocumentLoader> documentLoader(m_frame->document()->loader());
328 328
329 UseCounter::count(*m_frame->document(), UseCounter::ReplaceDocumentViaJavaSc riptURL); 329 UseCounter::count(*m_frame->document(), UseCounter::ReplaceDocumentViaJavaSc riptURL);
330 330
331 // Prepare a DocumentInit before clearing the frame, because it may need to 331 // Prepare a DocumentInit before clearing the frame, because it may need to
332 // inherit an aliased security context. 332 // inherit an aliased security context.
333 DocumentInit init(ownerDocument, m_frame->document()->url(), m_frame); 333 DocumentInit init(ownerDocument, m_frame->document()->url(), m_frame);
334 init.withNewRegistrationContext(); 334 init.withNewRegistrationContext();
335 335
336 stopAllLoaders(); 336 stopAllLoaders();
337 // Don't allow any new child frames to load in this frame: attaching a new 337 // Don't allow any new child frames to load in this frame: attaching a new
(...skipping 16 matching lines...) Expand all
354 void FrameLoader::receivedMainResourceRedirect(const KURL& newURL) 354 void FrameLoader::receivedMainResourceRedirect(const KURL& newURL)
355 { 355 {
356 client()->dispatchDidReceiveServerRedirectForProvisionalLoad(); 356 client()->dispatchDidReceiveServerRedirectForProvisionalLoad();
357 // If a back/forward navigation redirects cross-origin, don't reuse any stat e from the HistoryItem. 357 // If a back/forward navigation redirects cross-origin, don't reuse any stat e from the HistoryItem.
358 if (m_provisionalItem && !SecurityOrigin::create(m_provisionalItem->url())-> isSameSchemeHostPort(SecurityOrigin::create(newURL).get())) 358 if (m_provisionalItem && !SecurityOrigin::create(m_provisionalItem->url())-> isSameSchemeHostPort(SecurityOrigin::create(newURL).get()))
359 m_provisionalItem.clear(); 359 m_provisionalItem.clear();
360 } 360 }
361 361
362 void FrameLoader::setHistoryItemStateForCommit(HistoryCommitType historyCommitTy pe, HistoryNavigationType navigationType) 362 void FrameLoader::setHistoryItemStateForCommit(HistoryCommitType historyCommitTy pe, HistoryNavigationType navigationType)
363 { 363 {
364 RefPtrWillBeRawPtr<HistoryItem> oldItem = m_currentItem; 364 RawPtr<HistoryItem> oldItem = m_currentItem;
365 if (historyCommitType == BackForwardCommit && m_provisionalItem) 365 if (historyCommitType == BackForwardCommit && m_provisionalItem)
366 m_currentItem = m_provisionalItem.release(); 366 m_currentItem = m_provisionalItem.release();
367 else 367 else
368 m_currentItem = HistoryItem::create(); 368 m_currentItem = HistoryItem::create();
369 m_currentItem->setURL(m_documentLoader->urlForHistory()); 369 m_currentItem->setURL(m_documentLoader->urlForHistory());
370 m_currentItem->setDocumentState(m_frame->document()->formElementsState()); 370 m_currentItem->setDocumentState(m_frame->document()->formElementsState());
371 m_currentItem->setTarget(m_frame->tree().uniqueName()); 371 m_currentItem->setTarget(m_frame->tree().uniqueName());
372 m_currentItem->setReferrer(SecurityPolicy::generateReferrer(m_documentLoader ->request().getReferrerPolicy(), m_currentItem->url(), m_documentLoader->request ().httpReferrer())); 372 m_currentItem->setReferrer(SecurityPolicy::generateReferrer(m_documentLoader ->request().getReferrerPolicy(), m_currentItem->url(), m_documentLoader->request ().httpReferrer()));
373 m_currentItem->setFormInfoFromRequest(m_documentLoader->request()); 373 m_currentItem->setFormInfoFromRequest(m_documentLoader->request());
374 374
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 } 491 }
492 492
493 void FrameLoader::finishedParsing() 493 void FrameLoader::finishedParsing()
494 { 494 {
495 if (m_stateMachine.creatingInitialEmptyDocument()) 495 if (m_stateMachine.creatingInitialEmptyDocument())
496 return; 496 return;
497 497
498 // This can be called from the LocalFrame's destructor, in which case we sho uldn't protect ourselves 498 // This can be called from the LocalFrame's destructor, in which case we sho uldn't protect ourselves
499 // because doing so will cause us to re-enter the destructor when protector goes out of scope. 499 // because doing so will cause us to re-enter the destructor when protector goes out of scope.
500 // Null-checking the FrameView indicates whether or not we're in the destruc tor. 500 // Null-checking the FrameView indicates whether or not we're in the destruc tor.
501 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame->view() ? m_frame.get() : nul lptr); 501 RawPtr<LocalFrame> protect(m_frame->view() ? m_frame.get() : nullptr);
502 502
503 m_progressTracker->finishedParsing(); 503 m_progressTracker->finishedParsing();
504 504
505 if (client()) { 505 if (client()) {
506 ScriptForbiddenScope forbidScripts; 506 ScriptForbiddenScope forbidScripts;
507 client()->dispatchDidFinishDocumentLoad(); 507 client()->dispatchDidFinishDocumentLoad();
508 } 508 }
509 509
510 if (client()) 510 if (client())
511 client()->runScriptsAtDocumentReady(m_documentLoader ? m_documentLoader- >isCommittedButEmpty() : true); 511 client()->runScriptsAtDocumentReady(m_documentLoader ? m_documentLoader- >isCommittedButEmpty() : true);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 // FIXME: We might have already sent stop notifications and be re-completing . 579 // FIXME: We might have already sent stop notifications and be re-completing .
580 if (!frame->isLoading()) 580 if (!frame->isLoading())
581 return false; 581 return false;
582 // Only send didStopLoading() if there are no navigations in progress at all , 582 // Only send didStopLoading() if there are no navigations in progress at all ,
583 // whether committed, provisional, or pending. 583 // whether committed, provisional, or pending.
584 return frame->loader().documentLoader()->sentDidFinishLoad() && !frame->load er().provisionalDocumentLoader() && !frame->loader().client()->hasPendingNavigat ion(); 584 return frame->loader().documentLoader()->sentDidFinishLoad() && !frame->load er().provisionalDocumentLoader() && !frame->loader().client()->hasPendingNavigat ion();
585 } 585 }
586 586
587 void FrameLoader::checkCompleted() 587 void FrameLoader::checkCompleted()
588 { 588 {
589 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 589 RawPtr<LocalFrame> protect(m_frame.get());
590 if (!shouldComplete(m_frame->document())) 590 if (!shouldComplete(m_frame->document()))
591 return; 591 return;
592 592
593 // OK, completed. 593 // OK, completed.
594 m_frame->document()->setReadyState(Document::Complete); 594 m_frame->document()->setReadyState(Document::Complete);
595 if (m_frame->document()->loadEventStillNeeded()) 595 if (m_frame->document()->loadEventStillNeeded())
596 m_frame->document()->implicitClose(); 596 m_frame->document()->implicitClose();
597 597
598 m_frame->navigationScheduler().startTimer(); 598 m_frame->navigationScheduler().startTimer();
599 599
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 if (sameDocumentNavigationSource == SameDocumentNavigationHistoryApi) { 692 if (sameDocumentNavigationSource == SameDocumentNavigationHistoryApi) {
693 m_currentItem->setStateObject(data); 693 m_currentItem->setStateObject(data);
694 m_currentItem->setScrollRestorationType(scrollRestorationType); 694 m_currentItem->setScrollRestorationType(scrollRestorationType);
695 } 695 }
696 client()->dispatchDidNavigateWithinPage(m_currentItem.get(), historyCommitTy pe); 696 client()->dispatchDidNavigateWithinPage(m_currentItem.get(), historyCommitTy pe);
697 client()->dispatchDidReceiveTitle(m_frame->document()->title()); 697 client()->dispatchDidReceiveTitle(m_frame->document()->title());
698 if (m_frame->document()->loadEventFinished()) 698 if (m_frame->document()->loadEventFinished())
699 client()->didStopLoading(); 699 client()->didStopLoading();
700 } 700 }
701 701
702 void FrameLoader::detachDocumentLoader(RefPtrWillBeMember<DocumentLoader>& loade r) 702 void FrameLoader::detachDocumentLoader(Member<DocumentLoader>& loader)
703 { 703 {
704 if (!loader) 704 if (!loader)
705 return; 705 return;
706 706
707 loader->detachFromFrame(); 707 loader->detachFromFrame();
708 loader = nullptr; 708 loader = nullptr;
709 } 709 }
710 710
711 void FrameLoader::loadInSameDocument(const KURL& url, PassRefPtr<SerializedScrip tValue> stateObject, FrameLoadType frameLoadType, HistoryLoadType historyLoadTyp e, ClientRedirectPolicy clientRedirect) 711 void FrameLoader::loadInSameDocument(const KURL& url, PassRefPtr<SerializedScrip tValue> stateObject, FrameLoadType frameLoadType, HistoryLoadType historyLoadTyp e, ClientRedirectPolicy clientRedirect)
712 { 712 {
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 navigationPolicyFromMouseEvent(0, gestureEvent->ctrlKey(), gestureEvent- >shiftKey(), gestureEvent->altKey(), gestureEvent->metaKey(), &policy); 885 navigationPolicyFromMouseEvent(0, gestureEvent->ctrlKey(), gestureEvent- >shiftKey(), gestureEvent->altKey(), gestureEvent->metaKey(), &policy);
886 } 886 }
887 return policy; 887 return policy;
888 } 888 }
889 889
890 void FrameLoader::load(const FrameLoadRequest& passedRequest, FrameLoadType fram eLoadType, 890 void FrameLoader::load(const FrameLoadRequest& passedRequest, FrameLoadType fram eLoadType,
891 HistoryItem* historyItem, HistoryLoadType historyLoadType) 891 HistoryItem* historyItem, HistoryLoadType historyLoadType)
892 { 892 {
893 ASSERT(m_frame->document()); 893 ASSERT(m_frame->document());
894 894
895 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 895 RawPtr<LocalFrame> protect(m_frame.get());
896 896
897 if (m_inStopAllLoaders) 897 if (m_inStopAllLoaders)
898 return; 898 return;
899 899
900 if (m_frame->page()->defersLoading() && isBackForwardLoadType(frameLoadType) ) { 900 if (m_frame->page()->defersLoading() && isBackForwardLoadType(frameLoadType) ) {
901 m_deferredHistoryLoad = DeferredHistoryLoad::create(passedRequest.resour ceRequest(), historyItem, frameLoadType, historyLoadType); 901 m_deferredHistoryLoad = DeferredHistoryLoad::create(passedRequest.resour ceRequest(), historyItem, frameLoadType, historyLoadType);
902 return; 902 return;
903 } 903 }
904 904
905 FrameLoadRequest request(passedRequest); 905 FrameLoadRequest request(passedRequest);
906 request.resourceRequest().setHasUserGesture(UserGestureIndicator::processing UserGesture()); 906 request.resourceRequest().setHasUserGesture(UserGestureIndicator::processing UserGesture());
907 907
908 if (!prepareRequestForThisFrame(request)) 908 if (!prepareRequestForThisFrame(request))
909 return; 909 return;
910 910
911 RefPtrWillBeRawPtr<Frame> targetFrame = request.form() ? nullptr : m_frame-> findFrameForNavigation(AtomicString(request.frameName()), *m_frame); 911 RawPtr<Frame> targetFrame = request.form() ? nullptr : m_frame->findFrameFor Navigation(AtomicString(request.frameName()), *m_frame);
912 912
913 if (isBackForwardLoadType(frameLoadType)) { 913 if (isBackForwardLoadType(frameLoadType)) {
914 ASSERT(historyItem); 914 ASSERT(historyItem);
915 m_provisionalItem = historyItem; 915 m_provisionalItem = historyItem;
916 } 916 }
917 917
918 if (targetFrame && targetFrame.get() != m_frame) { 918 if (targetFrame && targetFrame.get() != m_frame) {
919 bool wasInSamePage = targetFrame->page() == m_frame->page(); 919 bool wasInSamePage = targetFrame->page() == m_frame->page();
920 920
921 request.setFrameName("_self"); 921 request.setFrameName("_self");
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 void FrameLoader::stopAllLoaders() 990 void FrameLoader::stopAllLoaders()
991 { 991 {
992 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No Dismissal) 992 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No Dismissal)
993 return; 993 return;
994 994
995 // If this method is called from within this method, infinite recursion can occur (3442218). Avoid this. 995 // If this method is called from within this method, infinite recursion can occur (3442218). Avoid this.
996 if (m_inStopAllLoaders) 996 if (m_inStopAllLoaders)
997 return; 997 return;
998 998
999 // Stopping a document loader can blow away the frame from underneath. 999 // Stopping a document loader can blow away the frame from underneath.
1000 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 1000 RawPtr<LocalFrame> protect(m_frame.get());
1001 1001
1002 m_inStopAllLoaders = true; 1002 m_inStopAllLoaders = true;
1003 1003
1004 for (RefPtrWillBeRawPtr<Frame> child = m_frame->tree().firstChild(); child; child = child->tree().nextSibling()) { 1004 for (RawPtr<Frame> child = m_frame->tree().firstChild(); child; child = chil d->tree().nextSibling()) {
1005 if (child->isLocalFrame()) 1005 if (child->isLocalFrame())
1006 toLocalFrame(child.get())->loader().stopAllLoaders(); 1006 toLocalFrame(child.get())->loader().stopAllLoaders();
1007 } 1007 }
1008 1008
1009 m_frame->document()->suppressLoadEvent(); 1009 m_frame->document()->suppressLoadEvent();
1010 if (m_documentLoader) 1010 if (m_documentLoader)
1011 m_documentLoader->fetcher()->stopFetching(); 1011 m_documentLoader->fetcher()->stopFetching();
1012 m_frame->document()->cancelParsing(); 1012 m_frame->document()->cancelParsing();
1013 if (!m_protectProvisionalLoader) 1013 if (!m_protectProvisionalLoader)
1014 detachDocumentLoader(m_provisionalDocumentLoader); 1014 detachDocumentLoader(m_provisionalDocumentLoader);
(...skipping 30 matching lines...) Expand all
1045 { 1045 {
1046 if (m_didAccessInitialDocumentTimer.isActive()) { 1046 if (m_didAccessInitialDocumentTimer.isActive()) {
1047 m_didAccessInitialDocumentTimer.stop(); 1047 m_didAccessInitialDocumentTimer.stop();
1048 didAccessInitialDocumentTimerFired(0); 1048 didAccessInitialDocumentTimerFired(0);
1049 } 1049 }
1050 } 1050 }
1051 1051
1052 bool FrameLoader::prepareForCommit() 1052 bool FrameLoader::prepareForCommit()
1053 { 1053 {
1054 PluginScriptForbiddenScope forbidPluginDestructorScripting; 1054 PluginScriptForbiddenScope forbidPluginDestructorScripting;
1055 RefPtrWillBeRawPtr<DocumentLoader> pdl = m_provisionalDocumentLoader; 1055 RawPtr<DocumentLoader> pdl = m_provisionalDocumentLoader;
1056 1056
1057 if (m_frame->document()) { 1057 if (m_frame->document()) {
1058 unsigned nodeCount = 0; 1058 unsigned nodeCount = 0;
1059 for (Frame* frame = m_frame; frame; frame = frame->tree().traverseNext() ) { 1059 for (Frame* frame = m_frame; frame; frame = frame->tree().traverseNext() ) {
1060 if (frame->isLocalFrame()) { 1060 if (frame->isLocalFrame()) {
1061 LocalFrame* localFrame = toLocalFrame(frame); 1061 LocalFrame* localFrame = toLocalFrame(frame);
1062 nodeCount += localFrame->document()->nodeCount(); 1062 nodeCount += localFrame->document()->nodeCount();
1063 } 1063 }
1064 } 1064 }
1065 unsigned totalNodeCount = InstanceCounters::counterValue(InstanceCounter s::NodeCounter); 1065 unsigned totalNodeCount = InstanceCounters::counterValue(InstanceCounter s::NodeCounter);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 if (m_frame->document()) 1101 if (m_frame->document())
1102 m_frame->document()->detach(); 1102 m_frame->document()->detach();
1103 m_documentLoader = m_provisionalDocumentLoader.release(); 1103 m_documentLoader = m_provisionalDocumentLoader.release();
1104 1104
1105 return true; 1105 return true;
1106 } 1106 }
1107 1107
1108 void FrameLoader::commitProvisionalLoad() 1108 void FrameLoader::commitProvisionalLoad()
1109 { 1109 {
1110 ASSERT(client()->hasWebView()); 1110 ASSERT(client()->hasWebView());
1111 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 1111 RawPtr<LocalFrame> protect(m_frame.get());
1112 1112
1113 // Check if the destination page is allowed to access the previous page's ti ming information. 1113 // Check if the destination page is allowed to access the previous page's ti ming information.
1114 if (m_frame->document()) { 1114 if (m_frame->document()) {
1115 RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::create(m_provisi onalDocumentLoader->request().url()); 1115 RefPtr<SecurityOrigin> securityOrigin = SecurityOrigin::create(m_provisi onalDocumentLoader->request().url());
1116 m_provisionalDocumentLoader->timing().setHasSameOriginAsPreviousDocument (securityOrigin->canRequest(m_frame->document()->url())); 1116 m_provisionalDocumentLoader->timing().setHasSameOriginAsPreviousDocument (securityOrigin->canRequest(m_frame->document()->url()));
1117 } 1117 }
1118 1118
1119 if (!prepareForCommit()) 1119 if (!prepareForCommit())
1120 return; 1120 return;
1121 1121
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 toLocalFrame(parent)->loader().scheduleCheckCompleted(); 1229 toLocalFrame(parent)->loader().scheduleCheckCompleted();
1230 if (m_progressTracker) { 1230 if (m_progressTracker) {
1231 m_progressTracker->dispose(); 1231 m_progressTracker->dispose();
1232 m_progressTracker.clear(); 1232 m_progressTracker.clear();
1233 } 1233 }
1234 } 1234 }
1235 1235
1236 void FrameLoader::loadFailed(DocumentLoader* loader, const ResourceError& error) 1236 void FrameLoader::loadFailed(DocumentLoader* loader, const ResourceError& error)
1237 { 1237 {
1238 // Retain because the stop may release the last reference to it. 1238 // Retain because the stop may release the last reference to it.
1239 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 1239 RawPtr<LocalFrame> protect(m_frame.get());
1240 RefPtrWillBeRawPtr<DocumentLoader> protectDocumentLoader(loader); 1240 RawPtr<DocumentLoader> protectDocumentLoader(loader);
1241 1241
1242 if (!error.isCancellation() && m_frame->owner()) { 1242 if (!error.isCancellation() && m_frame->owner()) {
1243 // FIXME: For now, fallback content doesn't work cross process. 1243 // FIXME: For now, fallback content doesn't work cross process.
1244 if (m_frame->owner()->isLocal()) 1244 if (m_frame->owner()->isLocal())
1245 m_frame->deprecatedLocalOwner()->renderFallbackContent(); 1245 m_frame->deprecatedLocalOwner()->renderFallbackContent();
1246 } 1246 }
1247 1247
1248 HistoryCommitType historyCommitType = loadTypeToCommitType(m_loadType); 1248 HistoryCommitType historyCommitType = loadTypeToCommitType(m_loadType);
1249 if (loader == m_provisionalDocumentLoader) { 1249 if (loader == m_provisionalDocumentLoader) {
1250 client()->dispatchDidFailProvisionalLoad(error, historyCommitType); 1250 client()->dispatchDidFailProvisionalLoad(error, historyCommitType);
(...skipping 30 matching lines...) Expand all
1281 && !m_frame->document()->isFrameSet(); 1281 && !m_frame->document()->isFrameSet();
1282 } 1282 }
1283 1283
1284 void FrameLoader::processFragment(const KURL& url, LoadStartType loadStartType) 1284 void FrameLoader::processFragment(const KURL& url, LoadStartType loadStartType)
1285 { 1285 {
1286 FrameView* view = m_frame->view(); 1286 FrameView* view = m_frame->view();
1287 if (!view) 1287 if (!view)
1288 return; 1288 return;
1289 1289
1290 // Leaking scroll position to a cross-origin ancestor would permit the so-ca lled "framesniffing" attack. 1290 // Leaking scroll position to a cross-origin ancestor would permit the so-ca lled "framesniffing" attack.
1291 RefPtrWillBeRawPtr<Frame> boundaryFrame = url.hasFragmentIdentifier() ? m_fr ame->findUnsafeParentScrollPropagationBoundary() : 0; 1291 RawPtr<Frame> boundaryFrame = url.hasFragmentIdentifier() ? m_frame->findUns afeParentScrollPropagationBoundary() : 0;
1292 1292
1293 // FIXME: Handle RemoteFrames 1293 // FIXME: Handle RemoteFrames
1294 if (boundaryFrame && boundaryFrame->isLocalFrame()) 1294 if (boundaryFrame && boundaryFrame->isLocalFrame())
1295 toLocalFrame(boundaryFrame.get())->view()->setSafeToPropagateScrollToPar ent(false); 1295 toLocalFrame(boundaryFrame.get())->view()->setSafeToPropagateScrollToPar ent(false);
1296 1296
1297 // If scroll position is restored from history fragment then we should not o verride it unless 1297 // If scroll position is restored from history fragment then we should not o verride it unless
1298 // this is a same document reload. 1298 // this is a same document reload.
1299 bool shouldScrollToFragment = (loadStartType == NavigationWithinSameDocument && !isBackForwardLoadType(m_loadType)) 1299 bool shouldScrollToFragment = (loadStartType == NavigationWithinSameDocument && !isBackForwardLoadType(m_loadType))
1300 || (documentLoader() && !documentLoader()->initialScrollState().didResto reFromHistory); 1300 || (documentLoader() && !documentLoader()->initialScrollState().didResto reFromHistory);
1301 1301
1302 view->processUrlFragment(url, shouldScrollToFragment ? 1302 view->processUrlFragment(url, shouldScrollToFragment ?
1303 FrameView::UrlFragmentScroll : FrameView::UrlFragmentDontScroll); 1303 FrameView::UrlFragmentScroll : FrameView::UrlFragmentDontScroll);
1304 1304
1305 if (boundaryFrame && boundaryFrame->isLocalFrame()) 1305 if (boundaryFrame && boundaryFrame->isLocalFrame())
1306 toLocalFrame(boundaryFrame.get())->view()->setSafeToPropagateScrollToPar ent(true); 1306 toLocalFrame(boundaryFrame.get())->view()->setSafeToPropagateScrollToPar ent(true);
1307 } 1307 }
1308 1308
1309 bool FrameLoader::shouldClose(bool isReload) 1309 bool FrameLoader::shouldClose(bool isReload)
1310 { 1310 {
1311 Page* page = m_frame->page(); 1311 Page* page = m_frame->page();
1312 if (!page || !page->chromeClient().canOpenBeforeUnloadConfirmPanel()) 1312 if (!page || !page->chromeClient().canOpenBeforeUnloadConfirmPanel())
1313 return true; 1313 return true;
1314 1314
1315 // Store all references to each subframe in advance since beforeunload's eve nt handler may modify frame 1315 // Store all references to each subframe in advance since beforeunload's eve nt handler may modify frame
1316 WillBeHeapVector<RefPtrWillBeMember<LocalFrame>> targetFrames; 1316 HeapVector<Member<LocalFrame>> targetFrames;
1317 targetFrames.append(m_frame); 1317 targetFrames.append(m_frame);
1318 for (Frame* child = m_frame->tree().firstChild(); child; child = child->tree ().traverseNext(m_frame)) { 1318 for (Frame* child = m_frame->tree().firstChild(); child; child = child->tree ().traverseNext(m_frame)) {
1319 // FIXME: There is not yet any way to dispatch events to out-of-process frames. 1319 // FIXME: There is not yet any way to dispatch events to out-of-process frames.
1320 if (child->isLocalFrame()) 1320 if (child->isLocalFrame())
1321 targetFrames.append(toLocalFrame(child)); 1321 targetFrames.append(toLocalFrame(child));
1322 } 1322 }
1323 1323
1324 bool shouldClose = false; 1324 bool shouldClose = false;
1325 { 1325 {
1326 NavigationDisablerForBeforeUnload navigationDisabler; 1326 NavigationDisablerForBeforeUnload navigationDisabler;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 if (!LocalDOMWindow::allowPopUp(*m_frame) && !UserGestureIndicator::processi ngUserGesture()) 1377 if (!LocalDOMWindow::allowPopUp(*m_frame) && !UserGestureIndicator::processi ngUserGesture())
1378 return false; 1378 return false;
1379 client()->loadURLExternally(request, policy, String(), replacesCurrentHistor yItem); 1379 client()->loadURLExternally(request, policy, String(), replacesCurrentHistor yItem);
1380 return false; 1380 return false;
1381 } 1381 }
1382 1382
1383 void FrameLoader::startLoad(FrameLoadRequest& frameLoadRequest, FrameLoadType ty pe, NavigationPolicy navigationPolicy) 1383 void FrameLoader::startLoad(FrameLoadRequest& frameLoadRequest, FrameLoadType ty pe, NavigationPolicy navigationPolicy)
1384 { 1384 {
1385 ASSERT(client()->hasWebView()); 1385 ASSERT(client()->hasWebView());
1386 // Lots of things in this function can detach the LocalFrame (stopAllLoaders , beforeunload handlers, etc.), so protect the frame. 1386 // Lots of things in this function can detach the LocalFrame (stopAllLoaders , beforeunload handlers, etc.), so protect the frame.
1387 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 1387 RawPtr<LocalFrame> protect(m_frame.get());
1388 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No Dismissal) 1388 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No Dismissal)
1389 return; 1389 return;
1390 1390
1391 NavigationType navigationType = determineNavigationType(type, frameLoadReque st.resourceRequest().httpBody() || frameLoadRequest.form(), frameLoadRequest.tri ggeringEvent()); 1391 NavigationType navigationType = determineNavigationType(type, frameLoadReque st.resourceRequest().httpBody() || frameLoadRequest.form(), frameLoadRequest.tri ggeringEvent());
1392 frameLoadRequest.resourceRequest().setRequestContext(determineRequestContext FromNavigationType(navigationType)); 1392 frameLoadRequest.resourceRequest().setRequestContext(determineRequestContext FromNavigationType(navigationType));
1393 frameLoadRequest.resourceRequest().setFrameType(m_frame->isMainFrame() ? Web URLRequest::FrameTypeTopLevel : WebURLRequest::FrameTypeNested); 1393 frameLoadRequest.resourceRequest().setFrameType(m_frame->isMainFrame() ? Web URLRequest::FrameTypeTopLevel : WebURLRequest::FrameTypeNested);
1394 ResourceRequest& request = frameLoadRequest.resourceRequest(); 1394 ResourceRequest& request = frameLoadRequest.resourceRequest();
1395 if (!shouldContinueForNavigationPolicy(request, frameLoadRequest.substituteD ata(), nullptr, frameLoadRequest.shouldCheckMainWorldContentSecurityPolicy(), na vigationType, navigationPolicy, type == FrameLoadTypeReplaceCurrentItem, frameLo adRequest.clientRedirect() == ClientRedirect)) 1395 if (!shouldContinueForNavigationPolicy(request, frameLoadRequest.substituteD ata(), nullptr, frameLoadRequest.shouldCheckMainWorldContentSecurityPolicy(), na vigationType, navigationPolicy, type == FrameLoadTypeReplaceCurrentItem, frameLo adRequest.clientRedirect() == ClientRedirect))
1396 return; 1396 return;
1397 if (!shouldClose(navigationType == NavigationTypeReload)) 1397 if (!shouldClose(navigationType == NavigationTypeReload))
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1460 break; 1460 break;
1461 } 1461 }
1462 } 1462 }
1463 return false; 1463 return false;
1464 } 1464 }
1465 case XFrameOptionsDeny: 1465 case XFrameOptionsDeny:
1466 return true; 1466 return true;
1467 case XFrameOptionsAllowAll: 1467 case XFrameOptionsAllowAll:
1468 return false; 1468 return false;
1469 case XFrameOptionsConflict: { 1469 case XFrameOptionsConflict: {
1470 RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::crea te(JSMessageSource, ErrorMessageLevel, "Multiple 'X-Frame-Options' headers with conflicting values ('" + content + "') encountered when loading '" + url.elidedS tring() + "'. Falling back to 'DENY'."); 1470 RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessage Source, ErrorMessageLevel, "Multiple 'X-Frame-Options' headers with conflicting values ('" + content + "') encountered when loading '" + url.elidedString() + "' . Falling back to 'DENY'.");
1471 consoleMessage->setRequestIdentifier(requestIdentifier); 1471 consoleMessage->setRequestIdentifier(requestIdentifier);
1472 m_frame->document()->addConsoleMessage(consoleMessage.release()); 1472 m_frame->document()->addConsoleMessage(consoleMessage.release());
1473 return true; 1473 return true;
1474 } 1474 }
1475 case XFrameOptionsInvalid: { 1475 case XFrameOptionsInvalid: {
1476 RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::crea te(JSMessageSource, ErrorMessageLevel, "Invalid 'X-Frame-Options' header encount ered when loading '" + url.elidedString() + "': '" + content + "' is not a recog nized directive. The header will be ignored."); 1476 RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessage Source, ErrorMessageLevel, "Invalid 'X-Frame-Options' header encountered when lo ading '" + url.elidedString() + "': '" + content + "' is not a recognized direct ive. The header will be ignored.");
1477 consoleMessage->setRequestIdentifier(requestIdentifier); 1477 consoleMessage->setRequestIdentifier(requestIdentifier);
1478 m_frame->document()->addConsoleMessage(consoleMessage.release()); 1478 m_frame->document()->addConsoleMessage(consoleMessage.release());
1479 return false; 1479 return false;
1480 } 1480 }
1481 default: 1481 default:
1482 ASSERT_NOT_REACHED(); 1482 ASSERT_NOT_REACHED();
1483 return false; 1483 return false;
1484 } 1484 }
1485 } 1485 }
1486 1486
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1584 // FIXME: We need a way to propagate insecure requests policy flags to 1584 // FIXME: We need a way to propagate insecure requests policy flags to
1585 // out-of-process frames. For now, we'll always use default behavior. 1585 // out-of-process frames. For now, we'll always use default behavior.
1586 if (!parentFrame->isLocalFrame()) 1586 if (!parentFrame->isLocalFrame())
1587 return nullptr; 1587 return nullptr;
1588 1588
1589 ASSERT(toLocalFrame(parentFrame)->document()); 1589 ASSERT(toLocalFrame(parentFrame)->document());
1590 return toLocalFrame(parentFrame)->document()->insecureNavigationsToUpgrade() ; 1590 return toLocalFrame(parentFrame)->document()->insecureNavigationsToUpgrade() ;
1591 } 1591 }
1592 1592
1593 } // namespace blink 1593 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698