blob: 79c724e3fd9b51b4c19f9fefbdf128263a05ae51 [file] [log] [blame]
// Copyright (c) 2012 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.
// Use the <code>chrome.mediaGalleries</code> API to access media files (images,
// video, audio) from the user's local disks (with the user's consent).
namespace mediaGalleries {
[inline_doc] enum GetMediaFileSystemsInteractivity {
// Do not act interactively.
no,
// Ask the user to manage permitted media galleries.
yes,
// Ask the user to manage permitted galleries only if the return set would
// otherwise be empty.
if_needed
};
enum GetMetadataType {
// Retrieve all available metadata.
all,
// Retrieve only the mime type.
mimeTypeOnly
};
[inline_doc] dictionary MediaFileSystemsDetails {
// Whether to prompt the user for permission to additional media galleries
// before returning the permitted set. Default is silent. If the value
// 'yes' is passed, or if the application has not been granted access to
// any media galleries and the value 'if_needed' is passed, then the
// media gallery configuration dialog will be displayed.
GetMediaFileSystemsInteractivity? interactive;
};
dictionary MediaMetadataOptions {
// Specifies which subset of the metadata to retrieve. Defaults to 'all'
// if the option is omitted.
GetMetadataType? metadataType;
};
callback MediaFileSystemsCallback =
void ([instanceOf=DOMFileSystem] optional object[] mediaFileSystems);
[inline_doc] dictionary MediaFileSystemMetadata {
// The name of the file system.
DOMString name;
// A unique and persistent id for the media gallery.
DOMString galleryId;
// If the media gallery is on a removable device, a unique id for the
// device while the device is online.
DOMString? deviceId;
// True if the media gallery is on a removable device.
boolean isRemovable;
// True if the device the media gallery is on was detected as a media
// device. i.e. a PTP or MTP device, or a DCIM directory is present.
boolean isMediaDevice;
// True if the device is currently available.
boolean isAvailable;
};
callback MediaFileSystemsMetadataCallback =
void (MediaFileSystemMetadata[] metadata);
dictionary MediaMetadata {
// The browser sniffed mime type.
DOMString mimeType;
};
callback MediaMetadataCallback = void (MediaMetadata metadata);
interface Functions {
// Get the media galleries configured in this user agent. If none are
// configured or available, the callback will receive an empty array.
static void getMediaFileSystems(optional MediaFileSystemsDetails details,
MediaFileSystemsCallback callback);
// Get metadata about a specific media file system.
[nocompile] static MediaFileSystemMetadata getMediaFileSystemMetadata(
[instanceOf=DOMFileSystem] object mediaFileSystem);
// Get metadata for all available media galleries.
static void getAllMediaFileSystemMetadata(
MediaFileSystemsMetadataCallback callback);
// Gets the media-specific metadata for a media file. This should work
// for files in media galleries as well as other DOM filesystems.
static void getMetadata([instanceOf=Blob] object mediaFile,
optional MediaMetadataOptions options,
MediaMetadataCallback callback);
};
};