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

Unified Diff: content/browser/service_worker/service_worker_register_job.h

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_register_job.h
diff --git a/content/browser/service_worker/service_worker_register_job.h b/content/browser/service_worker/service_worker_register_job.h
index 221230a553f7f04c3b1c144153f97a751385ad00..34a57212a79747d04b163feddf48460a0ee4f693 100644
--- a/content/browser/service_worker/service_worker_register_job.h
+++ b/content/browser/service_worker/service_worker_register_job.h
@@ -19,19 +19,20 @@ namespace content {
class ServiceWorkerJobCoordinator;
class ServiceWorkerStorage;
-// Handles the registration of a Service Worker.
+// Handles the initial registration of a Service Worker and the
+// subsequent update of existing registrations.
//
-// The registration flow includes most or all of the following,
+// The control flow includes most or all of the following,
// depending on what is already registered:
// - creating a ServiceWorkerRegistration instance if there isn't
// already something registered
-// - creating a ServiceWorkerVersion for the new registration instance.
+// - creating a ServiceWorkerVersion for the new version.
// - starting a worker for the ServiceWorkerVersion
-// - telling the Version to evaluate the script
// - firing the 'install' event at the ServiceWorkerVersion
// - firing the 'activate' event at the ServiceWorkerVersion
// - waiting for older ServiceWorkerVersions to deactivate
// - designating the new version to be the 'active' version
+// - updating storage
class ServiceWorkerRegisterJob
: public ServiceWorkerRegisterJobBase,
public EmbeddedWorkerInstance::Listener {
@@ -41,10 +42,16 @@ class ServiceWorkerRegisterJob
ServiceWorkerVersion* version)>
RegistrationCallback;
+ // For registration jobs.
CONTENT_EXPORT ServiceWorkerRegisterJob(
base::WeakPtr<ServiceWorkerContextCore> context,
const GURL& pattern,
const GURL& script_url);
+
+ // For update jobs.
+ CONTENT_EXPORT ServiceWorkerRegisterJob(
+ base::WeakPtr<ServiceWorkerContextCore> context,
+ ServiceWorkerRegistration* registration);
virtual ~ServiceWorkerRegisterJob();
// Registers a callback to be called when the promise would resolve (whether
@@ -60,6 +67,22 @@ class ServiceWorkerRegisterJob
virtual bool Equals(ServiceWorkerRegisterJobBase* job) OVERRIDE;
virtual RegistrationJobType GetType() OVERRIDE;
+ // TODO(michaeln): Use the registration listerer's OnVersionAttributesChanged
+ // method to replace these methods, have the host listen for changes
+ // to their registration.
+ CONTENT_EXPORT static void AssociateInstallingVersionToDocuments(
+ base::WeakPtr<ServiceWorkerContextCore> context,
+ ServiceWorkerVersion* version);
+ static void AssociateWaitingVersionToDocuments(
+ base::WeakPtr<ServiceWorkerContextCore> context,
+ ServiceWorkerVersion* version);
+ static void AssociateActiveVersionToDocuments(
+ base::WeakPtr<ServiceWorkerContextCore> context,
+ ServiceWorkerVersion* version);
+ CONTENT_EXPORT static void DisassociateVersionFromDocuments(
+ base::WeakPtr<ServiceWorkerContextCore> context,
+ ServiceWorkerVersion* version);
+
private:
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerProviderHostWaitingVersionTest,
AssociateInstallingVersionToDocuments);
@@ -97,11 +120,14 @@ class ServiceWorkerRegisterJob
void SetPhase(Phase phase);
- void HandleExistingRegistrationAndContinue(
+ void ContinueWithRegistration(
+ ServiceWorkerStatusCode status,
+ const scoped_refptr<ServiceWorkerRegistration>& registration);
+ void ContinueWithUpdate(
ServiceWorkerStatusCode status,
const scoped_refptr<ServiceWorkerRegistration>& registration);
void RegisterAndContinue(ServiceWorkerStatusCode status);
- void UpdateAndContinue(ServiceWorkerStatusCode status);
+ void UpdateAndContinue();
void OnStartWorkerFinished(ServiceWorkerStatusCode status);
void OnStoreRegistrationComplete(ServiceWorkerStatusCode status);
void InstallAndContinue();
@@ -110,7 +136,6 @@ class ServiceWorkerRegisterJob
void OnActivateFinished(ServiceWorkerStatusCode status);
void Complete(ServiceWorkerStatusCode status);
void CompleteInternal(ServiceWorkerStatusCode status);
-
void ResolvePromise(ServiceWorkerStatusCode status,
ServiceWorkerRegistration* registration,
ServiceWorkerVersion* version);
@@ -119,32 +144,15 @@ class ServiceWorkerRegisterJob
virtual void OnPausedAfterDownload() OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
- // Associates an installing version to documents matched with a scope of the
- // version.
- CONTENT_EXPORT static void AssociateInstallingVersionToDocuments(
- base::WeakPtr<ServiceWorkerContextCore> context,
- ServiceWorkerVersion* version);
-
- // Associates a waiting version to documents matched with a scope of the
- // version.
- static void AssociateWaitingVersionToDocuments(
- base::WeakPtr<ServiceWorkerContextCore> context,
- ServiceWorkerVersion* version);
-
- // Associates an active version to documents matched with a scope of the
- // version.
- static void AssociateActiveVersionToDocuments(
- base::WeakPtr<ServiceWorkerContextCore> context,
- ServiceWorkerVersion* version);
-
- // Disassociates a version specified by |version_id| from documents.
- CONTENT_EXPORT static void DisassociateVersionFromDocuments(
- base::WeakPtr<ServiceWorkerContextCore> context,
- ServiceWorkerVersion* version);
+ void OnCompareScriptResourcesComplete(
+ ServiceWorkerVersion* current_version,
+ ServiceWorkerStatusCode status,
+ bool are_equal);
// The ServiceWorkerContextCore object should always outlive this.
base::WeakPtr<ServiceWorkerContextCore> context_;
+ RegistrationJobType job_type_;
const GURL pattern_;
const GURL script_url_;
std::vector<RegistrationCallback> callbacks_;

Powered by Google App Engine
This is Rietveld 408576698