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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 197
198 void WriteResponseOfSize(ServiceWorkerStorage* storage, int64 id, 198 void WriteResponseOfSize(ServiceWorkerStorage* storage, int64 id,
199 char val, int size) { 199 char val, int size) {
200 const char kHttpHeaders[] = "HTTP/1.0 200 HONKYDORY\00"; 200 const char kHttpHeaders[] = "HTTP/1.0 200 HONKYDORY\00";
201 std::string headers(kHttpHeaders, arraysize(kHttpHeaders)); 201 std::string headers(kHttpHeaders, arraysize(kHttpHeaders));
202 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(size); 202 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(size);
203 memset(buffer->data(), val, size); 203 memset(buffer->data(), val, size);
204 WriteResponse(storage, id, headers, buffer.get(), size); 204 WriteResponse(storage, id, headers, buffer.get(), size);
205 } 205 }
206 206
207 int WriteResponseMetadata(ServiceWorkerStorage* storage,
208 int64 id,
209 const std::string& metadata) {
210 scoped_refptr<IOBuffer> body_buffer(new WrappedIOBuffer(metadata.data()));
211 scoped_ptr<ServiceWorkerResponseMetadataWriter> metadata_writer =
212 storage->CreateResponseMetadataWriter(id);
213 TestCompletionCallback cb;
214 metadata_writer->WriteMetadata(body_buffer.get(), metadata.length(),
215 cb.callback());
216 return cb.WaitForResult();
217 }
218
219 int WriteMetadata(ServiceWorkerVersion* version,
220 const GURL& url,
221 const std::string& metadata) {
222 const std::vector<char> data(metadata.begin(), metadata.end());
223 EXPECT_TRUE(version);
224 TestCompletionCallback cb;
225 version->script_cache_map()->WriteMetadata(url, data, cb.callback());
226 return cb.WaitForResult();
227 }
228
229 int ClearMetadata(ServiceWorkerVersion* version, const GURL& url) {
230 EXPECT_TRUE(version);
231 TestCompletionCallback cb;
232 version->script_cache_map()->ClearMetadata(url, cb.callback());
233 return cb.WaitForResult();
234 }
235
236 bool VerifyResponseMetadata(ServiceWorkerStorage* storage,
237 int64 id,
238 const std::string& expected_metadata) {
239 scoped_ptr<ServiceWorkerResponseReader> reader =
240 storage->CreateResponseReader(id);
241 scoped_refptr<HttpResponseInfoIOBuffer> info_buffer =
242 new HttpResponseInfoIOBuffer();
243 {
244 TestCompletionCallback cb;
245 reader->ReadInfo(info_buffer.get(), cb.callback());
246 int rv = cb.WaitForResult();
247 EXPECT_LT(0, rv);
248 }
249 const net::HttpResponseInfo* read_head = info_buffer->http_info.get();
250 if (!read_head->metadata.get())
251 return false;
252 EXPECT_EQ(0, memcmp(expected_metadata.data(), read_head->metadata->data(),
253 expected_metadata.length()));
254 return true;
255 }
256
207 } // namespace 257 } // namespace
208 258
209 class ServiceWorkerStorageTest : public testing::Test { 259 class ServiceWorkerStorageTest : public testing::Test {
210 public: 260 public:
211 ServiceWorkerStorageTest() 261 ServiceWorkerStorageTest()
212 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) { 262 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {
213 } 263 }
214 264
215 void SetUp() override { 265 void SetUp() override {
216 scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager( 266 scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager(
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 } 952 }
903 953
904 base::FilePath GetUserDataDirectory() override { 954 base::FilePath GetUserDataDirectory() override {
905 return user_data_directory_.path(); 955 return user_data_directory_.path();
906 } 956 }
907 957
908 protected: 958 protected:
909 base::ScopedTempDir user_data_directory_; 959 base::ScopedTempDir user_data_directory_;
910 }; 960 };
911 961
962 TEST_F(ServiceWorkerResourceStorageTest,
963 WriteMetadataWithServiceWorkerResponseMetadataWriter) {
964 const char kMetadata1[] = "Test metadata";
965 const char kMetadata2[] = "small";
966 int64 new_resource_id_ = storage()->NewResourceId();
967 // Writing metadata to nonexistent resoirce ID must fail.
968 EXPECT_GE(0, WriteResponseMetadata(storage(), new_resource_id_, kMetadata1));
969
970 // Check metadata is written.
971 EXPECT_EQ(static_cast<int>(strlen(kMetadata1)),
972 WriteResponseMetadata(storage(), resource_id1_, kMetadata1));
973 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata1));
974 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
975
976 // Check metadata is written and truncated.
977 EXPECT_EQ(static_cast<int>(strlen(kMetadata2)),
978 WriteResponseMetadata(storage(), resource_id1_, kMetadata2));
979 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2));
980 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
981
982 // Check metadata is deleted.
983 EXPECT_EQ(0, WriteResponseMetadata(storage(), resource_id1_, ""));
984 EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, ""));
985 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
986 }
987
988 TEST_F(ServiceWorkerResourceStorageTest,
989 WriteMetadataWithServiceWorkerScriptCacheMap) {
990 const char kMetadata1[] = "Test metadata";
991 const char kMetadata2[] = "small";
992 ServiceWorkerVersion* version = registration_->waiting_version();
993 EXPECT_TRUE(version);
994
995 // Writing metadata to nonexistent URL must fail.
996 EXPECT_GE(0,
997 WriteMetadata(version, GURL("http://www.test.not/nonexistent.js"),
998 kMetadata1));
999 // Clearing metadata of nonexistent URL must fail.
1000 EXPECT_GE(0,
1001 ClearMetadata(version, GURL("http://www.test.not/nonexistent.js")));
1002
1003 // Check metadata is written.
1004 EXPECT_EQ(static_cast<int>(strlen(kMetadata1)),
1005 WriteMetadata(version, script_, kMetadata1));
1006 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata1));
1007 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
1008
1009 // Check metadata is written and truncated.
1010 EXPECT_EQ(static_cast<int>(strlen(kMetadata2)),
1011 WriteMetadata(version, script_, kMetadata2));
1012 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2));
1013 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
1014
1015 // Check metadata is deleted.
1016 EXPECT_EQ(0, ClearMetadata(version, script_));
1017 EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, ""));
1018 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
1019 }
1020
912 TEST_F(ServiceWorkerResourceStorageTest, DeleteRegistration_NoLiveVersion) { 1021 TEST_F(ServiceWorkerResourceStorageTest, DeleteRegistration_NoLiveVersion) {
913 bool was_called = false; 1022 bool was_called = false;
914 ServiceWorkerStatusCode result = SERVICE_WORKER_ERROR_FAILED; 1023 ServiceWorkerStatusCode result = SERVICE_WORKER_ERROR_FAILED;
915 std::set<int64> verify_ids; 1024 std::set<int64> verify_ids;
916 1025
917 registration_->SetWaitingVersion(NULL); 1026 registration_->SetWaitingVersion(NULL);
918 registration_ = NULL; 1027 registration_ = NULL;
919 1028
920 // Deleting the registration should result in the resources being added to the 1029 // Deleting the registration should result in the resources being added to the
921 // purgeable list and then doomed in the disk cache and removed from that 1030 // purgeable list and then doomed in the disk cache and removed from that
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
1331 are_equal = true; 1440 are_equal = true;
1332 storage()->CompareScriptResources( 1441 storage()->CompareScriptResources(
1333 5, 6, 1442 5, 6,
1334 base::Bind(&OnCompareComplete, &status, &are_equal)); 1443 base::Bind(&OnCompareComplete, &status, &are_equal));
1335 base::RunLoop().RunUntilIdle(); 1444 base::RunLoop().RunUntilIdle();
1336 EXPECT_EQ(SERVICE_WORKER_OK, status); 1445 EXPECT_EQ(SERVICE_WORKER_OK, status);
1337 EXPECT_FALSE(are_equal); 1446 EXPECT_FALSE(are_equal);
1338 } 1447 }
1339 1448
1340 } // namespace content 1449 } // namespace content
OLDNEW
« 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