<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[182019] trunk/Source/WebKit2</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/182019">182019</a></dd>
<dt>Author</dt> <dd>antti@apple.com</dd>
<dt>Date</dt> <dd>2015-03-26 11:39:22 -0700 (Thu, 26 Mar 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Rename Storage::Entry to Storage::Record
https://bugs.webkit.org/show_bug.cgi?id=143101
Reviewed by Chris Dumez.
Lets have just one type called Entry in the cache code.
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::update):
(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::Cache::dumpContentsToFile):
* NetworkProcess/cache/NetworkCacheEntry.cpp:
(WebKit::NetworkCache::Entry::Entry):
(WebKit::NetworkCache::Entry::encodeAsStorageRecord):
(WebKit::NetworkCache::Entry::decodeStorageRecord):
(WebKit::NetworkCache::Entry::initializeBufferFromStorageRecord):
(WebKit::NetworkCache::Entry::buffer):
(WebKit::NetworkCache::Entry::shareableResourceHandle):
(WebKit::NetworkCache::Entry::encode): Deleted.
(WebKit::NetworkCache::Entry::decode): Deleted.
(WebKit::NetworkCache::Entry::initializeBufferFromStorageEntry): Deleted.
* NetworkProcess/cache/NetworkCacheEntry.h:
(WebKit::NetworkCache::Entry::sourceStorageRecord):
(WebKit::NetworkCache::Entry::sourceStorageEntry): Deleted.
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::RecordMetaData::RecordMetaData):
(WebKit::NetworkCache::decodeRecordMetaData):
(WebKit::NetworkCache::decodeRecordHeader):
(WebKit::NetworkCache::decodeRecord):
(WebKit::NetworkCache::encodeRecordMetaData):
(WebKit::NetworkCache::encodeRecordHeader):
(WebKit::NetworkCache::Storage::dispatchReadOperation):
(WebKit::NetworkCache::retrieveFromMemory):
(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::update):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::dispatchPendingWriteOperations):
(WebKit::NetworkCache::Storage::dispatchFullWriteOperation):
(WebKit::NetworkCache::Storage::dispatchHeaderWriteOperation):
(WebKit::NetworkCache::EntryMetaData::EntryMetaData): Deleted.
(WebKit::NetworkCache::decodeEntryMetaData): Deleted.
(WebKit::NetworkCache::decodeEntryHeader): Deleted.
(WebKit::NetworkCache::decodeEntry): Deleted.
(WebKit::NetworkCache::encodeEntryMetaData): Deleted.
(WebKit::NetworkCache::encodeEntryHeader): Deleted.
* NetworkProcess/cache/NetworkCacheStorage.h:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscacheNetworkCachecpp">trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscacheNetworkCacheEntrycpp">trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscacheNetworkCacheEntryh">trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscacheNetworkCacheStoragecpp">trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscacheNetworkCacheStorageh">trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (182018 => 182019)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-03-26 18:16:02 UTC (rev 182018)
+++ trunk/Source/WebKit2/ChangeLog        2015-03-26 18:39:22 UTC (rev 182019)
</span><span class="lines">@@ -1,3 +1,54 @@
</span><ins>+2015-03-26 Antti Koivisto <antti@apple.com>
+
+ Rename Storage::Entry to Storage::Record
+ https://bugs.webkit.org/show_bug.cgi?id=143101
+
+ Reviewed by Chris Dumez.
+
+ Lets have just one type called Entry in the cache code.
+
+ * NetworkProcess/cache/NetworkCache.cpp:
+ (WebKit::NetworkCache::Cache::retrieve):
+ (WebKit::NetworkCache::Cache::store):
+ (WebKit::NetworkCache::Cache::update):
+ (WebKit::NetworkCache::Cache::traverse):
+ (WebKit::NetworkCache::Cache::dumpContentsToFile):
+ * NetworkProcess/cache/NetworkCacheEntry.cpp:
+ (WebKit::NetworkCache::Entry::Entry):
+ (WebKit::NetworkCache::Entry::encodeAsStorageRecord):
+ (WebKit::NetworkCache::Entry::decodeStorageRecord):
+ (WebKit::NetworkCache::Entry::initializeBufferFromStorageRecord):
+ (WebKit::NetworkCache::Entry::buffer):
+ (WebKit::NetworkCache::Entry::shareableResourceHandle):
+ (WebKit::NetworkCache::Entry::encode): Deleted.
+ (WebKit::NetworkCache::Entry::decode): Deleted.
+ (WebKit::NetworkCache::Entry::initializeBufferFromStorageEntry): Deleted.
+ * NetworkProcess/cache/NetworkCacheEntry.h:
+ (WebKit::NetworkCache::Entry::sourceStorageRecord):
+ (WebKit::NetworkCache::Entry::sourceStorageEntry): Deleted.
+ * NetworkProcess/cache/NetworkCacheStorage.cpp:
+ (WebKit::NetworkCache::RecordMetaData::RecordMetaData):
+ (WebKit::NetworkCache::decodeRecordMetaData):
+ (WebKit::NetworkCache::decodeRecordHeader):
+ (WebKit::NetworkCache::decodeRecord):
+ (WebKit::NetworkCache::encodeRecordMetaData):
+ (WebKit::NetworkCache::encodeRecordHeader):
+ (WebKit::NetworkCache::Storage::dispatchReadOperation):
+ (WebKit::NetworkCache::retrieveFromMemory):
+ (WebKit::NetworkCache::Storage::store):
+ (WebKit::NetworkCache::Storage::update):
+ (WebKit::NetworkCache::Storage::traverse):
+ (WebKit::NetworkCache::Storage::dispatchPendingWriteOperations):
+ (WebKit::NetworkCache::Storage::dispatchFullWriteOperation):
+ (WebKit::NetworkCache::Storage::dispatchHeaderWriteOperation):
+ (WebKit::NetworkCache::EntryMetaData::EntryMetaData): Deleted.
+ (WebKit::NetworkCache::decodeEntryMetaData): Deleted.
+ (WebKit::NetworkCache::decodeEntryHeader): Deleted.
+ (WebKit::NetworkCache::decodeEntry): Deleted.
+ (WebKit::NetworkCache::encodeEntryMetaData): Deleted.
+ (WebKit::NetworkCache::encodeEntryHeader): Deleted.
+ * NetworkProcess/cache/NetworkCacheStorage.h:
+
</ins><span class="cx"> 2015-03-26 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> [WK2] Let the compiler generate the NetworkCache::Key move constructor
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscacheNetworkCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp (182018 => 182019)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp        2015-03-26 18:16:02 UTC (rev 182018)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp        2015-03-26 18:39:22 UTC (rev 182019)
</span><span class="lines">@@ -226,8 +226,8 @@
</span><span class="cx"> auto startTime = std::chrono::system_clock::now();
</span><span class="cx"> unsigned priority = originalRequest.priority();
</span><span class="cx">
</span><del>- m_storage->retrieve(storageKey, priority, [this, originalRequest, completionHandler, startTime, storageKey, webPageID](std::unique_ptr<Storage::Entry> storageEntry) {
- if (!storageEntry) {
</del><ins>+ m_storage->retrieve(storageKey, priority, [this, originalRequest, completionHandler, startTime, storageKey, webPageID](std::unique_ptr<Storage::Record> record) {
+ if (!record) {
</ins><span class="cx"> LOG(NetworkCache, "(NetworkProcess) not found in storage");
</span><span class="cx">
</span><span class="cx"> if (m_statistics)
</span><span class="lines">@@ -237,26 +237,26 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ASSERT(storageEntry->key == storageKey);
</del><ins>+ ASSERT(record->key == storageKey);
</ins><span class="cx">
</span><del>- auto cacheEntry = Entry::decode(*storageEntry);
</del><ins>+ auto entry = Entry::decodeStorageRecord(*record);
</ins><span class="cx">
</span><del>- auto useDecision = cacheEntry ? canUse(*cacheEntry, originalRequest) : UseDecision::NoDueToDecodeFailure;
</del><ins>+ auto useDecision = entry ? canUse(*entry, originalRequest) : UseDecision::NoDueToDecodeFailure;
</ins><span class="cx"> switch (useDecision) {
</span><span class="cx"> case UseDecision::Use:
</span><span class="cx"> break;
</span><span class="cx"> case UseDecision::Validate:
</span><del>- cacheEntry->setNeedsValidation();
</del><ins>+ entry->setNeedsValidation();
</ins><span class="cx"> break;
</span><span class="cx"> default:
</span><del>- cacheEntry = nullptr;
</del><ins>+ entry = nullptr;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> #if !LOG_DISABLED
</span><span class="cx"> auto elapsedMS = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - startTime).count();
</span><ins>+ LOG(NetworkCache, "(NetworkProcess) retrieve complete useDecision=%d priority=%u time=%lldms", useDecision, originalRequest.priority(), elapsedMS);
</ins><span class="cx"> #endif
</span><del>- LOG(NetworkCache, "(NetworkProcess) retrieve complete useDecision=%d priority=%u time=%lldms", useDecision, originalRequest.priority(), elapsedMS);
- completionHandler(WTF::move(cacheEntry));
</del><ins>+ completionHandler(WTF::move(entry));
</ins><span class="cx">
</span><span class="cx"> if (m_statistics)
</span><span class="cx"> m_statistics->recordRetrievedCachedEntry(webPageID, storageKey, originalRequest, useDecision);
</span><span class="lines">@@ -315,9 +315,9 @@
</span><span class="cx">
</span><span class="cx"> Entry cacheEntry(makeCacheKey(originalRequest), response, WTF::move(responseData), collectVaryingRequestHeaders(originalRequest, response));
</span><span class="cx">
</span><del>- auto storageEntry = cacheEntry.encode();
</del><ins>+ auto record = cacheEntry.encodeAsStorageRecord();
</ins><span class="cx">
</span><del>- m_storage->store(storageEntry, [completionHandler](bool success, const Data& bodyData) {
</del><ins>+ m_storage->store(record, [completionHandler](bool success, const Data& bodyData) {
</ins><span class="cx"> MappedBody mappedBody;
</span><span class="cx"> #if ENABLE(SHAREABLE_RESOURCE)
</span><span class="cx"> if (bodyData.isMap()) {
</span><span class="lines">@@ -341,9 +341,9 @@
</span><span class="cx">
</span><span class="cx"> Entry updateEntry(existingEntry.key(), response, existingEntry.buffer(), collectVaryingRequestHeaders(originalRequest, response));
</span><span class="cx">
</span><del>- auto updateStorageEntry = updateEntry.encode();
</del><ins>+ auto updateRecord = updateEntry.encodeAsStorageRecord();
</ins><span class="cx">
</span><del>- m_storage->update(updateStorageEntry, existingEntry.sourceStorageEntry(), [](bool success, const Data&) {
</del><ins>+ m_storage->update(updateRecord, existingEntry.sourceStorageRecord(), [](bool success, const Data&) {
</ins><span class="cx"> LOG(NetworkCache, "(NetworkProcess) updated, success=%d", success);
</span><span class="cx"> });
</span><span class="cx"> }
</span><span class="lines">@@ -359,17 +359,17 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(isEnabled());
</span><span class="cx">
</span><del>- m_storage->traverse([traverseHandler](const Storage::Entry* storageEntry) {
- if (!storageEntry) {
</del><ins>+ m_storage->traverse([traverseHandler](const Storage::Record* record) {
+ if (!record) {
</ins><span class="cx"> traverseHandler(nullptr);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto cacheEntry = Entry::decode(*storageEntry);
- if (!cacheEntry)
</del><ins>+ auto entry = Entry::decodeStorageRecord(*record);
+ if (!entry)
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- traverseHandler(cacheEntry.get());
</del><ins>+ traverseHandler(entry.get());
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -386,18 +386,18 @@
</span><span class="cx"> if (!dumpFileHandle)
</span><span class="cx"> return;
</span><span class="cx"> WebCore::writeToFile(dumpFileHandle, "[\n", 2);
</span><del>- m_storage->traverse([dumpFileHandle](const Storage::Entry* entry) {
- if (!entry) {
</del><ins>+ m_storage->traverse([dumpFileHandle](const Storage::Record* record) {
+ if (!record) {
</ins><span class="cx"> WebCore::writeToFile(dumpFileHandle, "{}\n]\n", 5);
</span><span class="cx"> auto handle = dumpFileHandle;
</span><span class="cx"> WebCore::closeFile(handle);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- auto cacheEntry = Entry::decode(*entry);
- if (!cacheEntry)
</del><ins>+ auto entry = Entry::decodeStorageRecord(*record);
+ if (!entry)
</ins><span class="cx"> return;
</span><span class="cx"> StringBuilder json;
</span><del>- cacheEntry->asJSON(json);
</del><ins>+ entry->asJSON(json);
</ins><span class="cx"> json.append(",\n");
</span><span class="cx"> auto writeData = json.toString().utf8();
</span><span class="cx"> WebCore::writeToFile(dumpFileHandle, writeData.data(), writeData.length());
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscacheNetworkCacheEntrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp (182018 => 182019)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp        2015-03-26 18:16:02 UTC (rev 182018)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp        2015-03-26 18:39:22 UTC (rev 182019)
</span><span class="lines">@@ -49,14 +49,14 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Entry::Entry(const Storage::Entry& storageEntry)
</del><ins>+Entry::Entry(const Storage::Record& storageEntry)
</ins><span class="cx"> : m_key(storageEntry.key)
</span><span class="cx"> , m_timeStamp(storageEntry.timeStamp)
</span><del>- , m_sourceStorageEntry(storageEntry)
</del><ins>+ , m_sourceStorageRecord(storageEntry)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Storage::Entry Entry::encode() const
</del><ins>+Storage::Record Entry::encodeAsStorageRecord() const
</ins><span class="cx"> {
</span><span class="cx"> Encoder encoder;
</span><span class="cx"> encoder << m_response;
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> return { m_key, m_timeStamp, header, body };
</span><span class="cx"> }
</span><span class="cx">
</span><del>-std::unique_ptr<Entry> Entry::decode(const Storage::Entry& storageEntry)
</del><ins>+std::unique_ptr<Entry> Entry::decodeStorageRecord(const Storage::Record& storageEntry)
</ins><span class="cx"> {
</span><span class="cx"> std::unique_ptr<Entry> entry(new Entry(storageEntry));
</span><span class="cx">
</span><span class="lines">@@ -102,13 +102,13 @@
</span><span class="cx"> return entry;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Entry::initializeBufferFromStorageEntry() const
</del><ins>+void Entry::initializeBufferFromStorageRecord() const
</ins><span class="cx"> {
</span><del>- auto* data = m_sourceStorageEntry.body.data();
- size_t size = m_sourceStorageEntry.body.size();
</del><ins>+ auto* data = m_sourceStorageRecord.body.data();
+ size_t size = m_sourceStorageRecord.body.size();
</ins><span class="cx"> #if ENABLE(SHAREABLE_RESOURCE)
</span><del>- RefPtr<SharedMemory> sharedMemory = m_sourceStorageEntry.body.isMap() ? SharedMemory::createFromVMBuffer(const_cast<uint8_t*>(data), size) : nullptr;
- RefPtr<ShareableResource> shareableResource = sharedMemory ? ShareableResource::create(sharedMemory.release(), 0, m_sourceStorageEntry.body.size()) : nullptr;
</del><ins>+ RefPtr<SharedMemory> sharedMemory = m_sourceStorageRecord.body.isMap() ? SharedMemory::createFromVMBuffer(const_cast<uint8_t*>(data), size) : nullptr;
+ RefPtr<ShareableResource> shareableResource = sharedMemory ? ShareableResource::create(sharedMemory.release(), 0, m_sourceStorageRecord.body.size()) : nullptr;
</ins><span class="cx">
</span><span class="cx"> if (shareableResource && shareableResource->createHandle(m_shareableResourceHandle))
</span><span class="cx"> m_buffer = m_shareableResourceHandle.tryWrapInSharedBuffer();
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx"> WebCore::SharedBuffer* Entry::buffer() const
</span><span class="cx"> {
</span><span class="cx"> if (!m_buffer)
</span><del>- initializeBufferFromStorageEntry();
</del><ins>+ initializeBufferFromStorageRecord();
</ins><span class="cx">
</span><span class="cx"> return m_buffer.get();
</span><span class="cx"> }
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> ShareableResource::Handle& Entry::shareableResourceHandle() const
</span><span class="cx"> {
</span><span class="cx"> if (!m_buffer)
</span><del>- initializeBufferFromStorageEntry();
</del><ins>+ initializeBufferFromStorageRecord();
</ins><span class="cx">
</span><span class="cx"> return m_shareableResourceHandle;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscacheNetworkCacheEntryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.h (182018 => 182019)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.h        2015-03-26 18:16:02 UTC (rev 182018)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.h        2015-03-26 18:39:22 UTC (rev 182019)
</span><span class="lines">@@ -47,8 +47,8 @@
</span><span class="cx"> public:
</span><span class="cx"> Entry(const Key&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, const Vector<std::pair<String, String>>& varyingRequestHeaders);
</span><span class="cx">
</span><del>- Storage::Entry encode() const;
- static std::unique_ptr<Entry> decode(const Storage::Entry&);
</del><ins>+ Storage::Record encodeAsStorageRecord() const;
+ static std::unique_ptr<Entry> decodeStorageRecord(const Storage::Record&);
</ins><span class="cx">
</span><span class="cx"> const Key& key() const { return m_key; }
</span><span class="cx"> std::chrono::milliseconds timeStamp() const { return m_timeStamp; }
</span><span class="lines">@@ -63,13 +63,13 @@
</span><span class="cx"> bool needsValidation() const;
</span><span class="cx"> void setNeedsValidation();
</span><span class="cx">
</span><del>- const Storage::Entry& sourceStorageEntry() const { return m_sourceStorageEntry; }
</del><ins>+ const Storage::Record& sourceStorageRecord() const { return m_sourceStorageRecord; }
</ins><span class="cx">
</span><span class="cx"> void asJSON(StringBuilder&) const;
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- Entry(const Storage::Entry&);
- void initializeBufferFromStorageEntry() const;
</del><ins>+ Entry(const Storage::Record&);
+ void initializeBufferFromStorageRecord() const;
</ins><span class="cx">
</span><span class="cx"> Key m_key;
</span><span class="cx"> std::chrono::milliseconds m_timeStamp;
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> mutable ShareableResource::Handle m_shareableResourceHandle;
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- Storage::Entry m_sourceStorageEntry { };
</del><ins>+ Storage::Record m_sourceStorageRecord { };
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscacheNetworkCacheStoragecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (182018 => 182019)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp        2015-03-26 18:16:02 UTC (rev 182018)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp        2015-03-26 18:39:22 UTC (rev 182019)
</span><span class="lines">@@ -131,9 +131,9 @@
</span><span class="cx"> return hasher.hash();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-struct EntryMetaData {
- EntryMetaData() { }
- explicit EntryMetaData(const Key& key)
</del><ins>+struct RecordMetaData {
+ RecordMetaData() { }
+ explicit RecordMetaData(const Key& key)
</ins><span class="cx"> : cacheStorageVersion(Storage::version)
</span><span class="cx"> , key(key)
</span><span class="cx"> { }
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx"> uint64_t bodySize;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-static bool decodeEntryMetaData(EntryMetaData& metaData, const Data& fileData)
</del><ins>+static bool decodeRecordMetaData(RecordMetaData& metaData, const Data& fileData)
</ins><span class="cx"> {
</span><span class="cx"> bool success = false;
</span><span class="cx"> fileData.apply([&metaData, &success](const uint8_t* data, size_t size) {
</span><span class="lines">@@ -178,9 +178,9 @@
</span><span class="cx"> return success;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static bool decodeEntryHeader(const Data& fileData, EntryMetaData& metaData, Data& data)
</del><ins>+static bool decodeRecordHeader(const Data& fileData, RecordMetaData& metaData, Data& data)
</ins><span class="cx"> {
</span><del>- if (!decodeEntryMetaData(metaData, fileData)) {
</del><ins>+ if (!decodeRecordMetaData(metaData, fileData)) {
</ins><span class="cx"> LOG(NetworkCacheStorage, "(NetworkProcess) meta data decode failure");
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="lines">@@ -203,11 +203,11 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static std::unique_ptr<Storage::Entry> decodeEntry(const Data& fileData, int fd, const Key& key)
</del><ins>+static std::unique_ptr<Storage::Record> decodeRecord(const Data& fileData, int fd, const Key& key)
</ins><span class="cx"> {
</span><del>- EntryMetaData metaData;
</del><ins>+ RecordMetaData metaData;
</ins><span class="cx"> Data headerData;
</span><del>- if (!decodeEntryHeader(fileData, metaData, headerData))
</del><ins>+ if (!decodeRecordHeader(fileData, metaData, headerData))
</ins><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> if (metaData.key != key)
</span><span class="lines">@@ -230,7 +230,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return std::make_unique<Storage::Entry>(Storage::Entry {
</del><ins>+ return std::make_unique<Storage::Record>(Storage::Record {
</ins><span class="cx"> metaData.key,
</span><span class="cx"> metaData.timeStamp,
</span><span class="cx"> headerData,
</span><span class="lines">@@ -238,35 +238,35 @@
</span><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static Data encodeEntryMetaData(const EntryMetaData& entry)
</del><ins>+static Data encodeRecordMetaData(const RecordMetaData& metaData)
</ins><span class="cx"> {
</span><span class="cx"> Encoder encoder;
</span><span class="cx">
</span><del>- encoder << entry.cacheStorageVersion;
- encoder << entry.key;
- encoder << entry.timeStamp;
- encoder << entry.headerChecksum;
- encoder << entry.headerSize;
- encoder << entry.bodyChecksum;
- encoder << entry.bodySize;
</del><ins>+ encoder << metaData.cacheStorageVersion;
+ encoder << metaData.key;
+ encoder << metaData.timeStamp;
+ encoder << metaData.headerChecksum;
+ encoder << metaData.headerSize;
+ encoder << metaData.bodyChecksum;
+ encoder << metaData.bodySize;
</ins><span class="cx">
</span><span class="cx"> encoder.encodeChecksum();
</span><span class="cx">
</span><span class="cx"> return Data(encoder.buffer(), encoder.bufferSize());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static Data encodeEntryHeader(const Storage::Entry& entry)
</del><ins>+static Data encodeRecordHeader(const Storage::Record& record)
</ins><span class="cx"> {
</span><del>- EntryMetaData metaData(entry.key);
- metaData.timeStamp = entry.timeStamp;
- metaData.headerChecksum = hashData(entry.header);
- metaData.headerSize = entry.header.size();
- metaData.bodyChecksum = hashData(entry.body);
- metaData.bodySize = entry.body.size();
</del><ins>+ RecordMetaData metaData(record.key);
+ metaData.timeStamp = record.timeStamp;
+ metaData.headerChecksum = hashData(record.header);
+ metaData.headerSize = record.header.size();
+ metaData.bodyChecksum = hashData(record.body);
+ metaData.bodySize = record.body.size();
</ins><span class="cx">
</span><del>- auto encodedMetaData = encodeEntryMetaData(metaData);
- auto headerData = concatenate(encodedMetaData, entry.header);
- if (!entry.body.size())
</del><ins>+ auto encodedMetaData = encodeRecordMetaData(metaData);
+ auto headerData = concatenate(encodedMetaData, record.header);
+ if (!record.body.size())
</ins><span class="cx"> return { headerData };
</span><span class="cx">
</span><span class="cx"> size_t dataOffset = WTF::roundUpToMultipleOf(pageSize(), headerData.size());
</span><span class="lines">@@ -313,8 +313,8 @@
</span><span class="cx"> remove(read.key);
</span><span class="cx"> read.completionHandler(nullptr);
</span><span class="cx"> } else {
</span><del>- auto entry = decodeEntry(fileData, channel->fileDescriptor(), read.key);
- bool success = read.completionHandler(WTF::move(entry));
</del><ins>+ auto record = decodeRecord(fileData, channel->fileDescriptor(), read.key);
+ bool success = read.completionHandler(WTF::move(record));
</ins><span class="cx"> if (success)
</span><span class="cx"> updateFileAccessTime(*channel);
</span><span class="cx"> else
</span><span class="lines">@@ -354,11 +354,11 @@
</span><span class="cx"> template <class T> bool retrieveFromMemory(const T& operations, const Key& key, Storage::RetrieveCompletionHandler& completionHandler)
</span><span class="cx"> {
</span><span class="cx"> for (auto& operation : operations) {
</span><del>- if (operation->entry.key == key) {
</del><ins>+ if (operation->record.key == key) {
</ins><span class="cx"> LOG(NetworkCacheStorage, "(NetworkProcess) found write operation in progress");
</span><del>- auto entry = operation->entry;
- RunLoop::main().dispatch([entry, completionHandler] {
- completionHandler(std::make_unique<Storage::Entry>(entry));
</del><ins>+ auto record = operation->record;
+ RunLoop::main().dispatch([record, completionHandler] {
+ completionHandler(std::make_unique<Storage::Record>(record));
</ins><span class="cx"> });
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="lines">@@ -391,41 +391,41 @@
</span><span class="cx"> dispatchPendingReadOperations();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Storage::store(const Entry& entry, StoreCompletionHandler&& completionHandler)
</del><ins>+void Storage::store(const Record& record, StoreCompletionHandler&& completionHandler)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><del>- ASSERT(!entry.key.isNull());
</del><ins>+ ASSERT(!record.key.isNull());
</ins><span class="cx">
</span><span class="cx"> if (!m_maximumSize) {
</span><span class="cx"> completionHandler(false, { });
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- m_pendingWriteOperations.append(new WriteOperation { entry, { }, WTF::move(completionHandler) });
</del><ins>+ m_pendingWriteOperations.append(new WriteOperation { record, { }, WTF::move(completionHandler) });
</ins><span class="cx">
</span><span class="cx"> // Add key to the filter already here as we do lookups from the pending operations too.
</span><del>- m_contentsFilter.add(entry.key.shortHash());
</del><ins>+ m_contentsFilter.add(record.key.shortHash());
</ins><span class="cx">
</span><span class="cx"> dispatchPendingWriteOperations();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Storage::update(const Entry& updateEntry, const Entry& existingEntry, StoreCompletionHandler&& completionHandler)
</del><ins>+void Storage::update(const Record& updateRecord, const Record& existingRecord, StoreCompletionHandler&& completionHandler)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><del>- ASSERT(!existingEntry.key.isNull());
- ASSERT(existingEntry.key == updateEntry.key);
</del><ins>+ ASSERT(!existingRecord.key.isNull());
+ ASSERT(existingRecord.key == updateRecord.key);
</ins><span class="cx">
</span><span class="cx"> if (!m_maximumSize) {
</span><span class="cx"> completionHandler(false, { });
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- m_pendingWriteOperations.append(new WriteOperation { updateEntry, existingEntry, WTF::move(completionHandler) });
</del><ins>+ m_pendingWriteOperations.append(new WriteOperation { updateRecord, existingRecord, WTF::move(completionHandler) });
</ins><span class="cx">
</span><span class="cx"> dispatchPendingWriteOperations();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Storage::traverse(std::function<void (const Entry*)>&& traverseHandler)
</del><ins>+void Storage::traverse(std::function<void (const Record*)>&& traverseHandler)
</ins><span class="cx"> {
</span><span class="cx"> StringCapture cachePathCapture(m_directoryPath);
</span><span class="cx"> ioQueue().dispatch([this, cachePathCapture, traverseHandler] {
</span><span class="lines">@@ -436,11 +436,11 @@
</span><span class="cx"> const size_t headerReadSize = 16 << 10;
</span><span class="cx"> // FIXME: Traversal is slower than it should be due to lack of parallelism.
</span><span class="cx"> channel->readSync(0, headerReadSize, [this, &traverseHandler](Data& fileData, int) {
</span><del>- EntryMetaData metaData;
</del><ins>+ RecordMetaData metaData;
</ins><span class="cx"> Data headerData;
</span><del>- if (decodeEntryHeader(fileData, metaData, headerData)) {
- Entry entry { metaData.key, metaData.timeStamp, headerData, { } };
- traverseHandler(&entry);
</del><ins>+ if (decodeRecordHeader(fileData, metaData, headerData)) {
+ Record record { metaData.key, metaData.timeStamp, headerData, { } };
+ traverseHandler(&record);
</ins><span class="cx"> }
</span><span class="cx"> });
</span><span class="cx"> });
</span><span class="lines">@@ -465,7 +465,7 @@
</span><span class="cx"> auto& write = *writeOperation;
</span><span class="cx"> m_activeWriteOperations.add(WTF::move(writeOperation));
</span><span class="cx">
</span><del>- if (write.existingEntry && cacheMayContain(write.entry.key.shortHash())) {
</del><ins>+ if (write.existingRecord && cacheMayContain(write.record.key.shortHash())) {
</ins><span class="cx"> dispatchHeaderWriteOperation(write);
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="lines">@@ -478,25 +478,25 @@
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><span class="cx"> ASSERT(m_activeWriteOperations.contains(&write));
</span><span class="cx">
</span><del>- if (!m_contentsFilter.mayContain(write.entry.key.shortHash()))
- m_contentsFilter.add(write.entry.key.shortHash());
</del><ins>+ if (!m_contentsFilter.mayContain(write.record.key.shortHash()))
+ m_contentsFilter.add(write.record.key.shortHash());
</ins><span class="cx">
</span><span class="cx"> StringCapture cachePathCapture(m_directoryPath);
</span><span class="cx"> backgroundIOQueue().dispatch([this, &write, cachePathCapture] {
</span><del>- auto encodedHeader = encodeEntryHeader(write.entry);
- auto headerAndBodyData = concatenate(encodedHeader, write.entry.body);
</del><ins>+ auto encodedHeader = encodeRecordHeader(write.record);
+ auto headerAndBodyData = concatenate(encodedHeader, write.record.body);
</ins><span class="cx">
</span><del>- auto channel = openFileForKey(write.entry.key, IOChannel::Type::Create, cachePathCapture.string());
</del><ins>+ auto channel = openFileForKey(write.record.key, IOChannel::Type::Create, cachePathCapture.string());
</ins><span class="cx"> int fd = channel->fileDescriptor();
</span><span class="cx"> size_t bodyOffset = encodedHeader.size();
</span><span class="cx">
</span><span class="cx"> channel->write(0, headerAndBodyData, [this, &write, bodyOffset, fd](int error) {
</span><span class="cx"> LOG(NetworkCacheStorage, "(NetworkProcess) write complete error=%d", error);
</span><span class="cx"> if (error) {
</span><del>- if (m_contentsFilter.mayContain(write.entry.key.shortHash()))
- m_contentsFilter.remove(write.entry.key.shortHash());
</del><ins>+ if (m_contentsFilter.mayContain(write.record.key.shortHash()))
+ m_contentsFilter.remove(write.record.key.shortHash());
</ins><span class="cx"> }
</span><del>- size_t bodySize = write.entry.body.size();
</del><ins>+ size_t bodySize = write.record.body.size();
</ins><span class="cx"> size_t totalSize = bodyOffset + bodySize;
</span><span class="cx">
</span><span class="cx"> m_approximateSize += totalSize;
</span><span class="lines">@@ -518,15 +518,15 @@
</span><span class="cx"> void Storage::dispatchHeaderWriteOperation(const WriteOperation& write)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><del>- ASSERT(write.existingEntry);
</del><ins>+ ASSERT(write.existingRecord);
</ins><span class="cx"> ASSERT(m_activeWriteOperations.contains(&write));
</span><del>- ASSERT(cacheMayContain(write.entry.key.shortHash()));
</del><ins>+ ASSERT(cacheMayContain(write.record.key.shortHash()));
</ins><span class="cx">
</span><span class="cx"> // Try to update the header of an existing entry.
</span><span class="cx"> StringCapture cachePathCapture(m_directoryPath);
</span><span class="cx"> backgroundIOQueue().dispatch([this, &write, cachePathCapture] {
</span><del>- auto headerData = encodeEntryHeader(write.entry);
- auto existingHeaderData = encodeEntryHeader(write.existingEntry.value());
</del><ins>+ auto headerData = encodeRecordHeader(write.record);
+ auto existingHeaderData = encodeRecordHeader(write.existingRecord.value());
</ins><span class="cx">
</span><span class="cx"> bool pageRoundedHeaderSizeChanged = headerData.size() != existingHeaderData.size();
</span><span class="cx"> if (pageRoundedHeaderSizeChanged) {
</span><span class="lines">@@ -537,12 +537,12 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto channel = openFileForKey(write.entry.key, IOChannel::Type::Write, cachePathCapture.string());
</del><ins>+ auto channel = openFileForKey(write.record.key, IOChannel::Type::Write, cachePathCapture.string());
</ins><span class="cx"> channel->write(0, headerData, [this, &write](int error) {
</span><span class="cx"> LOG(NetworkCacheStorage, "(NetworkProcess) update complete error=%d", error);
</span><span class="cx">
</span><span class="cx"> if (error)
</span><del>- remove(write.entry.key);
</del><ins>+ remove(write.record.key);
</ins><span class="cx">
</span><span class="cx"> write.completionHandler(!error, { });
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscacheNetworkCacheStorageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h (182018 => 182019)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h        2015-03-26 18:16:02 UTC (rev 182018)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h        2015-03-26 18:39:22 UTC (rev 182019)
</span><span class="lines">@@ -47,24 +47,24 @@
</span><span class="cx"> public:
</span><span class="cx"> static std::unique_ptr<Storage> open(const String& cachePath);
</span><span class="cx">
</span><del>- struct Entry {
</del><ins>+ struct Record {
</ins><span class="cx"> Key key;
</span><span class="cx"> std::chrono::milliseconds timeStamp;
</span><span class="cx"> Data header;
</span><span class="cx"> Data body;
</span><span class="cx"> };
</span><span class="cx"> // This may call completion handler synchronously on failure.
</span><del>- typedef std::function<bool (std::unique_ptr<Entry>)> RetrieveCompletionHandler;
</del><ins>+ typedef std::function<bool (std::unique_ptr<Record>)> RetrieveCompletionHandler;
</ins><span class="cx"> void retrieve(const Key&, unsigned priority, RetrieveCompletionHandler&&);
</span><span class="cx">
</span><span class="cx"> typedef std::function<void (bool success, const Data& mappedBody)> StoreCompletionHandler;
</span><del>- void store(const Entry&, StoreCompletionHandler&&);
- void update(const Entry& updateEntry, const Entry& existingEntry, StoreCompletionHandler&&);
</del><ins>+ void store(const Record&, StoreCompletionHandler&&);
+ void update(const Record& updateRecord, const Record& existingRecord, StoreCompletionHandler&&);
</ins><span class="cx">
</span><span class="cx"> void remove(const Key&);
</span><span class="cx">
</span><span class="cx"> // Null entry signals end.
</span><del>- void traverse(std::function<void (const Entry*)>&&);
</del><ins>+ void traverse(std::function<void (const Record*)>&&);
</ins><span class="cx">
</span><span class="cx"> void setMaximumSize(size_t);
</span><span class="cx"> void clear();
</span><span class="lines">@@ -89,8 +89,8 @@
</span><span class="cx"> void dispatchPendingReadOperations();
</span><span class="cx">
</span><span class="cx"> struct WriteOperation {
</span><del>- Entry entry;
- Optional<Entry> existingEntry;
</del><ins>+ Record record;
+ Optional<Record> existingRecord;
</ins><span class="cx"> StoreCompletionHandler completionHandler;
</span><span class="cx"> };
</span><span class="cx"> void dispatchFullWriteOperation(const WriteOperation&);
</span></span></pre>
</div>
</div>
</body>
</html>