| 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..37de0f89dfe4c5cd9cfe3d3f77dc69be8c2d2e13 100644
|
| --- a/content/browser/service_worker/service_worker_registration_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_registration_unittest.cc
|
| @@ -4,7 +4,6 @@
|
|
|
| #include "content/browser/service_worker/service_worker_registration.h"
|
|
|
| -
|
| #include "base/files/scoped_temp_dir.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop/message_loop.h"
|
| @@ -37,6 +36,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_;
|
| + ChangedVersionAttributesMask observed_changed_mask_;
|
| + ServiceWorkerRegistrationInfo observed_info_;
|
| + };
|
| +
|
| protected:
|
| scoped_ptr<ServiceWorkerContextCore> context_;
|
| base::WeakPtr<ServiceWorkerContextCore> context_ptr_;
|
| @@ -44,4 +68,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
|
|
|