Diff
Modified: trunk/Source/WebKit/ChangeLog (222823 => 222824)
--- trunk/Source/WebKit/ChangeLog 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/ChangeLog 2017-10-04 00:51:24 UTC (rev 222824)
@@ -1,3 +1,50 @@
+2017-10-03 Alex Christensen <[email protected]>
+
+ Moderize WebKit's back forward list code
+ https://bugs.webkit.org/show_bug.cgi?id=177843
+
+ Reviewed by Tim Horton.
+
+ Use Ref instead of RefPtr when possible.
+ Use references instead of pointers when possible.
+ Remove unnecessary null checks.
+ Reduce unnecessary Vector copying.
+
+ * Shared/SessionState.h:
+ * Shared/WebBackForwardListItem.h:
+ * UIProcess/API/APILoaderClient.h:
+ (API::LoaderClient::didChangeBackForwardList):
+ (API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPageLoaderClient):
+ * UIProcess/WebBackForwardList.cpp:
+ (WebKit::WebBackForwardList::pageClosed):
+ (WebKit::WebBackForwardList::addItem):
+ (WebKit::WebBackForwardList::goToItem):
+ (WebKit::WebBackForwardList::currentItem const):
+ (WebKit::WebBackForwardList::backItem const):
+ (WebKit::WebBackForwardList::forwardItem const):
+ (WebKit::WebBackForwardList::itemAtIndex const):
+ (WebKit::WebBackForwardList::backListAsAPIArrayWithLimit const):
+ (WebKit::WebBackForwardList::forwardListAsAPIArrayWithLimit const):
+ (WebKit::WebBackForwardList::removeAllItems):
+ (WebKit::WebBackForwardList::clear):
+ (WebKit::WebBackForwardList::backForwardListState const):
+ (WebKit::WebBackForwardList::restoreFromState):
+ * UIProcess/WebBackForwardList.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::reattachToWebProcessWithItem):
+ (WebKit::WebPageProxy::initializeWebPage):
+ (WebKit::WebPageProxy::didChangeBackForwardList):
+ (WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
+ (WebKit::WebPageProxy::backForwardGoToItem):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::registerNewWebBackForwardListItem):
+ * UIProcess/WebProcessProxy.h:
+ * WebProcess/WebPage/WebBackForwardListProxy.cpp:
+ (WebKit::WebBackForwardListProxy::itemAtIndex):
+
2017-10-03 Chris Dumez <[email protected]>
SharedStringHashStore should support removing hashes
Modified: trunk/Source/WebKit/Shared/SessionState.h (222823 => 222824)
--- trunk/Source/WebKit/Shared/SessionState.h 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/Shared/SessionState.h 2017-10-04 00:51:24 UTC (rev 222824)
@@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef SessionState_h
-#define SessionState_h
+#pragma once
#if PLATFORM(COCOA)
#include "ViewSnapshotStore.h"
@@ -150,5 +149,3 @@
};
} // namespace WebKit
-
-#endif // SessionState_h
Modified: trunk/Source/WebKit/Shared/WebBackForwardListItem.h (222823 => 222824)
--- trunk/Source/WebKit/Shared/WebBackForwardListItem.h 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/Shared/WebBackForwardListItem.h 2017-10-04 00:51:24 UTC (rev 222824)
@@ -23,12 +23,11 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef WebBackForwardListItem_h
-#define WebBackForwardListItem_h
+#pragma once
#include "APIObject.h"
#include "SessionState.h"
-#include <wtf/RefPtr.h>
+#include <wtf/Ref.h>
#include <wtf/text/WTFString.h>
namespace API {
@@ -74,8 +73,6 @@
uint64_t m_pageID;
};
-typedef Vector<RefPtr<WebBackForwardListItem>> BackForwardListItemVector;
+typedef Vector<Ref<WebBackForwardListItem>> BackForwardListItemVector;
} // namespace WebKit
-
-#endif // WebBackForwardListItem_h
Modified: trunk/Source/WebKit/UIProcess/API/APILoaderClient.h (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/API/APILoaderClient.h 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/API/APILoaderClient.h 2017-10-04 00:51:24 UTC (rev 222824)
@@ -89,8 +89,8 @@
virtual void processDidBecomeResponsive(WebKit::WebPageProxy&) { }
virtual void processDidCrash(WebKit::WebPageProxy&) { }
- virtual void didChangeBackForwardList(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem*, Vector<RefPtr<WebKit::WebBackForwardListItem>>) { }
- virtual bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem*) { return true; }
+ virtual void didChangeBackForwardList(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem*, Vector<Ref<WebKit::WebBackForwardListItem>>&&) { }
+ virtual bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem&) { return true; }
virtual void willGoToBackForwardListItem(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem&, API::Object*) { }
virtual void didNavigateWithNavigationData(WebKit::WebPageProxy&, const WebKit::WebNavigationDataStore&, WebKit::WebFrameProxy&) { }
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2017-10-04 00:51:24 UTC (rev 222824)
@@ -1204,7 +1204,7 @@
m_client.processDidCrash(toAPI(&page), m_client.base.clientInfo);
}
- void didChangeBackForwardList(WebPageProxy& page, WebBackForwardListItem* addedItem, Vector<RefPtr<WebBackForwardListItem>> removedItems) override
+ void didChangeBackForwardList(WebPageProxy& page, WebBackForwardListItem* addedItem, Vector<Ref<WebBackForwardListItem>>&& removedItems) override
{
if (!m_client.didChangeBackForwardList)
return;
@@ -1222,12 +1222,12 @@
m_client.didChangeBackForwardList(toAPI(&page), toAPI(addedItem), toAPI(removedItemsArray.get()), m_client.base.clientInfo);
}
- bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy& page, WebKit::WebBackForwardListItem* item) override
+ bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy& page, WebKit::WebBackForwardListItem& item) override
{
if (!m_client.shouldKeepCurrentBackForwardListItemInList)
return true;
- return m_client.shouldKeepCurrentBackForwardListItemInList(toAPI(&page), toAPI(item), m_client.base.clientInfo);
+ return m_client.shouldKeepCurrentBackForwardListItemInList(toAPI(&page), toAPI(&item), m_client.base.clientInfo);
}
void willGoToBackForwardListItem(WebPageProxy& page, WebBackForwardListItem& item, API::Object* userData) override
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitBackForwardList.cpp (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitBackForwardList.cpp 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitBackForwardList.cpp 2017-10-04 00:51:24 UTC (rev 222824)
@@ -128,7 +128,7 @@
return list;
}
-void webkitBackForwardListChanged(WebKitBackForwardList* backForwardList, WebBackForwardListItem* webAddedItem, const Vector<RefPtr<WebBackForwardListItem>>& webRemovedItems)
+void webkitBackForwardListChanged(WebKitBackForwardList* backForwardList, WebBackForwardListItem* webAddedItem, Vector<Ref<WebBackForwardListItem>>&& webRemovedItems)
{
WebKitBackForwardListItem* addedItem = webkitBackForwardListGetOrCreateItem(backForwardList, webAddedItem);
GList* removedItems = nullptr;
@@ -138,12 +138,12 @@
// After a session restore, we still don't have wrappers for the newly added items, so it would be possible that
// the removed items are not in the map. In that case we create a wrapper now to pass it the changed signal, but
// without adding it to the item map. See https://bugs.webkit.org/show_bug.cgi?id=153233.
- GRefPtr<WebKitBackForwardListItem> removedItem = priv->itemsMap.get(webItem.get());
+ GRefPtr<WebKitBackForwardListItem> removedItem = priv->itemsMap.get(webItem.ptr());
if (removedItem) {
removedItems = g_list_prepend(removedItems, g_object_ref(removedItem.get()));
- priv->itemsMap.remove(webItem.get());
+ priv->itemsMap.remove(webItem.ptr());
} else
- removedItems = g_list_prepend(removedItems, webkitBackForwardListItemGetOrCreate(webItem.get()));
+ removedItems = g_list_prepend(removedItems, webkitBackForwardListItemGetOrCreate(webItem.ptr()));
}
g_signal_emit(backForwardList, signals[CHANGED], 0, addedItem, removedItems, nullptr);
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitBackForwardListPrivate.h (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitBackForwardListPrivate.h 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitBackForwardListPrivate.h 2017-10-04 00:51:24 UTC (rev 222824)
@@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef WebKitBackForwardListPrivate_h
-#define WebKitBackForwardListPrivate_h
+#pragma once
#include "WebBackForwardList.h"
#include "WebKitBackForwardList.h"
@@ -32,6 +31,4 @@
WebKitBackForwardList* webkitBackForwardListCreate(WebKit::WebBackForwardList*);
WebKitBackForwardListItem* webkitBackForwardListItemGetOrCreate(WebKit::WebBackForwardListItem*);
WebKit::WebBackForwardListItem* webkitBackForwardListItemGetItem(WebKitBackForwardListItem*);
-void webkitBackForwardListChanged(WebKitBackForwardList*, WebKit::WebBackForwardListItem* webAddedItem, const Vector<RefPtr<WebKit::WebBackForwardListItem>>&);
-
-#endif // WebKitBackForwardListPrivate_h
+void webkitBackForwardListChanged(WebKitBackForwardList*, WebKit::WebBackForwardListItem* webAddedItem, Vector<Ref<WebKit::WebBackForwardListItem>>&&);
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitLoaderClient.cpp (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitLoaderClient.cpp 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitLoaderClient.cpp 2017-10-04 00:51:24 UTC (rev 222824)
@@ -100,9 +100,9 @@
webkitWebViewInsecureContentDetected(m_webView, WEBKIT_INSECURE_CONTENT_RUN);
}
- void didChangeBackForwardList(WebPageProxy&, WebBackForwardListItem* addedItem, Vector<RefPtr<WebBackForwardListItem>> removedItems) override
+ void didChangeBackForwardList(WebPageProxy&, WebBackForwardListItem* addedItem, Vector<Ref<WebBackForwardListItem>>&& removedItems) override
{
- webkitBackForwardListChanged(webkit_web_view_get_back_forward_list(m_webView), addedItem, removedItems);
+ webkitBackForwardListChanged(webkit_web_view_get_back_forward_list(m_webView), addedItem, WTFMove(removedItems));
}
void didReceiveAuthenticationChallengeInFrame(WebPageProxy&, WebFrameProxy&, AuthenticationChallengeProxy* authenticationChallenge) override
Modified: trunk/Source/WebKit/UIProcess/WebBackForwardList.cpp (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/WebBackForwardList.cpp 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/WebBackForwardList.cpp 2017-10-04 00:51:24 UTC (rev 222824)
@@ -72,13 +72,8 @@
if (m_page) {
size_t size = m_entries.size();
- for (size_t i = 0; i < size; ++i) {
- ASSERT(m_entries[i]);
- if (!m_entries[i])
- continue;
-
- didRemoveItem(*m_entries[i]);
- }
+ for (size_t i = 0; i < size; ++i)
+ didRemoveItem(m_entries[i]);
}
m_page = 0;
@@ -93,7 +88,7 @@
if (!m_capacity || !newItem || !m_page)
return;
- Vector<RefPtr<WebBackForwardListItem>> removedItems;
+ Vector<Ref<WebBackForwardListItem>> removedItems;
if (m_hasCurrentIndex) {
m_page->recordAutomaticNavigationSnapshot();
@@ -102,7 +97,7 @@
unsigned targetSize = m_currentIndex + 1;
removedItems.reserveCapacity(m_entries.size() - targetSize);
while (m_entries.size() > targetSize) {
- didRemoveItem(*m_entries.last());
+ didRemoveItem(m_entries.last());
removedItems.append(WTFMove(m_entries.last()));
m_entries.removeLast();
}
@@ -110,7 +105,7 @@
// Toss the first item if the list is getting too big, as long as we're not using it
// (or even if we are, if we only want 1 entry).
if (m_entries.size() == m_capacity && (m_currentIndex || m_capacity == 1)) {
- didRemoveItem(*m_entries[0]);
+ didRemoveItem(m_entries[0]);
removedItems.append(WTFMove(m_entries[0]));
m_entries.remove(0);
@@ -126,10 +121,7 @@
// But just in case it does happen in practice we'll get back in to a consistent state now before adding the new item.
size_t size = m_entries.size();
for (size_t i = 0; i < size; ++i) {
- ASSERT(m_entries[i]);
- if (!m_entries[i])
- continue;
- didRemoveItem(*m_entries[i]);
+ didRemoveItem(m_entries[i]);
removedItems.append(WTFMove(m_entries[i]));
}
m_entries.clear();
@@ -142,7 +134,7 @@
m_currentIndex = 0;
m_hasCurrentIndex = true;
} else {
- shouldKeepCurrentItem = m_page->shouldKeepCurrentBackForwardListItemInList(m_entries[m_currentIndex].get());
+ shouldKeepCurrentItem = m_page->shouldKeepCurrentBackForwardListItemInList(m_entries[m_currentIndex]);
if (shouldKeepCurrentItem)
m_currentIndex++;
}
@@ -152,8 +144,8 @@
// If it is, something has gone wrong and we should not try to swap in the new item.
ASSERT(m_currentIndex < m_entries.size());
- removedItems.append(m_entries[m_currentIndex]);
- m_entries[m_currentIndex] = newItem;
+ removedItems.append(m_entries[m_currentIndex].copyRef());
+ m_entries[m_currentIndex] = *newItem;
} else {
// m_current should never be pointing more than 1 past the end of the entries Vector.
// If it is, something has gone wrong and we should not try to insert the new item.
@@ -160,20 +152,26 @@
ASSERT(m_currentIndex <= m_entries.size());
if (m_currentIndex <= m_entries.size())
- m_entries.insert(m_currentIndex, newItem);
+ m_entries.insert(m_currentIndex, *newItem);
}
m_page->didChangeBackForwardList(newItem, WTFMove(removedItems));
}
-void WebBackForwardList::goToItem(WebBackForwardListItem* item)
+void WebBackForwardList::goToItem(WebBackForwardListItem& item)
{
ASSERT(!m_hasCurrentIndex || m_currentIndex < m_entries.size());
- if (!m_entries.size() || !item || !m_page || !m_hasCurrentIndex)
+ if (!m_entries.size() || !m_page || !m_hasCurrentIndex)
return;
- size_t targetIndex = m_entries.find(item);
+ size_t targetIndex = notFound;
+ for (size_t i = 0; i < m_entries.size(); ++i) {
+ if (m_entries[i].ptr() == &item) {
+ targetIndex = i;
+ break;
+ }
+ }
// If the target item wasn't even in the list, there's nothing else to do.
if (targetIndex == notFound)
@@ -187,25 +185,30 @@
// If we're going to an item different from the current item, ask the client if the current
// item should remain in the list.
- WebBackForwardListItem* currentItem = m_entries[m_currentIndex].get();
+ auto& currentItem = m_entries[m_currentIndex];
bool shouldKeepCurrentItem = true;
- if (currentItem != item) {
+ if (currentItem.ptr() != &item) {
m_page->recordAutomaticNavigationSnapshot();
- shouldKeepCurrentItem = m_page->shouldKeepCurrentBackForwardListItemInList(m_entries[m_currentIndex].get());
+ shouldKeepCurrentItem = m_page->shouldKeepCurrentBackForwardListItemInList(m_entries[m_currentIndex]);
}
// If the client said to remove the current item, remove it and then update the target index.
- Vector<RefPtr<WebBackForwardListItem>> removedItems;
+ Vector<Ref<WebBackForwardListItem>> removedItems;
if (!shouldKeepCurrentItem) {
- removedItems.append(currentItem);
+ removedItems.append(currentItem.copyRef());
m_entries.remove(m_currentIndex);
- targetIndex = m_entries.find(item);
-
+ targetIndex = notFound;
+ for (size_t i = 0; i < m_entries.size(); ++i) {
+ if (m_entries[0].ptr() == &item) {
+ targetIndex = i;
+ break;
+ }
+ }
ASSERT(targetIndex != notFound);
}
m_currentIndex = targetIndex;
- m_page->didChangeBackForwardList(nullptr, removedItems);
+ m_page->didChangeBackForwardList(nullptr, WTFMove(removedItems));
}
WebBackForwardListItem* WebBackForwardList::currentItem() const
@@ -212,7 +215,7 @@
{
ASSERT(!m_hasCurrentIndex || m_currentIndex < m_entries.size());
- return m_page && m_hasCurrentIndex ? m_entries[m_currentIndex].get() : nullptr;
+ return m_page && m_hasCurrentIndex ? m_entries[m_currentIndex].ptr() : nullptr;
}
WebBackForwardListItem* WebBackForwardList::backItem() const
@@ -219,7 +222,7 @@
{
ASSERT(!m_hasCurrentIndex || m_currentIndex < m_entries.size());
- return m_page && m_hasCurrentIndex && m_currentIndex ? m_entries[m_currentIndex - 1].get() : nullptr;
+ return m_page && m_hasCurrentIndex && m_currentIndex ? m_entries[m_currentIndex - 1].ptr() : nullptr;
}
WebBackForwardListItem* WebBackForwardList::forwardItem() const
@@ -226,7 +229,7 @@
{
ASSERT(!m_hasCurrentIndex || m_currentIndex < m_entries.size());
- return m_page && m_hasCurrentIndex && m_entries.size() && m_currentIndex < m_entries.size() - 1 ? m_entries[m_currentIndex + 1].get() : nullptr;
+ return m_page && m_hasCurrentIndex && m_entries.size() && m_currentIndex < m_entries.size() - 1 ? m_entries[m_currentIndex + 1].ptr() : nullptr;
}
WebBackForwardListItem* WebBackForwardList::itemAtIndex(int index) const
@@ -243,7 +246,7 @@
if (index > forwardListCount())
return nullptr;
- return m_entries[index + m_currentIndex].get();
+ return m_entries[index + m_currentIndex].ptr();
}
int WebBackForwardList::backListCount() const
@@ -286,10 +289,8 @@
vector.reserveInitialCapacity(size);
ASSERT(backListSize >= size);
- for (unsigned i = backListSize - size; i < backListSize; ++i) {
- ASSERT(m_entries[i]);
- vector.uncheckedAppend(m_entries[i].get());
- }
+ for (unsigned i = backListSize - size; i < backListSize; ++i)
+ vector.uncheckedAppend(m_entries[i].ptr());
return API::Array::create(WTFMove(vector));
}
@@ -310,10 +311,8 @@
unsigned last = m_currentIndex + size;
ASSERT(last < m_entries.size());
- for (unsigned i = m_currentIndex + 1; i <= last; ++i) {
- ASSERT(m_entries[i]);
- vector.uncheckedAppend(m_entries[i].get());
- }
+ for (unsigned i = m_currentIndex + 1; i <= last; ++i)
+ vector.uncheckedAppend(m_entries[i].ptr());
return API::Array::create(WTFMove(vector));
}
@@ -322,14 +321,10 @@
{
ASSERT(!m_hasCurrentIndex || m_currentIndex < m_entries.size());
- Vector<RefPtr<WebBackForwardListItem>> removedItems;
+ Vector<Ref<WebBackForwardListItem>> removedItems;
for (auto& entry : m_entries) {
- ASSERT(entry);
- if (!entry)
- continue;
-
- didRemoveItem(*entry);
+ didRemoveItem(entry);
removedItems.append(WTFMove(entry));
}
@@ -347,7 +342,7 @@
return;
RefPtr<WebBackForwardListItem> currentItem = this->currentItem();
- Vector<RefPtr<WebBackForwardListItem>> removedItems;
+ Vector<Ref<WebBackForwardListItem>> removedItems;
if (!currentItem) {
// We should only ever have no current item if we also have no current item index.
@@ -355,11 +350,7 @@
// But just in case it does happen in practice we should get back into a consistent state now.
for (size_t i = 0; i < size; ++i) {
- ASSERT(m_entries[i]);
- if (!m_entries[i])
- continue;
-
- didRemoveItem(*m_entries[i]);
+ didRemoveItem(m_entries[i]);
removedItems.append(WTFMove(m_entries[i]));
}
@@ -371,14 +362,13 @@
}
for (size_t i = 0; i < size; ++i) {
- ASSERT(m_entries[i]);
- if (m_entries[i] && m_entries[i] != currentItem)
- didRemoveItem(*m_entries[i]);
+ if (m_entries[i].ptr() != currentItem)
+ didRemoveItem(m_entries[i]);
}
removedItems.reserveCapacity(size - 1);
for (size_t i = 0; i < size; ++i) {
- if (i != m_currentIndex && m_hasCurrentIndex && m_entries[i])
+ if (i != m_currentIndex && m_hasCurrentIndex)
removedItems.append(WTFMove(m_entries[i]));
}
@@ -386,7 +376,7 @@
if (currentItem) {
m_entries.shrink(1);
- m_entries[0] = WTFMove(currentItem);
+ m_entries[0] = currentItem.releaseNonNull();
} else {
m_entries.clear();
m_hasCurrentIndex = false;
@@ -404,7 +394,7 @@
backForwardListState.currentIndex = m_currentIndex;
for (size_t i = 0; i < m_entries.size(); ++i) {
- auto& entry = *m_entries[i];
+ auto& entry = m_entries[i];
if (filter && !filter(entry)) {
auto& currentIndex = backForwardListState.currentIndex;
@@ -414,7 +404,7 @@
continue;
}
- backForwardListState.items.append(entry.itemState());
+ backForwardListState.items.append(entry->itemState());
}
if (backForwardListState.items.isEmpty())
@@ -427,7 +417,7 @@
void WebBackForwardList::restoreFromState(BackForwardListState backForwardListState)
{
- Vector<RefPtr<WebBackForwardListItem>> items;
+ Vector<Ref<WebBackForwardListItem>> items;
items.reserveInitialCapacity(backForwardListState.items.size());
for (auto& backForwardListItemState : backForwardListState.items) {
Modified: trunk/Source/WebKit/UIProcess/WebBackForwardList.h (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/WebBackForwardList.h 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/WebBackForwardList.h 2017-10-04 00:51:24 UTC (rev 222824)
@@ -23,18 +23,13 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef WebBackForwardList_h
-#define WebBackForwardList_h
+#pragma once
#include "APIObject.h"
#include "WebBackForwardListItem.h"
#include "WebPageProxy.h"
#include <wtf/Ref.h>
-#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
-#if USE(CF)
-#include <CoreFoundation/CFDictionary.h>
-#endif
namespace WebKit {
@@ -51,7 +46,7 @@
virtual ~WebBackForwardList();
void addItem(WebBackForwardListItem*);
- void goToItem(WebBackForwardListItem*);
+ void goToItem(WebBackForwardListItem&);
void removeAllItems();
void clear();
@@ -85,11 +80,10 @@
WebPageProxy* m_page;
BackForwardListItemVector m_entries;
+ // FIXME: m_currentIndex should be a std::optional<size_t>
bool m_hasCurrentIndex;
- unsigned m_currentIndex;
- unsigned m_capacity;
+ size_t m_currentIndex;
+ size_t m_capacity;
};
} // namespace WebKit
-
-#endif // WebBackForwardList_h
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-10-04 00:51:24 UTC (rev 222824)
@@ -684,7 +684,7 @@
return nullptr;
if (item != m_backForwardList->currentItem())
- m_backForwardList->goToItem(item);
+ m_backForwardList->goToItem(*item);
auto navigation = m_navigationState->createBackForwardNavigation();
@@ -698,7 +698,7 @@
{
ASSERT(isValid());
- BackForwardListItemVector items = m_backForwardList->entries();
+ const BackForwardListItemVector& items = m_backForwardList->entries();
for (size_t i = 0; i < items.size(); ++i)
m_process->registerNewWebBackForwardListItem(items[i].get());
@@ -1192,7 +1192,7 @@
m_process->send(Messages::WebPage::TryRestoreScrollPosition(), m_pageID);
}
-void WebPageProxy::didChangeBackForwardList(WebBackForwardListItem* added, Vector<RefPtr<WebBackForwardListItem>> removed)
+void WebPageProxy::didChangeBackForwardList(WebBackForwardListItem* added, Vector<Ref<WebBackForwardListItem>>&& removed)
{
PageClientProtector protector(m_pageClient);
@@ -1215,7 +1215,7 @@
}
}
-bool WebPageProxy::shouldKeepCurrentBackForwardListItemInList(WebBackForwardListItem* item)
+bool WebPageProxy::shouldKeepCurrentBackForwardListItemInList(WebBackForwardListItem& item)
{
PageClientProtector protector(m_pageClient);
@@ -4494,7 +4494,7 @@
bool createdExtension = maybeInitializeSandboxExtensionHandle(URL(URL(), item->url()), sandboxExtensionHandle);
if (createdExtension)
m_process->willAcquireUniversalFileReadSandboxExtension();
- m_backForwardList->goToItem(item);
+ m_backForwardList->goToItem(*item);
}
void WebPageProxy::backForwardItemAtIndex(int32_t index, uint64_t& itemID)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-10-04 00:51:24 UTC (rev 222824)
@@ -409,10 +409,10 @@
RefPtr<API::Navigation> goToBackForwardItem(WebBackForwardListItem*);
void tryRestoreScrollPosition();
- void didChangeBackForwardList(WebBackForwardListItem* addedItem, Vector<RefPtr<WebBackForwardListItem>> removed);
+ void didChangeBackForwardList(WebBackForwardListItem* addedItem, Vector<Ref<WebBackForwardListItem>>&& removed);
void willGoToBackForwardListItem(uint64_t itemID, bool inPageCache, const UserData&);
- bool shouldKeepCurrentBackForwardListItemInList(WebBackForwardListItem*);
+ bool shouldKeepCurrentBackForwardListItemInList(WebBackForwardListItem&);
bool willHandleHorizontalScrollEvents() const;
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2017-10-04 00:51:24 UTC (rev 222824)
@@ -424,13 +424,13 @@
return m_backForwardListItemMap.get(itemID);
}
-void WebProcessProxy::registerNewWebBackForwardListItem(WebBackForwardListItem* item)
+void WebProcessProxy::registerNewWebBackForwardListItem(WebBackForwardListItem& item)
{
// This item was just created by the UIProcess and is being added to the map for the first time
// so we should not already have an item for this ID.
- ASSERT(!m_backForwardListItemMap.contains(item->itemID()));
+ ASSERT(!m_backForwardListItemMap.contains(item.itemID()));
- m_backForwardListItemMap.set(item->itemID(), item);
+ m_backForwardListItemMap.set(item.itemID(), &item);
}
void WebProcessProxy::removeBackForwardItem(uint64_t itemID)
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (222823 => 222824)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2017-10-04 00:51:24 UTC (rev 222824)
@@ -123,7 +123,7 @@
void updateTextCheckerState();
- void registerNewWebBackForwardListItem(WebBackForwardListItem*);
+ void registerNewWebBackForwardListItem(WebBackForwardListItem&);
void removeBackForwardItem(uint64_t);
void willAcquireUniversalFileReadSandboxExtension() { m_mayHaveUniversalFileReadSandboxExtension = true; }
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp (222823 => 222824)
--- trunk/Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp 2017-10-04 00:13:33 UTC (rev 222823)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp 2017-10-04 00:51:24 UTC (rev 222824)
@@ -172,14 +172,14 @@
HistoryItem* WebBackForwardListProxy::itemAtIndex(int itemIndex)
{
if (!m_page)
- return 0;
+ return nullptr;
uint64_t itemID = 0;
if (!WebProcess::singleton().parentProcessConnection()->sendSync(Messages::WebPageProxy::BackForwardItemAtIndex(itemIndex), Messages::WebPageProxy::BackForwardItemAtIndex::Reply(itemID), m_page->pageID()))
- return 0;
+ return nullptr;
if (!itemID)
- return 0;
+ return nullptr;
return idToHistoryItemMap().get(itemID);
}