| // 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 content.mojom; |
| |
| import "content/common/service_worker/service_worker_container.mojom"; |
| import "services/network/public/mojom/url_loader_factory.mojom"; |
| import "services/service_manager/public/mojom/interface_provider.mojom"; |
| import "third_party/blink/public/mojom/service_worker/service_worker_object.mojom"; |
| import "third_party/blink/public/mojom/service_worker/service_worker_provider_type.mojom"; |
| import "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom"; |
| import "third_party/blink/public/platform/modules/cache_storage/cache_storage.mojom"; |
| |
| // The name of the InterfaceProviderSpec in service manifests used by the |
| // frame tree to expose service-worker-specific interfaces between renderer |
| // and browser. |
| const string kNavigation_ServiceWorkerSpec = "navigation:service_worker"; |
| |
| // S13nServiceWorker: |
| // Sent from the browser process to the renderer. Contains parameteres for the |
| // constructor of ServiceWorkerNetworkProvider used for starting a shared |
| // worker. |
| struct ServiceWorkerProviderInfoForSharedWorker { |
| int32 provider_id; |
| associated ServiceWorkerContainerHost host_ptr_info; |
| associated ServiceWorkerContainer& client_request; |
| }; |
| |
| // Sent from the browser process to the renderer. Contains parameters for the |
| // constructor of ServiceWorkerNetworkProvider used for starting a service |
| // worker. |
| struct ServiceWorkerProviderInfoForStartWorker { |
| int32 provider_id; |
| |
| associated ServiceWorkerContainerHost host_ptr_info; |
| associated ServiceWorkerContainer& client_request; |
| |
| // S13nServiceWorker: |
| // The loader to use for loading the worker's main script and |
| // importScripts(). |
| associated network.mojom.URLLoaderFactory? script_loader_factory_ptr_info; |
| |
| // |cache_storage| is an optional optimization so the service worker can use |
| // the Cache Storage API immediately without using InterfaceProvider. May be |
| // null for service workers created for update checks, as the optimization |
| // would be wasteful because these workers usually are aborted after the |
| // byte-to-byte update check before running. |
| blink.mojom.CacheStorage? cache_storage; |
| |
| service_manager.mojom.InterfaceProvider interface_provider; |
| }; |
| |
| // Sent from the renderer to the browser process. Contains parameters that |
| // describe a browser-side provider host. |
| // See also comments in |
| // content/common/service_worker/service_worker_provider_host_info.h. |
| struct ServiceWorkerProviderHostInfo { |
| int32 provider_id; |
| int32 route_id; |
| blink.mojom.ServiceWorkerProviderType type; |
| bool is_parent_frame_secure; |
| associated ServiceWorkerContainerHost& host_request; |
| associated ServiceWorkerContainer client_ptr_info; |
| }; |
| |
| // ServiceWorkerWorkerClient represents a service worker client that is a worker |
| // (i.e., a shared worker or dedicated worker). We use this interface to let the |
| // WebWorkerFetchContextImpl in the worker thread know about the change of |
| // controlling service worker by calling OnControllerChanged() from the |
| // ServiceWorkerProviderContext in the main thread of the renderer process. |
| // |
| // TODO(horo): We should implement ServiceWorkerProvider in the worker thread |
| // instead of using this interface to support WorkerNavigator.serviceWorker. |
| interface ServiceWorkerWorkerClient { |
| // Called when the worker is controlled by a new service worker. This is only |
| // used to let the worker know that we now have a service worker (while there |
| // may or may not have been one previously), but not the other way around. |
| OnControllerChanged(blink.mojom.ControllerServiceWorkerMode mode); |
| }; |
| |
| // ServiceWorkerWorkerClientRegistry is a mojo interface for hosting and |
| // registering ServiceWorkerWorkerClients. An instance of this interface is |
| // implemented by ServiceWorkerProviderContext and lives in the same renderer |
| // process as the worker clients. |
| // This interface is useful when one needs to register a new worker client |
| // for an existing ServiceWorkerProviderContext on non-main thread, i.e. for |
| // nested workers. |
| interface ServiceWorkerWorkerClientRegistry { |
| // Adds a new ServiceWorkerWorkerClient. |
| RegisterWorkerClient(ServiceWorkerWorkerClient client); |
| |
| // Clones this host. |
| CloneWorkerClientRegistry(ServiceWorkerWorkerClientRegistry& host); |
| }; |