Changeset 164132 in webkit
- Timestamp:
- Feb 14, 2014 2:09:57 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r164126 r164132 1 2014-02-14 Anders Carlsson <andersca@apple.com> 2 3 Add WKBackForwardListDidChangeNotification 4 https://bugs.webkit.org/show_bug.cgi?id=128839 5 6 Reviewed by Dan Bernstein. 7 8 Also, make LoaderClient::didChangeBackForwardList take a Vector of WebBackForwardListItems 9 instead of a pointer to a Vector of API::Objects. 10 11 * Shared/API/Cocoa/WKFoundation.h: 12 * UIProcess/API/APILoaderClient.h: 13 (API::LoaderClient::didChangeBackForwardList): 14 * UIProcess/API/C/WKPage.cpp: 15 (WKPageSetPageLoaderClient): 16 * UIProcess/API/Cocoa/WKBackForwardList.h: 17 * UIProcess/API/Cocoa/WKBackForwardList.mm: 18 * UIProcess/Cocoa/NavigationState.h: 19 * UIProcess/Cocoa/NavigationState.mm: 20 (WebKit::NavigationState::LoaderClient::didChangeBackForwardList): 21 * UIProcess/WebBackForwardList.cpp: 22 (WebKit::WebBackForwardList::addItem): 23 (WebKit::WebBackForwardList::goToItem): 24 (WebKit::WebBackForwardList::clear): 25 * UIProcess/WebPageProxy.cpp: 26 (WebKit::WebPageProxy::didChangeBackForwardList): 27 * UIProcess/WebPageProxy.h: 28 1 29 2014-02-12 Jer Noble <jer.noble@apple.com> 2 30 -
trunk/Source/WebKit2/Shared/API/Cocoa/WKFoundation.h
r162541 r164132 36 36 #endif 37 37 38 #ifdef __cplusplus 39 #define WK_EXTERN extern "C" __attribute__((visibility ("default"))) 40 #else 41 #define WK_EXTERN extern __attribute__((visibility ("default"))) 42 #endif 43 38 44 #define WK_DESIGNATED_INITIALIZER -
trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h
r163243 r164132 88 88 virtual void processDidCrash(WebKit::WebPageProxy*) { } 89 89 90 virtual void didChangeBackForwardList(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem* addedItem, Vector<RefPtr< API::Object>>*removedItems) { }90 virtual void didChangeBackForwardList(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem* addedItem, Vector<RefPtr<WebKit::WebBackForwardListItem>> removedItems) { } 91 91 virtual void willGoToBackForwardListItem(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem*, API::Object*) { } 92 92 -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp
r163821 r164132 896 896 } 897 897 898 virtual void didChangeBackForwardList(WebPageProxy* page, WebBackForwardListItem* addedItem, Vector<RefPtr< API::Object>>*removedItems) override898 virtual void didChangeBackForwardList(WebPageProxy* page, WebBackForwardListItem* addedItem, Vector<RefPtr<WebBackForwardListItem>> removedItems) override 899 899 { 900 900 if (!m_client.didChangeBackForwardList) … … 902 902 903 903 RefPtr<API::Array> removedItemsArray; 904 if (removedItems && !removedItems->isEmpty()) 905 removedItemsArray = API::Array::create(std::move(*removedItems)); 904 if (!removedItems.isEmpty()) { 905 Vector<RefPtr<API::Object>> removedItemsVector; 906 removedItemsVector.reserveInitialCapacity(removedItems.size()); 907 for (auto& removedItem : removedItems) 908 removedItemsVector.append(std::move(removedItem)); 909 910 removedItemsArray = API::Array::create(std::move(removedItemsVector)); 911 } 906 912 907 913 m_client.didChangeBackForwardList(toAPI(page), toAPI(addedItem), toAPI(removedItemsArray.get()), m_client.base.clientInfo); -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBackForwardList.h
r161566 r164132 30 30 #import <WebKit2/WKBackForwardListItem.h> 31 31 32 /*! Posted when a back-forward list changes. The notification object is the WKBackForwardList 33 that changed. The <code>userInfo</code> dictionary may contain the 34 @link WKBackForwardListAddedItemKey @/link and @link WKBackForwardListRemovedItemsKey @/link 35 keys. 36 */ 37 WK_EXTERN NSString * const WKBackForwardListDidChangeNotification; 38 39 /*! A key in the <code>userInfo</code> dictionary of a 40 @link WKBackForwardListDidChangeNotification @/link, whose value is the 41 @link WKBackForwardListItem @/link that was appended to the list. 42 */ 43 WK_EXTERN NSString * const WKBackForwardListAddedItemKey; 44 45 46 /*! A key in the <code>userInfo</code> dictionary of a 47 @link WKBackForwardListDidChangeNotification @/link, whose value is an NSArray of 48 @link WKBackForwardListItem@/link instances that were removed from the list. 49 */ 50 WK_EXTERN NSString * const WKBackForwardListRemovedItemsKey; 51 32 52 WK_API_CLASS 33 53 @interface WKBackForwardList : NSObject -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBackForwardList.mm
r159881 r164132 31 31 #import "WKBackForwardListItemInternal.h" 32 32 #import "WKNSArray.h" 33 34 WK_EXPORT NSString * const WKBackForwardListDidChangeNotification = @"WKBackForwardListDidChangeNotification"; 35 WK_EXPORT NSString * const WKBackForwardListAddedItemKey = @"WKBackForwardListAddedItemKey"; 36 WK_EXPORT NSString * const WKBackForwardListRemovedItemsKey = @"WKBackForwardListRemovedItemsKey"; 33 37 34 38 using namespace WebKit; -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h
r164049 r164132 85 85 virtual void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) override; 86 86 virtual void didLayout(WebKit::WebPageProxy*, WebCore::LayoutMilestones, API::Object*) override; 87 virtual void didChangeBackForwardList(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem* addedItem, Vector<RefPtr<WebKit::WebBackForwardListItem>> removedItems) override; 87 88 88 89 NavigationState& m_navigationState; -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm
r164111 r164132 31 31 #import "NavigationActionData.h" 32 32 #import "PageLoadState.h" 33 #import "WKBackForwardListInternal.h" 34 #import "WKBackForwardListItemInternal.h" 33 35 #import "WKFrameInfoInternal.h" 34 36 #import "WKNavigationActionInternal.h" … … 373 375 } 374 376 377 void NavigationState::LoaderClient::didChangeBackForwardList(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem* addedItem, Vector<RefPtr<WebKit::WebBackForwardListItem>> removedItems) 378 { 379 auto userInfo = adoptNS([[NSMutableDictionary alloc] init]); 380 381 if (addedItem) 382 [userInfo setObject:wrapper(*addedItem) forKey:WKBackForwardListAddedItemKey]; 383 384 if (!removedItems.isEmpty()) { 385 Vector<id> removed; 386 removed.reserveInitialCapacity(removedItems.size()); 387 388 for (const auto& removedItem : removedItems) 389 removed.uncheckedAppend(wrapper(*removedItem)); 390 391 [userInfo setObject:adoptNS([[NSArray alloc] initWithObjects:removed.data() count:removed.size()]).get() forKey:WKBackForwardListRemovedItemsKey]; 392 } 393 394 [[NSNotificationCenter defaultCenter] postNotificationName:WKBackForwardListDidChangeNotification object:wrapper(m_navigationState.m_webView->_page->backForwardList()) userInfo:userInfo.get()]; 395 } 396 375 397 void NavigationState::willChangeIsLoading() 376 398 { -
trunk/Source/WebKit2/UIProcess/WebBackForwardList.cpp
r159891 r164132 75 75 return; 76 76 77 Vector<RefPtr< API::Object>> removedItems;77 Vector<RefPtr<WebBackForwardListItem>> removedItems; 78 78 79 79 if (m_hasCurrentIndex) { … … 128 128 m_entries.insert(m_currentIndex, newItem); 129 129 130 m_page->didChangeBackForwardList(newItem, &removedItems);130 m_page->didChangeBackForwardList(newItem, std::move(removedItems)); 131 131 } 132 132 … … 145 145 if (index < m_entries.size()) { 146 146 m_currentIndex = index; 147 m_page->didChangeBackForwardList( 0, 0);147 m_page->didChangeBackForwardList(nullptr, { }); 148 148 } 149 149 } … … 258 258 259 259 RefPtr<WebBackForwardListItem> currentItem = this->currentItem(); 260 Vector<RefPtr< API::Object>> removedItems;260 Vector<RefPtr<WebBackForwardListItem>> removedItems; 261 261 262 262 if (!currentItem) { … … 276 276 m_entries.clear(); 277 277 m_hasCurrentIndex = false; 278 m_page->didChangeBackForwardList( 0, &removedItems);278 m_page->didChangeBackForwardList(nullptr, std::move(removedItems)); 279 279 280 280 return; … … 303 303 } 304 304 305 m_page->didChangeBackForwardList( 0, &removedItems);305 m_page->didChangeBackForwardList(nullptr, std::move(removedItems)); 306 306 } 307 307 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r163999 r164132 856 856 } 857 857 858 void WebPageProxy::didChangeBackForwardList(WebBackForwardListItem* added, Vector<RefPtr< API::Object>>*removed)859 { 860 m_loaderClient->didChangeBackForwardList(this, added, removed);858 void WebPageProxy::didChangeBackForwardList(WebBackForwardListItem* added, Vector<RefPtr<WebBackForwardListItem>> removed) 859 { 860 m_loaderClient->didChangeBackForwardList(this, added, std::move(removed)); 861 861 862 862 #if PLATFORM(MAC) && !PLATFORM(IOS) -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r163908 r164132 409 409 void goToBackForwardItem(WebBackForwardListItem*); 410 410 void tryRestoreScrollPosition(); 411 void didChangeBackForwardList(WebBackForwardListItem* addedItem, Vector<RefPtr< API::Object>>* removedItems);411 void didChangeBackForwardList(WebBackForwardListItem* addedItem, Vector<RefPtr<WebBackForwardListItem>> removed); 412 412 void willGoToBackForwardListItem(uint64_t itemID, IPC::MessageDecoder&); 413 413
Note: See TracChangeset
for help on using the changeset viewer.