Changeset 258628 in webkit
- Timestamp:
- Mar 18, 2020 6:59:23 AM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r258626 r258628 1 2020-03-18 youenn fablet <youenn@apple.com> 2 3 FrameLoader should own its FrameLoaderClient 4 https://bugs.webkit.org/show_bug.cgi?id=208918 5 6 Reviewed by Geoff Garen. 7 8 Update Frame/FrameLoader constructors to get a UniqueRef<FrameLoaderClient>. 9 This makes the lifetime management much clearer and allows some WebKit1/WebKit2 clean-up. 10 11 Covered by existing tests. 12 13 * loader/EmptyClients.cpp: 14 (WebCore::pageConfigurationWithEmptyClients): 15 * loader/EmptyFrameLoaderClient.h: 16 * loader/FrameLoader.cpp: 17 (WebCore::FrameLoader::FrameLoader): 18 (WebCore::FrameLoader::~FrameLoader): 19 (WebCore::FrameLoader::init): 20 (WebCore::FrameLoader::initForSynthesizedDocument): 21 (WebCore::FrameLoader::didExplicitOpen): 22 (WebCore::FrameLoader::receivedFirstData): 23 (WebCore::FrameLoader::finishedParsing): 24 (WebCore::FrameLoader::loadArchive): 25 (WebCore::FrameLoader::setOpener): 26 (WebCore::FrameLoader::provisionalLoadStarted): 27 (WebCore::FrameLoader::loadInSameDocument): 28 (WebCore::FrameLoader::prepareForLoadStart): 29 (WebCore::FrameLoader::setupForReplace): 30 (WebCore::FrameLoader::load): 31 (WebCore::FrameLoader::loadWithNavigationAction): 32 (WebCore::FrameLoader::loadWithDocumentLoader): 33 (WebCore::FrameLoader::willLoadMediaElementURL): 34 (WebCore::FrameLoader::reloadWithOverrideEncoding): 35 (WebCore::FrameLoader::reload): 36 (WebCore::FrameLoader::setDocumentLoader): 37 (WebCore::FrameLoader::commitProvisionalLoad): 38 (WebCore::FrameLoader::transitionToCommitted): 39 (WebCore::FrameLoader::clientRedirectCancelledOrFinished): 40 (WebCore::FrameLoader::clientRedirected): 41 (WebCore::FrameLoader::closeOldDataSources): 42 (WebCore::FrameLoader::willChangeTitle): 43 (WebCore::FrameLoader::dispatchDidFailProvisionalLoad): 44 (WebCore::FrameLoader::checkLoadCompleteForThisFrame): 45 (WebCore::FrameLoader::didReachLayoutMilestone): 46 (WebCore::FrameLoader::didReachVisuallyNonEmptyState): 47 (WebCore::FrameLoader::frameLoadCompleted): 48 (WebCore::FrameLoader::checkLoadComplete): 49 (WebCore::FrameLoader::userAgent const): 50 (WebCore::FrameLoader::dispatchOnloadEvents): 51 (WebCore::FrameLoader::detachViewsAndDocumentLoader): 52 (WebCore::FrameLoader::receivedMainResourceError): 53 (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): 54 (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): 55 (WebCore::FrameLoader::loadedResourceFromMemoryCache): 56 (WebCore::FrameLoader::loadDifferentDocumentItem): 57 (WebCore::FrameLoader::cancelledError const): 58 (WebCore::FrameLoader::blockedByContentBlockerError const): 59 (WebCore::FrameLoader::blockedError const): 60 (WebCore::FrameLoader::blockedByContentFilterError const): 61 (WebCore::FrameLoader::connectionProperties): 62 (WebCore::FrameLoader::dispatchDidClearWindowObjectInWorld): 63 (WebCore::FrameLoader::dispatchGlobalObjectAvailableInAllWorlds): 64 (WebCore::FrameLoader::didChangeTitle): 65 (WebCore::FrameLoader::dispatchDidCommitLoad): 66 (WebCore::FrameLoader::tellClientAboutPastMemoryCacheLoads): 67 (WebCore::FrameLoader::completePageTransitionIfNeeded): 68 * loader/FrameLoader.h: 69 * loader/FrameLoaderClient.h: 70 * page/Frame.cpp: 71 (WebCore::Frame::Frame): 72 (WebCore::Frame::create): 73 * page/Frame.h: 74 * page/Page.cpp: 75 (WebCore::Page::Page): 76 * page/PageConfiguration.cpp: 77 (WebCore::PageConfiguration::PageConfiguration): 78 * page/PageConfiguration.h: 79 * workers/service/context/SWContextManager.cpp: 80 * workers/service/context/SWContextManager.h: 81 1 82 2020-03-18 Philippe Normand <pnormand@igalia.com> 2 83 -
trunk/Source/WebCore/loader/EmptyClients.cpp
r258549 r258628 598 598 CookieJar::create(adoptRef(*new EmptyStorageSessionProvider)), 599 599 makeUniqueRef<EmptyProgressTrackerClient>(), 600 makeUniqueRef<EmptyFrameLoaderClient>(), 600 601 makeUniqueRef<EmptyMediaRecorderProvider>() 601 602 }; … … 620 621 static NeverDestroyed<EmptyInspectorClient> dummyInspectorClient; 621 622 pageConfiguration.inspectorClient = &dummyInspectorClient.get(); 622 623 static NeverDestroyed<EmptyFrameLoaderClient> dummyFrameLoaderClient;624 pageConfiguration.loaderClientForMainFrame = &dummyFrameLoaderClient.get();625 623 626 624 pageConfiguration.diagnosticLoggingClient = makeUnique<EmptyDiagnosticLoggingClient>(); -
trunk/Source/WebCore/loader/EmptyFrameLoaderClient.h
r258549 r258628 38 38 Ref<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) override; 39 39 40 void frameLoaderDestroyed() override { }41 42 40 Optional<FrameIdentifier> frameID() const override { return WTF::nullopt; } 43 41 Optional<PageIdentifier> pageID() const override { return WTF::nullopt; } … … 127 125 void finishedLoading(DocumentLoader*) final { } 128 126 129 ResourceError cancelledError(const ResourceRequest&) final { return { ResourceError::Type::Cancellation }; }130 ResourceError blockedError(const ResourceRequest&) final { return { }; }131 ResourceError blockedByContentBlockerError(const ResourceRequest&) final { return { }; }132 ResourceError cannotShowURLError(const ResourceRequest&) final { return { }; }133 ResourceError interruptedForPolicyChangeError(const ResourceRequest&) final { return { }; }127 ResourceError cancelledError(const ResourceRequest&) const final { return { ResourceError::Type::Cancellation }; } 128 ResourceError blockedError(const ResourceRequest&) const final { return { }; } 129 ResourceError blockedByContentBlockerError(const ResourceRequest&) const final { return { }; } 130 ResourceError cannotShowURLError(const ResourceRequest&) const final { return { }; } 131 ResourceError interruptedForPolicyChangeError(const ResourceRequest&) const final { return { }; } 134 132 #if ENABLE(CONTENT_FILTERING) 135 ResourceError blockedByContentFilterError(const ResourceRequest&) final { return { }; }136 #endif 137 138 ResourceError cannotShowMIMETypeError(const ResourceResponse&) final { return { }; }139 ResourceError fileDoesNotExistError(const ResourceResponse&) final { return { }; }140 ResourceError pluginWillHandleLoadError(const ResourceResponse&) final { return { }; }141 142 bool shouldFallBack(const ResourceError&) final { return false; }133 ResourceError blockedByContentFilterError(const ResourceRequest&) const final { return { }; } 134 #endif 135 136 ResourceError cannotShowMIMETypeError(const ResourceResponse&) const final { return { }; } 137 ResourceError fileDoesNotExistError(const ResourceResponse&) const final { return { }; } 138 ResourceError pluginWillHandleLoadError(const ResourceResponse&) const final { return { }; } 139 140 bool shouldFallBack(const ResourceError&) const final { return false; } 143 141 144 142 bool canHandleRequest(const ResourceRequest&) const final { return false; } … … 157 155 void setTitle(const StringWithDirection&, const URL&) final { } 158 156 159 String userAgent(const URL&) override { return emptyString(); }157 String userAgent(const URL&) const override { return emptyString(); } 160 158 161 159 void savePlatformDataToCachedFrame(CachedFrame*) final { } -
trunk/Source/WebCore/loader/FrameLoader.cpp
r258549 r258628 292 292 }; 293 293 294 FrameLoader::FrameLoader(Frame& frame, FrameLoaderClient& client)294 FrameLoader::FrameLoader(Frame& frame, UniqueRef<FrameLoaderClient>&& client) 295 295 : m_frame(frame) 296 , m_client( client)296 , m_client(WTFMove(client)) 297 297 , m_policyChecker(makeUnique<PolicyChecker>(frame)) 298 298 , m_history(makeUnique<HistoryController>(frame)) … … 326 326 detachFromAllOpenedFrames(); 327 327 328 m_client.frameLoaderDestroyed();329 330 328 if (m_networkingContext) 331 329 m_networkingContext->invalidate(); … … 342 340 { 343 341 // This somewhat odd set of steps gives the frame an initial empty document. 344 setPolicyDocumentLoader(m_client .createDocumentLoader(ResourceRequest(URL({ }, emptyString())), SubstituteData()).ptr());342 setPolicyDocumentLoader(m_client->createDocumentLoader(ResourceRequest(URL({ }, emptyString())), SubstituteData()).ptr()); 345 343 setProvisionalDocumentLoader(m_policyDocumentLoader.get()); 346 344 m_provisionalDocumentLoader->startLoadingMainResource(); … … 350 348 m_stateMachine.advanceTo(FrameLoaderStateMachine::DisplayingInitialEmptyDocument); 351 349 352 m_networkingContext = m_client .createNetworkingContext();350 m_networkingContext = m_client->createNetworkingContext(); 353 351 m_progressTracker = makeUnique<FrameProgressTracker>(m_frame); 354 352 } … … 359 357 // FrameLoader::checkCompleted() will overwrite the URL of the document to be activeDocumentLoader()->documentURL(). 360 358 361 auto loader = m_client .createDocumentLoader(ResourceRequest(URL({ }, emptyString())), SubstituteData());359 auto loader = m_client->createDocumentLoader(ResourceRequest(URL({ }, emptyString())), SubstituteData()); 362 360 loader->attachToFrame(m_frame); 363 361 loader->setResponse(ResourceResponse(URL(), "text/html"_s, 0, String())); … … 368 366 m_stateMachine.advanceTo(FrameLoaderStateMachine::DisplayingInitialEmptyDocumentPostCommit); 369 367 m_stateMachine.advanceTo(FrameLoaderStateMachine::CommittedFirstRealLoad); 370 m_client .transitionToCommittedForNewPage();368 m_client->transitionToCommittedForNewPage(); 371 369 372 370 m_didCallImplicitClose = true; … … 375 373 m_needsClear = true; 376 374 377 m_networkingContext = m_client .createNetworkingContext();375 m_networkingContext = m_client->createNetworkingContext(); 378 376 m_progressTracker = makeUnique<FrameProgressTracker>(m_frame); 379 377 } … … 613 611 614 612 if (auto* document = m_frame.document()) 615 m_client .dispatchDidExplicitOpen(document->url(), document->contentType());613 m_client->dispatchDidExplicitOpen(document->url(), document->contentType()); 616 614 617 615 // Prevent window.open(url) -- eg window.open("about:blank") -- from blowing away results … … 719 717 auto& title = documentLoader.title(); 720 718 if (!title.string.isNull()) 721 m_client .dispatchDidReceiveTitle(title);719 m_client->dispatchDidReceiveTitle(title); 722 720 723 721 ASSERT(m_frame.document()); … … 804 802 RefPtr<Frame> protector = m_frame.view() ? &m_frame : 0; 805 803 806 m_client .dispatchDidFinishDocumentLoad();804 m_client->dispatchDidFinishDocumentLoad(); 807 805 808 806 scrollToFragmentWithParentBoundary(m_frame.document()->url()); … … 1009 1007 ResourceRequest request(mainResource->url()); 1010 1008 1011 auto documentLoader = m_client .createDocumentLoader(request, substituteData);1009 auto documentLoader = m_client->createDocumentLoader(request, substituteData); 1012 1010 documentLoader->setArchive(WTFMove(archive)); 1013 1011 load(documentLoader.get()); … … 1054 1052 { 1055 1053 if (m_opener && !opener) 1056 m_client .didDisownOpener();1054 m_client->didDisownOpener(); 1057 1055 1058 1056 if (m_opener) { … … 1086 1084 m_stateMachine.advanceTo(FrameLoaderStateMachine::CommittedFirstRealLoad); 1087 1085 m_frame.navigationScheduler().cancel(NewLoadInProgress::Yes); 1088 m_client .provisionalLoadStarted();1086 m_client->provisionalLoadStarted(); 1089 1087 1090 1088 if (m_frame.isMainFrame()) { … … 1183 1181 } 1184 1182 1185 m_client .dispatchDidNavigateWithinPage();1183 m_client->dispatchDidNavigateWithinPage(); 1186 1184 1187 1185 m_frame.document()->statePopped(stateObject ? Ref<SerializedScriptValue> { *stateObject } : SerializedScriptValue::nullValue()); 1188 m_client .dispatchDidPopStateWithinPage();1186 m_client->dispatchDidPopStateWithinPage(); 1189 1187 1190 1188 if (hashChange) { 1191 1189 m_frame.document()->enqueueHashchangeEvent(oldURL, url); 1192 m_client .dispatchDidChangeLocationWithinPage();1190 m_client->dispatchDidChangeLocationWithinPage(); 1193 1191 } 1194 1192 1195 1193 // FrameLoaderClient::didFinishLoad() tells the internal load delegate the load finished with no error 1196 m_client .didFinishLoad();1194 m_client->didFinishLoad(); 1197 1195 } 1198 1196 … … 1227 1225 1228 1226 m_progressTracker->progressStarted(); 1229 m_client .dispatchDidStartProvisionalLoad();1227 m_client->dispatchDidStartProvisionalLoad(); 1230 1228 1231 1229 if (AXObjectCache::accessibilityEnabled()) { … … 1239 1237 void FrameLoader::setupForReplace() 1240 1238 { 1241 m_client .revertToProvisionalState(m_documentLoader.get());1239 m_client->revertToProvisionalState(m_documentLoader.get()); 1242 1240 setState(FrameStateProvisional); 1243 1241 m_provisionalDocumentLoader = m_documentLoader; … … 1482 1480 request.setSubstituteData(defaultSubstituteDataForURL(request.resourceRequest().url())); 1483 1481 1484 Ref<DocumentLoader> loader = m_client .createDocumentLoader(request.resourceRequest(), request.substituteData());1482 Ref<DocumentLoader> loader = m_client->createDocumentLoader(request.resourceRequest(), request.substituteData()); 1485 1483 loader->setAllowsWebArchiveForMainFrame(request.isRequestFromClientOrUserInput()); 1486 1484 loader->setAllowsDataURLsForMainFrame(request.isRequestFromClientOrUserInput()); … … 1504 1502 FRAMELOADER_RELEASE_LOG_IF_ALLOWED(ResourceLoading, "loadWithNavigationAction: frame load started"); 1505 1503 1506 Ref<DocumentLoader> loader = m_client .createDocumentLoader(request, defaultSubstituteDataForURL(request.url()));1504 Ref<DocumentLoader> loader = m_client->createDocumentLoader(request, defaultSubstituteDataForURL(request.url())); 1507 1505 loader->setDownloadAttribute(downloadAttribute); 1508 1506 applyShouldOpenExternalURLsPolicyToNewDocumentLoader(m_frame, loader, action.initiatedByMainFrame(), action.shouldOpenExternalURLsPolicy()); … … 1568 1566 CompletionHandlerCallingScope completionHandlerCaller(WTFMove(completionHandler)); 1569 1567 1570 ASSERT(m_client .hasWebView());1568 ASSERT(m_client->hasWebView()); 1571 1569 1572 1570 // Unfortunately the view must be non-nil, this is ultimately due … … 1700 1698 // doesn't let them tell when a load request is coming from a media element. See <rdar://problem/8266916> for more details. 1701 1699 if (IOSApplication::isMobileStore()) 1702 return m_client .shouldLoadMediaElementURL(url);1700 return m_client->shouldLoadMediaElementURL(url); 1703 1701 #endif 1704 1702 … … 1753 1751 request.setCachePolicy(ResourceRequestCachePolicy::ReturnCacheDataElseLoad); 1754 1752 1755 Ref<DocumentLoader> loader = m_client .createDocumentLoader(request, defaultSubstituteDataForURL(request.url()));1753 Ref<DocumentLoader> loader = m_client->createDocumentLoader(request, defaultSubstituteDataForURL(request.url())); 1756 1754 applyShouldOpenExternalURLsPolicyToNewDocumentLoader(m_frame, loader, InitiatedByMainFrame::Unknown, m_documentLoader->shouldOpenExternalURLsPolicyToPropagate()); 1757 1755 … … 1783 1781 // Create a new document loader for the reload, this will become m_documentLoader eventually, 1784 1782 // but first it has to be the "policy" document loader, and then the "provisional" document loader. 1785 Ref<DocumentLoader> loader = m_client .createDocumentLoader(initialRequest, defaultSubstituteDataForURL(initialRequest.url()));1783 Ref<DocumentLoader> loader = m_client->createDocumentLoader(initialRequest, defaultSubstituteDataForURL(initialRequest.url())); 1786 1784 loader->setAllowsWebArchiveForMainFrame(m_documentLoader->allowsWebArchiveForMainFrame()); 1787 1785 loader->setAllowsDataURLsForMainFrame(m_documentLoader->allowsDataURLsForMainFrame()); … … 1945 1943 ASSERT(!loader || loader->frameLoader() == this); 1946 1944 1947 m_client .prepareForDataSourceReplacement();1945 m_client->prepareForDataSourceReplacement(); 1948 1946 detachChildren(); 1949 1947 … … 2045 2043 2046 2044 if (!cachedPage && !m_stateMachine.creatingInitialEmptyDocument()) 2047 m_client .makeRepresentation(pdl.get());2045 m_client->makeRepresentation(pdl.get()); 2048 2046 2049 2047 transitionToCommitted(cachedPage.get()); … … 2094 2092 auto& title = m_documentLoader->title(); 2095 2093 if (!title.string.isNull()) 2096 m_client .dispatchDidReceiveTitle(title);2094 m_client->dispatchDidReceiveTitle(title); 2097 2095 2098 2096 // Send remaining notifications for the main resource. … … 2118 2116 // Force a layout to update view size and thereby update scrollbars. 2119 2117 #if PLATFORM(IOS_FAMILY) 2120 if (!m_client .forceLayoutOnRestoreFromBackForwardCache())2118 if (!m_client->forceLayoutOnRestoreFromBackForwardCache()) 2121 2119 m_frame.view()->forceLayout(); 2122 2120 #else … … 2145 2143 void FrameLoader::transitionToCommitted(CachedPage* cachedPage) 2146 2144 { 2147 ASSERT(m_client .hasWebView());2145 ASSERT(m_client->hasWebView()); 2148 2146 ASSERT(m_state == FrameStateProvisional); 2149 2147 … … 2156 2154 } 2157 2155 2158 m_client .setCopiesOnScroll();2156 m_client->setCopiesOnScroll(); 2159 2157 history().updateForCommit(); 2160 2158 … … 2210 2208 ASSERT(cachedDocumentLoader); 2211 2209 cachedDocumentLoader->attachToFrame(m_frame); 2212 m_client .transitionToCommittedFromCachedFrame(cachedPage->cachedMainFrame());2210 m_client->transitionToCommittedFromCachedFrame(cachedPage->cachedMainFrame()); 2213 2211 } else 2214 m_client .transitionToCommittedForNewPage();2212 m_client->transitionToCommittedForNewPage(); 2215 2213 } 2216 2214 break; … … 2222 2220 case FrameLoadType::Replace: 2223 2221 history().updateForReload(); 2224 m_client .transitionToCommittedForNewPage();2222 m_client->transitionToCommittedForNewPage(); 2225 2223 break; 2226 2224 … … 2229 2227 if (m_frame.view()) 2230 2228 m_frame.view()->setScrollbarsSuppressed(true); 2231 m_client .transitionToCommittedForNewPage();2229 m_client->transitionToCommittedForNewPage(); 2232 2230 break; 2233 2231 2234 2232 case FrameLoadType::RedirectWithLockedBackForwardList: 2235 2233 history().updateForRedirectWithLockedBackForwardList(); 2236 m_client .transitionToCommittedForNewPage();2234 m_client->transitionToCommittedForNewPage(); 2237 2235 break; 2238 2236 } … … 2255 2253 // the redirect succeeded. We should either rename this API, or add a new method, like 2256 2254 // -webView:didFinishClientRedirectForFrame: 2257 m_client .dispatchDidCancelClientRedirect();2255 m_client->dispatchDidCancelClientRedirect(); 2258 2256 2259 2257 if (newLoadInProgress == NewLoadInProgress::No) … … 2265 2263 void FrameLoader::clientRedirected(const URL& url, double seconds, WallTime fireDate, LockBackForwardList lockBackForwardList) 2266 2264 { 2267 m_client .dispatchWillPerformClientRedirect(url, seconds, fireDate, lockBackForwardList);2265 m_client->dispatchWillPerformClientRedirect(url, seconds, fireDate, lockBackForwardList); 2268 2266 2269 2267 // Remember that we sent a redirect notification to the frame load delegate so that when we commit … … 2297 2295 2298 2296 if (m_documentLoader) 2299 m_client .dispatchWillClose();2300 2301 m_client .setMainFrameDocumentReady(false); // stop giving out the actual DOMDocument to observers2297 m_client->dispatchWillClose(); 2298 2299 m_client->setMainFrameDocumentReady(false); // stop giving out the actual DOMDocument to observers 2302 2300 } 2303 2301 … … 2414 2412 void FrameLoader::willChangeTitle(DocumentLoader* loader) 2415 2413 { 2416 m_client .willChangeTitle(loader);2414 m_client->willChangeTitle(loader); 2417 2415 } 2418 2416 … … 2486 2484 #endif 2487 2485 2488 m_client .dispatchDidFailProvisionalLoad(error, willContinueLoading);2486 m_client->dispatchDidFailProvisionalLoad(error, willContinueLoading); 2489 2487 2490 2488 #if ENABLE(CONTENT_FILTERING) … … 2498 2496 void FrameLoader::checkLoadCompleteForThisFrame() 2499 2497 { 2500 ASSERT(m_client .hasWebView());2498 ASSERT(m_client->hasWebView()); 2501 2499 2502 2500 // FIXME: Should this check be done in checkLoadComplete instead of here? … … 2571 2569 // the new page is ready. 2572 2570 2573 m_client .forceLayoutForNonHTML();2571 m_client->forceLayoutForNonHTML(); 2574 2572 2575 2573 // If the user had a scroll point, scroll to it, overriding the anchor point if any. … … 2596 2594 if (!error.isNull()) { 2597 2595 FRAMELOADER_RELEASE_LOG_IF_ALLOWED(ResourceLoading, "checkLoadCompleteForThisFrame: Finished frame load with error (isTimeout = %d, isCancellation = %d, errorCode = %d)", error.isTimeout(), error.isCancellation(), error.errorCode()); 2598 m_client .dispatchDidFailLoad(error);2596 m_client->dispatchDidFailLoad(error); 2599 2597 loadingEvent = AXObjectCache::AXLoadingFailed; 2600 2598 } else { … … 2605 2603 if (auto* documentElement = document->documentElement()) { 2606 2604 RefPtr<Range> documentRange = makeRange(firstPositionInNode(documentElement), lastPositionInNode(documentElement)); 2607 m_frame.setDataDetectionResults(DataDetection::detectContentInRange(documentRange, m_frame.settings().dataDetectorTypes(), m_client .dataDetectionContext()));2605 m_frame.setDataDetectionResults(DataDetection::detectContentInRange(documentRange, m_frame.settings().dataDetectorTypes(), m_client->dataDetectionContext())); 2608 2606 if (m_frame.isMainFrame()) 2609 m_client .dispatchDidFinishDataDetection(m_frame.dataDetectionResults());2607 m_client->dispatchDidFinishDataDetection(m_frame.dataDetectionResults()); 2610 2608 } 2611 2609 } 2612 2610 #endif 2613 m_client .dispatchDidFinishLoad();2611 m_client->dispatchDidFinishLoad(); 2614 2612 loadingEvent = AXObjectCache::AXLoadingFinished; 2615 2613 } … … 2669 2667 ASSERT(m_frame.isMainFrame()); 2670 2668 2671 m_client .dispatchDidReachLayoutMilestone(milestones);2669 m_client->dispatchDidReachLayoutMilestone(milestones); 2672 2670 } 2673 2671 … … 2691 2689 { 2692 2690 ASSERT(m_frame.isMainFrame()); 2693 m_client .dispatchDidReachVisuallyNonEmptyState();2691 m_client->dispatchDidReachVisuallyNonEmptyState(); 2694 2692 } 2695 2693 … … 2698 2696 // Note: Can be called multiple times. 2699 2697 2700 m_client .frameLoadCompleted();2698 m_client->frameLoadCompleted(); 2701 2699 2702 2700 history().updateForFrameLoadCompleted(); … … 2757 2755 return; 2758 2756 2759 ASSERT(m_client .hasWebView());2757 ASSERT(m_client->hasWebView()); 2760 2758 2761 2759 // FIXME: Always traversing the entire frame tree is a bit inefficient, but … … 2799 2797 return userAgent; 2800 2798 2801 return m_client .userAgent(url);2799 return m_client->userAgent(url); 2802 2800 } 2803 2801 … … 2814 2812 void FrameLoader::dispatchOnloadEvents() 2815 2813 { 2816 m_client .dispatchDidDispatchOnloadEvents();2814 m_client->dispatchDidDispatchOnloadEvents(); 2817 2815 2818 2816 if (documentLoader()) … … 2872 2870 void FrameLoader::detachViewsAndDocumentLoader() 2873 2871 { 2874 m_client .detachedFromParent2();2872 m_client->detachedFromParent2(); 2875 2873 setDocumentLoader(nullptr); 2876 m_client .detachedFromParent3();2874 m_client->detachedFromParent3(); 2877 2875 } 2878 2876 … … 3176 3174 // that both data sources on the frame are either this or nil. 3177 3175 stop(); 3178 if (m_client .shouldFallBack(error))3176 if (m_client->shouldFallBack(error)) 3179 3177 handleFallbackContent(); 3180 3178 … … 3555 3553 } 3556 3554 3557 m_client .dispatchWillSubmitForm(*formState, WTFMove(completionHandler));3555 m_client->dispatchWillSubmitForm(*formState, WTFMove(completionHandler)); 3558 3556 } 3559 3557 … … 3565 3563 3566 3564 Ref<Frame> frame(m_frame); 3567 RefPtr<Frame> mainFrame = m_client .dispatchCreatePage(action);3565 RefPtr<Frame> mainFrame = m_client->dispatchCreatePage(action); 3568 3566 if (!mainFrame) 3569 3567 return; … … 3577 3575 3578 3576 mainFrame->page()->setOpenedByDOM(); 3579 mainFrame->loader().m_client .dispatchShow();3577 mainFrame->loader().m_client->dispatchShow(); 3580 3578 if (openerPolicy == NewFrameOpenerPolicy::Allow) { 3581 3579 mainFrame->loader().setOpener(frame.ptr()); … … 3628 3626 } 3629 3627 3630 if (m_client .dispatchDidLoadResourceFromMemoryCache(m_documentLoader.get(), newRequest, resource.response(), resource.encodedSize())) {3628 if (m_client->dispatchDidLoadResourceFromMemoryCache(m_documentLoader.get(), newRequest, resource.response(), resource.encodedSize())) { 3631 3629 InspectorInstrumentation::didLoadResourceFromMemoryCache(*page, m_documentLoader.get(), &resource); 3632 3630 m_documentLoader->didTellClientAboutLoad(resource.url()); … … 3780 3778 if (CachedPage* cachedPage = BackForwardCache::singleton().get(item, m_frame.page())) { 3781 3779 auto documentLoader = cachedPage->documentLoader(); 3782 m_client .updateCachedDocumentLoader(*documentLoader);3780 m_client->updateCachedDocumentLoader(*documentLoader); 3783 3781 3784 3782 auto action = NavigationAction { *m_frame.document(), documentLoader->request(), initiatedByMainFrame, loadType, false }; … … 3913 3911 ResourceError FrameLoader::cancelledError(const ResourceRequest& request) const 3914 3912 { 3915 ResourceError error = m_client .cancelledError(request);3913 ResourceError error = m_client->cancelledError(request); 3916 3914 error.setType(ResourceError::Type::Cancellation); 3917 3915 return error; … … 3920 3918 ResourceError FrameLoader::blockedByContentBlockerError(const ResourceRequest& request) const 3921 3919 { 3922 return m_client .blockedByContentBlockerError(request);3920 return m_client->blockedByContentBlockerError(request); 3923 3921 } 3924 3922 3925 3923 ResourceError FrameLoader::blockedError(const ResourceRequest& request) const 3926 3924 { 3927 ResourceError error = m_client .blockedError(request);3925 ResourceError error = m_client->blockedError(request); 3928 3926 error.setType(ResourceError::Type::Cancellation); 3929 3927 return error; … … 3933 3931 ResourceError FrameLoader::blockedByContentFilterError(const ResourceRequest& request) const 3934 3932 { 3935 ResourceError error = m_client .blockedByContentFilterError(request);3933 ResourceError error = m_client->blockedByContentFilterError(request); 3936 3934 error.setType(ResourceError::Type::General); 3937 3935 return error; … … 3942 3940 RetainPtr<CFDictionaryRef> FrameLoader::connectionProperties(ResourceLoader* loader) 3943 3941 { 3944 return m_client .connectionProperties(loader->documentLoader(), loader->identifier());3942 return m_client->connectionProperties(loader->documentLoader(), loader->identifier()); 3945 3943 } 3946 3944 #endif … … 3976 3974 return; 3977 3975 3978 m_client .dispatchDidClearWindowObjectInWorld(world);3976 m_client->dispatchDidClearWindowObjectInWorld(world); 3979 3977 3980 3978 if (Page* page = m_frame.page()) … … 3989 3987 ScriptController::getAllWorlds(worlds); 3990 3988 for (auto& world : worlds) 3991 m_client .dispatchGlobalObjectAvailable(world);3989 m_client->dispatchGlobalObjectAvailable(world); 3992 3990 } 3993 3991 … … 4004 4002 void FrameLoader::didChangeTitle(DocumentLoader* loader) 4005 4003 { 4006 m_client .didChangeTitle(loader);4004 m_client->didChangeTitle(loader); 4007 4005 4008 4006 if (loader == m_documentLoader) { … … 4010 4008 history().setCurrentItemTitle(loader->title()); 4011 4009 // This must go through the WebFrame because it has the right notion of the current b/f item. 4012 m_client .setTitle(loader->title(), loader->urlForHistory());4013 m_client .setMainFrameDocumentReady(true); // update observers with new DOMDocument4014 m_client .dispatchDidReceiveTitle(loader->title());4010 m_client->setTitle(loader->title(), loader->urlForHistory()); 4011 m_client->setMainFrameDocumentReady(true); // update observers with new DOMDocument 4012 m_client->dispatchDidReceiveTitle(loader->title()); 4015 4013 } 4016 4014 … … 4026 4024 return; 4027 4025 4028 m_client .dispatchDidCommitLoad(initialHasInsecureContent, initialUsedLegacyTLS);4026 m_client->dispatchDidCommitLoad(initialHasInsecureContent, initialUsedLegacyTLS); 4029 4027 4030 4028 if (m_frame.isMainFrame()) { … … 4063 4061 4064 4062 ResourceRequest request(resource->url()); 4065 m_client .dispatchDidLoadResourceFromMemoryCache(m_documentLoader.get(), request, resource->response(), resource->encodedSize());4063 m_client->dispatchDidLoadResourceFromMemoryCache(m_documentLoader.get(), request, resource->response(), resource->encodedSize()); 4066 4064 } 4067 4065 } … … 4080 4078 void FrameLoader::completePageTransitionIfNeeded() 4081 4079 { 4082 m_client .completePageTransitionIfNeeded();4080 m_client->completePageTransitionIfNeeded(); 4083 4081 } 4084 4082 -
trunk/Source/WebCore/loader/FrameLoader.h
r258549 r258628 53 53 #include <wtf/OptionSet.h> 54 54 #include <wtf/Optional.h> 55 #include <wtf/UniqueRef.h> 55 56 #include <wtf/WallTime.h> 56 57 … … 103 104 WTF_MAKE_NONCOPYABLE(FrameLoader); 104 105 public: 105 FrameLoader(Frame&, FrameLoaderClient&);106 FrameLoader(Frame&, UniqueRef<FrameLoaderClient>&&); 106 107 ~FrameLoader(); 107 108 … … 228 229 static void addSameSiteInfoToRequestIfNeeded(ResourceRequest&, const Document* initiator = nullptr); 229 230 230 FrameLoaderClient& client() const { return m_client; } 231 const FrameLoaderClient& client() const { return m_client.get(); } 232 FrameLoaderClient& client() { return m_client.get(); } 231 233 232 234 WEBCORE_EXPORT Optional<PageIdentifier> pageID() const; … … 425 427 426 428 Frame& m_frame; 427 FrameLoaderClient&m_client;429 UniqueRef<FrameLoaderClient> m_client; 428 430 429 431 const std::unique_ptr<PolicyChecker> m_policyChecker; -
trunk/Source/WebCore/loader/FrameLoaderClient.h
r258549 r258628 121 121 virtual ~FrameLoaderClient() = default; 122 122 123 virtual void frameLoaderDestroyed() = 0;124 125 123 virtual bool hasWebView() const = 0; // mainly for assertions 126 124 … … 239 237 virtual void didDetectXSS(const URL&, bool didBlockEntirePage) = 0; 240 238 241 virtual ResourceError cancelledError(const ResourceRequest&) = 0;242 virtual ResourceError blockedError(const ResourceRequest&) = 0;243 virtual ResourceError blockedByContentBlockerError(const ResourceRequest&) = 0;244 virtual ResourceError cannotShowURLError(const ResourceRequest&) = 0;245 virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&) = 0;239 virtual ResourceError cancelledError(const ResourceRequest&) const = 0; 240 virtual ResourceError blockedError(const ResourceRequest&) const = 0; 241 virtual ResourceError blockedByContentBlockerError(const ResourceRequest&) const = 0; 242 virtual ResourceError cannotShowURLError(const ResourceRequest&) const = 0; 243 virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&) const = 0; 246 244 #if ENABLE(CONTENT_FILTERING) 247 virtual ResourceError blockedByContentFilterError(const ResourceRequest&) = 0;248 #endif 249 250 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) = 0;251 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) = 0;252 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) = 0;253 254 virtual bool shouldFallBack(const ResourceError&) = 0;245 virtual ResourceError blockedByContentFilterError(const ResourceRequest&) const = 0; 246 #endif 247 248 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) const = 0; 249 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) const = 0; 250 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) const = 0; 251 252 virtual bool shouldFallBack(const ResourceError&) const = 0; 255 253 256 254 virtual bool canHandleRequest(const ResourceRequest&) const = 0; … … 271 269 virtual void setTitle(const StringWithDirection&, const URL&) = 0; 272 270 273 virtual String userAgent(const URL&) = 0;271 virtual String userAgent(const URL&) const = 0; 274 272 275 273 virtual String overrideContentSecurityPolicy() const { return String(); } -
trunk/Source/WebCore/page/Frame.cpp
r258549 r258628 144 144 } 145 145 146 Frame::Frame(Page& page, HTMLFrameOwnerElement* ownerElement, FrameLoaderClient& frameLoaderClient)146 Frame::Frame(Page& page, HTMLFrameOwnerElement* ownerElement, UniqueRef<FrameLoaderClient>&& frameLoaderClient) 147 147 : m_mainFrame(ownerElement ? page.mainFrame() : *this) 148 148 , m_page(&page) 149 149 , m_settings(&page.settings()) 150 150 , m_treeNode(*this, parentFromOwnerElement(ownerElement)) 151 , m_loader(makeUniqueRef<FrameLoader>(*this, frameLoaderClient))151 , m_loader(makeUniqueRef<FrameLoader>(*this, WTFMove(frameLoaderClient))) 152 152 , m_navigationScheduler(makeUniqueRef<NavigationScheduler>(*this)) 153 153 , m_ownerElement(ownerElement) … … 183 183 } 184 184 185 Ref<Frame> Frame::create(Page* page, HTMLFrameOwnerElement* ownerElement, FrameLoaderClient*client)185 Ref<Frame> Frame::create(Page* page, HTMLFrameOwnerElement* ownerElement, UniqueRef<FrameLoaderClient>&& client) 186 186 { 187 187 ASSERT(page); 188 ASSERT(client); 189 return adoptRef(*new Frame(*page, ownerElement, *client)); 188 return adoptRef(*new Frame(*page, ownerElement, WTFMove(client))); 190 189 } 191 190 -
trunk/Source/WebCore/page/Frame.h
r258549 r258628 127 127 class Frame final : public AbstractFrame { 128 128 public: 129 WEBCORE_EXPORT static Ref<Frame> create(Page*, HTMLFrameOwnerElement*, FrameLoaderClient*);129 WEBCORE_EXPORT static Ref<Frame> create(Page*, HTMLFrameOwnerElement*, UniqueRef<FrameLoaderClient>&&); 130 130 131 131 WEBCORE_EXPORT void init(); … … 308 308 friend class NavigationDisabler; 309 309 310 Frame(Page&, HTMLFrameOwnerElement*, FrameLoaderClient&);310 Frame(Page&, HTMLFrameOwnerElement*, UniqueRef<FrameLoaderClient>&&); 311 311 312 312 void dropChildren(); -
trunk/Source/WebCore/page/Page.cpp
r258549 r258628 232 232 , m_progress(makeUnique<ProgressTracker>(WTFMove(pageConfiguration.progressTrackerClient))) 233 233 , m_backForwardController(makeUnique<BackForwardController>(*this, WTFMove(pageConfiguration.backForwardClient))) 234 , m_mainFrame(Frame::create(this, nullptr, pageConfiguration.loaderClientForMainFrame))234 , m_mainFrame(Frame::create(this, nullptr, WTFMove(pageConfiguration.loaderClientForMainFrame))) 235 235 , m_editorClient(WTFMove(pageConfiguration.editorClient)) 236 236 , m_plugInClient(WTFMove(pageConfiguration.plugInClient)) -
trunk/Source/WebCore/page/PageConfiguration.cpp
r258549 r258628 57 57 namespace WebCore { 58 58 59 PageConfiguration::PageConfiguration(PAL::SessionID sessionID, UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider, Ref<CacheStorageProvider>&& cacheStorageProvider, Ref<BackForwardClient>&& backForwardClient, Ref<CookieJar>&& cookieJar, UniqueRef<ProgressTrackerClient>&& progressTrackerClient, UniqueRef< MediaRecorderProvider>&& mediaRecorderProvider)59 PageConfiguration::PageConfiguration(PAL::SessionID sessionID, UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider, Ref<CacheStorageProvider>&& cacheStorageProvider, Ref<BackForwardClient>&& backForwardClient, Ref<CookieJar>&& cookieJar, UniqueRef<ProgressTrackerClient>&& progressTrackerClient, UniqueRef<FrameLoaderClient>&& loaderClientForMainFrame, UniqueRef<MediaRecorderProvider>&& mediaRecorderProvider) 60 60 : sessionID(sessionID) 61 61 , editorClient(WTFMove(editorClient)) … … 65 65 , backForwardClient(WTFMove(backForwardClient)) 66 66 , cookieJar(WTFMove(cookieJar)) 67 , loaderClientForMainFrame(WTFMove(loaderClientForMainFrame)) 67 68 , cacheStorageProvider(WTFMove(cacheStorageProvider)) 68 69 , mediaRecorderProvider(WTFMove(mediaRecorderProvider)) -
trunk/Source/WebCore/page/PageConfiguration.h
r258549 r258628 72 72 WTF_MAKE_NONCOPYABLE(PageConfiguration); WTF_MAKE_FAST_ALLOCATED; 73 73 public: 74 WEBCORE_EXPORT PageConfiguration(PAL::SessionID, UniqueRef<EditorClient>&&, Ref<SocketProvider>&&, UniqueRef<LibWebRTCProvider>&&, Ref<CacheStorageProvider>&&, Ref<BackForwardClient>&&, Ref<CookieJar>&&, UniqueRef<ProgressTrackerClient>&&, UniqueRef< MediaRecorderProvider>&&);74 WEBCORE_EXPORT PageConfiguration(PAL::SessionID, UniqueRef<EditorClient>&&, Ref<SocketProvider>&&, UniqueRef<LibWebRTCProvider>&&, Ref<CacheStorageProvider>&&, Ref<BackForwardClient>&&, Ref<CookieJar>&&, UniqueRef<ProgressTrackerClient>&&, UniqueRef<FrameLoaderClient>&&, UniqueRef<MediaRecorderProvider>&&); 75 75 WEBCORE_EXPORT ~PageConfiguration(); 76 76 PageConfiguration(PageConfiguration&&); … … 105 105 Ref<CookieJar> cookieJar; 106 106 std::unique_ptr<ValidationMessageClient> validationMessageClient; 107 FrameLoaderClient* loaderClientForMainFrame { nullptr };107 UniqueRef<FrameLoaderClient> loaderClientForMainFrame; 108 108 std::unique_ptr<DiagnosticLoggingClient> diagnosticLoggingClient; 109 109 std::unique_ptr<PerformanceLoggingClient> performanceLoggingClient; -
trunk/Source/WebCore/workers/service/context/SWContextManager.cpp
r258549 r258628 183 183 } 184 184 185 void SWContextManager::addServiceWorkerFrameLoaderClient(std::unique_ptr<FrameLoaderClient>&& client)186 {187 m_serviceWorkerFrameLoaderClients.add(WTFMove(client));188 }189 190 void SWContextManager::removeServiceWorkerFrameLoaderClient(FrameLoaderClient& client)191 {192 ASSERT(m_serviceWorkerFrameLoaderClients.contains(&client));193 m_serviceWorkerFrameLoaderClients.remove(&client);194 }195 196 185 } // namespace WebCore 197 186 -
trunk/Source/WebCore/workers/service/context/SWContextManager.h
r258549 r258628 38 38 namespace WebCore { 39 39 40 class FrameLoaderClient;41 40 class SerializedScriptValue; 42 41 class ServiceWorkerGlobalScope; … … 104 103 WEBCORE_EXPORT void stopAllServiceWorkers(); 105 104 106 WEBCORE_EXPORT void addServiceWorkerFrameLoaderClient(std::unique_ptr<FrameLoaderClient>&&);107 WEBCORE_EXPORT void removeServiceWorkerFrameLoaderClient(FrameLoaderClient&);108 109 105 static constexpr Seconds workerTerminationTimeout { 10_s }; 110 106 static constexpr Seconds syncWorkerTerminationTimeout { 100_ms }; // Only used by layout tests. … … 131 127 }; 132 128 HashMap<ServiceWorkerIdentifier, std::unique_ptr<ServiceWorkerTerminationRequest>> m_pendingServiceWorkerTerminationRequests; 133 HashSet<std::unique_ptr<FrameLoaderClient>> m_serviceWorkerFrameLoaderClients;134 129 }; 135 130 -
trunk/Source/WebKit/ChangeLog
r258620 r258628 1 2020-03-18 youenn fablet <youenn@apple.com> 2 3 FrameLoader should own its FrameLoaderClient 4 https://bugs.webkit.org/show_bug.cgi?id=208918 5 6 Reviewed by Geoff Garen. 7 8 Pass a UniqueRef to the PageConfiguration. 9 Update WebFrameLoaderClient according updated FrameLoaderClient interface. 10 11 WebFrame no longer needs to ref/unref itself to keep the loader client alive. 12 Update WebFrame construction to not need a static_cast at initialization of the main frame. 13 14 The ownership is now that a WebCore::FrameLoader owns a FrameLoaderClient who owns a WebFrame. 15 16 * WebProcess/Network/WebLoaderStrategy.cpp: 17 (WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler): 18 (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): 19 (WebKit::WebLoaderStrategy::tryLoadingSynchronouslyUsingURLSchemeHandler): 20 (WebKit::WebLoaderStrategy::loadResourceSynchronously): 21 (WebKit::WebLoaderStrategy::startPingLoad): 22 (WebKit::WebLoaderStrategy::preconnectTo): 23 * WebProcess/Storage/WebSWContextManagerConnection.cpp: 24 (WebKit::WebSWContextManagerConnection::installServiceWorker): 25 * WebProcess/Storage/WebSWContextManagerConnection.h: 26 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 27 (WebKit::WebFrameLoaderClient::WebFrameLoaderClient): 28 (WebKit::WebFrameLoaderClient::~WebFrameLoaderClient): 29 (WebKit::WebFrameLoaderClient::webPageProxyID const): 30 (WebKit::WebFrameLoaderClient::pageID const): 31 (WebKit::WebFrameLoaderClient::frameID const): 32 (WebKit::WebFrameLoaderClient::detachedFromParent2): 33 (WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest): 34 (WebKit::WebFrameLoaderClient::dispatchWillSendRequest): 35 (WebKit::WebFrameLoaderClient::shouldUseCredentialStorage): 36 (WebKit::WebFrameLoaderClient::dispatchDidReceiveResponse): 37 (WebKit::WebFrameLoaderClient::dispatchDidReceiveContentLength): 38 (WebKit::WebFrameLoaderClient::dispatchDidFinishLoading): 39 (WebKit::WebFrameLoaderClient::dispatchDidFailLoading): 40 (WebKit::WebFrameLoaderClient::dispatchDidDispatchOnloadEvents): 41 (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): 42 (WebKit::WebFrameLoaderClient::dispatchDidCancelClientRedirect): 43 (WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect): 44 (WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage): 45 (WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage): 46 (WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage): 47 (WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage): 48 (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad): 49 (WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle): 50 (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad): 51 (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad): 52 (WebKit::WebFrameLoaderClient::dispatchDidFailLoad): 53 (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad): 54 (WebKit::WebFrameLoaderClient::dispatchDidFinishLoad): 55 (WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone): 56 (WebKit::WebFrameLoaderClient::dispatchDidLayout): 57 (WebKit::WebFrameLoaderClient::dispatchShow): 58 (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse): 59 (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): 60 (WebKit::WebFrameLoaderClient::applyToDocumentLoader): 61 (WebKit::WebFrameLoaderClient::allowsContentJavaScriptFromMostRecentNavigation const): 62 (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 63 (WebKit::WebFrameLoaderClient::dispatchUnableToImplementPolicy): 64 (WebKit::WebFrameLoaderClient::dispatchWillSendSubmitEvent): 65 (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm): 66 (WebKit::WebFrameLoaderClient::willReplaceMultipartContent): 67 (WebKit::WebFrameLoaderClient::didReplaceMultipartContent): 68 (WebKit::WebFrameLoaderClient::didDisplayInsecureContent): 69 (WebKit::WebFrameLoaderClient::didRunInsecureContent): 70 (WebKit::WebFrameLoaderClient::didDetectXSS): 71 (WebKit::WebFrameLoaderClient::cancelledError const): 72 (WebKit::WebFrameLoaderClient::blockedError const): 73 (WebKit::WebFrameLoaderClient::blockedByContentBlockerError const): 74 (WebKit::WebFrameLoaderClient::cannotShowURLError const): 75 (WebKit::WebFrameLoaderClient::interruptedForPolicyChangeError const): 76 (WebKit::WebFrameLoaderClient::blockedByContentFilterError const): 77 (WebKit::WebFrameLoaderClient::cannotShowMIMETypeError const): 78 (WebKit::WebFrameLoaderClient::fileDoesNotExistError const): 79 (WebKit::WebFrameLoaderClient::pluginWillHandleLoadError const): 80 (WebKit::WebFrameLoaderClient::shouldFallBack const): 81 (WebKit::WebFrameLoaderClient::restoreViewState): 82 (WebKit::WebFrameLoaderClient::didFinishLoad): 83 (WebKit::WebFrameLoaderClient::userAgent const): 84 (WebKit::WebFrameLoaderClient::createPlugin): 85 (WebKit::WebFrameLoaderClient::webGLPolicyForURL const): 86 (WebKit::WebFrameLoaderClient::resolveWebGLPolicyForURL const): 87 (WebKit::WebFrameLoaderClient::objectContentType): 88 (WebKit::WebFrameLoaderClient::overrideMediaType const): 89 (WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld): 90 (WebKit::WebFrameLoaderClient::dispatchGlobalObjectAvailable): 91 (WebKit::WebFrameLoaderClient::willInjectUserScript): 92 (WebKit::WebFrameLoaderClient::willCacheResponse const): 93 (WebKit::WebFrameLoaderClient::createNetworkingContext): 94 * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 95 * WebProcess/WebPage/WebFrame.cpp: 96 (WebKit::WebFrame::initWithCoreMainFrame): 97 (WebKit::WebFrame::createSubframe): 98 (WebKit::WebFrame::WebFrame): 99 (WebKit::WebFrame::frameLoaderClient const): 100 (WebKit::WebFrame::fromCoreFrame): 101 (WebKit::WebFrame::didReceivePolicyDecision): 102 * WebProcess/WebPage/WebFrame.h: 103 (WebKit::WebFrame::create): 104 * WebProcess/WebPage/WebPage.cpp: 105 (WebKit::m_processDisplayName): 106 1 107 2020-03-17 David Kilzer <ddkilzer@apple.com> 2 108 -
trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
r258549 r258628 244 244 return false; 245 245 246 auto* webFrame = webFrameLoaderClient->webFrame(); 247 if (!webFrame) 248 return false; 249 250 auto* webPage = webFrame->page(); 246 auto& webFrame = webFrameLoaderClient->webFrame(); 247 auto* webPage = webFrame.page(); 251 248 if (!webPage) 252 249 return false; … … 259 256 WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("tryLoadingUsingURLSchemeHandler: URL will be handled by a UIProcess URL scheme handler"); 260 257 261 handler->startNewTask(resourceLoader, *webFrame);258 handler->startNewTask(resourceLoader, webFrame); 262 259 return true; 263 260 } … … 331 328 332 329 auto* webFrameLoaderClient = frame ? toWebFrameLoaderClient(frame->loader().client()) : nullptr; 333 auto* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : nullptr;330 auto* webFrame = webFrameLoaderClient ? &webFrameLoaderClient->webFrame() : nullptr; 334 331 auto* webPage = webFrame ? webFrame->page() : nullptr; 335 332 if (webPage) … … 534 531 { 535 532 auto* webFrameLoaderClient = toWebFrameLoaderClient(frameLoader.client()); 536 auto* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : nullptr;533 auto* webFrame = webFrameLoaderClient ? &webFrameLoaderClient->webFrame() : nullptr; 537 534 auto* webPage = webFrame ? webFrame->page() : nullptr; 538 535 if (!webPage) … … 554 551 { 555 552 auto* webFrameLoaderClient = toWebFrameLoaderClient(frameLoader.client()); 556 auto* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : nullptr;553 auto* webFrame = webFrameLoaderClient ? &webFrameLoaderClient->webFrame() : nullptr; 557 554 auto* webPage = webFrame ? webFrame->page() : nullptr; 558 555 auto* page = webPage ? webPage->corePage() : nullptr; … … 687 684 688 685 auto* webFrameLoaderClient = toWebFrameLoaderClient(frame.loader().client()); 689 auto* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : nullptr;686 auto* webFrame = webFrameLoaderClient ? &webFrameLoaderClient->webFrame() : nullptr; 690 687 auto* webPage = webFrame ? webFrame->page() : nullptr; 691 688 if (webPage) … … 719 716 return; 720 717 } 721 auto* webFrame = webFrameLoaderClient->webFrame(); 722 if (!webFrame) { 723 completionHandler(internalError(url)); 724 return; 725 } 726 auto* webPage = webFrame->page(); 718 auto& webFrame = webFrameLoaderClient->webFrame(); 719 auto* webPage = webFrame.page(); 727 720 if (!webPage) { 728 721 completionHandler(internalError(url)); … … 730 723 } 731 724 732 preconnectTo(ResourceRequest { url }, *webPage, *webFrame, storedCredentialsPolicy, WTFMove(completionHandler));725 preconnectTo(ResourceRequest { url }, *webPage, webFrame, storedCredentialsPolicy, WTFMove(completionHandler)); 733 726 } 734 727 -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
r258549 r258628 74 74 75 75 76 ServiceWorkerFrameLoaderClient& ServiceWorkerFrameLoaderClient::create(WebPageProxyIdentifier webPageProxyID, PageIdentifier pageID, FrameIdentifier frameID, const String& userAgent)77 {78 auto frameLoaderClient = std::unique_ptr<ServiceWorkerFrameLoaderClient>(new ServiceWorkerFrameLoaderClient(webPageProxyID, pageID, frameID, userAgent));79 auto& client = *frameLoaderClient;80 SWContextManager::singleton().addServiceWorkerFrameLoaderClient(WTFMove(frameLoaderClient));81 return client;82 }83 84 76 ServiceWorkerFrameLoaderClient::ServiceWorkerFrameLoaderClient(WebPageProxyIdentifier webPageProxyID, PageIdentifier pageID, FrameIdentifier frameID, const String& userAgent) 85 77 : m_webPageProxyID(webPageProxyID) … … 88 80 , m_userAgent(userAgent) 89 81 { 90 }91 92 void ServiceWorkerFrameLoaderClient::frameLoaderDestroyed()93 {94 SWContextManager::singleton().removeServiceWorkerFrameLoaderClient(*this);95 82 } 96 83 … … 163 150 effectiveUserAgent = m_userAgent; 164 151 165 pageConfiguration.loaderClientForMainFrame = &ServiceWorkerFrameLoaderClient::create(m_webPageProxyID, m_pageID, FrameIdentifier::generate(), effectiveUserAgent);152 pageConfiguration.loaderClientForMainFrame = makeUniqueRef<ServiceWorkerFrameLoaderClient>(m_webPageProxyID, m_pageID, FrameIdentifier::generate(), effectiveUserAgent); 166 153 167 154 auto serviceWorkerThreadProxy = ServiceWorkerThreadProxy::create(WTFMove(pageConfiguration), data, WTFMove(effectiveUserAgent), WebProcess::singleton().cacheStorageProvider(), m_storageBlockingPolicy); -
trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h
r258549 r258628 118 118 class ServiceWorkerFrameLoaderClient final : public WebCore::EmptyFrameLoaderClient { 119 119 public: 120 static ServiceWorkerFrameLoaderClient& create(WebPageProxyIdentifier, WebCore::PageIdentifier, WebCore::FrameIdentifier, const String& userAgent);120 ServiceWorkerFrameLoaderClient(WebPageProxyIdentifier, WebCore::PageIdentifier, WebCore::FrameIdentifier, const String& userAgent); 121 121 122 122 WebPageProxyIdentifier webPageProxyID() const { return m_webPageProxyID; } … … 125 125 126 126 private: 127 ServiceWorkerFrameLoaderClient(WebPageProxyIdentifier, WebCore::PageIdentifier, WebCore::FrameIdentifier, const String& userAgent);128 129 127 Ref<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&) final; 130 131 void frameLoaderDestroyed() final;132 128 133 129 Optional<WebCore::PageIdentifier> pageID() const final { return m_pageID; } … … 137 133 bool isServiceWorkerFrameLoaderClient() const final { return true; } 138 134 139 String userAgent(const URL&) final { return m_userAgent; }135 String userAgent(const URL&) const final { return m_userAgent; } 140 136 141 137 WebPageProxyIdentifier m_webPageProxyID; -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r258549 r258628 97 97 98 98 #define PREFIX_PARAMETERS "%p - [webFrame=%p, webFrameID=%" PRIu64 ", webPage=%p, webPageID=%" PRIu64 "] WebFrameLoaderClient::" 99 #define WEBFRAME ( webFrame())100 #define WEBFRAMEID ( WEBFRAME ? WEBFRAME->frameID().toUInt64() : 0)101 #define WEBPAGE ( WEBFRAME ? WEBFRAME->page() : nullptr)99 #define WEBFRAME (&webFrame()) 100 #define WEBFRAMEID (webFrame().frameID().toUInt64()) 101 #define WEBPAGE (webFrame().page()) 102 102 #define WEBPAGEID (WEBPAGE ? WEBPAGE->identifier().toUInt64() : 0) 103 103 … … 109 109 using namespace WebCore; 110 110 111 WebFrameLoaderClient::WebFrameLoaderClient() 112 : m_frame(0) 113 , m_hasSentResponseToPluginView(false) 114 , m_didCompletePageTransition(false) 115 , m_frameHasCustomContentProvider(false) 116 , m_frameCameFromBackForwardCache(false) 111 WebFrameLoaderClient::WebFrameLoaderClient(Ref<WebFrame>&& frame) 112 : m_frame(WTFMove(frame)) 117 113 { 118 114 } … … 120 116 WebFrameLoaderClient::~WebFrameLoaderClient() 121 117 { 118 m_frame->invalidate(); 122 119 } 123 120 124 121 Optional<WebPageProxyIdentifier> WebFrameLoaderClient::webPageProxyID() const 125 122 { 126 if (m_frame && m_frame->page())123 if (m_frame->page()) 127 124 return m_frame->page()->webPageProxyIdentifier(); 128 125 … … 132 129 Optional<PageIdentifier> WebFrameLoaderClient::pageID() const 133 130 { 134 if (m_frame && m_frame->page())131 if (m_frame->page()) 135 132 return m_frame->page()->identifier(); 136 133 … … 140 137 Optional<FrameIdentifier> WebFrameLoaderClient::frameID() const 141 138 { 142 if (m_frame) 143 return m_frame->frameID(); 144 145 return WTF::nullopt; 139 return m_frame->frameID(); 146 140 } 147 141 … … 164 158 165 159 #endif 166 167 void WebFrameLoaderClient::frameLoaderDestroyed()168 {169 m_frame->invalidate();170 171 // Balances explicit ref() in WebFrame::create().172 m_frame->deref();173 }174 160 175 161 bool WebFrameLoaderClient::hasHTMLView() const … … 215 201 216 202 // Notify the bundle client. 217 webPage->injectedBundleLoaderClient().didRemoveFrameFromHierarchy(*webPage, *m_frame, userData);203 webPage->injectedBundleLoaderClient().didRemoveFrameFromHierarchy(*webPage, m_frame, userData); 218 204 } 219 205 … … 233 219 pageIsProvisionallyLoading = frameLoader->provisionalDocumentLoader() == loader; 234 220 235 webPage->injectedBundleResourceLoadClient().didInitiateLoadForResource(*webPage, *m_frame, identifier, request, pageIsProvisionallyLoading);221 webPage->injectedBundleResourceLoadClient().didInitiateLoadForResource(*webPage, m_frame, identifier, request, pageIsProvisionallyLoading); 236 222 webPage->addResourceRequest(identifier, request); 237 223 } … … 246 232 // is kept, so that if this is a main resource load it's still considered as such. 247 233 auto requester = request.requester(); 248 webPage->injectedBundleResourceLoadClient().willSendRequestForFrame(*webPage, *m_frame, identifier, request, redirectResponse);234 webPage->injectedBundleResourceLoadClient().willSendRequestForFrame(*webPage, m_frame, identifier, request, redirectResponse); 249 235 if (!request.isNull()) 250 236 request.setRequester(requester); … … 257 243 return true; 258 244 259 return webPage->injectedBundleResourceLoadClient().shouldUseCredentialStorage(*webPage, *m_frame, identifier);245 return webPage->injectedBundleResourceLoadClient().shouldUseCredentialStorage(*webPage, m_frame, identifier); 260 246 } 261 247 … … 280 266 return; 281 267 282 webPage->injectedBundleResourceLoadClient().didReceiveResponseForResource(*webPage, *m_frame, identifier, response);268 webPage->injectedBundleResourceLoadClient().didReceiveResponseForResource(*webPage, m_frame, identifier, response); 283 269 } 284 270 … … 289 275 return; 290 276 291 webPage->injectedBundleResourceLoadClient().didReceiveContentLengthForResource(*webPage, *m_frame, identifier, dataLength);277 webPage->injectedBundleResourceLoadClient().didReceiveContentLengthForResource(*webPage, m_frame, identifier, dataLength); 292 278 } 293 279 … … 308 294 return; 309 295 310 webPage->injectedBundleResourceLoadClient().didFinishLoadForResource(*webPage, *m_frame, identifier);296 webPage->injectedBundleResourceLoadClient().didFinishLoadForResource(*webPage, m_frame, identifier); 311 297 webPage->removeResourceRequest(identifier); 312 298 } … … 318 304 return; 319 305 320 webPage->injectedBundleResourceLoadClient().didFailLoadForResource(*webPage, *m_frame, identifier, error);306 webPage->injectedBundleResourceLoadClient().didFailLoadForResource(*webPage, m_frame, identifier, error); 321 307 webPage->removeResourceRequest(identifier); 322 308 } … … 335 321 336 322 // Notify the bundle client. 337 webPage->injectedBundleLoaderClient().didHandleOnloadEventsForFrame(*webPage, *m_frame);323 webPage->injectedBundleLoaderClient().didHandleOnloadEventsForFrame(*webPage, m_frame); 338 324 } 339 325 … … 355 341 356 342 // Notify the bundle client. 357 webPage->injectedBundleLoaderClient().didReceiveServerRedirectForProvisionalLoadForFrame(*webPage, *m_frame, userData);343 webPage->injectedBundleLoaderClient().didReceiveServerRedirectForProvisionalLoadForFrame(*webPage, m_frame, userData); 358 344 359 345 // Notify the UIProcess. … … 378 364 379 365 // Notify the bundle client. 380 webPage->injectedBundleLoaderClient().didCancelClientRedirectForFrame(*webPage, *m_frame);366 webPage->injectedBundleLoaderClient().didCancelClientRedirectForFrame(*webPage, m_frame); 381 367 382 368 // Notify the UIProcess. … … 391 377 392 378 // Notify the bundle client. 393 webPage->injectedBundleLoaderClient().willPerformClientRedirectForFrame(*webPage, *m_frame, url, interval, fireDate);379 webPage->injectedBundleLoaderClient().willPerformClientRedirectForFrame(*webPage, m_frame, url, interval, fireDate); 394 380 395 381 // Notify the UIProcess. … … 408 394 409 395 // Notify the bundle client. 410 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, *m_frame, SameDocumentNavigationAnchorNavigation, userData);396 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, m_frame, SameDocumentNavigationAnchorNavigation, userData); 411 397 412 398 // Notify the UIProcess. … … 452 438 453 439 // Notify the bundle client. 454 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, *m_frame, SameDocumentNavigationSessionStatePush, userData);440 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, m_frame, SameDocumentNavigationSessionStatePush, userData); 455 441 456 442 // Notify the UIProcess. … … 469 455 470 456 // Notify the bundle client. 471 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, *m_frame, SameDocumentNavigationSessionStateReplace, userData);457 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, m_frame, SameDocumentNavigationSessionStateReplace, userData); 472 458 473 459 // Notify the UIProcess. … … 486 472 487 473 // Notify the bundle client. 488 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, *m_frame, SameDocumentNavigationSessionStatePop, userData);474 webPage->injectedBundleLoaderClient().didSameDocumentNavigationForFrame(*webPage, m_frame, SameDocumentNavigationSessionStatePop, userData); 489 475 490 476 // Notify the UIProcess. … … 520 506 521 507 webPage->findController().hideFindUI(); 522 webPage->sandboxExtensionTracker().didStartProvisionalLoad(m_frame );508 webPage->sandboxExtensionTracker().didStartProvisionalLoad(m_frame.ptr()); 523 509 524 510 WebDocumentLoader& provisionalLoader = static_cast<WebDocumentLoader&>(*m_frame->coreFrame()->loader().provisionalDocumentLoader()); … … 527 513 528 514 // Notify the bundle client. 529 webPage->injectedBundleLoaderClient().didStartProvisionalLoadForFrame(*webPage, *m_frame, userData);515 webPage->injectedBundleLoaderClient().didStartProvisionalLoadForFrame(*webPage, m_frame, userData); 530 516 531 517 auto& unreachableURL = provisionalLoader.unreachableURL(); … … 549 535 // Notify the bundle client. 550 536 // FIXME: Use direction of title. 551 webPage->injectedBundleLoaderClient().didReceiveTitleForFrame(*webPage, truncatedTitle.string, *m_frame, userData);537 webPage->injectedBundleLoaderClient().didReceiveTitleForFrame(*webPage, truncatedTitle.string, m_frame, userData); 552 538 553 539 // Notify the UIProcess. … … 565 551 566 552 // Notify the bundle client. 567 webPage->injectedBundleLoaderClient().didCommitLoadForFrame(*webPage, *m_frame, userData);568 569 webPage->sandboxExtensionTracker().didCommitProvisionalLoad(m_frame );553 webPage->injectedBundleLoaderClient().didCommitLoadForFrame(*webPage, m_frame, userData); 554 555 webPage->sandboxExtensionTracker().didCommitProvisionalLoad(m_frame.ptr()); 570 556 571 557 bool usedLegacyTLS = documentLoader.response().usedLegacyTLS(); … … 575 561 // Notify the UIProcess. 576 562 webPage->send(Messages::WebPageProxy::DidCommitLoadForFrame(m_frame->frameID(), m_frame->info(), documentLoader.request(), documentLoader.navigationID(), documentLoader.response().mimeType(), m_frameHasCustomContentProvider, static_cast<uint32_t>(m_frame->coreFrame()->loader().loadType()), valueOrCompute(documentLoader.response().certificateInfo(), [] { return CertificateInfo(); }), usedLegacyTLS, m_frame->coreFrame()->document()->isPluginDocument(), hasInsecureContent, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); 577 webPage->didCommitLoad(m_frame );563 webPage->didCommitLoad(m_frame.ptr()); 578 564 } 579 565 … … 589 575 590 576 // Notify the bundle client. 591 webPage->injectedBundleLoaderClient().didFailProvisionalLoadWithErrorForFrame(*webPage, *m_frame, error, userData);592 593 webPage->sandboxExtensionTracker().didFailProvisionalLoad(m_frame );577 webPage->injectedBundleLoaderClient().didFailProvisionalLoadWithErrorForFrame(*webPage, m_frame, error, userData); 578 579 webPage->sandboxExtensionTracker().didFailProvisionalLoad(m_frame.ptr()); 594 580 595 581 // FIXME: This is gross. This is necessary because if the client calls WKBundlePageStopLoading() from within the didFailProvisionalLoadWithErrorForFrame … … 614 600 // If we have a load listener, notify it. 615 601 if (WebFrame::LoadListener* loadListener = m_frame->loadListener()) 616 loadListener->didFailLoad(m_frame , error.isCancellation());602 loadListener->didFailLoad(m_frame.ptr(), error.isCancellation()); 617 603 } 618 604 … … 631 617 632 618 // Notify the bundle client. 633 webPage->injectedBundleLoaderClient().didFailLoadWithErrorForFrame(*webPage, *m_frame, error, userData);619 webPage->injectedBundleLoaderClient().didFailLoadWithErrorForFrame(*webPage, m_frame, error, userData); 634 620 635 621 // Notify the UIProcess. … … 638 624 // If we have a load listener, notify it. 639 625 if (WebFrame::LoadListener* loadListener = m_frame->loadListener()) 640 loadListener->didFailLoad(m_frame , error.isCancellation());626 loadListener->didFailLoad(m_frame.ptr(), error.isCancellation()); 641 627 } 642 628 … … 652 638 653 639 // Notify the bundle client. 654 webPage->injectedBundleLoaderClient().didFinishDocumentLoadForFrame(*webPage, *m_frame, userData);640 webPage->injectedBundleLoaderClient().didFinishDocumentLoadForFrame(*webPage, m_frame, userData); 655 641 656 642 // Notify the UIProcess. 657 643 webPage->send(Messages::WebPageProxy::DidFinishDocumentLoadForFrame(m_frame->frameID(), navigationID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); 658 644 659 webPage->didFinishDocumentLoad( *m_frame);645 webPage->didFinishDocumentLoad(m_frame); 660 646 } 661 647 … … 672 658 673 659 // Notify the bundle client. 674 webPage->injectedBundleLoaderClient().didFinishLoadForFrame(*webPage, *m_frame, userData);660 webPage->injectedBundleLoaderClient().didFinishLoadForFrame(*webPage, m_frame, userData); 675 661 676 662 // Notify the UIProcess. … … 679 665 // If we have a load listener, notify it. 680 666 if (WebFrame::LoadListener* loadListener = m_frame->loadListener()) 681 loadListener->didFinishLoad(m_frame );682 683 webPage->didFinishLoad( *m_frame);667 loadListener->didFinishLoad(m_frame.ptr()); 668 669 webPage->didFinishLoad(m_frame); 684 670 } 685 671 … … 711 697 // FIXME: We should consider removing the old didFirstLayout API since this is doing double duty with the 712 698 // new didLayout API. 713 webPage->injectedBundleLoaderClient().didFirstLayoutForFrame(*webPage, *m_frame, userData);699 webPage->injectedBundleLoaderClient().didFirstLayoutForFrame(*webPage, m_frame, userData); 714 700 webPage->send(Messages::WebPageProxy::DidFirstLayoutForFrame(m_frame->frameID(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); 715 701 716 702 #if USE(COORDINATED_GRAPHICS) 717 703 // Make sure viewport properties are dispatched on the main frame by the time the first layout happens. 718 ASSERT(!webPage->useFixedLayout() || m_frame != m_frame->page()->mainWebFrame() || m_frame->coreFrame()->document()->didDispatchViewportPropertiesChanged());704 ASSERT(!webPage->useFixedLayout() || m_frame.ptr() != m_frame->page()->mainWebFrame() || m_frame->coreFrame()->document()->didDispatchViewportPropertiesChanged()); 719 705 #endif 720 706 } … … 750 736 // FIXME: We should consider removing the old didFirstVisuallyNonEmptyLayoutForFrame API since this is doing double duty with the new didLayout API. 751 737 WEBFRAMELOADERCLIENT_RELEASE_LOG(Layout, "dispatchDidReachLayoutMilestone: dispatching DidFirstVisuallyNonEmptyLayoutForFrame"); 752 webPage->injectedBundleLoaderClient().didFirstVisuallyNonEmptyLayoutForFrame(*webPage, *m_frame, userData);738 webPage->injectedBundleLoaderClient().didFirstVisuallyNonEmptyLayoutForFrame(*webPage, m_frame, userData); 753 739 webPage->send(Messages::WebPageProxy::DidFirstVisuallyNonEmptyLayoutForFrame(m_frame->frameID(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); 754 740 } … … 770 756 771 757 // Notify the bundle client. 772 webPage->injectedBundleLoaderClient().didLayoutForFrame(*webPage, *m_frame);758 webPage->injectedBundleLoaderClient().didLayoutForFrame(*webPage, m_frame); 773 759 774 760 webPage->recomputeShortCircuitHorizontalWheelEventsState(); … … 781 767 // the UIProcess for every call. 782 768 783 if (m_frame == m_frame->page()->mainWebFrame()) {769 if (m_frame.ptr() == m_frame->page()->mainWebFrame()) { 784 770 // FIXME: Remove at the soonest possible time. 785 771 webPage->send(Messages::WebPageProxy::SetRenderTreeSize(webPage->renderTreeSize())); … … 804 790 void WebFrameLoaderClient::dispatchShow() 805 791 { 806 WebPage* webPage = m_frame->page();792 auto* webPage = m_frame->page(); 807 793 if (!webPage) 808 794 return; … … 813 799 void WebFrameLoaderClient::dispatchDecidePolicyForResponse(const ResourceResponse& response, const ResourceRequest& request, WebCore::PolicyCheckIdentifier identifier, const String& downloadAttribute, FramePolicyFunction&& function) 814 800 { 815 WebPage* webPage = m_frame ? m_frame->page() : nullptr;801 auto* webPage = m_frame->page(); 816 802 if (!webPage) { 817 803 WEBFRAMELOADERCLIENT_RELEASE_LOG(Network, "dispatchDecidePolicyForResponse: ignoring because there's no web page"); … … 829 815 830 816 // Notify the bundle client. 831 WKBundlePagePolicyAction policy = webPage->injectedBundlePolicyClient().decidePolicyForResponse(webPage, m_frame , response, request, userData);817 WKBundlePagePolicyAction policy = webPage->injectedBundlePolicyClient().decidePolicyForResponse(webPage, m_frame.ptr(), response, request, userData); 832 818 if (policy == WKBundlePagePolicyActionUse) { 833 819 WEBFRAMELOADERCLIENT_RELEASE_LOG(Network, "dispatchDecidePolicyForResponse: continuing because injected bundle says so"); … … 838 824 bool canShowResponse = webPage->canShowResponse(response); 839 825 840 WebCore::Frame* coreFrame = m_frame->coreFrame();826 auto* coreFrame = m_frame->coreFrame(); 841 827 auto* policyDocumentLoader = coreFrame ? coreFrame->loader().provisionalDocumentLoader() : nullptr; 842 828 auto navigationID = policyDocumentLoader ? static_cast<WebDocumentLoader&>(*policyDocumentLoader).navigationID() : 0; 843 844 Ref<WebFrame> protector(*m_frame);829 830 auto protector = m_frame.copyRef(); 845 831 uint64_t listenerID = m_frame->setUpPolicyListener(identifier, WTFMove(function), WebFrame::ForNavigationAction::No); 846 832 if (!webPage->send(Messages::WebPageProxy::DecidePolicyForResponse(m_frame->frameID(), m_frame->info(), identifier, navigationID, response, request, canShowResponse, downloadAttribute, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())))) { … … 853 839 FormState* formState, const String& frameName, WebCore::PolicyCheckIdentifier identifier, FramePolicyFunction&& function) 854 840 { 855 WebPage* webPage = m_frame ? m_frame->page() : nullptr;841 auto* webPage = m_frame->page(); 856 842 if (!webPage) { 857 843 function(PolicyAction::Ignore, identifier); … … 861 847 RefPtr<API::Object> userData; 862 848 863 auto action = InjectedBundleNavigationAction::create(m_frame , navigationAction, formState);864 865 // Notify the bundle client. 866 WKBundlePagePolicyAction policy = webPage->injectedBundlePolicyClient().decidePolicyForNewWindowAction(webPage, m_frame , action.ptr(), request, frameName, userData);849 auto action = InjectedBundleNavigationAction::create(m_frame.ptr(), navigationAction, formState); 850 851 // Notify the bundle client. 852 WKBundlePagePolicyAction policy = webPage->injectedBundlePolicyClient().decidePolicyForNewWindowAction(webPage, m_frame.ptr(), action.ptr(), request, frameName, userData); 867 853 if (policy == WKBundlePagePolicyActionUse) { 868 854 function(PolicyAction::Use, identifier); … … 889 875 void WebFrameLoaderClient::applyToDocumentLoader(WebsitePoliciesData&& websitePolicies) 890 876 { 891 if (!m_frame)892 return;893 877 auto* coreFrame = m_frame->coreFrame(); 894 878 if (!coreFrame) … … 907 891 WebCore::AllowsContentJavaScript WebFrameLoaderClient::allowsContentJavaScriptFromMostRecentNavigation() const 908 892 { 909 WebPage* webPage = m_frame ? m_frame->page() : nullptr;893 auto* webPage = m_frame->page(); 910 894 return webPage ? webPage->allowsContentJavaScriptFromMostRecentNavigation() : WebCore::AllowsContentJavaScript::No; 911 895 } … … 914 898 FormState* formState, PolicyDecisionMode policyDecisionMode, WebCore::PolicyCheckIdentifier requestIdentifier, FramePolicyFunction&& function) 915 899 { 916 WebPage* webPage = m_frame ? m_frame->page() : nullptr;900 auto* webPage = m_frame->page(); 917 901 if (!webPage) { 918 902 function(PolicyAction::Ignore, requestIdentifier); … … 930 914 RefPtr<API::Object> userData; 931 915 932 Ref<InjectedBundleNavigationAction> action = InjectedBundleNavigationAction::create(m_frame , navigationAction, formState);933 934 // Notify the bundle client. 935 WKBundlePagePolicyAction policy = webPage->injectedBundlePolicyClient().decidePolicyForNavigationAction(webPage, m_frame , action.ptr(), request, userData);916 Ref<InjectedBundleNavigationAction> action = InjectedBundleNavigationAction::create(m_frame.ptr(), navigationAction, formState); 917 918 // Notify the bundle client. 919 WKBundlePagePolicyAction policy = webPage->injectedBundlePolicyClient().decidePolicyForNavigationAction(webPage, m_frame.ptr(), action.ptr(), request, userData); 936 920 if (policy == WKBundlePagePolicyActionUse) { 937 921 function(PolicyAction::Use, requestIdentifier); … … 989 973 navigationActionData.adClickAttribution = navigationAction.adClickAttribution(); 990 974 991 WebCore::Frame* coreFrame = m_frame->coreFrame();975 auto* coreFrame = m_frame->coreFrame(); 992 976 if (!coreFrame) 993 977 return function(PolicyAction::Ignore, requestIdentifier); … … 1004 988 1005 989 // Notify the UIProcess. 1006 Ref<WebFrame> protect(*m_frame);990 auto protector = makeRef(*coreFrame); 1007 991 1008 992 if (policyDecisionMode == PolicyDecisionMode::Synchronous) { … … 1037 1021 1038 1022 // Notify the bundle client. 1039 webPage->injectedBundlePolicyClient().unableToImplementPolicy(webPage, m_frame , error, userData);1023 webPage->injectedBundlePolicyClient().unableToImplementPolicy(webPage, m_frame.ptr(), error, userData); 1040 1024 1041 1025 // Notify the UIProcess. … … 1055 1039 ASSERT(sourceFrame); 1056 1040 1057 webPage->injectedBundleFormClient().willSendSubmitEvent(webPage, &form, m_frame , sourceFrame, formState->textFieldValues());1041 webPage->injectedBundleFormClient().willSendSubmitEvent(webPage, &form, m_frame.ptr(), sourceFrame, formState->textFieldValues()); 1058 1042 } 1059 1043 … … 1078 1062 1079 1063 RefPtr<API::Object> userData; 1080 webPage->injectedBundleFormClient().willSubmitForm(webPage, &form, m_frame , sourceFrame, values, userData);1064 webPage->injectedBundleFormClient().willSubmitForm(webPage, &form, m_frame.ptr(), sourceFrame, values, userData); 1081 1065 1082 1066 uint64_t listenerID = m_frame->setUpWillSubmitFormListener(WTFMove(completionHandler)); … … 1125 1109 if (!webPage) 1126 1110 return; 1127 webPage->willReplaceMultipartContent( *m_frame);1111 webPage->willReplaceMultipartContent(m_frame); 1128 1112 } 1129 1113 … … 1133 1117 if (!webPage) 1134 1118 return; 1135 webPage->didReplaceMultipartContent( *m_frame);1119 webPage->didReplaceMultipartContent(m_frame); 1136 1120 } 1137 1121 … … 1250 1234 RefPtr<API::Object> userData; 1251 1235 1252 webPage->injectedBundleLoaderClient().didDisplayInsecureContentForFrame(*webPage, *m_frame, userData);1236 webPage->injectedBundleLoaderClient().didDisplayInsecureContentForFrame(*webPage, m_frame, userData); 1253 1237 1254 1238 webPage->send(Messages::WebPageProxy::DidDisplayInsecureContentForFrame(m_frame->frameID(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); … … 1263 1247 RefPtr<API::Object> userData; 1264 1248 1265 webPage->injectedBundleLoaderClient().didRunInsecureContentForFrame(*webPage, *m_frame, userData);1249 webPage->injectedBundleLoaderClient().didRunInsecureContentForFrame(*webPage, m_frame, userData); 1266 1250 1267 1251 webPage->send(Messages::WebPageProxy::DidRunInsecureContentForFrame(m_frame->frameID(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); … … 1276 1260 RefPtr<API::Object> userData; 1277 1261 1278 webPage->injectedBundleLoaderClient().didDetectXSSForFrame(*webPage, *m_frame, userData);1262 webPage->injectedBundleLoaderClient().didDetectXSSForFrame(*webPage, m_frame, userData); 1279 1263 1280 1264 webPage->send(Messages::WebPageProxy::DidDetectXSSForFrame(m_frame->frameID(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))); 1281 1265 } 1282 1266 1283 ResourceError WebFrameLoaderClient::cancelledError(const ResourceRequest& request) 1267 ResourceError WebFrameLoaderClient::cancelledError(const ResourceRequest& request) const 1284 1268 { 1285 1269 return WebKit::cancelledError(request); 1286 1270 } 1287 1271 1288 ResourceError WebFrameLoaderClient::blockedError(const ResourceRequest& request) 1272 ResourceError WebFrameLoaderClient::blockedError(const ResourceRequest& request) const 1289 1273 { 1290 1274 return WebKit::blockedError(request); 1291 1275 } 1292 1276 1293 ResourceError WebFrameLoaderClient::blockedByContentBlockerError(const ResourceRequest& request) 1277 ResourceError WebFrameLoaderClient::blockedByContentBlockerError(const ResourceRequest& request) const 1294 1278 { 1295 1279 return WebKit::blockedByContentBlockerError(request); 1296 1280 } 1297 1281 1298 ResourceError WebFrameLoaderClient::cannotShowURLError(const ResourceRequest& request) 1282 ResourceError WebFrameLoaderClient::cannotShowURLError(const ResourceRequest& request) const 1299 1283 { 1300 1284 return WebKit::cannotShowURLError(request); 1301 1285 } 1302 1286 1303 ResourceError WebFrameLoaderClient::interruptedForPolicyChangeError(const ResourceRequest& request) 1287 ResourceError WebFrameLoaderClient::interruptedForPolicyChangeError(const ResourceRequest& request) const 1304 1288 { 1305 1289 return WebKit::interruptedForPolicyChangeError(request); … … 1307 1291 1308 1292 #if ENABLE(CONTENT_FILTERING) 1309 ResourceError WebFrameLoaderClient::blockedByContentFilterError(const ResourceRequest& request) 1293 ResourceError WebFrameLoaderClient::blockedByContentFilterError(const ResourceRequest& request) const 1310 1294 { 1311 1295 return WebKit::blockedByContentFilterError(request); … … 1313 1297 #endif 1314 1298 1315 ResourceError WebFrameLoaderClient::cannotShowMIMETypeError(const ResourceResponse& response) 1299 ResourceError WebFrameLoaderClient::cannotShowMIMETypeError(const ResourceResponse& response) const 1316 1300 { 1317 1301 return WebKit::cannotShowMIMETypeError(response); 1318 1302 } 1319 1303 1320 ResourceError WebFrameLoaderClient::fileDoesNotExistError(const ResourceResponse& response) 1304 ResourceError WebFrameLoaderClient::fileDoesNotExistError(const ResourceResponse& response) const 1321 1305 { 1322 1306 return WebKit::fileDoesNotExistError(response); 1323 1307 } 1324 1308 1325 ResourceError WebFrameLoaderClient::pluginWillHandleLoadError(const ResourceResponse& response) 1309 ResourceError WebFrameLoaderClient::pluginWillHandleLoadError(const ResourceResponse& response) const 1326 1310 { 1327 1311 return WebKit::pluginWillHandleLoadError(response); 1328 1312 } 1329 1313 1330 bool WebFrameLoaderClient::shouldFallBack(const ResourceError& error) 1314 bool WebFrameLoaderClient::shouldFallBack(const ResourceError& error) const 1331 1315 { 1332 1316 static NeverDestroyed<const ResourceError> cancelledError(this->cancelledError(ResourceRequest())); … … 1410 1394 // FIXME: This should not be necessary. WebCore should be correctly invalidating 1411 1395 // the view on restores from the back/forward cache. 1412 if (m_frame->page() && m_frame == m_frame->page()->mainWebFrame())1396 if (m_frame->page() && m_frame.ptr() == m_frame->page()->mainWebFrame()) 1413 1397 m_frame->page()->drawingArea()->setNeedsDisplay(); 1414 1398 #endif … … 1431 1415 // If we have a load listener, notify it. 1432 1416 if (WebFrame::LoadListener* loadListener = m_frame->loadListener()) 1433 loadListener->didFinishLoad(m_frame );1417 loadListener->didFinishLoad(m_frame.ptr()); 1434 1418 } 1435 1419 … … 1459 1443 } 1460 1444 1461 String WebFrameLoaderClient::userAgent(const URL& url) 1445 String WebFrameLoaderClient::userAgent(const URL& url) const 1462 1446 { 1463 1447 auto* webPage = m_frame->page(); … … 1624 1608 1625 1609 #if ENABLE(NETSCAPE_PLUGIN_API) 1626 auto plugin = m_frame->page()->createPlugin(m_frame , &pluginElement, parameters, parameters.mimeType);1610 auto plugin = m_frame->page()->createPlugin(m_frame.ptr(), &pluginElement, parameters, parameters.mimeType); 1627 1611 if (!plugin) 1628 1612 return nullptr; … … 1645 1629 { 1646 1630 if (auto* webPage = m_frame->page()) 1647 return webPage->webGLPolicyForURL(m_frame , url);1631 return webPage->webGLPolicyForURL(m_frame.ptr(), url); 1648 1632 1649 1633 return WebGLAllowCreation; … … 1653 1637 { 1654 1638 if (auto* webPage = m_frame->page()) 1655 return webPage->resolveWebGLPolicyForURL(m_frame , url);1639 return webPage->resolveWebGLPolicyForURL(m_frame.ptr(), url); 1656 1640 1657 1641 return WebGLAllowCreation; … … 1722 1706 1723 1707 if (WebPage* webPage = m_frame->page()) { 1724 auto allowedPluginTypes = webFrame() ->coreFrame()->loader().subframeLoader().allowPlugins()1708 auto allowedPluginTypes = webFrame().coreFrame()->loader().subframeLoader().allowPlugins() 1725 1709 ? PluginData::AllPlugins : PluginData::OnlyApplicationPlugins; 1726 1710 if (webPage->corePage()->pluginData().supportsMimeType(mimeType, allowedPluginTypes)) … … 1742 1726 String WebFrameLoaderClient::overrideMediaType() const 1743 1727 { 1744 if (m_frame) { 1745 if (auto* page = m_frame->page()) 1746 return page->overriddenMediaType(); 1747 } 1728 if (auto* page = m_frame->page()) 1729 return page->overriddenMediaType(); 1748 1730 1749 1731 return String(); … … 1756 1738 return; 1757 1739 1758 webPage->injectedBundleLoaderClient().didClearWindowObjectForFrame(*webPage, *m_frame, world);1740 webPage->injectedBundleLoaderClient().didClearWindowObjectForFrame(*webPage, m_frame, world); 1759 1741 1760 1742 WebAutomationSessionProxy* automationSessionProxy = WebProcess::singleton().automationSessionProxy(); 1761 1743 if (automationSessionProxy && world.isNormal()) 1762 automationSessionProxy->didClearWindowObjectForFrame( *m_frame);1744 automationSessionProxy->didClearWindowObjectForFrame(m_frame); 1763 1745 } 1764 1746 … … 1769 1751 return; 1770 1752 1771 webPage->injectedBundleLoaderClient().globalObjectIsAvailableForFrame(*webPage, *m_frame, world);1753 webPage->injectedBundleLoaderClient().globalObjectIsAvailableForFrame(*webPage, m_frame, world); 1772 1754 } 1773 1755 … … 1778 1760 return; 1779 1761 1780 webPage->injectedBundleLoaderClient().willInjectUserScriptForFrame(*webPage, *m_frame, world);1762 webPage->injectedBundleLoaderClient().willInjectUserScriptForFrame(*webPage, m_frame, world); 1781 1763 } 1782 1764 … … 1825 1807 return completionHandler(response); 1826 1808 1827 return completionHandler(webPage->injectedBundleResourceLoadClient().shouldCacheResponse(*webPage, *m_frame, identifier) ? response : nil);1809 return completionHandler(webPage->injectedBundleResourceLoadClient().shouldCacheResponse(*webPage, m_frame, identifier) ? response : nil); 1828 1810 } 1829 1811 … … 1869 1851 { 1870 1852 ASSERT(!hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies)); 1871 return WebFrameNetworkingContext::create(m_frame );1853 return WebFrameNetworkingContext::create(m_frame.ptr()); 1872 1854 } 1873 1855 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
r258549 r258628 38 38 class WebFrameLoaderClient final : public WebCore::FrameLoaderClient { 39 39 public: 40 WebFrameLoaderClient();40 explicit WebFrameLoaderClient(Ref<WebFrame>&&); 41 41 ~WebFrameLoaderClient(); 42 42 43 void setWebFrame(WebFrame* webFrame) { m_frame = webFrame; } 44 WebFrame* webFrame() const { return m_frame; } 43 WebFrame& webFrame() const { return m_frame.get(); } 45 44 46 45 bool frameHasCustomContentProvider() const { return m_frameHasCustomContentProvider; } … … 68 67 69 68 private: 70 void frameLoaderDestroyed() final;71 72 69 bool hasHTMLView() const final; 73 70 bool hasWebView() const final; … … 167 164 void didDetectXSS(const URL&, bool didBlockEntirePage) final; 168 165 169 WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) final;170 WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) final;171 WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) final;172 WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) final;173 WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) final;166 WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) const final; 167 WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) const final; 168 WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) const final; 169 WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) const final; 170 WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) const final; 174 171 #if ENABLE(CONTENT_FILTERING) 175 WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&) final;176 #endif 177 178 WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) final;179 WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) final;180 WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) final;181 182 bool shouldFallBack(const WebCore::ResourceError&) final;172 WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&) const final; 173 #endif 174 175 WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) const final; 176 WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) const final; 177 WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) const final; 178 179 bool shouldFallBack(const WebCore::ResourceError&) const final; 183 180 184 181 bool canHandleRequest(const WebCore::ResourceRequest&) const final; … … 200 197 void setTitle(const WebCore::StringWithDirection&, const URL&) final; 201 198 202 String userAgent(const URL&) final;199 String userAgent(const URL&) const final; 203 200 204 201 String overrideContentSecurityPolicy() const final; … … 281 278 #endif 282 279 283 WebFrame*m_frame;280 Ref<WebFrame> m_frame; 284 281 RefPtr<PluginView> m_pluginView; 285 bool m_hasSentResponseToPluginView ;286 bool m_didCompletePageTransition ;287 bool m_frameHasCustomContentProvider ;288 bool m_frameCameFromBackForwardCache ;282 bool m_hasSentResponseToPluginView { false }; 283 bool m_didCompletePageTransition { false }; 284 bool m_frameHasCustomContentProvider { false }; 285 bool m_frameCameFromBackForwardCache { false }; 289 286 bool m_useIconLoadingClient { false }; 290 287 #if ENABLE(RESOURCE_LOAD_STATISTICS) -
trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp
r258549 r258628 103 103 } 104 104 105 Ref<WebFrame> WebFrame::createWithCoreMainFrame(WebPage* page, WebCore::Frame* coreFrame) 106 { 107 auto frame = create(std::unique_ptr<WebFrameLoaderClient>(static_cast<WebFrameLoaderClient*>(&coreFrame->loader().client()))); 108 page->send(Messages::WebPageProxy::DidCreateMainFrame(frame->frameID())); 109 110 frame->m_coreFrame = coreFrame; 111 frame->m_coreFrame->tree().setName(String()); 112 frame->m_coreFrame->init(); 113 return frame; 105 void WebFrame::initWithCoreMainFrame(WebPage& page, Frame& coreFrame) 106 { 107 page.send(Messages::WebPageProxy::DidCreateMainFrame(frameID())); 108 109 m_coreFrame = &coreFrame; 110 m_coreFrame->tree().setName(String()); 111 m_coreFrame->init(); 114 112 } 115 113 116 114 Ref<WebFrame> WebFrame::createSubframe(WebPage* page, const String& frameName, HTMLFrameOwnerElement* ownerElement) 117 115 { 118 auto frame = create( makeUnique<WebFrameLoaderClient>());116 auto frame = create(); 119 117 page->send(Messages::WebPageProxy::DidCreateSubframe(frame->frameID())); 120 118 121 auto coreFrame = Frame::create(page->corePage(), ownerElement, frame->m_frameLoaderClient.get());119 auto coreFrame = Frame::create(page->corePage(), ownerElement, makeUniqueRef<WebFrameLoaderClient>(frame.get())); 122 120 frame->m_coreFrame = coreFrame.ptr(); 123 121 … … 132 130 } 133 131 134 Ref<WebFrame> WebFrame::create(std::unique_ptr<WebFrameLoaderClient> frameLoaderClient) 135 { 136 auto frame = adoptRef(*new WebFrame(WTFMove(frameLoaderClient))); 137 138 // Add explict ref() that will be balanced in WebFrameLoaderClient::frameLoaderDestroyed(). 139 frame->ref(); 140 141 return frame; 142 } 143 144 WebFrame::WebFrame(std::unique_ptr<WebFrameLoaderClient> frameLoaderClient) 145 : m_frameLoaderClient(WTFMove(frameLoaderClient)) 146 , m_frameID(FrameIdentifier::generate()) 147 { 148 m_frameLoaderClient->setWebFrame(this); 132 WebFrame::WebFrame() 133 : m_frameID(FrameIdentifier::generate()) 134 { 149 135 WebProcess::singleton().addWebFrame(m_frameID, this); 150 136 … … 154 140 } 155 141 142 WebFrameLoaderClient* WebFrame::frameLoaderClient() const 143 { 144 return m_coreFrame ? static_cast<WebFrameLoaderClient*>(&m_coreFrame->loader().client()) : nullptr; 145 } 146 156 147 WebFrame::~WebFrame() 157 148 { … … 184 175 return nullptr; 185 176 186 return webFrameLoaderClient->webFrame();177 return &webFrameLoaderClient->webFrame(); 187 178 } 188 179 … … 269 260 invalidatePolicyListener(); 270 261 271 if (forNavigationAction && m_frameLoaderClient&& policyDecision.websitePoliciesData) {262 if (forNavigationAction && frameLoaderClient() && policyDecision.websitePoliciesData) { 272 263 ASSERT(page()); 273 264 if (page()) 274 265 page()->setAllowsContentJavaScriptFromMostRecentNavigation(policyDecision.websitePoliciesData->allowsContentJavaScript); 275 m_frameLoaderClient->applyToDocumentLoader(WTFMove(*policyDecision.websitePoliciesData));266 frameLoaderClient()->applyToDocumentLoader(WTFMove(*policyDecision.websitePoliciesData)); 276 267 } 277 268 -
trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h
r258549 r258628 66 66 class WebFrame : public API::ObjectImpl<API::Object::Type::BundleFrame> { 67 67 public: 68 static Ref<WebFrame> create WithCoreMainFrame(WebPage*, WebCore::Frame*);68 static Ref<WebFrame> create() { return adoptRef(*new WebFrame); } 69 69 static Ref<WebFrame> createSubframe(WebPage*, const String& frameName, WebCore::HTMLFrameOwnerElement*); 70 70 ~WebFrame(); 71 72 void initWithCoreMainFrame(WebPage&, WebCore::Frame&); 71 73 72 74 // Called when the FrameLoaderClient (and therefore the WebCore::Frame) is being torn down. … … 170 172 #endif 171 173 172 WebFrameLoaderClient* frameLoaderClient() const { return m_frameLoaderClient.get(); }174 WebFrameLoaderClient* frameLoaderClient() const; 173 175 174 176 private: 175 static Ref<WebFrame> create(std::unique_ptr<WebFrameLoaderClient>); 176 explicit WebFrame(std::unique_ptr<WebFrameLoaderClient>); 177 WebFrame(); 177 178 178 179 WebCore::Frame* m_coreFrame { nullptr }; … … 185 186 DownloadID m_policyDownloadID { 0 }; 186 187 187 std::unique_ptr<WebFrameLoaderClient> m_frameLoaderClient;188 188 LoadListener* m_loadListener { nullptr }; 189 189 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r258549 r258628 468 468 m_pageGroup = WebProcess::singleton().webPageGroup(parameters.pageGroupData); 469 469 470 auto mainFrame = WebFrame::create(); 471 470 472 PageConfiguration pageConfiguration( 471 473 WebProcess::singleton().sessionID(), … … 477 479 WebProcess::singleton().cookieJar(), 478 480 makeUniqueRef<WebProgressTrackerClient>(*this), 481 makeUniqueRef<WebFrameLoaderClient>(mainFrame.copyRef()), 479 482 makeUniqueRef<MediaRecorderProvider>() 480 483 ); … … 492 495 493 496 pageConfiguration.plugInClient = makeUnique<WebPlugInClient>(*this); 494 pageConfiguration.loaderClientForMainFrame = new WebFrameLoaderClient;495 497 pageConfiguration.diagnosticLoggingClient = makeUnique<WebDiagnosticLoggingClient>(*this); 496 498 pageConfiguration.performanceLoggingClient = makeUnique<WebPerformanceLoggingClient>(*this); … … 572 574 m_page->settings().setBackForwardCacheExpirationInterval(Seconds::infinity()); 573 575 574 m_mainFrame = WebFrame::createWithCoreMainFrame(this, &m_page->mainFrame()); 576 mainFrame->initWithCoreMainFrame(*this, m_page->mainFrame()); 577 m_mainFrame = WTFMove(mainFrame); 578 575 579 m_drawingArea->updatePreferences(parameters.store); 576 580 -
trunk/Source/WebKitLegacy/mac/ChangeLog
r258613 r258628 1 2020-03-18 youenn fablet <youenn@apple.com> 2 3 FrameLoader should own its FrameLoaderClient 4 https://bugs.webkit.org/show_bug.cgi?id=208918 5 6 Reviewed by Geoff Garen. 7 8 Update according new Frame/FrameLoader constructors and FrameLoaderClient interface. 9 10 * WebCoreSupport/WebFrameLoaderClient.h: 11 (WebFrameLoaderClient::setWebFrame): 12 * WebCoreSupport/WebFrameLoaderClient.mm: 13 (WebFrameLoaderClient::~WebFrameLoaderClient): 14 (WebFrameLoaderClient::cancelledError const): 15 (WebFrameLoaderClient::blockedError const): 16 (WebFrameLoaderClient::blockedByContentBlockerError const): 17 (WebFrameLoaderClient::cannotShowURLError const): 18 (WebFrameLoaderClient::interruptedForPolicyChangeError const): 19 (WebFrameLoaderClient::blockedByContentFilterError const): 20 (WebFrameLoaderClient::cannotShowMIMETypeError const): 21 (WebFrameLoaderClient::fileDoesNotExistError const): 22 (WebFrameLoaderClient::pluginWillHandleLoadError const): 23 (WebFrameLoaderClient::shouldFallBack const): 24 (WebFrameLoaderClient::userAgent const): 25 * WebView/WebFrame.mm: 26 (+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]): 27 (+[WebFrame _createMainFrameWithPage:frameName:frameView:]): 28 (+[WebFrame _createMainFrameWithSimpleHTMLDocumentWithPage:frameView:style:]): 29 * WebView/WebView.mm: 30 (-[WebView _commonInitializationWithFrameName:groupName:]): 31 (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]): 32 1 33 2020-03-17 Chris Dumez <cdumez@apple.com> 2 34 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h
r258549 r258628 55 55 class WebFrameLoaderClient : public WebCore::FrameLoaderClient { 56 56 public: 57 WebFrameLoaderClient(WebFrame* = 0); 58 59 void setWebFrame(WebFrame* webFrame) { m_webFrame = webFrame; } 57 explicit WebFrameLoaderClient(WebFrame* = nullptr); 58 ~WebFrameLoaderClient(); 59 60 void setWebFrame(WebFrame& webFrame) { m_webFrame = &webFrame; } 60 61 WebFrame* webFrame() const { return m_webFrame.get(); } 61 62 62 63 private: 63 void frameLoaderDestroyed() final;64 64 bool hasWebView() const final; // mainly for assertions 65 65 … … 161 161 void didDetectXSS(const URL&, bool didBlockEntirePage) final; 162 162 163 WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) final;164 WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) final;165 WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) final;166 WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) final;167 WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) final;163 WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) const final; 164 WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) const final; 165 WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) const final; 166 WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) const final; 167 WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) const final; 168 168 #if ENABLE(CONTENT_FILTERING) 169 WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&) final;170 #endif 171 172 WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) final;173 WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) final;174 WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) final;175 176 bool shouldFallBack(const WebCore::ResourceError&) final;177 178 WTF::String userAgent(const URL&) final;169 WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&) const final; 170 #endif 171 172 WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) const final; 173 WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) const final; 174 WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) const final; 175 176 bool shouldFallBack(const WebCore::ResourceError&) const final; 177 178 WTF::String userAgent(const URL&) const final; 179 179 180 180 void savePlatformDataToCachedFrame(WebCore::CachedFrame*) final; -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
r258549 r258628 218 218 } 219 219 220 void WebFrameLoaderClient::frameLoaderDestroyed()220 WebFrameLoaderClient::~WebFrameLoaderClient() 221 221 { 222 222 [m_webFrame.get() _clearCoreFrame]; 223 delete this;224 223 } 225 224 … … 1134 1133 } 1135 1134 1136 WebCore::ResourceError WebFrameLoaderClient::cancelledError(const WebCore::ResourceRequest& request) 1135 WebCore::ResourceError WebFrameLoaderClient::cancelledError(const WebCore::ResourceRequest& request) const 1137 1136 { 1138 1137 return [NSError _webKitErrorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled URL:request.url()]; 1139 1138 } 1140 1139 1141 WebCore::ResourceError WebFrameLoaderClient::blockedError(const WebCore::ResourceRequest& request) 1140 WebCore::ResourceError WebFrameLoaderClient::blockedError(const WebCore::ResourceRequest& request) const 1142 1141 { 1143 1142 return [NSError _webKitErrorWithDomain:WebKitErrorDomain code:WebKitErrorCannotUseRestrictedPort URL:request.url()]; 1144 1143 } 1145 1144 1146 WebCore::ResourceError WebFrameLoaderClient::blockedByContentBlockerError(const WebCore::ResourceRequest& request) 1145 WebCore::ResourceError WebFrameLoaderClient::blockedByContentBlockerError(const WebCore::ResourceRequest& request) const 1147 1146 { 1148 1147 RELEASE_ASSERT_NOT_REACHED(); // Content blockers are not enabled in WebKit1. 1149 1148 } 1150 1149 1151 WebCore::ResourceError WebFrameLoaderClient::cannotShowURLError(const WebCore::ResourceRequest& request) 1150 WebCore::ResourceError WebFrameLoaderClient::cannotShowURLError(const WebCore::ResourceRequest& request) const 1152 1151 { 1153 1152 return [NSError _webKitErrorWithDomain:WebKitErrorDomain code:WebKitErrorCannotShowURL URL:request.url()]; 1154 1153 } 1155 1154 1156 WebCore::ResourceError WebFrameLoaderClient::interruptedForPolicyChangeError(const WebCore::ResourceRequest& request) 1155 WebCore::ResourceError WebFrameLoaderClient::interruptedForPolicyChangeError(const WebCore::ResourceRequest& request) const 1157 1156 { 1158 1157 return [NSError _webKitErrorWithDomain:WebKitErrorDomain code:WebKitErrorFrameLoadInterruptedByPolicyChange URL:request.url()]; … … 1160 1159 1161 1160 #if ENABLE(CONTENT_FILTERING) 1162 WebCore::ResourceError WebFrameLoaderClient::blockedByContentFilterError(const WebCore::ResourceRequest& request) 1161 WebCore::ResourceError WebFrameLoaderClient::blockedByContentFilterError(const WebCore::ResourceRequest& request) const 1163 1162 { 1164 1163 return [NSError _webKitErrorWithDomain:WebKitErrorDomain code:WebKitErrorFrameLoadBlockedByContentFilter URL:request.url()]; … … 1166 1165 #endif 1167 1166 1168 WebCore::ResourceError WebFrameLoaderClient::cannotShowMIMETypeError(const WebCore::ResourceResponse& response) 1167 WebCore::ResourceError WebFrameLoaderClient::cannotShowMIMETypeError(const WebCore::ResourceResponse& response) const 1169 1168 { 1170 1169 return [NSError _webKitErrorWithDomain:NSURLErrorDomain code:WebKitErrorCannotShowMIMEType URL:response.url()]; 1171 1170 } 1172 1171 1173 WebCore::ResourceError WebFrameLoaderClient::fileDoesNotExistError(const WebCore::ResourceResponse& response) 1172 WebCore::ResourceError WebFrameLoaderClient::fileDoesNotExistError(const WebCore::ResourceResponse& response) const 1174 1173 { 1175 1174 return [NSError _webKitErrorWithDomain:NSURLErrorDomain code:NSURLErrorFileDoesNotExist URL:response.url()]; 1176 1175 } 1177 1176 1178 WebCore::ResourceError WebFrameLoaderClient::pluginWillHandleLoadError(const WebCore::ResourceResponse& response) 1177 WebCore::ResourceError WebFrameLoaderClient::pluginWillHandleLoadError(const WebCore::ResourceResponse& response) const 1179 1178 { 1180 1179 NSError *error = [[NSError alloc] _initWithPluginErrorCode:WebKitErrorPlugInWillHandleLoad … … 1186 1185 } 1187 1186 1188 bool WebFrameLoaderClient::shouldFallBack(const WebCore::ResourceError& error) 1187 bool WebFrameLoaderClient::shouldFallBack(const WebCore::ResourceError& error) const 1189 1188 { 1190 1189 // FIXME: Needs to check domain. … … 1534 1533 } 1535 1534 1536 String WebFrameLoaderClient::userAgent(const URL& url) 1535 String WebFrameLoaderClient::userAgent(const URL& url) const 1537 1536 { 1538 1537 WebView *webView = getWebView(m_webFrame.get()); -
trunk/Source/WebKitLegacy/mac/WebView/WebFrame.mm
r258549 r258628 305 305 306 306 WebFrame *frame = [[self alloc] _initWithWebFrameView:frameView webView:webView]; 307 auto coreFrame = WebCore::Frame::create(page, ownerElement, new WebFrameLoaderClient(frame));307 auto coreFrame = WebCore::Frame::create(page, ownerElement, makeUniqueRef<WebFrameLoaderClient>(frame)); 308 308 [frame release]; 309 309 frame->_private->coreFrame = coreFrame.ptr(); … … 328 328 WebFrame *frame = [[self alloc] _initWithWebFrameView:frameView webView:webView]; 329 329 frame->_private->coreFrame = &page->mainFrame(); 330 static_cast<WebFrameLoaderClient&>(page->mainFrame().loader().client()).setWebFrame( frame);330 static_cast<WebFrameLoaderClient&>(page->mainFrame().loader().client()).setWebFrame(*frame); 331 331 [frame release]; 332 332 … … 356 356 WebFrame *frame = [[self alloc] _initWithWebFrameView:frameView webView:webView]; 357 357 frame->_private->coreFrame = &page->mainFrame(); 358 static_cast<WebFrameLoaderClient&>(page->mainFrame().loader().client()).setWebFrame( frame);358 static_cast<WebFrameLoaderClient&>(page->mainFrame().loader().client()).setWebFrame(*frame); 359 359 [frame release]; 360 360 -
trunk/Source/WebKitLegacy/mac/WebView/WebView.mm
r258549 r258628 1444 1444 WebCore::CookieJar::create(storageProvider.copyRef()), 1445 1445 makeUniqueRef<WebProgressTrackerClient>(self), 1446 makeUniqueRef<WebFrameLoaderClient>(), 1446 1447 makeUniqueRef<WebCore::MediaRecorderProvider>() 1447 1448 ); … … 1466 1467 1467 1468 pageConfiguration.alternativeTextClient = makeUnique<WebAlternativeTextClient>(self); 1468 pageConfiguration.loaderClientForMainFrame = new WebFrameLoaderClient;1469 1469 pageConfiguration.applicationCacheStorage = &webApplicationCacheStorage(); 1470 1470 pageConfiguration.databaseProvider = &WebDatabaseProvider::singleton(); … … 1715 1715 WebCore::CookieJar::create(storageProvider.copyRef()), 1716 1716 makeUniqueRef<WebProgressTrackerClient>(self), 1717 makeUniqueRef<WebFrameLoaderClient>(), 1717 1718 makeUniqueRef<WebCore::MediaRecorderProvider>() 1718 1719 ); … … 1727 1728 1728 1729 pageConfiguration.inspectorClient = new WebInspectorClient(self); 1729 pageConfiguration.loaderClientForMainFrame = new WebFrameLoaderClient;1730 1730 pageConfiguration.applicationCacheStorage = &webApplicationCacheStorage(); 1731 1731 pageConfiguration.databaseProvider = &WebDatabaseProvider::singleton(); -
trunk/Source/WebKitLegacy/win/ChangeLog
r258549 r258628 1 2020-03-18 youenn fablet <youenn@apple.com> 2 3 Make sure a preflight fails if response headers are invalid 4 https://bugs.webkit.org/show_bug.cgi?id=208924 5 6 Reviewed by Geoff Garen. 7 8 * WebCoreSupport/WebFrameLoaderClient.cpp: 9 (WebFrameLoaderClient::cancelledError const): 10 (WebFrameLoaderClient::blockedError const): 11 (WebFrameLoaderClient::blockedByContentBlockerError const): 12 (WebFrameLoaderClient::cannotShowURLError const): 13 (WebFrameLoaderClient::interruptedForPolicyChangeError const): 14 (WebFrameLoaderClient::cannotShowMIMETypeError const): 15 (WebFrameLoaderClient::fileDoesNotExistError const): 16 (WebFrameLoaderClient::pluginWillHandleLoadError const): 17 (WebFrameLoaderClient::shouldFallBack const): 18 (WebFrameLoaderClient::userAgent const): 19 (WebFrameLoaderClient::frameLoaderDestroyed): Deleted. 20 (WebFrameLoaderClient::cancelledError): Deleted. 21 (WebFrameLoaderClient::blockedError): Deleted. 22 (WebFrameLoaderClient::blockedByContentBlockerError): Deleted. 23 (WebFrameLoaderClient::cannotShowURLError): Deleted. 24 (WebFrameLoaderClient::interruptedForPolicyChangeError): Deleted. 25 (WebFrameLoaderClient::cannotShowMIMETypeError): Deleted. 26 (WebFrameLoaderClient::fileDoesNotExistError): Deleted. 27 (WebFrameLoaderClient::pluginWillHandleLoadError): Deleted. 28 (WebFrameLoaderClient::shouldFallBack): Deleted. 29 (WebFrameLoaderClient::userAgent): Deleted. 30 * WebCoreSupport/WebFrameLoaderClient.h: 31 * WebFrame.cpp: 32 (WebFrame::createSubframeWithOwnerElement): 33 1 34 2020-03-17 Commit Queue <commit-queue@webkit.org> 2 35 -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp
r258549 r258628 120 120 } 121 121 122 void WebFrameLoaderClient::frameLoaderDestroyed()123 {124 }125 126 122 Optional<WebCore::PageIdentifier> WebFrameLoaderClient::pageID() const 127 123 { … … 786 782 } 787 783 788 ResourceError WebFrameLoaderClient::cancelledError(const ResourceRequest& request) 784 ResourceError WebFrameLoaderClient::cancelledError(const ResourceRequest& request) const 789 785 { 790 786 // FIXME: Need ChickenCat to include CFNetwork/CFURLError.h to get these values … … 793 789 } 794 790 795 ResourceError WebFrameLoaderClient::blockedError(const ResourceRequest& request) 791 ResourceError WebFrameLoaderClient::blockedError(const ResourceRequest& request) const 796 792 { 797 793 return ResourceError(String(WebKitErrorDomain), WebKitErrorCannotUseRestrictedPort, request.url(), WEB_UI_STRING("Not allowed to use restricted network port", "WebKitErrorCannotUseRestrictedPort description")); 798 794 } 799 795 800 ResourceError WebFrameLoaderClient::blockedByContentBlockerError(const ResourceRequest& request) 796 ResourceError WebFrameLoaderClient::blockedByContentBlockerError(const ResourceRequest& request) const 801 797 { 802 798 RELEASE_ASSERT_NOT_REACHED(); // Content Blockers are not enabled for WK1. 803 799 } 804 800 805 ResourceError WebFrameLoaderClient::cannotShowURLError(const ResourceRequest& request) 801 ResourceError WebFrameLoaderClient::cannotShowURLError(const ResourceRequest& request) const 806 802 { 807 803 return ResourceError(String(WebKitErrorDomain), WebKitErrorCannotShowURL, request.url(), WEB_UI_STRING("The URL can\xE2\x80\x99t be shown", "WebKitErrorCannotShowURL description")); 808 804 } 809 805 810 ResourceError WebFrameLoaderClient::interruptedForPolicyChangeError(const ResourceRequest& request) 806 ResourceError WebFrameLoaderClient::interruptedForPolicyChangeError(const ResourceRequest& request) const 811 807 { 812 808 return ResourceError(String(WebKitErrorDomain), WebKitErrorFrameLoadInterruptedByPolicyChange, request.url(), WEB_UI_STRING("Frame load interrupted", "WebKitErrorFrameLoadInterruptedByPolicyChange description")); 813 809 } 814 810 815 ResourceError WebFrameLoaderClient::cannotShowMIMETypeError(const ResourceResponse& response) 811 ResourceError WebFrameLoaderClient::cannotShowMIMETypeError(const ResourceResponse& response) const 816 812 { 817 813 return ResourceError(String(), WebKitErrorCannotShowMIMEType, response.url(), WEB_UI_STRING("Content with specified MIME type can\xE2\x80\x99t be shown", "WebKitErrorCannotShowMIMEType description")); 818 814 } 819 815 820 ResourceError WebFrameLoaderClient::fileDoesNotExistError(const ResourceResponse& response) 816 ResourceError WebFrameLoaderClient::fileDoesNotExistError(const ResourceResponse& response) const 821 817 { 822 818 return ResourceError(String(WebURLErrorDomain), -1100, response.url(), String("File does not exist.")); 823 819 } 824 820 825 ResourceError WebFrameLoaderClient::pluginWillHandleLoadError(const ResourceResponse& response) 821 ResourceError WebFrameLoaderClient::pluginWillHandleLoadError(const ResourceResponse& response) const 826 822 { 827 823 return ResourceError(String(WebKitErrorDomain), WebKitErrorPlugInWillHandleLoad, response.url(), WEB_UI_STRING("Plug-in handled load", "WebKitErrorPlugInWillHandleLoad description")); 828 824 } 829 825 830 bool WebFrameLoaderClient::shouldFallBack(const ResourceError& error) 826 bool WebFrameLoaderClient::shouldFallBack(const ResourceError& error) const 831 827 { 832 828 if (error.errorCode() == WebURLErrorCancelled && error.domain() == String(WebURLErrorDomain)) … … 980 976 } 981 977 982 String WebFrameLoaderClient::userAgent(const URL& url) 978 String WebFrameLoaderClient::userAgent(const URL& url) const 983 979 { 984 980 return m_webFrame->webView()->userAgentForKURL(url); -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h
r258549 r258628 59 59 Ref<WebCore::FrameNetworkingContext> createNetworkingContext() override; 60 60 61 void frameLoaderDestroyed() override;62 61 void makeRepresentation(WebCore::DocumentLoader*) override; 63 62 void forceLayoutForNonHTML() override; … … 138 137 void didDetectXSS(const URL&, bool didBlockEntirePage) override; 139 138 140 WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) override;141 WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) override;142 WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) override;143 WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) override;144 WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) override;145 WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) override;146 WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) override;147 WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) override;148 149 bool shouldFallBack(const WebCore::ResourceError&) override;150 151 WTF::String userAgent(const URL&) override;139 WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) const override; 140 WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) const override; 141 WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) const override; 142 WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) const override; 143 WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) const override; 144 WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) const override; 145 WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) const override; 146 WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) const override; 147 148 bool shouldFallBack(const WebCore::ResourceError&) const override; 149 150 WTF::String userAgent(const URL&) const override; 152 151 153 152 Ref<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&) override; -
trunk/Source/WebKitLegacy/win/WebFrame.cpp
r258549 r258628 1083 1083 1084 1084 this->AddRef(); // We release this ref in frameLoaderDestroyed() 1085 auto frame = Frame::create(page, ownerElement, new WebFrameLoaderClient(this));1085 auto frame = Frame::create(page, ownerElement, makeUniqueRef<WebFrameLoaderClient>(this)); 1086 1086 d->frame = frame.ptr(); 1087 1087 return frame; -
trunk/Source/WebKitLegacy/win/WebView.cpp
r258549 r258628 3117 3117 3118 3118 auto storageProvider = PageStorageSessionProvider::create(); 3119 3120 WebFrame* webFrame = WebFrame::createInstance(); 3119 3121 PageConfiguration configuration( 3120 3122 PAL::SessionID::defaultSessionID(), … … 3126 3128 CookieJar::create(storageProvider.copyRef()), 3127 3129 makeUniqueRef<WebProgressTrackerClient>(), 3130 makeUniqueRef<WebFrameLoaderClient>(webFrame), 3128 3131 makeUniqueRef<MediaRecorderProvider>() 3129 3132 ); … … 3132 3135 configuration.dragClient = makeUnique<WebDragClient>(this); 3133 3136 configuration.inspectorClient = m_inspectorClient; 3134 configuration.loaderClientForMainFrame = new WebFrameLoaderClient;3135 3137 configuration.applicationCacheStorage = &WebApplicationCache::storage(); 3136 3138 configuration.databaseProvider = &WebDatabaseProvider::singleton(); … … 3152 3154 } 3153 3155 3154 WebFrame* webFrame = WebFrame::createInstance();3155 3156 webFrame->initWithWebView(this, m_page); 3156 3157 static_cast<WebFrameLoaderClient&>(m_page->mainFrame().loader().client()).setWebFrame(webFrame);
Note: See TracChangeset
for help on using the changeset viewer.