chromium/third_party/blink/public/mojom/background_sync/background_sync.mojom

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module blink.mojom;

struct SyncRegistrationOptions {
  string tag = "";
  // Minimum interval guaranteed between two Periodic Background Sync events,
  // in ms. This must be -1 for One-Shot Sync registrations, and must be >=0
  // for Periodic Sync registrations.
  int64 min_interval = -1;
};

enum BackgroundSyncError {
  NONE,
  STORAGE,
  NOT_FOUND,
  NO_SERVICE_WORKER,
  NOT_ALLOWED,
  PERMISSION_DENIED,
  MAX=PERMISSION_DENIED,
};

enum BackgroundSyncState {
  PENDING,
  FIRING,
  REREGISTERED_WHILE_FIRING,
};

enum BackgroundSyncEventLastChance {
  IS_NOT_LAST_CHANCE,
  IS_LAST_CHANCE,
};

enum BackgroundSyncType {
  ONE_SHOT,
  PERIODIC,
};

// Minimum information required to uniquely identify a Background Sync
// registration.
struct BackgroundSyncRegistrationInfo {
  // To be kept in sync with blink.mojom.kInvalidServiceWorkerRegistrationId.
  int64 service_worker_registration_id = -1;

  // The descriptive 'tag' for the sync registration. It is provided with the
  // Register() method by the developer.
  string tag;
  BackgroundSyncType sync_type;
};

// Used by SyncManager for one-shot Background Sync.
interface OneShotBackgroundSyncService {
  // Used to register one-shot Background Sync tasks.
  Register(SyncRegistrationOptions options,
           int64 service_worker_registration_id)
      => (BackgroundSyncError err, SyncRegistrationOptions? options);

  // Used to indicate that the register() promise has been resolved by
  // JavaScript code.
  DidResolveRegistration(BackgroundSyncRegistrationInfo registration_info);

  // Returns a list of all one-shot Background Sync registrations.
  GetRegistrations(int64 service_worker_registration_id)
      => (BackgroundSyncError err,
          array<SyncRegistrationOptions> registrations);
};

// Used by PeriodicSyncManager for periodic Background Sync.
interface PeriodicBackgroundSyncService {
  // Used to register periodic Background Sync tasks.
  Register(SyncRegistrationOptions options,
           int64 service_worker_registration_id)
      => (BackgroundSyncError err, SyncRegistrationOptions? options);

  // Used to unregister periodic Background Sync tasks. Silently succeeds
  // if called for non-existent periodic Background Sync registrations.
  Unregister(int64 service_worker_registration_id, string tag)
      => (BackgroundSyncError err);

  // Returns a list of all periodic Background Sync registrations.
  GetRegistrations(int64 service_worker_registration_id)
      => (BackgroundSyncError err,
          array<SyncRegistrationOptions> registrations);
};