Title: [170649] trunk/Source/WebKit2
Revision
170649
Author
ander...@apple.com
Date
2014-07-01 10:46:29 -0700 (Tue, 01 Jul 2014)

Log Message

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):

Modified Paths

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));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to