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

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

Issue 264713011: ServiceWorker: Implement DeleteAllDataForOrigin() in ServiceWorkerDatabase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Drop DeleteAllData() and add test 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
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "content/browser/service_worker/service_worker_database.pb.h" 11 #include "content/browser/service_worker/service_worker_database.pb.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 namespace content { 14 namespace content {
15 15
16 namespace { 16 namespace {
17 17
18 typedef ServiceWorkerDatabase::RegistrationData RegistrationData; 18 typedef ServiceWorkerDatabase::RegistrationData RegistrationData;
19 typedef ServiceWorkerDatabase::ResourceRecord Resource; 19 typedef ServiceWorkerDatabase::ResourceRecord Resource;
20 20
21 struct AvailableIds { 21 struct AvailableIds {
22 int64 reg_id; 22 int64 reg_id;
23 int64 res_id; 23 int64 res_id;
24 int64 ver_id; 24 int64 ver_id;
25 25
26 AvailableIds() : reg_id(-1), res_id(-1), ver_id(-1) {} 26 AvailableIds() : reg_id(-1), res_id(-1), ver_id(-1) {}
27 ~AvailableIds() {} 27 ~AvailableIds() {}
28 }; 28 };
29 29
30 // TODO(nhiroki): Refactor tests using this helper.
31 GURL URL(const GURL& origin, const std::string& path) {
32 EXPECT_TRUE(origin.is_valid());
33 GURL out(origin.GetOrigin().spec() + path);
34 EXPECT_TRUE(out.is_valid());
35 return out;
36 }
37
38 // TODO(nhiroki): Remove this.
30 Resource CreateResource(int64 resource_id, const std::string& url) { 39 Resource CreateResource(int64 resource_id, const std::string& url) {
31 Resource resource; 40 Resource resource;
32 resource.resource_id = resource_id; 41 resource.resource_id = resource_id;
33 resource.url = GURL(url); 42 resource.url = GURL(url);
34 EXPECT_TRUE(resource.url.is_valid()); 43 EXPECT_TRUE(resource.url.is_valid());
35 return resource; 44 return resource;
36 } 45 }
37 46
47 Resource CreateResource(int64 resource_id, const GURL& url) {
48 Resource resource;
49 resource.resource_id = resource_id;
50 resource.url = url;
51 EXPECT_TRUE(resource.url.is_valid());
52 return resource;
53 }
54
38 ServiceWorkerDatabase* CreateDatabase(const base::FilePath& path) { 55 ServiceWorkerDatabase* CreateDatabase(const base::FilePath& path) {
39 return new ServiceWorkerDatabase(path); 56 return new ServiceWorkerDatabase(path);
40 } 57 }
41 58
42 ServiceWorkerDatabase* CreateDatabaseInMemory() { 59 ServiceWorkerDatabase* CreateDatabaseInMemory() {
43 return new ServiceWorkerDatabase(base::FilePath()); 60 return new ServiceWorkerDatabase(base::FilePath());
44 } 61 }
45 62
46 void VerifyRegistrationData(const RegistrationData& expected, 63 void VerifyRegistrationData(const RegistrationData& expected,
47 const RegistrationData& actual) { 64 const RegistrationData& actual) {
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 ids3.insert(3); 568 ids3.insert(3);
552 EXPECT_TRUE(database->ClearPurgeableResourceIds(ids3)); 569 EXPECT_TRUE(database->ClearPurgeableResourceIds(ids3));
553 570
554 ids_out.clear(); 571 ids_out.clear();
555 EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out)); 572 EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out));
556 EXPECT_EQ(2U, ids_out.size()); 573 EXPECT_EQ(2U, ids_out.size());
557 EXPECT_TRUE(ContainsKey(ids_out, 1)); 574 EXPECT_TRUE(ContainsKey(ids_out, 1));
558 EXPECT_TRUE(ContainsKey(ids_out, 4)); 575 EXPECT_TRUE(ContainsKey(ids_out, 4));
559 } 576 }
560 577
578 TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
579 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
580
581 // Data associated with |origin1| will be removed.
582 GURL origin1("http://example.com");
583 GURL origin2("http://example.org");
584
585 // |origin1| has two registrations.
586 RegistrationData data1;
587 data1.registration_id = 10;
588 data1.scope = URL(origin1, "/foo");
589 data1.script = URL(origin1, "/script1.js");
590 data1.version_id = 100;
591
592 std::vector<Resource> resources1;
593 resources1.push_back(CreateResource(1, URL(origin1, "/resource1")));
594 resources1.push_back(CreateResource(2, URL(origin1, "/resource2")));
595 ASSERT_TRUE(database->WriteRegistration(data1, resources1));
596
597 RegistrationData data2;
598 data2.registration_id = 11;
599 data2.scope = URL(origin1, "/bar");
600 data2.script = URL(origin1, "/script2.js");
601 data2.version_id = 101;
602
603 std::vector<Resource> resources2;
604 resources2.push_back(CreateResource(3, URL(origin1, "/resource3")));
605 resources2.push_back(CreateResource(4, URL(origin1, "/resource4")));
606 ASSERT_TRUE(database->WriteRegistration(data2, resources2));
607
608 // |origin2| has one registration.
609 RegistrationData data3;
610 data3.registration_id = 12;
611 data3.scope = URL(origin2, "/hoge");
612 data3.script = URL(origin2, "/script3.js");
613 data3.version_id = 102;
614
615 std::vector<Resource> resources3;
616 resources3.push_back(CreateResource(5, URL(origin2, "/resource5")));
617 resources3.push_back(CreateResource(6, URL(origin2, "/resource6")));
618 ASSERT_TRUE(database->WriteRegistration(data3, resources3));
619
620 EXPECT_TRUE(database->DeleteAllDataForOrigin(origin1));
621
622 // |origin1| should be removed from the unique origin list.
623 std::set<GURL> unique_origins;
624 EXPECT_TRUE(database->GetOriginsWithRegistrations(&unique_origins));
625 EXPECT_EQ(1u, unique_origins.size());
626 EXPECT_TRUE(ContainsKey(unique_origins, origin2));
627
628 // The registrations for |origin1| should be removed.
629 std::vector<RegistrationData> registrations;
630 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, &registrations));
631 EXPECT_TRUE(registrations.empty());
632
633 // The registration for |origin2| should not be removed.
634 RegistrationData data_out;
635 std::vector<Resource> resources_out;
636 EXPECT_TRUE(database->ReadRegistration(
637 data3.registration_id, origin2, &data_out, &resources_out));
638 VerifyRegistrationData(data3, data_out);
639 VerifyResourceRecords(resources3, resources_out);
640
641 // The resources associated with |origin1| should be purgeable.
642 std::set<int64> purgeable_ids_out;
643 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out));
644 EXPECT_EQ(4u, purgeable_ids_out.size());
645 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1));
646 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2));
647 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3));
648 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4));
649 }
650
561 } // namespace content 651 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698