Changeset 150688 in webkit
- Timestamp:
- May 25, 2013, 10:57:19 AM (12 years ago)
- Location:
- trunk/Source/WebKit/mac
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/mac/ChangeLog
r150668 r150688 1 2013-05-25 Dan Bernstein <mitz@apple.com> 2 3 <rdar://problem/13924889> -webView:didPerformClientRedirectFromURL:toURL:inFrame: should be given the redirecting URL as the “from” URL 4 https://bugs.webkit.org/show_bug.cgi?id=116733 5 6 Reviewed by Adele Peterson. 7 8 By the time the history controller calls updateGlobalHistoryRedirectLinks(), the document 9 loader already reflects the destination URL. In order to be able to provide the immediate 10 source URL to the delegate, we make WebFrame track a URL and provisional URL, updating them 11 in response to FrameLoader callbacks in exactly the same way WebFrameProxy maintains its 12 m_url and m_provisionalURL member variables. 13 14 * WebCoreSupport/WebFrameLoaderClient.mm: 15 (WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): Update 16 provisionalURL. 17 (WebFrameLoaderClient::dispatchDidChangeLocationWithinPage): Update url. 18 (WebFrameLoaderClient::dispatchDidPushStateWithinPage): Ditto. 19 (WebFrameLoaderClient::dispatchDidReplaceStateWithinPage): Ditto. 20 (WebFrameLoaderClient::dispatchDidPopStateWithinPage): Ditto. 21 (WebFrameLoaderClient::dispatchDidStartProvisionalLoad): Update provisionalURL. 22 (WebFrameLoaderClient::dispatchDidCommitLoad): Update URL and provisionalURL. 23 (WebFrameLoaderClient::dispatchDidFailProvisionalLoad): Clear provisionalURL. 24 (WebFrameLoaderClient::dispatchDidFailLoad): Added an assertion. 25 (WebFrameLoaderClient::dispatchDidFinishLoad): Ditto. 26 (WebFrameLoaderClient::updateGlobalHistoryRedirectLinks): Pass the last committed URL as the 27 source, rather than clientRedirectSourceForHistory(). 28 * WebView/WebFrameInternal.h: Added url and provisionalURL ivars to WebFramePrivate. 29 1 30 2013-05-24 Anders Carlsson <andersca@apple.com> 2 31 -
trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm
r150668 r150688 515 515 void WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad() 516 516 { 517 m_webFrame->_private->provisionalURL = core(m_webFrame.get())->loader()->provisionalDocumentLoader()->url().string(); 518 517 519 WebView *webView = getWebView(m_webFrame.get()); 518 520 WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView); … … 541 543 void WebFrameLoaderClient::dispatchDidChangeLocationWithinPage() 542 544 { 545 m_webFrame->_private->url = core(m_webFrame.get())->document()->url().string(); 546 543 547 WebView *webView = getWebView(m_webFrame.get()); 544 548 WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView); … … 549 553 void WebFrameLoaderClient::dispatchDidPushStateWithinPage() 550 554 { 555 m_webFrame->_private->url = core(m_webFrame.get())->document()->url().string(); 556 551 557 WebView *webView = getWebView(m_webFrame.get()); 552 558 WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView); … … 557 563 void WebFrameLoaderClient::dispatchDidReplaceStateWithinPage() 558 564 { 565 m_webFrame->_private->url = core(m_webFrame.get())->document()->url().string(); 566 559 567 WebView *webView = getWebView(m_webFrame.get()); 560 568 WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView); … … 565 573 void WebFrameLoaderClient::dispatchDidPopStateWithinPage() 566 574 { 575 m_webFrame->_private->url = core(m_webFrame.get())->document()->url().string(); 576 567 577 WebView *webView = getWebView(m_webFrame.get()); 568 578 WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView); … … 590 600 void WebFrameLoaderClient::dispatchDidStartProvisionalLoad() 591 601 { 592 WebView *webView = getWebView(m_webFrame.get()); 602 ASSERT(!m_webFrame->_private->provisionalURL); 603 m_webFrame->_private->provisionalURL = core(m_webFrame.get())->loader()->provisionalDocumentLoader()->url().string(); 604 605 WebView *webView = getWebView(m_webFrame.get()); 593 606 [webView _didStartProvisionalLoadForFrame:m_webFrame.get()]; 594 607 … … 620 633 [webView _didCommitLoadForFrame:m_webFrame.get()]; 621 634 635 m_webFrame->_private->url = m_webFrame->_private->provisionalURL; 636 m_webFrame->_private->provisionalURL = nullptr; 637 622 638 WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView); 623 639 if (implementations->didCommitLoadForFrameFunc) … … 627 643 void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error) 628 644 { 629 WebView *webView = getWebView(m_webFrame.get()); 645 m_webFrame->_private->provisionalURL = nullptr; 646 647 WebView *webView = getWebView(m_webFrame.get()); 630 648 [webView _didFailProvisionalLoadWithError:error forFrame:m_webFrame.get()]; 631 649 … … 639 657 void WebFrameLoaderClient::dispatchDidFailLoad(const ResourceError& error) 640 658 { 641 WebView *webView = getWebView(m_webFrame.get()); 659 ASSERT(!m_webFrame->_private->provisionalURL); 660 661 WebView *webView = getWebView(m_webFrame.get()); 642 662 [webView _didFailLoadWithError:error forFrame:m_webFrame.get()]; 643 663 … … 659 679 void WebFrameLoaderClient::dispatchDidFinishLoad() 660 680 { 661 WebView *webView = getWebView(m_webFrame.get()); 681 ASSERT(!m_webFrame->_private->provisionalURL); 682 683 WebView *webView = getWebView(m_webFrame.get()); 662 684 [webView _didFinishLoadForFrame:m_webFrame.get()]; 663 685 … … 922 944 if (implementations->clientRedirectFunc) { 923 945 CallHistoryDelegate(implementations->clientRedirectFunc, view, @selector(webView:didPerformClientRedirectFromURL:toURL:inFrame:), 924 loader->clientRedirectSourceForHistory(), loader->clientRedirectDestinationForHistory(), m_webFrame.get());946 m_webFrame->_private->url.get(), loader->clientRedirectDestinationForHistory(), m_webFrame.get()); 925 947 } 926 948 } else if (WebHistoryItem *item = [[WebHistory optionalSharedHistory] _itemForURLString:loader->clientRedirectSourceForHistory()]) -
trunk/Source/WebKit/mac/WebView/WebFrameInternal.h
r117771 r150688 83 83 BOOL shouldCreateRenderers; 84 84 BOOL includedInWebKitStatistics; 85 RetainPtr<NSString> url; 86 RetainPtr<NSString> provisionalURL; 85 87 } 86 88 @end
Note:
See TracChangeset
for help on using the changeset viewer.