Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "content/browser/service_worker/service_worker_storage.h" | 5 #include "content/browser/service_worker/service_worker_storage.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 666 scoped_refptr<ServiceWorkerVersion> live_version = new ServiceWorkerVersion( | 666 scoped_refptr<ServiceWorkerVersion> live_version = new ServiceWorkerVersion( |
| 667 live_registration.get(), kResource1, kVersionId, context()->AsWeakPtr()); | 667 live_registration.get(), kResource1, kVersionId, context()->AsWeakPtr()); |
| 668 live_version->set_fetch_handler_existence( | 668 live_version->set_fetch_handler_existence( |
| 669 ServiceWorkerVersion::FetchHandlerExistence::EXISTS); | 669 ServiceWorkerVersion::FetchHandlerExistence::EXISTS); |
| 670 live_version->SetStatus(ServiceWorkerVersion::INSTALLED); | 670 live_version->SetStatus(ServiceWorkerVersion::INSTALLED); |
| 671 live_version->script_cache_map()->SetResources(resources); | 671 live_version->script_cache_map()->SetResources(resources); |
| 672 live_version->set_foreign_fetch_scopes( | 672 live_version->set_foreign_fetch_scopes( |
| 673 std::vector<GURL>(1, kForeignFetchScope)); | 673 std::vector<GURL>(1, kForeignFetchScope)); |
| 674 live_version->set_foreign_fetch_origins( | 674 live_version->set_foreign_fetch_origins( |
| 675 std::vector<url::Origin>(1, kForeignFetchOrigin)); | 675 std::vector<url::Origin>(1, kForeignFetchOrigin)); |
| 676 live_version->set_used_features({124, 901, 1019}); | |
| 676 live_registration->SetWaitingVersion(live_version); | 677 live_registration->SetWaitingVersion(live_version); |
| 677 live_registration->set_last_update_check(kYesterday); | 678 live_registration->set_last_update_check(kYesterday); |
| 678 EXPECT_EQ(SERVICE_WORKER_OK, | 679 EXPECT_EQ(SERVICE_WORKER_OK, |
| 679 StoreRegistration(live_registration, live_version)); | 680 StoreRegistration(live_registration, live_version)); |
| 680 | 681 |
| 681 // Now we should find it and get the live ptr back immediately. | 682 // Now we should find it and get the live ptr back immediately. |
| 682 EXPECT_EQ(SERVICE_WORKER_OK, | 683 EXPECT_EQ(SERVICE_WORKER_OK, |
| 683 FindRegistrationForDocument(kDocumentUrl, &found_registration)); | 684 FindRegistrationForDocument(kDocumentUrl, &found_registration)); |
| 684 EXPECT_EQ(live_registration, found_registration); | 685 EXPECT_EQ(live_registration, found_registration); |
| 685 EXPECT_EQ(kResource1Size + kResource2Size, | 686 EXPECT_EQ(kResource1Size + kResource2Size, |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 763 EXPECT_EQ(ServiceWorkerVersion::INSTALLED, | 764 EXPECT_EQ(ServiceWorkerVersion::INSTALLED, |
| 764 found_registration->waiting_version()->status()); | 765 found_registration->waiting_version()->status()); |
| 765 EXPECT_EQ( | 766 EXPECT_EQ( |
| 766 1u, found_registration->waiting_version()->foreign_fetch_scopes().size()); | 767 1u, found_registration->waiting_version()->foreign_fetch_scopes().size()); |
| 767 EXPECT_EQ(kForeignFetchScope, | 768 EXPECT_EQ(kForeignFetchScope, |
| 768 found_registration->waiting_version()->foreign_fetch_scopes()[0]); | 769 found_registration->waiting_version()->foreign_fetch_scopes()[0]); |
| 769 EXPECT_EQ( | 770 EXPECT_EQ( |
| 770 1u, | 771 1u, |
| 771 found_registration->waiting_version()->foreign_fetch_origins().size()); | 772 found_registration->waiting_version()->foreign_fetch_origins().size()); |
| 772 EXPECT_EQ(kForeignFetchOrigin, | 773 EXPECT_EQ(kForeignFetchOrigin, |
| 773 found_registration->waiting_version()->foreign_fetch_origins()[0]); | 774 found_registration->waiting_version()->foreign_fetch_origins()[0]); |
|
falken
2017/02/08 05:01:53
Should we check the used features somewhere in thi
nhiroki
2017/02/09 05:11:31
Yeah, I should have checked it. Done.
| |
| 774 | 775 |
| 775 // Update to active and update the last check time. | 776 // Update to active and update the last check time. |
| 776 scoped_refptr<ServiceWorkerVersion> temp_version = | 777 scoped_refptr<ServiceWorkerVersion> temp_version = |
| 777 found_registration->waiting_version(); | 778 found_registration->waiting_version(); |
| 778 temp_version->SetStatus(ServiceWorkerVersion::ACTIVATED); | 779 temp_version->SetStatus(ServiceWorkerVersion::ACTIVATED); |
| 779 found_registration->SetActiveVersion(temp_version); | 780 found_registration->SetActiveVersion(temp_version); |
| 780 temp_version = NULL; | 781 temp_version = NULL; |
| 781 EXPECT_EQ(SERVICE_WORKER_OK, UpdateToActiveState(found_registration)); | 782 EXPECT_EQ(SERVICE_WORKER_OK, UpdateToActiveState(found_registration)); |
| 782 found_registration->set_last_update_check(kToday); | 783 found_registration->set_last_update_check(kToday); |
| 783 UpdateLastUpdateCheckTime(found_registration.get()); | 784 UpdateLastUpdateCheckTime(found_registration.get()); |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1139 resource_id1_size_ = 239193; | 1140 resource_id1_size_ = 239193; |
| 1140 resource_id2_size_ = 59923; | 1141 resource_id2_size_ = 59923; |
| 1141 | 1142 |
| 1142 // Cons up a new registration+version with two script resources. | 1143 // Cons up a new registration+version with two script resources. |
| 1143 RegistrationData data; | 1144 RegistrationData data; |
| 1144 data.registration_id = registration_id_; | 1145 data.registration_id = registration_id_; |
| 1145 data.scope = scope_; | 1146 data.scope = scope_; |
| 1146 data.script = script_; | 1147 data.script = script_; |
| 1147 data.version_id = version_id_; | 1148 data.version_id = version_id_; |
| 1148 data.is_active = false; | 1149 data.is_active = false; |
| 1150 data.used_features = {109, 421, 9101}; | |
| 1149 std::vector<ResourceRecord> resources; | 1151 std::vector<ResourceRecord> resources; |
| 1150 resources.push_back( | 1152 resources.push_back( |
| 1151 ResourceRecord(resource_id1_, script_, resource_id1_size_)); | 1153 ResourceRecord(resource_id1_, script_, resource_id1_size_)); |
| 1152 resources.push_back( | 1154 resources.push_back( |
| 1153 ResourceRecord(resource_id2_, import_, resource_id2_size_)); | 1155 ResourceRecord(resource_id2_, import_, resource_id2_size_)); |
| 1154 registration_ = storage()->GetOrCreateRegistration(data, resources); | 1156 registration_ = storage()->GetOrCreateRegistration(data, resources); |
| 1155 registration_->waiting_version()->SetStatus(ServiceWorkerVersion::NEW); | 1157 registration_->waiting_version()->SetStatus(ServiceWorkerVersion::NEW); |
| 1156 | 1158 |
| 1157 // Add the resources ids to the uncommitted list. | 1159 // Add the resources ids to the uncommitted list. |
| 1158 storage()->StoreUncommittedResourceId(resource_id1_); | 1160 storage()->StoreUncommittedResourceId(resource_id1_); |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1570 registration_.get(), script_, storage()->NewVersionId(), | 1572 registration_.get(), script_, storage()->NewVersionId(), |
| 1571 context()->AsWeakPtr()); | 1573 context()->AsWeakPtr()); |
| 1572 live_version->SetStatus(ServiceWorkerVersion::NEW); | 1574 live_version->SetStatus(ServiceWorkerVersion::NEW); |
| 1573 registration_->SetWaitingVersion(live_version); | 1575 registration_->SetWaitingVersion(live_version); |
| 1574 std::vector<ServiceWorkerDatabase::ResourceRecord> records; | 1576 std::vector<ServiceWorkerDatabase::ResourceRecord> records; |
| 1575 records.push_back(ServiceWorkerDatabase::ResourceRecord( | 1577 records.push_back(ServiceWorkerDatabase::ResourceRecord( |
| 1576 10, live_version->script_url(), 100)); | 1578 10, live_version->script_url(), 100)); |
| 1577 live_version->script_cache_map()->SetResources(records); | 1579 live_version->script_cache_map()->SetResources(records); |
| 1578 live_version->set_fetch_handler_existence( | 1580 live_version->set_fetch_handler_existence( |
| 1579 ServiceWorkerVersion::FetchHandlerExistence::EXISTS); | 1581 ServiceWorkerVersion::FetchHandlerExistence::EXISTS); |
| 1582 live_version->set_used_features({124, 901, 1019}); | |
|
falken
2017/02/08 05:01:53
Just curious why we set the used features here. Sh
nhiroki
2017/02/09 05:11:31
Yeah, this doesn't really make sense. I meant to c
| |
| 1580 | 1583 |
| 1581 // Writing the registration should move the old version's resources to the | 1584 // Writing the registration should move the old version's resources to the |
| 1582 // purgeable list but keep them available. | 1585 // purgeable list but keep them available. |
| 1583 storage()->StoreRegistration( | 1586 storage()->StoreRegistration( |
| 1584 registration_.get(), | 1587 registration_.get(), |
| 1585 registration_->waiting_version(), | 1588 registration_->waiting_version(), |
| 1586 base::Bind(&VerifyPurgeableListStatusCallback, | 1589 base::Bind(&VerifyPurgeableListStatusCallback, |
| 1587 base::Unretained(storage()->database_.get()), | 1590 base::Unretained(storage()->database_.get()), |
| 1588 &verify_ids, | 1591 &verify_ids, |
| 1589 &was_called, | 1592 &was_called, |
| 1590 &result)); | 1593 &result)); |
| 1591 base::RunLoop().RunUntilIdle(); | 1594 base::RunLoop().RunUntilIdle(); |
| 1592 ASSERT_TRUE(was_called); | 1595 ASSERT_TRUE(was_called); |
| 1593 EXPECT_EQ(SERVICE_WORKER_OK, result); | 1596 EXPECT_EQ(SERVICE_WORKER_OK, result); |
| 1594 EXPECT_EQ(2u, verify_ids.size()); | 1597 EXPECT_EQ(2u, verify_ids.size()); |
| 1595 verify_ids.clear(); | 1598 verify_ids.clear(); |
| 1596 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1599 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1597 storage()->database_->GetPurgeableResourceIds(&verify_ids)); | 1600 storage()->database_->GetPurgeableResourceIds(&verify_ids)); |
| 1598 EXPECT_EQ(2u, verify_ids.size()); | 1601 EXPECT_EQ(2u, verify_ids.size()); |
| 1599 | 1602 |
| 1600 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, false)); | 1603 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, false)); |
| 1601 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id2_, false)); | 1604 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id2_, false)); |
| 1602 | 1605 |
| 1606 scoped_refptr<ServiceWorkerRegistration> found_registration; | |
| 1607 EXPECT_EQ(SERVICE_WORKER_OK, | |
| 1608 FindRegistrationForDocument(document_url_, &found_registration)); | |
| 1609 EXPECT_EQ(registration_, found_registration); | |
| 1610 | |
| 1603 // Removing the controllee should cause the old version's resources to be | 1611 // Removing the controllee should cause the old version's resources to be |
| 1604 // deleted. | 1612 // deleted. |
| 1605 registration_->active_version()->RemoveControllee(host.get()); | 1613 registration_->active_version()->RemoveControllee(host.get()); |
| 1606 registration_->active_version()->Doom(); | 1614 registration_->active_version()->Doom(); |
| 1607 base::RunLoop().RunUntilIdle(); | 1615 base::RunLoop().RunUntilIdle(); |
| 1608 verify_ids.clear(); | 1616 verify_ids.clear(); |
| 1609 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1617 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1610 storage()->database_->GetPurgeableResourceIds(&verify_ids)); | 1618 storage()->database_->GetPurgeableResourceIds(&verify_ids)); |
| 1611 EXPECT_TRUE(verify_ids.empty()); | 1619 EXPECT_TRUE(verify_ids.empty()); |
| 1612 | 1620 |
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2128 EXPECT_TRUE(registration_state.enabled); | 2136 EXPECT_TRUE(registration_state.enabled); |
| 2129 EXPECT_EQ(kHeaderValue, registration_state.header); | 2137 EXPECT_EQ(kHeaderValue, registration_state.header); |
| 2130 ASSERT_TRUE(found_registration->active_version()); | 2138 ASSERT_TRUE(found_registration->active_version()); |
| 2131 const NavigationPreloadState& state = | 2139 const NavigationPreloadState& state = |
| 2132 found_registration->active_version()->navigation_preload_state(); | 2140 found_registration->active_version()->navigation_preload_state(); |
| 2133 EXPECT_TRUE(state.enabled); | 2141 EXPECT_TRUE(state.enabled); |
| 2134 EXPECT_EQ(kHeaderValue, state.header); | 2142 EXPECT_EQ(kHeaderValue, state.header); |
| 2135 } | 2143 } |
| 2136 | 2144 |
| 2137 } // namespace content | 2145 } // namespace content |
| OLD | NEW |