mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 22:36:09 +03:00
206 lines
9.9 KiB
Plaintext
206 lines
9.9 KiB
Plaintext
// Copyright 2016 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 "mojo/public/mojom/base/string16.mojom";
|
|
import "mojo/public/mojom/base/time.mojom";
|
|
import "services/network/public/mojom/cookie_manager.mojom";
|
|
import "third_party/blink/public/platform/modules/fetch/fetch_api_request.mojom";
|
|
import "third_party/blink/public/platform/modules/notifications/notification.mojom";
|
|
import "third_party/blink/public/platform/modules/payments/payment_app.mojom";
|
|
import "third_party/blink/public/mojom/message_port/message_port.mojom";
|
|
import "third_party/blink/public/mojom/service_worker/dispatch_fetch_event_params.mojom";
|
|
import "third_party/blink/public/mojom/service_worker/service_worker.mojom";
|
|
import "third_party/blink/public/mojom/service_worker/service_worker_client.mojom";
|
|
import "third_party/blink/public/mojom/service_worker/service_worker_event_status.mojom";
|
|
import "third_party/blink/public/mojom/service_worker/service_worker_fetch_response_callback.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 "url/mojom/origin.mojom";
|
|
import "url/mojom/url.mojom";
|
|
|
|
[Native]
|
|
struct ServiceWorkerResponse;
|
|
|
|
// TODO(peter): Move this to Blink when ServiceWorkerResponse has a Mojo
|
|
// counterpart.
|
|
struct BackgroundFetchSettledFetch {
|
|
blink.mojom.FetchAPIRequest request;
|
|
ServiceWorkerResponse response;
|
|
};
|
|
|
|
enum BackgroundFetchState {
|
|
PENDING,
|
|
SUCCEEDED,
|
|
FAILED
|
|
};
|
|
|
|
struct ExtendableMessageEvent {
|
|
blink.mojom.TransferableMessage message;
|
|
url.mojom.Origin source_origin;
|
|
// Exactly one of |source_info_for_client| and
|
|
// |source_info_for_service_worker| should be non-null.
|
|
blink.mojom.ServiceWorkerClientInfo? source_info_for_client;
|
|
blink.mojom.ServiceWorkerObjectInfo? source_info_for_service_worker;
|
|
};
|
|
|
|
// The number of seconds for which a 'push' event should be allowed to run.
|
|
// This is not in the spec but for a Chrome-specific timeout. Each
|
|
// event dispatched to service workers has a 5 minute timeout in the Chrome
|
|
// implementation, but this makes the timeout for push events shorter.
|
|
const int32 kPushEventTimeoutSeconds = 90;
|
|
|
|
// An interface for talking to a running service worker thread. The browser
|
|
// process uses this interface to request the renderer to do things like
|
|
// dispatch events to the service worker. This interface is bound on the
|
|
// service worker thread and is implemented by ServiceWorkerContextClient.
|
|
//
|
|
// This is the master interface for the Mojo message pipe between the browser
|
|
// process and the service worker thread in the renderer process. Other service
|
|
// worker-related interfaces bound on the service worker thread are associated
|
|
// with this interface. These include:
|
|
// - ServiceWorkerHost for this service worker.
|
|
// - ServiceWorkerRegistrationObject(Host) for this service worker's
|
|
// self.registration property.
|
|
// - ServiceWorkerObjects(Host) for that registration's properties.
|
|
//
|
|
// A similar (but non-associated) interface is ControllerServiceWorker. That
|
|
// interface is used by service worker clients (inside renderer processes) to
|
|
// talk directly to their controller service worker, without going through the
|
|
// browser.
|
|
//
|
|
// USAGE TIP: Those DispatchEvent* messages expecting a
|
|
// (blink.mojom.ServiceWorkerEventStatus, mojo_base.mojom.Time) callback are
|
|
// considered 'simple events'. ServiceWorkerVersion::CreateSimpleEventCallback
|
|
// can be used to create the callback for these.
|
|
interface ServiceWorker {
|
|
// The first message sent on this interface. It is used to associate service
|
|
// worker-related interfaces together on the service worker thread, as
|
|
// ServiceWorker is the first interface available on the
|
|
// service worker thread. It establishes the |service_worker_host| connection
|
|
// and passes information used to populate
|
|
// ServiceWorkerGlobalScope#registration object. JavaScript execution of the
|
|
// service worker does not start until this message is received.
|
|
InitializeGlobalScope(
|
|
associated blink.mojom.ServiceWorkerHost service_worker_host,
|
|
blink.mojom.ServiceWorkerRegistrationObjectInfo registration_info);
|
|
|
|
DispatchInstallEvent()
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
bool has_fetch_handler,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchActivateEvent()
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
|
|
// These methods dispatch to the ServiceWorkerGlobalScope the events listed on
|
|
// https://wicg.github.io/background-fetch/#service-worker-global-events.
|
|
// The callbacks are called once the event handler has run and waitUntil()
|
|
// promise has settled. |developer_id| and |unique_id| are documented in
|
|
// content::BackgroundFetchRegistrationId.
|
|
DispatchBackgroundFetchAbortEvent(string developer_id,
|
|
string unique_id,
|
|
array<BackgroundFetchSettledFetch> fetches)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchBackgroundFetchClickEvent(string developer_id,
|
|
BackgroundFetchState state)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchBackgroundFetchFailEvent(string developer_id,
|
|
string unique_id,
|
|
array<BackgroundFetchSettledFetch> fetches)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchBackgroundFetchedEvent(string developer_id,
|
|
string unique_id,
|
|
array<BackgroundFetchSettledFetch> fetches)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
|
|
// Dispatches the cookie change events in the Async Cookie API specification.
|
|
// https://github.com/WICG/cookie-store/
|
|
// The callback is called once the event handler has run and the waitUntil()
|
|
// promise has settled.
|
|
DispatchCookieChangeEvent(
|
|
network.mojom.CanonicalCookie cookie,
|
|
network.mojom.CookieChangeCause cause)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
|
|
// The Dispatch*FetchEvent() callback is called once the event finishes,
|
|
// which means the event handler ran and all outstanding respondWith() and
|
|
// waitUntil() promises have settled. |response_callback| is called once the
|
|
// promise to respondWith() settles, or when the event handler ran without
|
|
// calling respondWith().
|
|
DispatchFetchEvent(
|
|
blink.mojom.DispatchFetchEventParams params,
|
|
blink.mojom.ServiceWorkerFetchResponseCallback response_callback)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
|
|
DispatchNotificationClickEvent(
|
|
string notification_id,
|
|
blink.mojom.NotificationData notification_data,
|
|
int32 action_index,
|
|
mojo_base.mojom.String16? reply)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchNotificationCloseEvent(
|
|
string notification_id,
|
|
blink.mojom.NotificationData notification_data)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
// The payload of a push message can be valid with content, valid with empty
|
|
// content, or null.
|
|
DispatchPushEvent(string? payload)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
// Arguments are passed to the event handler as parameters of SyncEvent.
|
|
// Ref: https://wicg.github.io/BackgroundSync/spec/#sync-event
|
|
// S13nServiceWorker: |timeout| is the amount of time to allow this event to
|
|
// finish.
|
|
// Non-S13nServiceWorker: |timeout| is just ignored.
|
|
DispatchSyncEvent(string id,
|
|
bool last_chance,
|
|
mojo_base.mojom.TimeDelta timeout)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchAbortPaymentEvent(
|
|
payments.mojom.PaymentHandlerResponseCallback result_of_abort_payment)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchCanMakePaymentEvent(
|
|
payments.mojom.CanMakePaymentEventData event_data,
|
|
payments.mojom.PaymentHandlerResponseCallback result_of_can_make_payment)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchPaymentRequestEvent(
|
|
payments.mojom.PaymentRequestEventData request_data,
|
|
payments.mojom.PaymentHandlerResponseCallback response_callback)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
DispatchExtendableMessageEvent(ExtendableMessageEvent event)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
|
|
// TODO(crbug.com/869714): Remove this code for long living service workers
|
|
// when Android Messages no longer requires it.
|
|
DispatchExtendableMessageEventWithCustomTimeout(ExtendableMessageEvent event,
|
|
mojo_base.mojom.TimeDelta timeout)
|
|
=> (blink.mojom.ServiceWorkerEventStatus status,
|
|
mojo_base.mojom.Time dispatch_event_time);
|
|
|
|
// Pings the service worker to check if it is responsive. If the callback is
|
|
// not called within a certain period of time, the browser will terminate the
|
|
// worker.
|
|
Ping() => ();
|
|
|
|
// S13nServiceWorker:
|
|
// Lets the idle timer request termination immediately after all inflight
|
|
// events are handled without delay.
|
|
SetIdleTimerDelayToZero();
|
|
};
|