Chromium Code Reviews| Index: content/browser/service_worker/service_worker_registration_unittest.cc |
| diff --git a/content/browser/service_worker/service_worker_registration_unittest.cc b/content/browser/service_worker/service_worker_registration_unittest.cc |
| index 02d236fb66a5892dc5fecd797c711d5ac0f85358..8761815f400b547726762bbbde898ca8e135f2b2 100644 |
| --- a/content/browser/service_worker/service_worker_registration_unittest.cc |
| +++ b/content/browser/service_worker/service_worker_registration_unittest.cc |
| @@ -37,6 +37,31 @@ class ServiceWorkerRegistrationTest : public testing::Test { |
| base::RunLoop().RunUntilIdle(); |
| } |
| + class RegistrationListener : public ServiceWorkerRegistration::Listener { |
| + public: |
| + RegistrationListener() {} |
| + ~RegistrationListener() {} |
| + |
| + virtual void OnVersionAttributesChanged( |
| + ServiceWorkerRegistration* registration, |
| + ChangedVersionAttributesMask changed_mask, |
| + const ServiceWorkerRegistrationInfo& info) { |
|
nhiroki
2014/07/16 10:39:20
Can you mark this with 'OVERRIDE'?
michaeln
2014/07/16 19:45:21
Done.
|
| + observed_registration_ = registration; |
| + observed_changed_mask_ = changed_mask; |
| + observed_info_ = info; |
| + } |
| + |
| + void Reset() { |
| + observed_registration_ = NULL; |
| + observed_changed_mask_ = ChangedVersionAttributesMask(); |
| + observed_info_ = ServiceWorkerRegistrationInfo(); |
| + } |
| + |
| + scoped_refptr<ServiceWorkerRegistration> observed_registration_; |
| + ChangedVersionAttributesMask observed_changed_mask_; |
| + ServiceWorkerRegistrationInfo observed_info_; |
| + }; |
| + |
| protected: |
| scoped_ptr<ServiceWorkerContextCore> context_; |
| base::WeakPtr<ServiceWorkerContextCore> context_ptr_; |
| @@ -44,4 +69,73 @@ class ServiceWorkerRegistrationTest : public testing::Test { |
| BrowserThreadImpl io_thread_; |
| }; |
| +TEST_F(ServiceWorkerRegistrationTest, SetAndUnsetVersions) { |
| + const GURL kScope("http://www.example.not/*"); |
| + const GURL kScript("http://www.example.not/service_worker.js"); |
| + int64 kRegistrationId = 1L; |
| + scoped_refptr<ServiceWorkerRegistration> registration = |
| + new ServiceWorkerRegistration( |
| + kScope, |
| + kScript, |
| + kRegistrationId, |
| + context_ptr_); |
| + |
| + const int64 version_1_id = 1L; |
| + const int64 version_2_id = 2L; |
| + scoped_refptr<ServiceWorkerVersion> version_1 = |
| + new ServiceWorkerVersion(registration, version_1_id, context_ptr_); |
| + scoped_refptr<ServiceWorkerVersion> version_2 = |
| + new ServiceWorkerVersion(registration, version_2_id, context_ptr_); |
| + |
| + RegistrationListener listener; |
| + registration->AddListener(&listener); |
| + registration->SetActiveVersion(version_1); |
| + |
| + EXPECT_EQ(version_1, registration->active_version()); |
| + EXPECT_EQ(registration, listener.observed_registration_); |
| + EXPECT_EQ(ChangedVersionAttributesMask::ACTIVE_VERSION, |
| + listener.observed_changed_mask_.changed()); |
| + EXPECT_EQ(kScope, listener.observed_info_.pattern); |
| + EXPECT_EQ(kScript, listener.observed_info_.script_url); |
| + EXPECT_EQ(version_1_id, listener.observed_info_.active_version.version_id); |
| + EXPECT_TRUE(listener.observed_info_.installing_version.is_null); |
| + EXPECT_TRUE(listener.observed_info_.waiting_version.is_null); |
| + EXPECT_TRUE(listener.observed_info_.controlling_version.is_null); |
| + listener.Reset(); |
| + |
| + registration->SetInstallingVersion(version_2); |
| + |
| + EXPECT_EQ(version_2, registration->installing_version()); |
| + EXPECT_EQ(ChangedVersionAttributesMask::INSTALLING_VERSION, |
| + listener.observed_changed_mask_.changed()); |
| + EXPECT_EQ(version_1_id, listener.observed_info_.active_version.version_id); |
| + EXPECT_EQ(version_2_id, |
| + listener.observed_info_.installing_version.version_id); |
| + EXPECT_TRUE(listener.observed_info_.waiting_version.is_null); |
| + EXPECT_TRUE(listener.observed_info_.controlling_version.is_null); |
| + listener.Reset(); |
| + |
| + registration->SetWaitingVersion(version_2); |
| + |
| + EXPECT_EQ(version_2, registration->waiting_version()); |
| + EXPECT_FALSE(registration->installing_version()); |
| + EXPECT_TRUE(listener.observed_changed_mask_.waiting_changed()); |
| + EXPECT_TRUE(listener.observed_changed_mask_.installing_changed()); |
| + EXPECT_EQ(version_1_id, listener.observed_info_.active_version.version_id); |
| + EXPECT_EQ(version_2_id, listener.observed_info_.waiting_version.version_id); |
| + EXPECT_TRUE(listener.observed_info_.installing_version.is_null); |
| + EXPECT_TRUE(listener.observed_info_.controlling_version.is_null); |
| + listener.Reset(); |
| + |
| + registration->UnsetVersion(version_2); |
| + |
| + EXPECT_FALSE(registration->waiting_version()); |
| + EXPECT_EQ(ChangedVersionAttributesMask::WAITING_VERSION, |
| + listener.observed_changed_mask_.changed()); |
| + EXPECT_EQ(version_1_id, listener.observed_info_.active_version.version_id); |
| + EXPECT_TRUE(listener.observed_info_.waiting_version.is_null); |
| + EXPECT_TRUE(listener.observed_info_.installing_version.is_null); |
| + EXPECT_TRUE(listener.observed_info_.controlling_version.is_null); |
| +} |
| + |
| } // namespace content |