Changeset 170776 in webkit
- Timestamp:
- Jul 3, 2014 4:31:15 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r170775 r170776 1 2014-07-03 Dan Bernstein <mitz@apple.com> 2 3 <rdar://problem/16337741> The UI process needs to track the number of HTTP subresource loads in progress (or at least whether there are any) 4 https://bugs.webkit.org/show_bug.cgi?id=134615 5 6 Reviewed by Anders Carlsson. 7 8 Added a _networkRequestsInProgress boolean property to WKWebView. 9 10 * UIProcess/API/Cocoa/WKBrowsingContextController.mm: Added no-op overrides of new 11 PageLoadStateObserver member functions. 12 13 * UIProcess/API/Cocoa/WKWebView.mm: 14 (-[WKWebView _networkRequestsInProgress]): New getter that gets this state from the 15 PageLoadState. 16 * UIProcess/API/Cocoa/WKWebViewPrivate.h: Declared new property. 17 18 * UIProcess/Cocoa/NavigationState.h: 19 * UIProcess/Cocoa/NavigationState.mm: 20 (WebKit::NavigationState::willChangeNetworkRequestsInProgress):: Override this new 21 PageLoadState::Observer member function by sending the appropriate KVO change message to the 22 WKWebView. 23 (WebKit::NavigationState::didChangeNetworkRequestsInProgress): Ditto. 24 25 * UIProcess/PageLoadState.cpp: 26 (WebKit::PageLoadState::commitChanges): Check for changes to networkRequestsInProgress 27 and call the observers if needed. 28 (WebKit::PageLoadState::reset): Reset networkRequestsInProgress in the uncommitted state. 29 (WebKit::PageLoadState::setNetworkRequestsInProgress): Set networkRequestsInProgress in the 30 uncommitted state. 31 * UIProcess/PageLoadState.h: 32 (WebKit::PageLoadState::networkRequestsInProgress): Added this getter. 33 (WebKit::PageLoadState::Data::Data): Initialize new networkRequestsInProgress member. 34 35 * UIProcess/WebPageProxy.cpp: 36 (WebKit::WebPageProxy::setNetworkRequestsInProgress): Added. Updates the PageLoadState. 37 * UIProcess/WebPageProxy.h: 38 * UIProcess/WebPageProxy.messages.in: Added SetNetworkRequestsInProgress message. 39 40 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 41 (WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest): Call 42 WebPage::addResourceRequest. 43 (WebKit::WebFrameLoaderClient::dispatchDidFinishLoading): Call 44 WebPage::removeResourceRequest. 45 (WebKit::WebFrameLoaderClient::dispatchDidFailLoading): Ditto. 46 47 * WebProcess/WebPage/WebPage.cpp: 48 (WebKit::WebPage::addResourceRequest): Added. If the new request is for an HTTP-family URL, 49 add its identifier to the set of network resourece request identifiers. If the set was 50 previously empty, send the WebPageProxy a message. 51 (WebKit::WebPage::removeResourceRequest): Added. Remove the identifier from the set. If it 52 becomes empty, send the WebPageProxy a message. 53 * WebProcess/WebPage/WebPage.h: 54 1 55 2014-07-03 Anders Carlsson <andersca@apple.com> 2 56 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm
r170069 r170776 125 125 virtual void willChangeCanGoForward() override { } 126 126 virtual void didChangeCanGoForward() override { } 127 virtual void willChangeNetworkRequestsInProgress() override { } 128 virtual void didChangeNetworkRequestsInProgress() override { } 127 129 128 130 WKBrowsingContextController *m_controller; -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r170774 r170776 1652 1652 } 1653 1653 1654 - (BOOL)_networkRequestsInProgress 1655 { 1656 return _page->pageLoadState().networkRequestsInProgress(); 1657 } 1658 1654 1659 static inline WebCore::LayoutMilestones layoutMilestones(_WKRenderingProgressEvents events) 1655 1660 { -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h
r170711 r170776 97 97 @property (nonatomic, setter=_setAddsVisitedLinks:) BOOL _addsVisitedLinks; 98 98 99 @property (nonatomic, readonly) BOOL _networkRequestsInProgress; 100 99 101 - (void)_close; 100 102 -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h
r170660 r170776 132 132 virtual void willChangeCanGoForward() override; 133 133 virtual void didChangeCanGoForward() override; 134 virtual void willChangeNetworkRequestsInProgress() override; 135 virtual void didChangeNetworkRequestsInProgress() override; 134 136 135 137 WKWebView *m_webView; -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm
r170774 r170776 798 798 } 799 799 800 void NavigationState::willChangeNetworkRequestsInProgress() 801 { 802 [m_webView willChangeValueForKey:@"_networkRequestsInProgress"]; 803 } 804 805 void NavigationState::didChangeNetworkRequestsInProgress() 806 { 807 [m_webView didChangeValueForKey:@"_networkRequestsInProgress"]; 808 } 809 800 810 } // namespace WebKit 801 811 -
trunk/Source/WebKit2/UIProcess/PageLoadState.cpp
r170774 r170776 103 103 bool hasOnlySecureContentChanged = hasOnlySecureContent(m_committedState) != hasOnlySecureContent(m_uncommittedState); 104 104 bool estimatedProgressChanged = estimatedProgress(m_committedState) != estimatedProgress(m_uncommittedState); 105 bool networkRequestsInProgressChanged = m_committedState.networkRequestsInProgress != m_uncommittedState.networkRequestsInProgress; 105 106 106 107 if (canGoBackChanged) … … 118 119 if (estimatedProgressChanged) 119 120 callObserverCallback(&Observer::willChangeEstimatedProgress); 121 if (networkRequestsInProgressChanged) 122 callObserverCallback(&Observer::willChangeNetworkRequestsInProgress); 120 123 121 124 m_committedState = m_uncommittedState; 122 125 123 126 // The "did" ordering is the reverse of the "will". This is a requirement of Cocoa Key-Value Observing. 127 if (networkRequestsInProgressChanged) 128 callObserverCallback(&Observer::didChangeNetworkRequestsInProgress); 124 129 if (estimatedProgressChanged) 125 130 callObserverCallback(&Observer::didChangeEstimatedProgress); … … 155 160 156 161 m_uncommittedState.estimatedProgress = 0; 162 m_uncommittedState.networkRequestsInProgress = false; 157 163 } 158 164 … … 369 375 } 370 376 377 void PageLoadState::setNetworkRequestsInProgress(const Transaction::Token& token, bool networkRequestsInProgress) 378 { 379 ASSERT_UNUSED(token, &token.m_pageLoadState == this); 380 m_uncommittedState.networkRequestsInProgress = networkRequestsInProgress; 381 } 382 371 383 bool PageLoadState::isLoading(const Data& data) 372 384 { -
trunk/Source/WebKit2/UIProcess/PageLoadState.h
r169805 r170776 68 68 virtual void willChangeCanGoForward() = 0; 69 69 virtual void didChangeCanGoForward() = 0; 70 71 virtual void willChangeNetworkRequestsInProgress() = 0; 72 virtual void didChangeNetworkRequestsInProgress() = 0; 70 73 }; 71 74 … … 119 122 120 123 double estimatedProgress() const; 124 bool networkRequestsInProgress() const { return m_committedState.networkRequestsInProgress; } 121 125 122 126 const String& pendingAPIRequestURL() const; … … 150 154 void didChangeProgress(const Transaction::Token&, double); 151 155 void didFinishProgress(const Transaction::Token&); 156 void setNetworkRequestsInProgress(const Transaction::Token&, bool); 152 157 153 158 private: … … 166 171 , canGoForward(false) 167 172 , estimatedProgress(0) 173 , networkRequestsInProgress(false) 168 174 { 169 175 } … … 185 191 186 192 double estimatedProgress; 193 bool networkRequestsInProgress; 187 194 }; 188 195 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r170774 r170776 2443 2443 } 2444 2444 2445 void WebPageProxy::setNetworkRequestsInProgress(bool networkRequestsInProgress) 2446 { 2447 auto transaction = m_pageLoadState.transaction(); 2448 m_pageLoadState.setNetworkRequestsInProgress(transaction, networkRequestsInProgress); 2449 } 2450 2445 2451 void WebPageProxy::didDestroyNavigation(uint64_t navigationID) 2446 2452 { -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r170719 r170776 957 957 void didChangeProgress(double); 958 958 void didFinishProgress(); 959 void setNetworkRequestsInProgress(bool); 960 959 961 void didDestroyNavigation(uint64_t navigationID); 960 962 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in
r170660 r170776 120 120 DidStartProgress() 121 121 122 SetNetworkRequestsInProgress(bool networkRequestsInProgress) 123 122 124 # Frame lifetime messages 123 125 DidCreateMainFrame(uint64_t frameID) -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r170774 r170776 170 170 171 171 webPage->injectedBundleResourceLoadClient().didInitiateLoadForResource(webPage, m_frame, identifier, request, pageIsProvisionallyLoading); 172 webPage->addResourceRequest(identifier, request); 172 173 } 173 174 … … 250 251 251 252 webPage->injectedBundleResourceLoadClient().didFinishLoadForResource(webPage, m_frame, identifier); 253 webPage->removeResourceRequest(identifier); 252 254 } 253 255 … … 259 261 260 262 webPage->injectedBundleResourceLoadClient().didFailLoadForResource(webPage, m_frame, identifier, error); 263 webPage->removeResourceRequest(identifier); 261 264 } 262 265 -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r170774 r170776 3807 3807 #endif 3808 3808 3809 void WebPage::addResourceRequest(unsigned long identifier, const WebCore::ResourceRequest& request) 3810 { 3811 if (!request.url().protocolIsInHTTPFamily()) 3812 return; 3813 3814 ASSERT(!m_networkResourceRequestIdentifiers.contains(identifier)); 3815 bool wasEmpty = m_networkResourceRequestIdentifiers.isEmpty(); 3816 m_networkResourceRequestIdentifiers.add(identifier); 3817 if (wasEmpty) 3818 send(Messages::WebPageProxy::SetNetworkRequestsInProgress(true)); 3819 } 3820 3821 void WebPage::removeResourceRequest(unsigned long identifier) 3822 { 3823 if (!m_networkResourceRequestIdentifiers.remove(identifier)) 3824 return; 3825 3826 if (m_networkResourceRequestIdentifiers.isEmpty()) 3827 send(Messages::WebPageProxy::SetNetworkRequestsInProgress(false)); 3828 } 3829 3809 3830 void WebPage::setMediaVolume(float volume) 3810 3831 { -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r170723 r170776 691 691 #endif 692 692 693 void addResourceRequest(unsigned long, const WebCore::ResourceRequest&); 694 void removeResourceRequest(unsigned long); 695 693 696 void setMediaVolume(float); 694 697 void setMayStartMediaWhenInWindow(bool); … … 1201 1204 unsigned m_cachedPageCount; 1202 1205 1206 HashSet<unsigned long> m_networkResourceRequestIdentifiers; 1207 1203 1208 WebCore::IntSize m_minimumLayoutSize; 1204 1209 bool m_autoSizingShouldExpandToViewHeight;
Note: See TracChangeset
for help on using the changeset viewer.