Diff
Modified: trunk/Source/WebKit2/ChangeLog (170648 => 170649)
--- trunk/Source/WebKit2/ChangeLog 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/ChangeLog 2014-07-01 17:46:29 UTC (rev 170649)
@@ -1,3 +1,39 @@
+2014-07-01 Anders Carlsson <ander...@apple.com>
+
+ Add a BackForwardListItemState struct and put the snapshot UUID there
+ https://bugs.webkit.org/show_bug.cgi?id=134497
+
+ Reviewed by Sam Weinig.
+
+ * Shared/SessionState.cpp:
+ (WebKit::PageState::encode):
+ (WebKit::PageState::decode):
+ (WebKit::BackForwardListItemState::encode):
+ (WebKit::BackForwardListItemState::decode):
+ * Shared/SessionState.h:
+ * Shared/WebBackForwardListItem.cpp:
+ (WebKit::WebBackForwardListItem::create):
+ (WebKit::WebBackForwardListItem::WebBackForwardListItem):
+ (WebKit::WebBackForwardListItem::backForwardData):
+ (WebKit::WebBackForwardListItem::setBackForwardData):
+ (WebKit::WebBackForwardListItem::encode):
+ * Shared/WebBackForwardListItem.h:
+ (WebKit::WebBackForwardListItem::setPageState):
+ (WebKit::WebBackForwardListItem::setOriginalURL):
+ (WebKit::WebBackForwardListItem::originalURL):
+ (WebKit::WebBackForwardListItem::setURL):
+ (WebKit::WebBackForwardListItem::url):
+ (WebKit::WebBackForwardListItem::setTitle):
+ (WebKit::WebBackForwardListItem::title):
+ (WebKit::WebBackForwardListItem::setSnapshotUUID):
+ (WebKit::WebBackForwardListItem::snapshotUUID):
+ * UIProcess/WebBackForwardList.cpp:
+ (WebKit::WebBackForwardList::restoreFromState):
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::addBackForwardItem):
+ * UIProcess/mac/LegacySessionStateCoding.cpp:
+ (WebKit::decodeSessionHistoryEntries):
+
2014-07-01 Yongjun Zhang <yongjun_zh...@apple.com>
Add encodeInteger and decodeInteger for remote object encoder and decoder.
Modified: trunk/Source/WebKit2/Shared/SessionState.cpp (170648 => 170649)
--- trunk/Source/WebKit2/Shared/SessionState.cpp 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/Shared/SessionState.cpp 2014-07-01 17:46:29 UTC (rev 170649)
@@ -168,17 +168,33 @@
void PageState::encode(IPC::ArgumentEncoder& encoder) const
{
+ encoder << title;
encoder << mainFrameState;
}
bool PageState::decode(IPC::ArgumentDecoder& decoder, PageState& result)
{
+ if (!decoder.decode(result.title))
+ return false;
if (!decoder.decode(result.mainFrameState))
return false;
return true;
}
+void BackForwardListItemState::encode(IPC::ArgumentEncoder& encoder) const
+{
+ encoder << pageState;
+}
+
+bool BackForwardListItemState::decode(IPC::ArgumentDecoder& decoder, BackForwardListItemState& result)
+{
+ if (!decoder.decode(result.pageState))
+ return false;
+
+ return true;
+}
+
void BackForwardListState::encode(IPC::ArgumentEncoder& encoder) const
{
encoder << items;
Modified: trunk/Source/WebKit2/Shared/SessionState.h (170648 => 170649)
--- trunk/Source/WebKit2/Shared/SessionState.h 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/Shared/SessionState.h 2014-07-01 17:46:29 UTC (rev 170649)
@@ -113,11 +113,20 @@
FrameState mainFrameState;
};
+struct BackForwardListItemState {
+ void encode(IPC::ArgumentEncoder&) const;
+ static bool decode(IPC::ArgumentDecoder&, BackForwardListItemState&);
+
+ PageState pageState;
+ // FIXME: This should hold the snapshot itself, not its UUID.
+ String snapshotUUID;
+};
+
struct BackForwardListState {
void encode(IPC::ArgumentEncoder&) const;
static bool decode(IPC::ArgumentDecoder&, BackForwardListState&);
- Vector<PageState> items;
+ Vector<BackForwardListItemState> items;
Optional<uint32_t> currentIndex;
};
Modified: trunk/Source/WebKit2/Shared/WebBackForwardListItem.cpp (170648 => 170649)
--- trunk/Source/WebKit2/Shared/WebBackForwardListItem.cpp 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/Shared/WebBackForwardListItem.cpp 2014-07-01 17:46:29 UTC (rev 170649)
@@ -35,23 +35,23 @@
static uint64_t highestUsedItemID = 0;
-PassRefPtr<WebBackForwardListItem> WebBackForwardListItem::create(uint64_t itemID, PageState pageState)
+PassRefPtr<WebBackForwardListItem> WebBackForwardListItem::create(uint64_t itemID, BackForwardListItemState backForwardListItemState)
{
- return adoptRef(new WebBackForwardListItem(itemID, std::move(pageState)));
+ return adoptRef(new WebBackForwardListItem(itemID, std::move(backForwardListItemState)));
}
-WebBackForwardListItem::WebBackForwardListItem(uint64_t itemID, PageState pageState)
+WebBackForwardListItem::WebBackForwardListItem(uint64_t itemID, BackForwardListItemState backForwardListItemState)
: m_itemID(itemID)
- , m_pageState(std::move(pageState))
+ , m_itemState(std::move(backForwardListItemState))
{
}
WebBackForwardListItem::WebBackForwardListItem(const String& originalURL, const String& url, const String& title, const uint8_t* backForwardData, size_t backForwardDataSize, uint64_t itemID)
: m_itemID(itemID)
{
- m_pageState.mainFrameState.originalURLString = originalURL;
- m_pageState.mainFrameState.urlString = url;
- m_pageState.title = title;
+ m_itemState.pageState.mainFrameState.originalURLString = originalURL;
+ m_itemState.pageState.mainFrameState.urlString = url;
+ m_itemState.pageState.title = title;
if (m_itemID > highestUsedItemID)
highestUsedItemID = m_itemID;
@@ -70,19 +70,19 @@
PassRefPtr<API::Data> WebBackForwardListItem::backForwardData() const
{
- return encodeLegacySessionHistoryEntryData(m_pageState.mainFrameState);
+ return encodeLegacySessionHistoryEntryData(m_itemState.pageState.mainFrameState);
}
void WebBackForwardListItem::setBackForwardData(const uint8_t* data, size_t size)
{
- decodeLegacySessionHistoryEntryData(data, size, m_pageState.mainFrameState);
+ decodeLegacySessionHistoryEntryData(data, size, m_itemState.pageState.mainFrameState);
}
void WebBackForwardListItem::encode(IPC::ArgumentEncoder& encoder) const
{
- encoder << m_pageState.mainFrameState.originalURLString;
- encoder << m_pageState.mainFrameState.urlString;
- encoder << m_pageState.title;
+ encoder << m_itemState.pageState.mainFrameState.originalURLString;
+ encoder << m_itemState.pageState.mainFrameState.urlString;
+ encoder << m_itemState.pageState.title;
encoder << m_itemID;
RefPtr<API::Data> backForwardData = this->backForwardData();
Modified: trunk/Source/WebKit2/Shared/WebBackForwardListItem.h (170648 => 170649)
--- trunk/Source/WebKit2/Shared/WebBackForwardListItem.h 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/Shared/WebBackForwardListItem.h 2014-07-01 17:46:29 UTC (rev 170649)
@@ -42,11 +42,9 @@
namespace WebKit {
-struct PageState;
-
class WebBackForwardListItem : public API::ObjectImpl<API::Object::Type::BackForwardListItem> {
public:
- static PassRefPtr<WebBackForwardListItem> create(uint64_t itemID, PageState);
+ static PassRefPtr<WebBackForwardListItem> create(uint64_t itemID, BackForwardListItemState);
static PassRefPtr<WebBackForwardListItem> create(const String& originalURL, const String& url, const String& title, const uint8_t* backForwardData, size_t backForwardDataSize, uint64_t itemID)
{
@@ -57,22 +55,22 @@
uint64_t itemID() const { return m_itemID; }
- void setPageState(PageState pageState) { m_pageState = std::move(pageState); }
+ void setPageState(PageState pageState) { m_itemState.pageState = std::move(pageState); }
- void setOriginalURL(const String& originalURL) { m_pageState.mainFrameState.originalURLString = originalURL; }
- const String& originalURL() const { return m_pageState.mainFrameState.originalURLString; }
+ void setOriginalURL(const String& originalURL) { m_itemState.pageState.mainFrameState.originalURLString = originalURL; }
+ const String& originalURL() const { return m_itemState.pageState.mainFrameState.originalURLString; }
- void setURL(const String& url) { m_pageState.mainFrameState.urlString = url; }
- const String& url() const { return m_pageState.mainFrameState.urlString; }
+ void setURL(const String& url) { m_itemState.pageState.mainFrameState.urlString = url; }
+ const String& url() const { return m_itemState.pageState.mainFrameState.urlString; }
- void setTitle(const String& title) { m_pageState.title = title; }
- const String& title() const { return m_pageState.title; }
+ void setTitle(const String& title) { m_itemState.pageState.title = title; }
+ const String& title() const { return m_itemState.pageState.title; }
void setBackForwardData(const uint8_t* buffer, size_t size);
PassRefPtr<API::Data> backForwardData() const;
- void setSnapshotUUID(const String& uuid) { m_snapshotUUID = uuid; }
- const String& snapshotUUID() const { return m_snapshotUUID; }
+ void setSnapshotUUID(const String& uuid) { m_itemState.snapshotUUID = uuid; }
+ const String& snapshotUUID() const { return m_itemState.snapshotUUID; }
void encode(IPC::ArgumentEncoder&) const;
static PassRefPtr<WebBackForwardListItem> decode(IPC::ArgumentDecoder&);
@@ -80,13 +78,12 @@
static uint64_t highedUsedItemID();
private:
- WebBackForwardListItem(uint64_t itemID, PageState);
+ WebBackForwardListItem(uint64_t itemID, BackForwardListItemState);
WebBackForwardListItem(const String& originalURL, const String& url, const String& title, const uint8_t* backForwardData, size_t backForwardDataSize, uint64_t itemID);
uint64_t m_itemID;
- PageState m_pageState;
- String m_snapshotUUID;
+ BackForwardListItemState m_itemState;
};
typedef Vector<RefPtr<WebBackForwardListItem>> BackForwardListItemVector;
Modified: trunk/Source/WebKit2/UIProcess/WebBackForwardList.cpp (170648 => 170649)
--- trunk/Source/WebKit2/UIProcess/WebBackForwardList.cpp 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/UIProcess/WebBackForwardList.cpp 2014-07-01 17:46:29 UTC (rev 170649)
@@ -385,8 +385,8 @@
Vector<RefPtr<WebBackForwardListItem>> items;
items.reserveInitialCapacity(backForwardListState.items.size());
- for (auto& pageState : backForwardListState.items)
- items.uncheckedAppend(WebBackForwardListItem::create(generateWebBackForwardItemID(), std::move(pageState)));
+ for (auto& backForwardListItemState : backForwardListState.items)
+ items.uncheckedAppend(WebBackForwardListItem::create(generateWebBackForwardItemID(), std::move(backForwardListItemState)));
m_hasCurrentIndex = !!backForwardListState.currentIndex;
m_currentIndex = backForwardListState.currentIndex.valueOr(0);
Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (170648 => 170649)
--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2014-07-01 17:46:29 UTC (rev 170649)
@@ -317,7 +317,9 @@
auto& backForwardListItem = m_backForwardListItemMap.add(itemID, nullptr).iterator->value;
if (!backForwardListItem) {
- backForwardListItem = WebBackForwardListItem::create(itemID, pageState);
+ BackForwardListItemState backForwardListItemState;
+ backForwardListItemState.pageState = pageState;
+ backForwardListItem = WebBackForwardListItem::create(itemID, std::move(backForwardListItemState));
return;
}
Modified: trunk/Source/WebKit2/UIProcess/mac/LegacySessionStateCoding.cpp (170648 => 170649)
--- trunk/Source/WebKit2/UIProcess/mac/LegacySessionStateCoding.cpp 2014-07-01 17:33:43 UTC (rev 170648)
+++ trunk/Source/WebKit2/UIProcess/mac/LegacySessionStateCoding.cpp 2014-07-01 17:46:29 UTC (rev 170649)
@@ -844,15 +844,15 @@
return true;
}
-static bool decodeSessionHistoryEntries(CFArrayRef entriesArray, Vector<PageState>& entries)
+static bool decodeSessionHistoryEntries(CFArrayRef entriesArray, Vector<BackForwardListItemState>& entries)
{
for (CFIndex i = 0, size = CFArrayGetCount(entriesArray); i < size; ++i) {
auto entryDictionary = dynamic_cf_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(entriesArray, i));
if (!entryDictionary)
return false;
- PageState entry;
- if (!decodeSessionHistoryEntry(entryDictionary, entry))
+ BackForwardListItemState entry;
+ if (!decodeSessionHistoryEntry(entryDictionary, entry.pageState))
return false;
entries.append(std::move(entry));