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..09b4808d6c53acb67e2e574b9b86b793617b031b 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) OVERRIDE { |
+ 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_; |
falken
2014/07/17 06:33:42
double space
michaeln
2014/07/18 03:40:48
Done.
|
+ 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 |