Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/dom/serviceworkers/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

Quelle  ServiceWorkerUpdateJob.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef mozilla_dom_serviceworkerupdatejob_h
#define mozilla_dom_serviceworkerupdatejob_h

#include "mozilla/dom/ServiceWorkerLifetimeExtension.h"
#include "ServiceWorkerJob.h"
#include "ServiceWorkerRegistration.h"

#include "nsIRequest.h"

namespace mozilla::dom {

namespace serviceWorkerScriptCache {
enum class OnFailure : uint8_t;
}  // namespace serviceWorkerScriptCache

class ServiceWorkerManager;
class ServiceWorkerRegistrationInfo;

// A job class that performs the Update and Install algorithms from the
// service worker spec.  This class is designed to be inherited and customized
// as a different job type.  This is necessary because the register job
// performs largely the same operations as the update job, but has a few
// different starting steps.
class ServiceWorkerUpdateJob : public ServiceWorkerJob {
 public:
  // Construct an update job to be used only for updates.
  ServiceWorkerUpdateJob(
      nsIPrincipal* aPrincipal, const nsACString& aScope, nsCString aScriptSpec,
      ServiceWorkerUpdateViaCache aUpdateViaCache,
      const ServiceWorkerLifetimeExtension& aLifetimeExtension);

  already_AddRefed<ServiceWorkerRegistrationInfo> GetRegistration() const;

 protected:
  // Construct an update job that is overriden as another job type.
  ServiceWorkerUpdateJob(
      Type aType, nsIPrincipal* aPrincipal, const nsACString& aScope,
      nsCString aScriptSpec, ServiceWorkerUpdateViaCache aUpdateViaCache,
      const ServiceWorkerLifetimeExtension& aLifetimeExtension);

  virtual ~ServiceWorkerUpdateJob();

  // FailUpdateJob() must be called if an update job needs Finish() with
  // an error.
  void FailUpdateJob(ErrorResult& aRv);

  void FailUpdateJob(nsresult aRv);

  // The entry point when the update job is being used directly.  Job
  // types overriding this class should override this method to
  // customize behavior.
  virtual void AsyncExecute() override;

  // Set the registration to be operated on by Update() or to be immediately
  // returned as a result of the job.  This must be called before Update().
  void SetRegistration(ServiceWorkerRegistrationInfo* aRegistration);

  // Execute the bulk of the update job logic using the registration defined
  // by a previous SetRegistration() call.  This can be called by the overriden
  // AsyncExecute() to complete the job.  The Update() method will always call
  // Finish().  This method corresponds to the spec Update algorithm.
  void Update();

  ServiceWorkerUpdateViaCache GetUpdateViaCache() const;

 private:
  class CompareCallback;
  class ContinueUpdateRunnable;
  class ContinueInstallRunnable;

  // Utility method called after a script is loaded and compared to
  // our current cached script.
  void ComparisonResult(nsresult aStatus, bool aInCacheAndEqual,
                        serviceWorkerScriptCache::OnFailure aOnFailure,
                        const nsAString& aNewCacheName,
                        const nsACString& aMaxScope, nsLoadFlags aLoadFlags);

  // Utility method called after evaluating the worker script.
  void ContinueUpdateAfterScriptEval(bool aScriptEvaluationResult);

  // Utility method corresponding to the spec Install algorithm.
  void Install();

  // Utility method called after the install event is handled.
  void ContinueAfterInstallEvent(bool aInstallEventSuccess);

  RefPtr<ServiceWorkerRegistrationInfo> mRegistration;
  ServiceWorkerUpdateViaCache mUpdateViaCache;
  // The lifetime extension to be applied each time we interact with the
  // potentially new installing ServiceWorker.  A `FullLifetimeExtension` value
  // here (as used by/on behalf of window clients) means a fresh extension will
  // be granted with every lifecycle event, whereas a
  // `PropagatedLifetimeExtension` for updates initiated via ServiceWorkers will
  // have the same deadline applied each time.
  ServiceWorkerLifetimeExtension mLifetimeExtension;
  serviceWorkerScriptCache::OnFailure mOnFailure;
};

}  // namespace mozilla::dom

#endif  // mozilla_dom_serviceworkerupdatejob_h

Messung V0.5
C=68 H=98 G=84

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.