Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1048)

Unified Diff: content/browser/service_worker/service_worker_storage_unittest.cc

Issue 931173002: Implement EmbeddedWorkerContextClient.setCachedMetadata/clearCachedMetadata (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix clang failure Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_storage_unittest.cc
diff --git a/content/browser/service_worker/service_worker_storage_unittest.cc b/content/browser/service_worker/service_worker_storage_unittest.cc
index e14a459f206a661ee4498d75963577a0a78c0648..bbaab11cffe096a754713fa222d5bfc1cb9ab215 100644
--- a/content/browser/service_worker/service_worker_storage_unittest.cc
+++ b/content/browser/service_worker/service_worker_storage_unittest.cc
@@ -204,6 +204,56 @@ void WriteResponseOfSize(ServiceWorkerStorage* storage, int64 id,
WriteResponse(storage, id, headers, buffer.get(), size);
}
+int WriteResponseMetadata(ServiceWorkerStorage* storage,
+ int64 id,
+ const std::string& metadata) {
+ scoped_refptr<IOBuffer> body_buffer(new WrappedIOBuffer(metadata.data()));
+ scoped_ptr<ServiceWorkerResponseMetadataWriter> metadata_writer =
+ storage->CreateResponseMetadataWriter(id);
+ TestCompletionCallback cb;
+ metadata_writer->WriteMetadata(body_buffer.get(), metadata.length(),
+ cb.callback());
+ return cb.WaitForResult();
+}
+
+int WriteMetadata(ServiceWorkerVersion* version,
+ const GURL& url,
+ const std::string& metadata) {
+ const std::vector<char> data(metadata.begin(), metadata.end());
+ EXPECT_TRUE(version);
+ TestCompletionCallback cb;
+ version->script_cache_map()->WriteMetadata(url, data, cb.callback());
+ return cb.WaitForResult();
+}
+
+int ClearMetadata(ServiceWorkerVersion* version, const GURL& url) {
+ EXPECT_TRUE(version);
+ TestCompletionCallback cb;
+ version->script_cache_map()->ClearMetadata(url, cb.callback());
+ return cb.WaitForResult();
+}
+
+bool VerifyResponseMetadata(ServiceWorkerStorage* storage,
+ int64 id,
+ const std::string& expected_metadata) {
+ scoped_ptr<ServiceWorkerResponseReader> reader =
+ storage->CreateResponseReader(id);
+ scoped_refptr<HttpResponseInfoIOBuffer> info_buffer =
+ new HttpResponseInfoIOBuffer();
+ {
+ TestCompletionCallback cb;
+ reader->ReadInfo(info_buffer.get(), cb.callback());
+ int rv = cb.WaitForResult();
+ EXPECT_LT(0, rv);
+ }
+ const net::HttpResponseInfo* read_head = info_buffer->http_info.get();
+ if (!read_head->metadata.get())
+ return false;
+ EXPECT_EQ(0, memcmp(expected_metadata.data(), read_head->metadata->data(),
+ expected_metadata.length()));
+ return true;
+}
+
} // namespace
class ServiceWorkerStorageTest : public testing::Test {
@@ -909,6 +959,65 @@ class ServiceWorkerResourceStorageDiskTest
base::ScopedTempDir user_data_directory_;
};
+TEST_F(ServiceWorkerResourceStorageTest,
+ WriteMetadataWithServiceWorkerResponseMetadataWriter) {
+ const char kMetadata1[] = "Test metadata";
+ const char kMetadata2[] = "small";
+ int64 new_resource_id_ = storage()->NewResourceId();
+ // Writing metadata to nonexistent resoirce ID must fail.
+ EXPECT_GE(0, WriteResponseMetadata(storage(), new_resource_id_, kMetadata1));
+
+ // Check metadata is written.
+ EXPECT_EQ(static_cast<int>(strlen(kMetadata1)),
+ WriteResponseMetadata(storage(), resource_id1_, kMetadata1));
+ EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata1));
+ EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
+
+ // Check metadata is written and truncated.
+ EXPECT_EQ(static_cast<int>(strlen(kMetadata2)),
+ WriteResponseMetadata(storage(), resource_id1_, kMetadata2));
+ EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2));
+ EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
+
+ // Check metadata is deleted.
+ EXPECT_EQ(0, WriteResponseMetadata(storage(), resource_id1_, ""));
+ EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, ""));
+ EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
+}
+
+TEST_F(ServiceWorkerResourceStorageTest,
+ WriteMetadataWithServiceWorkerScriptCacheMap) {
+ const char kMetadata1[] = "Test metadata";
+ const char kMetadata2[] = "small";
+ ServiceWorkerVersion* version = registration_->waiting_version();
+ EXPECT_TRUE(version);
+
+ // Writing metadata to nonexistent URL must fail.
+ EXPECT_GE(0,
+ WriteMetadata(version, GURL("http://www.test.not/nonexistent.js"),
+ kMetadata1));
+ // Clearing metadata of nonexistent URL must fail.
+ EXPECT_GE(0,
+ ClearMetadata(version, GURL("http://www.test.not/nonexistent.js")));
+
+ // Check metadata is written.
+ EXPECT_EQ(static_cast<int>(strlen(kMetadata1)),
+ WriteMetadata(version, script_, kMetadata1));
+ EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata1));
+ EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
+
+ // Check metadata is written and truncated.
+ EXPECT_EQ(static_cast<int>(strlen(kMetadata2)),
+ WriteMetadata(version, script_, kMetadata2));
+ EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2));
+ EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
+
+ // Check metadata is deleted.
+ EXPECT_EQ(0, ClearMetadata(version, script_));
+ EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, ""));
+ EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
+}
+
TEST_F(ServiceWorkerResourceStorageTest, DeleteRegistration_NoLiveVersion) {
bool was_called = false;
ServiceWorkerStatusCode result = SERVICE_WORKER_ERROR_FAILED;
« no previous file with comments | « content/browser/service_worker/service_worker_storage.cc ('k') | content/browser/service_worker/service_worker_version.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698