Changeset 241317 in webkit
- Timestamp:
- Feb 12, 2019, 1:49:39 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r241310 r241317 1 2019-02-12 Alex Christensen <achristensen@webkit.org> 2 3 Remove setDefersLoading infrastructure from WebKit2 4 https://bugs.webkit.org/show_bug.cgi?id=194506 5 6 Reviewed by Brady Eidson. 7 8 * platform/wk2/TestExpectations: 9 1 10 2019-02-12 Justin Fan <justin_fan@apple.com> 2 11 -
trunk/LayoutTests/platform/wk2/TestExpectations
r241127 r241317 537 537 538 538 # setDefersLoading is not supported in WK2. 539 loader/load-defer.html [ WontFix ] 539 loader/load-defer.html [ Skip ] 540 loader/load-defer-resume-crash.html [ Skip ] 541 loader/navigation-while-deferring-loads.html [ Skip ] 540 542 541 543 # WebKitTestRunner doesn't have objCController -
trunk/Source/WebCore/ChangeLog
r241316 r241317 1 2019-02-12 Alex Christensen <achristensen@webkit.org> 2 3 Remove setDefersLoading infrastructure from WebKit2 4 https://bugs.webkit.org/show_bug.cgi?id=194506 5 6 Reviewed by Brady Eidson. 7 8 setDefersLoading is inherently racy from WebCore to the NetworkProcess, 9 it adds unwanted complexity to the initialization and use of network objects, 10 and it has led to many unrecoverable hang bugs over the years. 11 We needed to force it into WebKit2 to transition some existing clients who relied on it, 12 but we have recently finished transitioning those clients to other solutions, mostly 13 completion handlers. 14 15 * inspector/PageScriptDebugServer.cpp: 16 (WebCore::PageScriptDebugServer::setJavaScriptPaused): 17 1 18 2019-02-12 Michael Catanzaro <mcatanzaro@igalia.com> 2 19 -
trunk/Source/WebCore/inspector/PageScriptDebugServer.cpp
r237266 r241317 139 139 140 140 for (auto& page : pageGroup.pages()) { 141 page->setDefersLoading(paused);142 143 141 for (Frame* frame = &page->mainFrame(); frame; frame = frame->tree().traverseNext()) 144 142 setJavaScriptPaused(*frame, paused); -
trunk/Source/WebKit/ChangeLog
r241316 r241317 1 2019-02-12 Alex Christensen <achristensen@webkit.org> 2 3 Remove setDefersLoading infrastructure from WebKit2 4 https://bugs.webkit.org/show_bug.cgi?id=194506 5 6 Reviewed by Brady Eidson. 7 8 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 9 (WebKit::NetworkConnectionToWebProcess::setDefersLoading): Deleted. 10 * NetworkProcess/NetworkConnectionToWebProcess.h: 11 * NetworkProcess/NetworkConnectionToWebProcess.messages.in: 12 * NetworkProcess/NetworkDataTask.h: 13 * NetworkProcess/NetworkDataTaskBlob.cpp: 14 (WebKit::NetworkDataTaskBlob::suspend): Deleted. 15 * NetworkProcess/NetworkDataTaskBlob.h: 16 * NetworkProcess/NetworkLoad.cpp: 17 (WebKit::NetworkLoad::initialize): 18 (WebKit::NetworkLoad::setDefersLoading): Deleted. 19 * NetworkProcess/NetworkLoad.h: 20 * NetworkProcess/NetworkLoadParameters.h: 21 * NetworkProcess/NetworkResourceLoadParameters.cpp: 22 (WebKit::NetworkResourceLoadParameters::encode const): 23 (WebKit::NetworkResourceLoadParameters::decode): 24 * NetworkProcess/NetworkResourceLoader.cpp: 25 (WebKit::NetworkResourceLoader::start): 26 (WebKit::NetworkResourceLoader::startNetworkLoad): 27 (WebKit::NetworkResourceLoader::setDefersLoading): Deleted. 28 * NetworkProcess/NetworkResourceLoader.h: 29 * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: 30 * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: 31 (WebKit::NetworkDataTaskCocoa::suspend): Deleted. 32 * NetworkProcess/curl/NetworkDataTaskCurl.cpp: 33 (WebKit::NetworkDataTaskCurl::suspend): Deleted. 34 * NetworkProcess/curl/NetworkDataTaskCurl.h: 35 * NetworkProcess/soup/NetworkDataTaskSoup.cpp: 36 (WebKit::NetworkDataTaskSoup::suspend): Deleted. 37 * NetworkProcess/soup/NetworkDataTaskSoup.h: 38 * WebProcess/Network/WebLoaderStrategy.cpp: 39 (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): 40 (WebKit::WebLoaderStrategy::setDefersLoading): 41 1 42 2019-02-12 Michael Catanzaro <mcatanzaro@igalia.com> 2 43 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r241008 r241317 387 387 } 388 388 389 void NetworkConnectionToWebProcess::setDefersLoading(ResourceLoadIdentifier identifier, bool defers)390 {391 RELEASE_ASSERT(identifier);392 RELEASE_ASSERT(RunLoop::isMain());393 394 RefPtr<NetworkResourceLoader> loader = m_networkResourceLoaders.get(identifier);395 if (!loader)396 return;397 398 loader->setDefersLoading(defers);399 }400 401 389 void NetworkConnectionToWebProcess::prefetchDNS(const String& hostname) 402 390 { -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
r241008 r241317 150 150 void removeLoadIdentifier(ResourceLoadIdentifier); 151 151 void pageLoadCompleted(uint64_t webPageID); 152 void setDefersLoading(ResourceLoadIdentifier, bool);153 152 void crossOriginRedirectReceived(ResourceLoadIdentifier, const URL& redirectURL); 154 153 void startDownload(PAL::SessionID, DownloadID, const WebCore::ResourceRequest&, const String& suggestedName = { }); -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
r240931 r241317 28 28 RemoveLoadIdentifier(uint64_t resourceLoadIdentifier) 29 29 PageLoadCompleted(uint64_t webPageID) 30 SetDefersLoading(uint64_t resourceLoadIdentifier, bool defers)31 30 PrefetchDNS(String hostname) 32 31 PreconnectTo(uint64_t preconnectionIdentifier, WebKit::NetworkResourceLoadParameters loadParameters); -
trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h
r239007 r241317 84 84 virtual ~NetworkDataTask(); 85 85 86 virtual void suspend() = 0;87 86 virtual void cancel() = 0; 88 87 virtual void resume() = 0; -
trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp
r241008 r241317 145 145 } 146 146 147 void NetworkDataTaskBlob::suspend()148 {149 // FIXME: can this happen?150 }151 152 147 void NetworkDataTaskBlob::cancel() 153 148 { -
trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.h
r241008 r241317 60 60 NetworkDataTaskBlob(NetworkSession&, WebCore::BlobRegistryImpl&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::ContentSniffingPolicy, const Vector<RefPtr<WebCore::BlobDataFileReference>>&); 61 61 62 void suspend() override;63 62 void cancel() override; 64 63 void resume() override; -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp
r241183 r241317 70 70 m_task = NetworkDataTask::create(networkSession, *this, m_parameters); 71 71 72 if (!m_parameters.defersLoading) 73 m_task->resume(); 72 m_task->resume(); 74 73 } 75 74 … … 81 80 if (m_task) 82 81 m_task->clearClient(); 83 }84 85 void NetworkLoad::setDefersLoading(bool defers)86 {87 if (m_task) {88 if (defers)89 m_task->suspend();90 else91 m_task->resume();92 }93 82 } 94 83 -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.h
r241008 r241317 48 48 ~NetworkLoad(); 49 49 50 void setDefersLoading(bool);51 50 void cancel(); 52 51 -
trunk/Source/WebKit/NetworkProcess/NetworkLoadParameters.h
r239622 r241317 49 49 WebCore::ClientCredentialPolicy clientCredentialPolicy { WebCore::ClientCredentialPolicy::CannotAskClientForCredentials }; 50 50 bool shouldClearReferrerOnHTTPSToHTTPRedirect { true }; 51 bool defersLoading { false };52 51 bool needsCertificateInfo { false }; 53 52 bool isMainFrameNavigation { false }; -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
r239622 r241317 77 77 encoder.encodeEnum(shouldPreconnectOnly); 78 78 encoder << shouldClearReferrerOnHTTPSToHTTPRedirect; 79 encoder << defersLoading;80 79 encoder << needsCertificateInfo; 81 80 encoder << isMainFrameNavigation; … … 164 163 if (!decoder.decode(result.shouldClearReferrerOnHTTPSToHTTPRedirect)) 165 164 return false; 166 if (!decoder.decode(result.defersLoading))167 return false;168 165 if (!decoder.decode(result.needsCertificateInfo)) 169 166 return false; -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
r241244 r241317 95 95 , m_connection { connection } 96 96 , m_fileReferences(connection.resolveBlobReferences(m_parameters)) 97 , m_defersLoading { parameters.defersLoading }98 97 , m_isAllowedToAskUserForCredentials { m_parameters.clientCredentialPolicy == ClientCredentialPolicy::MayAskClientForCredentials } 99 98 , m_bufferingTimer { *this, &NetworkResourceLoader::bufferingTimerFired } … … 166 165 167 166 m_networkActivityTracker = m_connection->startTrackingResourceLoad(m_parameters.webPageID, m_parameters.identifier, isMainResource(), sessionID()); 168 169 if (m_defersLoading) {170 RELEASE_LOG_IF_ALLOWED("start: Loading is deferred (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", isMainResource = %d, isSynchronous = %d, parentPID = %d)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, isMainResource(), isSynchronous(), m_parameters.parentPID);171 return;172 }173 167 174 168 ASSERT(!m_wasStarted); … … 273 267 274 268 NetworkLoadParameters parameters = m_parameters; 275 parameters.defersLoading = m_defersLoading;276 269 parameters.networkActivityTracker = m_networkActivityTracker; 277 270 if (m_networkLoadChecker) … … 298 291 299 292 RELEASE_LOG_IF_ALLOWED("startNetworkLoad: (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", description = %{public}s)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, m_networkLoad->description().utf8().data()); 300 301 if (m_defersLoading) {302 RELEASE_LOG_IF_ALLOWED("startNetworkLoad: Created, but deferred (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")",303 m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);304 }305 }306 307 void NetworkResourceLoader::setDefersLoading(bool defers)308 {309 if (m_defersLoading == defers)310 return;311 m_defersLoading = defers;312 313 if (defers)314 RELEASE_LOG_IF_ALLOWED("setDefersLoading: Deferring resource load (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);315 else316 RELEASE_LOG_IF_ALLOWED("setDefersLoading: Resuming deferred resource load (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);317 318 if (m_networkLoad) {319 m_networkLoad->setDefersLoading(defers);320 return;321 }322 323 if (!m_defersLoading && !m_wasStarted)324 start();325 else326 RELEASE_LOG_IF_ALLOWED("setDefersLoading: defers = %d, but nothing to do (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", m_defersLoading, m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);327 293 } 328 294 -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.h
r240955 r241317 73 73 void abort(); 74 74 75 void setDefersLoading(bool);76 77 75 // Message handlers. 78 76 void didReceiveNetworkResourceLoaderMessage(IPC::Connection&, IPC::Decoder&); … … 192 190 bool m_wasStarted { false }; 193 191 bool m_didConsumeSandboxExtensions { false }; 194 bool m_defersLoading { false };195 192 bool m_isAllowedToAskUserForCredentials { false }; 196 193 size_t m_numBytesReceived { 0 }; -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
r240973 r241317 61 61 void transferSandboxExtensionToDownload(Download&); 62 62 63 void suspend() override;64 63 void cancel() override; 65 64 void resume() override; -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
r240973 r241317 477 477 } 478 478 479 void NetworkDataTaskCocoa::suspend()480 {481 if (m_failureTimer.isActive())482 m_failureTimer.stop();483 [m_task suspend];484 }485 486 479 NetworkDataTask::State NetworkDataTaskCocoa::state() const 487 480 { -
trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp
r240029 r241317 97 97 } 98 98 99 void NetworkDataTaskCurl::suspend()100 {101 ASSERT(m_state != State::Suspended);102 if (m_state == State::Canceling || m_state == State::Completed)103 return;104 105 m_state = State::Suspended;106 107 if (m_curlRequest)108 m_curlRequest->suspend();109 }110 111 99 void NetworkDataTaskCurl::cancel() 112 100 { -
trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h
r236073 r241317 58 58 NetworkDataTaskCurl(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, bool dataTaskIsForMainFrameNavigation); 59 59 60 void suspend() override;61 60 void cancel() override; 62 61 void resume() override; -
trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp
r240925 r241317 234 234 ASSERT_NOT_REACHED(); 235 235 } 236 }237 238 void NetworkDataTaskSoup::suspend()239 {240 ASSERT(m_state != State::Suspended);241 if (m_state == State::Canceling || m_state == State::Completed)242 return;243 m_state = State::Suspended;244 245 stopTimeout();246 236 } 247 237 -
trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h
r231008 r241317 47 47 NetworkDataTaskSoup(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, bool dataTaskIsForMainFrameNavigation); 48 48 49 void suspend() override;50 49 void cancel() override; 51 50 void resume() override; -
trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
r241308 r241317 278 278 loadParameters.clientCredentialPolicy = (loadParameters.webFrameID && loadParameters.webPageID && resourceLoader.isAllowedToAskUserForCredentials()) ? ClientCredentialPolicy::MayAskClientForCredentials : ClientCredentialPolicy::CannotAskClientForCredentials; 279 279 loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = shouldClearReferrerOnHTTPSToHTTPRedirect; 280 loadParameters.defersLoading = resourceLoader.defersLoading();281 280 loadParameters.needsCertificateInfo = resourceLoader.shouldIncludeCertificateInfo(); 282 281 loadParameters.maximumBufferingTime = maximumBufferingTime; … … 427 426 } 428 427 429 void WebLoaderStrategy::setDefersLoading(ResourceLoader& resourceLoader, bool defers) 430 { 431 ResourceLoadIdentifier identifier = resourceLoader.identifier(); 432 WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::SetDefersLoading(identifier, defers), 0); 428 void WebLoaderStrategy::setDefersLoading(ResourceLoader&, bool) 429 { 430 ASSERT_NOT_REACHED(); 433 431 } 434 432 -
trunk/Tools/ChangeLog
r241306 r241317 1 2019-02-12 Alex Christensen <achristensen@webkit.org> 2 3 Remove setDefersLoading infrastructure from WebKit2 4 https://bugs.webkit.org/show_bug.cgi?id=194506 5 6 Reviewed by Brady Eidson. 7 8 * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: 9 * WebKitTestRunner/InjectedBundle/TestRunner.cpp: 10 (WTR::TestRunner::setDefersLoading): Deleted. 11 * WebKitTestRunner/InjectedBundle/TestRunner.h: 12 1 13 2019-02-12 Alex Christensen <achristensen@webkit.org> 2 14 -
trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
r240928 r241317 170 170 void setShouldStayOnPageAfterHandlingBeforeUnload(boolean flag); 171 171 172 void setDefersLoading(boolean flag);173 172 void setStopProvisionalFrameLoads(); 174 173 -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
r241127 r241317 742 742 } 743 743 744 void TestRunner::setDefersLoading(bool)745 {746 }747 748 744 bool TestRunner::didReceiveServerRedirectForProvisionalNavigation() const 749 745 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
r240928 r241317 263 263 264 264 void setShouldStayOnPageAfterHandlingBeforeUnload(bool); 265 266 void setDefersLoading(bool);267 265 268 266 void setStopProvisionalFrameLoads() { m_shouldStopProvisionalFrameLoads = true; }
Note:
See TracChangeset
for help on using the changeset viewer.