mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-01 00:32:11 +00:00
767491f74e
Differential Revision: https://phabricator.services.mozilla.com/D30551 --HG-- extra : moz-landing-system : lando
148 lines
5.4 KiB
Plaintext
148 lines
5.4 KiB
Plaintext
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* 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/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
interface nsIPrincipal;
|
|
|
|
/**
|
|
* A push subscription, passed as an argument to a subscription callback.
|
|
* Similar to the `PushSubscription` WebIDL interface.
|
|
*/
|
|
[scriptable, uuid(1de32d5c-ea88-4c9e-9626-b032bd87f415)]
|
|
interface nsIPushSubscription : nsISupports
|
|
{
|
|
readonly attribute AString endpoint;
|
|
readonly attribute long long pushCount;
|
|
readonly attribute long long lastPush;
|
|
readonly attribute long quota;
|
|
readonly attribute bool isSystemSubscription;
|
|
readonly attribute jsval p256dhPrivateKey;
|
|
|
|
bool quotaApplies();
|
|
bool isExpired();
|
|
|
|
Array<uint8_t> getKey(in AString name);
|
|
};
|
|
|
|
/**
|
|
* Called by methods that return a push subscription. A non-success
|
|
* |status| indicates that there was a problem returning the
|
|
* subscription, and the |subscription| argument should be ignored. Otherwise,
|
|
* |subscription| will point to a valid push subscription, or |null| if the
|
|
* subscription does not exist.
|
|
*/
|
|
[scriptable, uuid(1799c074-9d52-46b0-ab3c-c09790732f6f), function]
|
|
interface nsIPushSubscriptionCallback : nsISupports
|
|
{
|
|
void onPushSubscription(in nsresult status,
|
|
in nsIPushSubscription subscription);
|
|
};
|
|
|
|
/**
|
|
* Called by |unsubscribe|. A non-success |status| indicates that there was
|
|
* a problem unsubscribing, and the |success| argument should be ignored.
|
|
* Otherwise, |success| is true if unsubscribing was successful, and false if
|
|
* the subscription does not exist.
|
|
*/
|
|
[scriptable, uuid(d574118f-61a9-4270-b1f6-4461aa85c4f5), function]
|
|
interface nsIUnsubscribeResultCallback : nsISupports
|
|
{
|
|
void onUnsubscribe(in nsresult status, in bool success);
|
|
};
|
|
|
|
/**
|
|
* Called by |clearForDomain|. A non-success |status| indicates that there was
|
|
* a problem clearing subscriptions for the given domain.
|
|
*/
|
|
[scriptable, uuid(bd47b38e-8bfa-4f92-834e-832a4431e05e), function]
|
|
interface nsIPushClearResultCallback : nsISupports
|
|
{
|
|
void onClear(in nsresult status);
|
|
};
|
|
|
|
/**
|
|
* A service for components to subscribe and receive push messages from web
|
|
* services. This functionality is exposed to content via the Push DOM API,
|
|
* which uses service workers. This interface exists to support the DOM API,
|
|
* and allows privileged code to receive messages without migrating to service
|
|
* workers.
|
|
*/
|
|
[scriptable, uuid(678ef584-bf25-47aa-ac84-03efc0865b68)]
|
|
interface nsIPushService : nsISupports
|
|
{
|
|
/** Observer topic names, exported for convenience. */
|
|
readonly attribute AString pushTopic;
|
|
readonly attribute AString subscriptionChangeTopic;
|
|
readonly attribute AString subscriptionModifiedTopic;
|
|
|
|
/**
|
|
* Creates a push subscription for the given |scope| URL and |principal|.
|
|
* If a subscription already exists for this |(scope, principal)| pair,
|
|
* the callback will receive the existing record as the second argument.
|
|
*
|
|
* The |endpoint| property of the subscription record is a URL string
|
|
* that can be used to send push messages to subscribers.
|
|
*
|
|
* Each incoming message fires a `push-message` observer notification, with
|
|
* an `nsIPushMessage` as the subject and the |scope| as the data.
|
|
*
|
|
* If the server drops a subscription, a `push-subscription-change` observer
|
|
* will be fired, with the subject set to |principal| and the data set to
|
|
* |scope|. Servers may drop subscriptions at any time, so callers should
|
|
* recreate subscriptions if desired.
|
|
*/
|
|
void subscribe(in AString scope, in nsIPrincipal principal,
|
|
in nsIPushSubscriptionCallback callback);
|
|
|
|
/**
|
|
* Creates a restricted push subscription with the given public |key|. The
|
|
* application server must use the corresponding private key to authenticate
|
|
* message delivery requests, as described in draft-thomson-webpush-vapid.
|
|
*/
|
|
void subscribeWithKey(in AString scope, in nsIPrincipal principal,
|
|
in Array<uint8_t> key,
|
|
in nsIPushSubscriptionCallback callback);
|
|
|
|
/**
|
|
* Removes a push subscription for the given |scope|.
|
|
*/
|
|
void unsubscribe(in AString scope, in nsIPrincipal principal,
|
|
in nsIUnsubscribeResultCallback callback);
|
|
|
|
/**
|
|
* Retrieves the subscription record associated with the given
|
|
* |(scope, principal)| pair. If the subscription does not exist, the
|
|
* callback will receive |null| as the second argument.
|
|
*/
|
|
void getSubscription(in AString scope, in nsIPrincipal principal,
|
|
in nsIPushSubscriptionCallback callback);
|
|
|
|
/**
|
|
* Drops every subscription for the given |domain|, or all domains if
|
|
* |domain| is "*".
|
|
*/
|
|
void clearForDomain(in AString domain,
|
|
in nsIPushClearResultCallback callback);
|
|
};
|
|
|
|
[scriptable, uuid(a2555e70-46f8-4b52-bf02-d978b979d143)]
|
|
interface nsIPushQuotaManager : nsISupports
|
|
{
|
|
/**
|
|
* Informs the quota manager that a notification
|
|
* for the given origin has been shown. Used to
|
|
* determine if push quota should be relaxed.
|
|
*/
|
|
void notificationForOriginShown(in string origin);
|
|
|
|
/**
|
|
* Informs the quota manager that a notification
|
|
* for the given origin has been closed. Used to
|
|
* determine if push quota should be relaxed.
|
|
*/
|
|
void notificationForOriginClosed(in string origin);
|
|
};
|