Changeset 246190 in webkit
- Timestamp:
- Jun 6, 2019, 11:09:40 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
loader/ContentFilter.cpp (modified) (1 diff)
-
loader/ContentFilter.h (modified) (1 diff)
-
loader/FrameLoader.cpp (modified) (2 diffs)
-
loader/FrameLoader.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r246187 r246190 1 2019-06-06 Andy Estes <aestes@apple.com> 2 3 process-swap-on-navigation error when loading blocked website on iOS 12.2 only. 4 https://bugs.webkit.org/show_bug.cgi?id=196930 5 <rdar://problem/47819301> 6 7 Reviewed by Chris Dumez. 8 9 When the content filter blocks a navigation, it will continue to load the content filter 10 error page in the provisional web process. When dispatching didFailProvisionalLoad, we need 11 to specify WillContinueLoading::Yes so that WebKit presents the error page rather than 12 switching back to the committed web process. 13 14 Testing blocked by <https://webkit.org/b/198626>. 15 16 * loader/ContentFilter.cpp: 17 (WebCore::ContentFilter::willHandleProvisionalLoadFailure): 18 (WebCore::ContentFilter::handleProvisionalLoadFailure): 19 * loader/ContentFilter.h: 20 * loader/FrameLoader.cpp: 21 (WebCore::FrameLoader::dispatchDidFailProvisionalLoad): 22 (WebCore::FrameLoader::checkLoadCompleteForThisFrame): 23 * loader/FrameLoader.h: 24 1 25 2019-06-06 Chris Dumez <cdumez@apple.com> 2 26 -
trunk/Source/WebCore/loader/ContentFilter.cpp
r241906 r246190 275 275 } 276 276 277 bool ContentFilter::willHandleProvisionalLoadFailure(const ResourceError& error) const 278 { 279 if (m_state != State::Blocked) 280 return false; 281 282 if (m_blockedError.errorCode() != error.errorCode() || m_blockedError.domain() != error.domain()) 283 return false; 284 285 ASSERT(m_blockedError.failingURL() == error.failingURL()); 286 return true; 287 } 288 277 289 void ContentFilter::handleProvisionalLoadFailure(const ResourceError& error) 278 290 { 279 if (m_state != State::Blocked) 280 return; 281 282 if (m_blockedError.errorCode() != error.errorCode() || m_blockedError.domain() != error.domain()) 283 return; 284 285 ASSERT(m_blockedError.failingURL() == error.failingURL()); 291 ASSERT(willHandleProvisionalLoadFailure(error)); 286 292 287 293 RefPtr<SharedBuffer> replacementData { m_blockingContentFilter->replacementData() }; -
trunk/Source/WebCore/loader/ContentFilter.h
r222113 r246190 63 63 64 64 static bool continueAfterSubstituteDataRequest(const DocumentLoader& activeLoader, const SubstituteData&); 65 bool willHandleProvisionalLoadFailure(const ResourceError&) const; 65 66 void handleProvisionalLoadFailure(const ResourceError&); 66 67 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r245508 r246190 2428 2428 } 2429 2429 2430 void FrameLoader::dispatchDidFailProvisionalLoad(DocumentLoader& provisionalDocumentLoader, const ResourceError& error) 2431 { 2432 m_provisionalLoadErrorBeingHandledURL = provisionalDocumentLoader.url(); 2433 2434 #if ENABLE(CONTENT_FILTERING) 2435 auto contentFilter = provisionalDocumentLoader.contentFilter(); 2436 auto contentFilterWillContinueLoading = false; 2437 #endif 2438 2439 auto willContinueLoading = WillContinueLoading::No; 2440 if (history().provisionalItem()) 2441 willContinueLoading = WillContinueLoading::Yes; 2442 #if ENABLE(CONTENT_FILTERING) 2443 if (contentFilter && contentFilter->willHandleProvisionalLoadFailure(error)) { 2444 willContinueLoading = WillContinueLoading::Yes; 2445 contentFilterWillContinueLoading = true; 2446 } 2447 #endif 2448 2449 m_client.dispatchDidFailProvisionalLoad(error, willContinueLoading); 2450 2451 #if ENABLE(CONTENT_FILTERING) 2452 if (contentFilterWillContinueLoading) 2453 contentFilter->handleProvisionalLoadFailure(error); 2454 #endif 2455 2456 m_provisionalLoadErrorBeingHandledURL = { }; 2457 } 2458 2430 2459 void FrameLoader::checkLoadCompleteForThisFrame() 2431 2460 { … … 2466 2495 if (!pdl->isLoadingInAPISense() || pdl->isStopping()) { 2467 2496 RELEASE_LOG_IF_ALLOWED("checkLoadCompleteForThisFrame: Failed provisional load (frame = %p, main = %d, isTimeout = %d, isCancellation = %d, errorCode = %d)", &m_frame, m_frame.isMainFrame(), error.isTimeout(), error.isCancellation(), error.errorCode()); 2468 m_provisionalLoadErrorBeingHandledURL = m_provisionalDocumentLoader->url(); 2469 2470 m_client.dispatchDidFailProvisionalLoad(error, history().provisionalItem() ? WillContinueLoading::Yes : WillContinueLoading::No); 2471 #if ENABLE(CONTENT_FILTERING) 2472 if (auto contentFilter = pdl->contentFilter()) 2473 contentFilter->handleProvisionalLoadFailure(error); 2474 #endif 2475 m_provisionalLoadErrorBeingHandledURL = { }; 2476 2497 2498 dispatchDidFailProvisionalLoad(*pdl, error); 2477 2499 ASSERT(!pdl->isLoading()); 2478 2500 -
trunk/Source/WebCore/loader/FrameLoader.h
r244161 r246190 362 362 void scrollToFragmentWithParentBoundary(const URL&, bool isNewNavigation = true); 363 363 364 void dispatchDidFailProvisionalLoad(DocumentLoader& provisionalDocumentLoader, const ResourceError&); 364 365 void checkLoadCompleteForThisFrame(); 365 366
Note:
See TracChangeset
for help on using the changeset viewer.