blob: 605b14b5513467f6e49d1f76d7c5ed74d5563e16 [file] [log] [blame]
// Copyright 2014 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 "third_party/WebKit/public/platform/modules/permissions/permission_status.mojom";
import "url/mojo/origin.mojom";
enum PermissionName {
GEOLOCATION,
NOTIFICATIONS,
PUSH_NOTIFICATIONS,
MIDI,
PROTECTED_MEDIA_IDENTIFIER,
DURABLE_STORAGE,
AUDIO_CAPTURE,
VIDEO_CAPTURE,
BACKGROUND_SYNC,
SENSORS,
ACCESSIBILITY_EVENTS,
CLIPBOARD_READ,
CLIPBOARD_WRITE,
};
struct MidiPermissionDescriptor {
bool sysex;
};
struct ClipboardPermissionDescriptor {
bool allowWithoutGesture;
};
// Union of possible extensions to the base PermissionDescriptor type.
union PermissionDescriptorExtension {
MidiPermissionDescriptor midi;
ClipboardPermissionDescriptor clipboard;
};
// This struct roughly corresponds to the PermissionDescriptor dictionary as
// defined by the Permissions API.
struct PermissionDescriptor {
PermissionName name;
PermissionDescriptorExtension? extension;
};
// Interface a client can implement to observe permission changes.
interface PermissionObserver {
OnPermissionStatusChange(PermissionStatus status);
};
// The Permission service provides permission handling capabilities by exposing
// methods to check, request, and revoke permissions. It also allows a client to
// start listening to permission changes.
interface PermissionService {
HasPermission(PermissionDescriptor permission, url.mojom.Origin origin)
=> (PermissionStatus status);
RequestPermission(PermissionDescriptor permission, url.mojom.Origin origin,
bool user_gesture)
=> (PermissionStatus status);
RequestPermissions(array<PermissionDescriptor> permission, url.mojom.Origin origin,
bool user_gesture)
=> (array<PermissionStatus> statuses);
RevokePermission(PermissionDescriptor permission, url.mojom.Origin origin)
=> (PermissionStatus status);
// Subscribes |observer| to updates about changes to |origin|'s access to
// |permission|. Closing the pipe will cancel the subscription.
AddPermissionObserver(PermissionDescriptor permission,
url.mojom.Origin origin,
PermissionStatus last_known_status,
PermissionObserver observer);
};