File: media_galleries.idl

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (184 lines) | stat: -rw-r--r-- 6,174 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
// Copyright 2012 The Chromium Authors
// 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 (audio,
// images, video) from the user's local disks (with the user's consent).
namespace mediaGalleries {

  enum GalleryChangeType {
    // The contents of the gallery have changed.
    contents_changed,
    // The watch has been dropped because the device has been detached,
    // the gallery permission has been removed, or any other reason.
    watch_dropped
  };

  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 the mime type, metadata tags, and attached images.
    all,
    // Retrieve only the mime type and the metadata tags.
    mimeTypeAndTags,
    // Retrieve only the mime type.
    mimeTypeOnly
  };

  dictionary GalleryChangeDetails {
    // Type of change event.
    GalleryChangeType type;

    // Identifies the modified gallery.
    DOMString galleryId;
  };

  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] object[] mediaFileSystems);

  callback AddUserFolderCallback =
      void ([instanceOf=DOMFileSystem] object[] mediaFileSystems,
            DOMString selectedFileSystemName);

  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 StreamInfo {
    // Describes format of container or codec of stream, i.e. "mp3", "h264".
    DOMString type;

    // An unfiltered string->string dictionary of tags for the stream.
    object tags;
  };

  dictionary MediaMetadata {
    // The browser sniffed mime type.
    DOMString mimeType;

    // Defined for video. In pixels.
    long? height;
    long? width;

    // Defined for audio and video. In seconds.
    double? duration;

    // Defined for video. In degrees.
    long? rotation;

    // Defined for audio and video.
    DOMString? album;
    DOMString? artist;
    DOMString? comment;
    DOMString? copyright;
    long? disc;
    DOMString? genre;
    DOMString? language;
    DOMString? title;
    long? track;

    // All the metadata in the media file. For formats with multiple streams,
    // stream order will be preserved. Container metadata is the first element.
    StreamInfo[] rawTags;

    // The images embedded in the media file's metadata. This is most often
    // used for album art or video thumbnails.
    [instanceOf=Blob] object[] attachedImages;
  };

  callback MediaMetadataCallback = void (MediaMetadata metadata);

  // A dictionary that describes the add gallery watch request results.
  dictionary AddGalleryWatchResult {
    DOMString galleryId;
    boolean success;
  };

  callback AddGalleryWatchCallback = void (AddGalleryWatchResult result);

  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);

    // Present a directory picker to the user and add the selected directory
    // as a gallery. If the user cancels the picker, selectedFileSystemName
    // will be empty.
    // A user gesture is required for the dialog to display. Without a user
    // gesture, the callback will run as though the user canceled.
    [doesNotSupportPromises="Multi-parameter callback crbug.com/1313625"]
    static void addUserSelectedFolder(AddUserFolderCallback callback);

    // Get metadata about a specific media file system.
    [nocompile] static MediaFileSystemMetadata getMediaFileSystemMetadata(
        [instanceOf=DOMFileSystem] object mediaFileSystem);

    // 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);

    // Adds a gallery watch for the gallery with the specified gallery ID.
    // The given callback is then fired with a success or failure result.
    static void addGalleryWatch(
        DOMString galleryId,
        AddGalleryWatchCallback callback);

    // Removes a gallery watch for the gallery with the specified gallery ID.
    static void removeGalleryWatch(DOMString galleryId);
  };

  interface Events {
    // Fired when a media gallery is changed or a gallery watch is dropped.
    static void onGalleryChanged(GalleryChangeDetails details);
  };
};