summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/public/mojom/service_worker/service_worker_container.mojom
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/public/mojom/service_worker/service_worker_container.mojom')
-rw-r--r--chromium/third_party/blink/public/mojom/service_worker/service_worker_container.mojom148
1 files changed, 148 insertions, 0 deletions
diff --git a/chromium/third_party/blink/public/mojom/service_worker/service_worker_container.mojom b/chromium/third_party/blink/public/mojom/service_worker/service_worker_container.mojom
new file mode 100644
index 00000000000..e625c65fdbe
--- /dev/null
+++ b/chromium/third_party/blink/public/mojom/service_worker/service_worker_container.mojom
@@ -0,0 +1,148 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module blink.mojom;
+
+import "mojo/public/mojom/base/string16.mojom";
+import "third_party/blink/public/mojom/messaging/transferable_message.mojom";
+import "third_party/blink/public/mojom/service_worker/controller_service_worker.mojom";
+import "third_party/blink/public/mojom/service_worker/service_worker_error_type.mojom";
+import "third_party/blink/public/mojom/service_worker/service_worker_object.mojom";
+import "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom";
+import "third_party/blink/public/platform/web_feature.mojom";
+import "url/mojom/url.mojom";
+
+// Used for EnsureControllerServiceWorker() to indicate why a controllee needs
+// a controller ServiceWorker.
+enum ControllerServiceWorkerPurpose {
+ FETCH_SUB_RESOURCE
+};
+
+// ServiceWorkerContainerHost is an interface implemented by the browser
+// process. The renderer process uses this interface to request the browser
+// process to do operations involving service worker registrations.
+//
+// This interface is associated with its counterpart ServiceWorkerContainer.
+// The message pipe it's used on depends on the container type.
+// - For service workers:
+// Associated with EmbeddedWorkerInstanceClient, which is on a dedicated
+// message pipe.
+// - For shared workers (S13nSW):
+// Associated with SharedWorkerFactory, which is on a dedicated message
+// pipe.
+// - For shared workers (non-S13nSW):
+// Associated with ServiceWorkerDispatcherHost, which is on the
+// channel-associated interface to the renderer process.
+// - For documents:
+// Associated with ServiceWorkerDispatcherHost, which is on the
+// channel-associated interface to the renderer process.
+interface ServiceWorkerContainerHost {
+ // Corresponds to navigator.serviceWorker.register().
+ // Registers a service worker from |script_url| with |options|.
+ // On success, |error| is kNone with |registration| set.
+ // Otherwise, |error| and |error_msg| describe the failure.
+ Register(url.mojom.Url script_url,
+ ServiceWorkerRegistrationOptions options)
+ => (ServiceWorkerErrorType error,
+ string? error_msg,
+ ServiceWorkerRegistrationObjectInfo? registration);
+
+ // Corresponds to navigator.serviceWorker.getRegistration().
+ // Gets the service worker registration for the |client_url|.
+ // On success, |error| is kNone with |registration| set.
+ // In case there is no registration at |client_url|, or the registration is
+ // uninstalling, |error| is still kNone but with null |registration|.
+ // Otherwise, |error| and |error_msg| describe the failure.
+ GetRegistration(url.mojom.Url client_url)
+ => (ServiceWorkerErrorType error,
+ string? error_msg,
+ ServiceWorkerRegistrationObjectInfo? registration);
+
+ // Corresponds to navigator.serviceWorker.getRegistrations().
+ // Gets all service worker registrations which have the same origin with
+ // the ServiceWorkerContainer that this interface hosts.
+ // On success, |error| is kNone with |infos| set. Otherwise, |error| and
+ // |error_msg| describe the failure.
+ GetRegistrations()
+ => (ServiceWorkerErrorType error,
+ string? error_msg,
+ array<ServiceWorkerRegistrationObjectInfo>? infos);
+
+ // Corresponds to navigator.serviceWorker.ready.
+ // Returns the service worker registration for the ServiceWorkerContainer that
+ // this interface hosts, once such a registration exists and has an active
+ // service worker.
+ GetRegistrationForReady()
+ => (ServiceWorkerRegistrationObjectInfo? registration);
+
+ // S13nServiceWorker:
+ // Returns a Mojo end point to the controller ServiceWorker. This may start a
+ // service worker instance in a renderer process if the corresponding
+ // instance is not alive.
+ // This method must be called only by the controllees.
+ // If the browser fails to start the service worker it is propagated as a
+ // connection error of the returned pipe. The detailed error reasons are not
+ // reported to the controllees, but the browser process is responsible for
+ // properly handling the failure and recording the reasons.
+ // |purpose| is used for UMA.
+ EnsureControllerServiceWorker(ControllerServiceWorker& controller,
+ ControllerServiceWorkerPurpose purpose);
+
+ // S13nServiceWorker:
+ // Makes a new endpoint to this ServiceWorkerContainerHost.
+ CloneContainerHost(ServiceWorkerContainerHost& container_host);
+
+ // Does nothing but calls the callback. Useful for pumping the message pipe
+ // for this interface and associated interfaces: when the callback is called,
+ // you know all incoming messages up to the Ping() call have been received.
+ Ping() => ();
+
+ // S13nServiceWorker:
+ // Gives a hint to the browser process to update the service worker after a
+ // controlled page load. This message is meant to be sent at a time when page
+ // load is no longer busy, so update doesn't adversely affect performance.
+ // The browser process can possibly coalesce hints for the same service
+ // worker into a single update.
+ HintToUpdateServiceWorker();
+};
+
+// ServiceWorkerContainer is an interface implemented by the renderer process.
+// The browser process uses this interface to send messages to documents or the
+// service worker.
+//
+// Roughly corresponds to the web-exposed ServiceWorkerContainer interface,
+// i.e., navigator.serviceWorker. Actually, the plan is for this interface to be
+// used for anything that could access a ServiceWorkerRegistration or
+// ServiceWorker object. For example, ServiceWorkerGlobalScope needs to be
+// connected to this, since it has self.registration, even though we don’t
+// implement navigator.serviceWorker for Worker yet. But eventually anything
+// that can touch these objects should be a ServiceWorkerContainer, so it’s OK
+// to use this name.
+//
+// This interface is associated with its counterpart,
+// ServiceWorkerContainerHost, as they are sent on the same master interface
+// together. See ServiceWorkerContainerHost for documentation about the message
+// pipe they live on.
+interface ServiceWorkerContainer {
+ // Corresponds to setting ServiceWorkerContainer#controller.
+ // If |controller_info| is invalid (its |object_info| is null), then
+ // ServiceWorkerContainer#controller is cleared.
+ // If |controller_info| is valid, |used_features| is the set of
+ // features the controller has used, for UseCounter purposes.
+ // If |should_notify_controllerchange| is true, dispatch a 'controllerchange'
+ // event.
+ SetController(ControllerServiceWorkerInfo controller_info,
+ array<WebFeature> used_features,
+ bool should_notify_controllerchange);
+
+ // Corresponds to Client#postMessage().
+ // Sends |message| from the service worker |source| to this service worker
+ // client.
+ PostMessageToClient(ServiceWorkerObjectInfo source,
+ TransferableMessage message);
+
+ // Notifies this service worker client that its controller used a |feature|,
+ // for UseCounter purposes.
+ CountFeature(WebFeature feature);
+};