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

Unified Diff: content/browser/service_worker/service_worker_registration_unittest.cc

Issue 380093002: Update installed ServiceWorkers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698