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

Side by Side Diff: content/browser/service_worker/service_worker_database_unittest.cc

Issue 275103004: ServiceWorker: Database functions should return status code instead of boolean (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/service_worker/service_worker_database.h" 5 #include "content/browser/service_worker/service_worker_database.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/files/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { 124 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
125 base::ScopedTempDir database_dir; 125 base::ScopedTempDir database_dir;
126 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); 126 ASSERT_TRUE(database_dir.CreateUniqueTempDir());
127 scoped_ptr<ServiceWorkerDatabase> database( 127 scoped_ptr<ServiceWorkerDatabase> database(
128 CreateDatabase(database_dir.path())); 128 CreateDatabase(database_dir.path()));
129 129
130 GURL origin("http://example.com"); 130 GURL origin("http://example.com");
131 131
132 // The database has never been used, so returns initial values. 132 // The database has never been used, so returns initial values.
133 AvailableIds ids; 133 AvailableIds ids;
134 EXPECT_TRUE(database->GetNextAvailableIds( 134 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds(
135 &ids.reg_id, &ids.ver_id, &ids.res_id)); 135 &ids.reg_id, &ids.ver_id, &ids.res_id));
136 EXPECT_EQ(0, ids.reg_id); 136 EXPECT_EQ(0, ids.reg_id);
137 EXPECT_EQ(0, ids.ver_id); 137 EXPECT_EQ(0, ids.ver_id);
138 EXPECT_EQ(0, ids.res_id); 138 EXPECT_EQ(0, ids.res_id);
139 139
140 ASSERT_TRUE(database->LazyOpen(true)); 140 ASSERT_TRUE(database->LazyOpen(true));
141 EXPECT_TRUE(database->GetNextAvailableIds( 141 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds(
142 &ids.reg_id, &ids.ver_id, &ids.res_id)); 142 &ids.reg_id, &ids.ver_id, &ids.res_id));
143 EXPECT_EQ(0, ids.reg_id); 143 EXPECT_EQ(0, ids.reg_id);
144 EXPECT_EQ(0, ids.ver_id); 144 EXPECT_EQ(0, ids.ver_id);
145 EXPECT_EQ(0, ids.res_id); 145 EXPECT_EQ(0, ids.res_id);
146 146
147 // Writing a registration bumps the next available ids. 147 // Writing a registration bumps the next available ids.
148 std::vector<Resource> resources; 148 std::vector<Resource> resources;
149 RegistrationData data1; 149 RegistrationData data1;
150 data1.registration_id = 100; 150 data1.registration_id = 100;
151 data1.scope = URL(origin, "/foo"); 151 data1.scope = URL(origin, "/foo");
152 data1.script = URL(origin, "/script1.js"); 152 data1.script = URL(origin, "/script1.js");
153 data1.version_id = 200; 153 data1.version_id = 200;
154 ASSERT_TRUE(database->WriteRegistration(data1, resources)); 154 ASSERT_TRUE(database->WriteRegistration(data1, resources));
155 155
156 EXPECT_TRUE(database->GetNextAvailableIds( 156 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds(
157 &ids.reg_id, &ids.ver_id, &ids.res_id)); 157 &ids.reg_id, &ids.ver_id, &ids.res_id));
158 EXPECT_EQ(101, ids.reg_id); 158 EXPECT_EQ(101, ids.reg_id);
159 EXPECT_EQ(201, ids.ver_id); 159 EXPECT_EQ(201, ids.ver_id);
160 EXPECT_EQ(0, ids.res_id); 160 EXPECT_EQ(0, ids.res_id);
161 161
162 // Writing a registration whose ids are lower than the stored ones should not 162 // Writing a registration whose ids are lower than the stored ones should not
163 // bump the next available ids. 163 // bump the next available ids.
164 RegistrationData data2; 164 RegistrationData data2;
165 data2.registration_id = 10; 165 data2.registration_id = 10;
166 data2.scope = URL(origin, "/bar"); 166 data2.scope = URL(origin, "/bar");
167 data2.script = URL(origin, "/script2.js"); 167 data2.script = URL(origin, "/script2.js");
168 data2.version_id = 20; 168 data2.version_id = 20;
169 ASSERT_TRUE(database->WriteRegistration(data2, resources)); 169 ASSERT_TRUE(database->WriteRegistration(data2, resources));
170 170
171 // Close and reopen the database to verify the stored values. 171 // Close and reopen the database to verify the stored values.
172 database.reset(CreateDatabase(database_dir.path())); 172 database.reset(CreateDatabase(database_dir.path()));
173 173
174 EXPECT_TRUE(database->GetNextAvailableIds( 174 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds(
175 &ids.reg_id, &ids.ver_id, &ids.res_id)); 175 &ids.reg_id, &ids.ver_id, &ids.res_id));
176 EXPECT_EQ(101, ids.reg_id); 176 EXPECT_EQ(101, ids.reg_id);
177 EXPECT_EQ(201, ids.ver_id); 177 EXPECT_EQ(201, ids.ver_id);
178 EXPECT_EQ(0, ids.res_id); 178 EXPECT_EQ(0, ids.res_id);
179 } 179 }
180 180
181 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { 181 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
182 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 182 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
183 183
184 std::set<GURL> origins; 184 std::set<GURL> origins;
185 EXPECT_TRUE(database->GetOriginsWithRegistrations(&origins)); 185 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins));
186 EXPECT_TRUE(origins.empty()); 186 EXPECT_TRUE(origins.empty());
187 187
188 std::vector<Resource> resources; 188 std::vector<Resource> resources;
189 189
190 GURL origin1("http://example.com"); 190 GURL origin1("http://example.com");
191 RegistrationData data1; 191 RegistrationData data1;
192 data1.registration_id = 123; 192 data1.registration_id = 123;
193 data1.scope = URL(origin1, "/foo"); 193 data1.scope = URL(origin1, "/foo");
194 data1.script = URL(origin1, "/script1.js"); 194 data1.script = URL(origin1, "/script1.js");
195 data1.version_id = 456; 195 data1.version_id = 456;
(...skipping 17 matching lines...) Expand all
213 213
214 // |origin3| has two registrations. 214 // |origin3| has two registrations.
215 RegistrationData data4; 215 RegistrationData data4;
216 data4.registration_id = 456; 216 data4.registration_id = 456;
217 data4.scope = URL(origin3, "/fuga"); 217 data4.scope = URL(origin3, "/fuga");
218 data4.script = URL(origin3, "/script4.js"); 218 data4.script = URL(origin3, "/script4.js");
219 data4.version_id = 789; 219 data4.version_id = 789;
220 ASSERT_TRUE(database->WriteRegistration(data4, resources)); 220 ASSERT_TRUE(database->WriteRegistration(data4, resources));
221 221
222 origins.clear(); 222 origins.clear();
223 EXPECT_TRUE(database->GetOriginsWithRegistrations(&origins)); 223 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins));
224 EXPECT_EQ(3U, origins.size()); 224 EXPECT_EQ(3U, origins.size());
225 EXPECT_TRUE(ContainsKey(origins, origin1)); 225 EXPECT_TRUE(ContainsKey(origins, origin1));
226 EXPECT_TRUE(ContainsKey(origins, origin2)); 226 EXPECT_TRUE(ContainsKey(origins, origin2));
227 EXPECT_TRUE(ContainsKey(origins, origin3)); 227 EXPECT_TRUE(ContainsKey(origins, origin3));
228 228
229 // |origin3| has another registration, so should not remove it from the 229 // |origin3| has another registration, so should not remove it from the
230 // unique origin list. 230 // unique origin list.
231 ASSERT_TRUE(database->DeleteRegistration(data4.registration_id, origin3)); 231 ASSERT_TRUE(database->DeleteRegistration(data4.registration_id, origin3));
232 232
233 origins.clear(); 233 origins.clear();
234 EXPECT_TRUE(database->GetOriginsWithRegistrations(&origins)); 234 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins));
235 EXPECT_EQ(3U, origins.size()); 235 EXPECT_EQ(3U, origins.size());
236 EXPECT_TRUE(ContainsKey(origins, origin1)); 236 EXPECT_TRUE(ContainsKey(origins, origin1));
237 EXPECT_TRUE(ContainsKey(origins, origin2)); 237 EXPECT_TRUE(ContainsKey(origins, origin2));
238 EXPECT_TRUE(ContainsKey(origins, origin3)); 238 EXPECT_TRUE(ContainsKey(origins, origin3));
239 239
240 // |origin3| should be removed from the unique origin list. 240 // |origin3| should be removed from the unique origin list.
241 ASSERT_TRUE(database->DeleteRegistration(data3.registration_id, origin3)); 241 ASSERT_TRUE(database->DeleteRegistration(data3.registration_id, origin3));
242 242
243 origins.clear(); 243 origins.clear();
244 EXPECT_TRUE(database->GetOriginsWithRegistrations(&origins)); 244 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins));
245 EXPECT_EQ(2U, origins.size()); 245 EXPECT_EQ(2U, origins.size());
246 EXPECT_TRUE(ContainsKey(origins, origin1)); 246 EXPECT_TRUE(ContainsKey(origins, origin1));
247 EXPECT_TRUE(ContainsKey(origins, origin2)); 247 EXPECT_TRUE(ContainsKey(origins, origin2));
248 } 248 }
249 249
250 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { 250 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
251 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 251 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
252 252
253 GURL origin1("http://example.com"); 253 GURL origin1("http://example.com");
254 GURL origin2("https://www.example.com"); 254 GURL origin2("https://www.example.com");
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 632
633 std::vector<Resource> resources3; 633 std::vector<Resource> resources3;
634 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"))); 634 resources3.push_back(CreateResource(5, URL(origin2, "/resource5")));
635 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"))); 635 resources3.push_back(CreateResource(6, URL(origin2, "/resource6")));
636 ASSERT_TRUE(database->WriteRegistration(data3, resources3)); 636 ASSERT_TRUE(database->WriteRegistration(data3, resources3));
637 637
638 EXPECT_TRUE(database->DeleteAllDataForOrigin(origin1)); 638 EXPECT_TRUE(database->DeleteAllDataForOrigin(origin1));
639 639
640 // |origin1| should be removed from the unique origin list. 640 // |origin1| should be removed from the unique origin list.
641 std::set<GURL> unique_origins; 641 std::set<GURL> unique_origins;
642 EXPECT_TRUE(database->GetOriginsWithRegistrations(&unique_origins)); 642 EXPECT_EQ(SERVICE_WORKER_OK,
643 database->GetOriginsWithRegistrations(&unique_origins));
643 EXPECT_EQ(1u, unique_origins.size()); 644 EXPECT_EQ(1u, unique_origins.size());
644 EXPECT_TRUE(ContainsKey(unique_origins, origin2)); 645 EXPECT_TRUE(ContainsKey(unique_origins, origin2));
645 646
646 // The registrations for |origin1| should be removed. 647 // The registrations for |origin1| should be removed.
647 std::vector<RegistrationData> registrations; 648 std::vector<RegistrationData> registrations;
648 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, &registrations)); 649 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, &registrations));
649 EXPECT_TRUE(registrations.empty()); 650 EXPECT_TRUE(registrations.empty());
650 651
651 // The registration for |origin2| should not be removed. 652 // The registration for |origin2| should not be removed.
652 RegistrationData data_out; 653 RegistrationData data_out;
653 std::vector<Resource> resources_out; 654 std::vector<Resource> resources_out;
654 EXPECT_TRUE(database->ReadRegistration( 655 EXPECT_TRUE(database->ReadRegistration(
655 data3.registration_id, origin2, &data_out, &resources_out)); 656 data3.registration_id, origin2, &data_out, &resources_out));
656 VerifyRegistrationData(data3, data_out); 657 VerifyRegistrationData(data3, data_out);
657 VerifyResourceRecords(resources3, resources_out); 658 VerifyResourceRecords(resources3, resources_out);
658 659
659 // The resources associated with |origin1| should be purgeable. 660 // The resources associated with |origin1| should be purgeable.
660 std::set<int64> purgeable_ids_out; 661 std::set<int64> purgeable_ids_out;
661 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); 662 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out));
662 EXPECT_EQ(4u, purgeable_ids_out.size()); 663 EXPECT_EQ(4u, purgeable_ids_out.size());
663 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1)); 664 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1));
664 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2)); 665 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2));
665 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3)); 666 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3));
666 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4)); 667 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4));
667 } 668 }
668 669
669 } // namespace content 670 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698