Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / api / file_browser_private.idl
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // fileBrowserPrivate API.
6 // This is a private API used by the file browser of ChromeOS.
7 [platforms=("chromeos"),
8  implemented_in="chrome/browser/chromeos/extensions/file_manager/file_browser_private_api_functions.h"]
9 namespace fileBrowserPrivate {
10 // Type of the mounted volume.
11 enum VolumeType { drive, downloads, removable, archive, cloud_device };
12
13 // Device type. Available if this is removable volume.
14 enum DeviceType { usb, sd, optical, mobile, unknown };
15
16 // Additional data about mount, for example, that the filesystem is not
17 // supported.
18 enum MountCondition { unknown, unsupported };
19
20 // Is the event raised for mounting or unmounting.
21 enum MountCompletedEventType { mount, unmount };
22
23 // Event type that tells listeners if mount was successful or an error
24 // occurred. It also specifies the error.
25 enum MountCompletedStatus {
26   success,
27   error_unknown,
28   error_internal,
29   error_invalid_argument,
30   error_invalid_path,
31   error_path_already_mounted,
32   error_path_not_mounted,
33   error_directory_creation_failed,
34   error_invalid_mount_options,
35   error_invalid_unmount_options,
36   error_insufficient_permissions,
37   error_mount_program_not_found,
38   error_mount_program_failed,
39   error_invalid_device_path,
40   error_unknown_filesystem,
41   error_unsuported_filesystem,
42   error_invalid_archive,
43   error_authentication,
44   error_path_unmounted
45 };
46
47 // File transfer progress state.
48 enum TransferState { started, in_progress, completed, failed };
49
50 // Defines file transfer direction.
51 enum TransferType { upload, download };
52
53 // The type of the progress event.
54 enum CopyProgressStatusType {
55   // "begin_copy_entry" is fired for each entry (file or directory) before
56   // starting the copy operation.
57   begin_copy_entry,
58
59   // "end_copy_entry" is fired for each entry (file or directory) after ending
60   // the copy operation.
61   end_copy_entry,
62
63   // "progress" is fired periodically to report progress of a file copy (not
64   // directory).
65   progress,
66
67   // "success" is fired after all entries are copied.
68   success,
69
70   // "error" is fired when an error occurs.
71   error
72 };
73
74 // Specifies type of event that is raised.
75 enum FileWatchEventType { changed, error };
76
77 // The type of entry that is needed. Default to ALL.
78 enum SearchType { EXCLUDE_DIRECTORIES, SHARED_WITH_ME, OFFLINE, ALL };
79
80 // Zooming mode.
81 enum ZoomOperationType { in, out, reset };
82
83 // Device event type.
84 enum DeviceEventType {
85   // Device is added.
86   added,
87   // If the device is disabled by preference, the disabled event is published
88   // instead of the added event.
89   disabled,
90   // Device is added, but scan for the device is canceled. The event is
91   // published after the added event.
92   scan_canceled,
93   // Device is removed.
94   removed,
95   // Format started.
96   format_start,
97   // Format succeeded.
98   format_success,
99   // Format failed.
100   format_fail
101 };
102
103 // Drive sync error type.
104 // Keep it synced with DriveSyncErrorType in operation_observer.h.
105 enum DriveSyncErrorType {
106   // Request to delete a file without permission.
107   delete_without_permission,
108   // Google Drive is temporarily unavailable.
109   service_unavailable,
110   // Miscellaneous errors other than listed above.
111   misc
112 };
113
114 // Result of task execution.
115 enum TaskResult {
116   // The task execution succeeded and a new window/tab was opened.
117   opened,
118   // The task execution succeeded and the message was sent to the proper
119   // extension.
120   message_sent,
121   // The task execution failed.
122   failed,
123   // No URL is specified.
124   empty
125 };
126
127 // A file task represents an action that the file manager can perform over the
128 // currently selected files. See
129 // chrome/browser/chromeos/extensions/file_manager/file_tasks.h for details
130 // about how file tasks are handled.
131 dictionary FileTask {
132   // The unique identifier of the task.
133   DOMString taskId;
134
135   // Task title (ex. App name).
136   DOMString title;
137
138   // Task icon url (from chrome://extension-icon/...)
139   DOMString iconUrl;
140
141   // True if this task is a default task for the selected files.
142   boolean isDefault;
143 };
144
145 // Drive file properties.
146 dictionary DriveEntryProperties {
147   // URL to the Drive thumbnail image for this file.
148   DOMString? thumbnailUrl;
149
150   // Width, if the entry is an image.
151   long? imageWidth;
152
153   // Height, if the entry is an image.
154   long? imageHeight;
155
156   // Rotation in clockwise degrees, if the entry is an image.
157   long? imageRotation;
158
159   // True if the file is pinned in Drive cache.
160   boolean? isPinned;
161
162   // True if the file is present in Drive cache.
163   boolean? isPresent;
164
165   // True if the file is hosted on a Drive server instead of local.
166   boolean? isHosted;
167
168   // URL to the custom icon for this file.
169   DOMString? customIconUrl;
170
171   // Drive MIME type for this file.
172   DOMString? contentMimeType;
173
174   // True if the entry is labeled as shared-with-me.
175   boolean? sharedWithMe;
176
177   // True if the entry is labeled as shared (either from me to others or to me
178   // by others.)
179   boolean? shared;
180 };
181
182 // Information about total and remaining size on the mount point.
183 dictionary MountPointSizeStats {
184   // Approximate total available size on the mount point.
185   double totalSize;
186
187   // Approximate remaining available size on the mount point.
188   double remainingSize;
189 };
190
191 // Information about a profile.
192 dictionary ProfileInfo {
193   // Profile ID. This is currently e-mail address of the profile.
194   DOMString profileId;
195
196   // The name of the profile for display purpose.
197   DOMString displayName;
198
199   // True if the profile is the one running the current file manager instance.
200   // TODO(hirono): Remove the property because of the design change of
201   // multi-profile suuport.
202   boolean isCurrentProfile;
203
204   // Data URI of profile image;
205   DOMString? imageUri;
206 };
207
208 // Mounted disk volume metadata.
209 dictionary VolumeMetadata {
210   // ID of the disk volume.
211   DOMString volumeId;
212
213   // Description of the profile where the volume belongs.
214   // TODO(hirono): Remove the property because of the design change of
215   // multi-profile suuport.
216   ProfileInfo profile;
217
218   // Disk volume mount point path.
219   DOMString mountPath;
220
221   // The path to the mounted device, archive file or network resource.
222   DOMString? sourcePath;
223
224   // Type of the mounted volume.
225   VolumeType volumeType;
226
227   // Device type. Available if this is removable volume.
228   DeviceType? deviceType;
229
230   // Path to identify the device. This is consistent with DeviceEvent's
231   // devicePath.
232   DOMString? devicePath;
233
234   // Label of the device.
235   DOMString? deviceLabel;
236
237   // Whether the device is parent or not (i.e. sdb rather than sdb1).
238   boolean? isParentDevice;
239
240   // Flag that specifies if volume is mounted in read-only mode.
241   boolean isReadOnly;
242
243   // Additional data about mount, for example, that the filesystem is not
244   // supported.
245   MountCondition? mountCondition;
246 };
247
248 // Payload data for mount event.
249 dictionary MountCompletedEvent {
250   // Is the event raised for mounting or unmounting.
251   MountCompletedEventType eventType;
252
253   // Event type that tells listeners if mount was successful or an error
254   // occurred. It also specifies the error.
255   MountCompletedStatus status;
256
257   // Metadata of the mounted volume.
258   VolumeMetadata volumeMetadata;
259
260   // Whether it is remount or not.
261   boolean isRemounting;
262 };
263
264 // Payload data for file transfer status updates.
265 dictionary FileTransferStatus {
266   // URL of file that is being transfered.
267   DOMString fileUrl;
268
269   // File transfer progress state.
270   TransferState transferState;
271
272   // Defines file transfer direction.
273   TransferType transferType;
274
275   // Approximated completed portion of the transfer operation.
276   double? processed;
277
278   // Approximated total size of transfer operation.
279   double? total;
280 };
281
282 // Error during the drive sync.
283 dictionary DriveSyncErrorEvent {
284   // Error type.
285   DriveSyncErrorType type;
286
287   // File URL of the entry that the error happens to.
288   DOMString fileUrl;
289 };
290
291 // Payload data for copy status progress updates.
292 dictionary CopyProgressStatus {
293   // The type of the progress event.
294   CopyProgressStatusType type;
295
296   // URL for the entry currently being copied. This field is particularly useful
297   // when a directory copy is initiated with startCopy(). The field tells what
298   // file/directory in that directory is now being copied.
299   DOMString? sourceUrl;
300
301   // URL for the entry currently being created. This field is particularly
302   // useful when a directory copy is initiated with startCopy(). The field tells
303   // what file/directory in that directory is being created. Available only for
304   // end_copy_entry and success.
305   DOMString? destinationUrl;
306
307   // Number of processed bytes for the file currently being copied. Available
308   // only for "progress" event. To show the progress bar, a caller needs to
309   // pre-compute the size of files being copied for the file (not directory).
310   double? size;
311
312   // FileError's code of the error. Available only for ERROR event.
313   long? error;
314 };
315
316 // Payload data for file transfer cancel response.
317 dictionary FileTransferCancelStatus {
318   // URL of file that is being transfered.
319   DOMString fileUrl;
320
321   // True if ongoing transfer operation was found and canceled.
322   boolean canceled;
323 };
324
325 // Directory change notification details.
326 dictionary FileWatchEvent {
327   // Specifies type of event that is raised.
328   FileWatchEventType eventType;
329
330   // An Entry object which represents a changed directory. The conversion into a
331   // kind of FileEntry object is done in
332   // file_browser_handler_custom_bindings.cc. For filesystem API's Entry
333   // interface, see <a
334   // href='http://www.w3.org/TR/file-system-api/#the-entry-interface'>The Entry
335   // interface</a>.
336   [instanceOf=Entry] object entry;
337 };
338
339 dictionary Preferences {
340   boolean driveEnabled;
341   boolean cellularDisabled;
342   boolean hostedFilesDisabled;
343   boolean use24hourClock;
344   boolean allowRedeemOffers;
345 };
346
347 dictionary PreferencesChange {
348   boolean? cellularDisabled;
349   boolean? hostedFilesDisabled;
350 };
351
352 dictionary SearchParams {
353   // Search query.
354   DOMString query;
355
356   // ID of the search feed that should be fetched next. Value passed here should
357   // be gotten from previous searchDrive call. It can be empty for the initial
358   // search request.
359   DOMString nextFeed;
360 };
361
362 dictionary SearchMetadataParams {
363   // Search query. It can be empty. Any filename matches to an empty query.
364   DOMString query;
365
366   // The type of entry that is needed. Default to ALL.
367   SearchType types;
368
369   // Maximum number of results.
370   long maxResults;
371 };
372
373 // Entry and Drive-related properties representing a search result.
374 dictionary SearchResult {
375   // A dictionary object which represents a Drive file. This will be converted
376   // into a kind of FileEntry object. See
377   // file_browser_handler_custom_bindings.cc for details. For filesystem API's
378   // Entry interface, see <a
379   // href='http://www.w3.org/TR/file-system-api/#the-entry-interface'>The Entry
380   // interface</a>.
381   [instanceOf=Entry] object entry;
382
383   // The base name of a Drive file that matched the search query. The matched
384   // sub strings are highlighted with <b> element. Meta characters are escaped
385   // like &lt;.
386   DOMString highlightedBaseName;
387 };
388
389 dictionary DriveConnectionState {
390   DOMString type;
391
392   // Reasons of offline.
393   DOMString? reason;
394 };
395
396 // Device event dispatched to listeners of onDeviceChaged.  See also
397 // DeviceEventType to know when the event dispatched.
398 dictionary DeviceEvent {
399   // Event type of the device event.
400   DeviceEventType type;
401   // Device path to identify the device.
402   DOMString devicePath;
403 };
404
405 // Callback that does not take arguments.
406 callback SimpleCallback = void();
407
408 // |result| Result of the task execution.
409 callback ExecuteTaskCallback = void(TaskResult result);
410
411 // |tasks| The list of matched file URL patterns for this task.
412 callback GetFileTasksCallback = void(FileTask[] tasks);
413
414 // |result| Hash containing the string assets.
415 callback GetStringsCallback = void(object result);
416
417 // |success| True when file watch is successfully added.
418 callback AddFileWatchCallback = void(optional boolean success);
419
420 // |success| True when file watch is successfully removed.
421 callback RemoveFileWatchCallback = void(optional boolean success);
422
423 // |fileSystem| A DOMFileSystem instance for local file system access. null if
424 // |the caller has no appropriate permissions.
425 callback RequestFileSystemCallback = void(optional object fileSystem);
426
427 // |fileProperties| A dictionary containing properties of the requested entry.
428 callback GetDriveEntryPropertiesCallback =
429     void(DriveEntryProperties fileProperties);
430
431 // |localFilePaths| An array of the local file paths for the requested files,
432 // one entry for each file in fileUrls.
433 callback GetDriveFilesCallback = void(DOMString[] localFilePaths);
434
435 // |sourcePath| Source path of the mount.
436 callback AddMountCallback = void(DOMString sourcePath);
437
438 // |volumeMetadataList| The list of VolumeMetadata representing mounted volumes.
439 callback GetVolumeMetadataListCallback =
440     void(VolumeMetadata[] volumeMetadataList);
441
442 // |fileTransferCancelStatuses| The list of FileTransferCancelStatus.
443 callback CancelFileTransfersCallback =
444     void(FileTransferCancelStatus[] fileTransferCancelStatuses);
445
446 // |copyId| ID of the copy task. Can be used to identify the progress, and to
447 // cancel the task.
448 callback StartCopyCallback = void(long copyId);
449
450 // |sizeStats| Name/value pairs of size stats. Will be undefined if stats could
451 // not be determined.
452 callback GetSizeStatsCallback = void(optional MountPointSizeStats sizeStats);
453
454 callback GetPreferencesCallback = void(Preferences result);
455
456 // |entries|
457 // |nextFeed| ID of the feed that contains next chunk of the search result.
458 //     Should be sent to the next searchDrive request to perform
459 //     incremental search.
460 callback SearchDriveCallback =
461     void([instanceOf=Entry] object[] entries, DOMString nextFeed);
462
463 callback SearchDriveMetadataCallback = void(SearchResult[] results);
464
465 callback ZipSelectionCallback = void(optional boolean success);
466
467 callback GetDriveConnectionStateCallback = void(DriveConnectionState result);
468
469 // |result| true if the length is in the valid range, false otherwise.
470 callback ValidatePathNameLengthCallback = void(boolean result);
471
472 // |accessToken| OAuth2 access token, or an empty string if failed to fetch.
473 callback RequestAccessTokenCallback = void(DOMString accessToken);
474
475 // |accessToken| OAuth2 access token, or an empty string if failed to fetch.
476 callback RequestWebStoreAccessTokenCallback = void(DOMString accessToken);
477
478 // |shareUrl| Share Url for the sharing dialog.
479 callback GetShareUrlCallback = void(DOMString shareUrl);
480
481 // |profiles| List of profile information.
482 // |runningProfile| ID of the profile that runs the application instance.
483 // |showingProfile| ID of the profile that shows the application window.
484 callback GetProfilesCallback = void(ProfileInfo[] profiles,
485                                     DOMString runningProfile,
486                                     DOMString displayProfile);
487
488 interface Functions {
489   // Logout the current user for navigating to the re-authentication screen for
490   // the Google account.
491   static void logoutUserForReauthentication();
492
493   // Cancels file selection.
494   static void cancelDialog();
495
496   // Executes file browser task over selected files.
497   // |taskId| The unique identifier of task to execute.
498   // |fileUrls| Array of file URLs
499   // |callback|
500   static void executeTask(DOMString taskId,
501                           DOMString[] fileUrls,
502                           optional ExecuteTaskCallback callback);
503
504   // Sets the default task for the supplied MIME types and suffixes of the
505   // supplied file URLs. Lists of MIME types and URLs may contain duplicates.
506   // |taskId| The unique identifier of task to mark as default.
507   // |fileUrls| Array of selected file URLs to extract suffixes from.
508   // |mimeTypes| Array of selected file MIME types.
509   // |callback|
510   static void setDefaultTask(DOMString taskId,
511                              DOMString[] fileUrls,
512                              optional DOMString[] mimeTypes,
513                              optional SimpleCallback callback);
514
515   // Gets the list of tasks that can be performed over selected files.
516   // |fileUrls| Array of selected file URLs
517   // |mimeTypes| Array of selected file MIME types
518   // |callback|
519   static void getFileTasks(DOMString[] fileUrls,
520                            DOMString[] mimeTypes,
521                            GetFileTasksCallback callback);
522
523   // Gets localized strings and initialization data.
524   // |callback|
525   static void getStrings(GetStringsCallback callback);
526
527   // Adds file watch.
528   // |fileUrl| URL of file to watch
529   // |callback|
530   static void addFileWatch(DOMString fileUrl, AddFileWatchCallback callback);
531
532   // Removes file watch.
533   // |fileUrl| URL of watched file to remove
534   // |callback|
535   static void removeFileWatch(DOMString fileUrl,
536                               RemoveFileWatchCallback callback);
537
538   // Requests access to a file system volume.
539   // |volumeId| The ID of the file system volume to request. The volume ID is
540   //     delivered to JavaScript as part of VolumeMetadata. By specifying
541   //     "compatible", this function behaves in the compatible mode, where the
542   //     returned FileSystem object gives access to all file system volumes such
543   //     as Downloads folder and removal media like SD cards (i.e. all volumes
544   //     are provided inside the single FileSystem object). In the new
545   //     "per-volume FileSystem object model" crbug.com/322305, a separate
546   //     FileSystem object is created for each volume. "compatible" parameter
547   //     will be removed once Files.app is switched to the per-volume FileSystem
548   //     object model.
549   // |callback|
550   static void requestFileSystem(DOMString volumeId,
551                                 RequestFileSystemCallback callback);
552
553   // Selects multiple files.
554   // |selectedPaths| Array of selected paths
555   // |shouldReturnLocalPath| true if paths need to be resolved to local paths.
556   // |callback|
557   static void selectFiles(DOMString[] selectedPaths,
558                           boolean shouldReturnLocalPath,
559                           SimpleCallback callback);
560
561   // Selects a file.
562   // |selectedPath| A selected path
563   // |index| Index of Filter
564   // |forOpening| true if paths are selected for opening. false if for saving.
565   // |shouldReturnLocalPath| true if paths need to be resolved to local paths.
566   // |callback|
567   static void selectFile(DOMString selectedPath,
568                          long index,
569                          boolean forOpening,
570                          boolean shouldReturnLocalPath,
571                          SimpleCallback callback);
572
573   // Requests Drive file properties for a file.
574   // |fileUrl| URL of a file
575   // |callback|
576   static void getDriveEntryProperties(DOMString fileUrl,
577                                       GetDriveEntryPropertiesCallback callback);
578
579   // Pins/unpins a Drive file in the cache.
580   // |fileUrl| URL of a file to pin/unpin.
581   // |pin| Pass true to pin the file.
582   // |callback| Completion callback. $ref:runtime.lastError will be set if there
583   //     was an error.
584   static void pinDriveFile(DOMString fileUrl,
585                            boolean pin,
586                            optional SimpleCallback callback);
587
588   // Get Drive files.
589   // |fileUrls| Array of Drive file URLs to get.
590   // |callback|
591   static void getDriveFiles(DOMString[] fileUrls,
592                             GetDriveFilesCallback callback);
593
594   // Mount a resource or a file.
595   // |source| Mount point source. For compressed files it is relative file path
596   //     within external file system
597   // |callback|
598   static void addMount(DOMString source, AddMountCallback callback);
599
600   // Unmounts a mounted resource.
601   // |volumeId| An ID of the volume.
602   static void removeMount(DOMString volumeId);
603
604   // Get the list of mounted volumes.
605   // |callback|
606   static void getVolumeMetadataList(GetVolumeMetadataListCallback callback);
607
608   // Cancels ongoing file transfers for selected files.
609   // |fileUrls| Array of files for which ongoing transfer should be canceled.
610   // |callback|
611   static void cancelFileTransfers(DOMString[] fileUrls,
612                                   CancelFileTransfersCallback callback);
613
614   // Starts to copy an entry. If the source is a directory, the copy is done
615   // recursively.
616   // |sourceUrl| URL of the source entry to be copied.
617   // |parent| URL of the destination directory.
618   // |newName| Name of the new entry. It shouldn't contain '/'.
619   // |callback| Completion callback.
620   static void startCopy(DOMString sourceUrl,
621                         DOMString parent,
622                         DOMString newName,
623                         StartCopyCallback callback);
624
625   // Cancels the running copy task.
626   // |copyId| ID of the copy task to be cancelled.
627   // |callback| Completion callback of the cancel.
628   static void cancelCopy(long copyId, optional SimpleCallback callback);
629
630   // Retrieves total and remaining size of a mount point.
631   // |volumeId| ID of the volume to be checked.
632   // |callback|
633   static void getSizeStats(DOMString volumeId, GetSizeStatsCallback callback);
634
635   // Formats a mounted volume.
636   // |volumeId| ID of the volume to be formatted.
637   static void formatVolume(DOMString volumeId);
638
639   // Retrieves file manager preferences.
640   // |callback|
641   static void getPreferences(GetPreferencesCallback callback);
642
643   // Sets file manager preferences.
644   // |changeInfo|
645   static void setPreferences(PreferencesChange changeInfo);
646
647   // Performs drive content search.
648   // |searchParams|
649   // |callback|
650   static void searchDrive(SearchParams searchParams,
651                           SearchDriveCallback callback);
652
653   // Performs drive metadata search.
654   // |searchParams|
655   // |callback|
656   static void searchDriveMetadata(SearchMetadataParams searchParams,
657                                   SearchDriveMetadataCallback callback);
658
659   // Create a zip file for the selected files.
660   // |dirURL| URL of the directory containing the selected files.
661   // |selectionUrls| URLs of the selected files. The files must be under the
662   //     directory specified by dirURL.
663   // |destName| Name of the destination zip file. The zip file will be created
664   //     under the directory specified by dirURL.
665   // |callback|
666   static void zipSelection(DOMString dirURL,
667                            DOMString[] selectionUrls,
668                            DOMString destName,
669                            optional ZipSelectionCallback callback);
670
671   // Retrieves the state of the current drive connection.
672   // |callback|
673   static void getDriveConnectionState(GetDriveConnectionStateCallback callback);
674
675   // Checks whether the path name length fits in the limit of the filesystem.
676   // |parent_directory_url| The URL of the parent directory entry.
677   // |name| The name of the file.
678   // |callback| Called back when the check is finished.
679   static void validatePathNameLength(DOMString parent_directory_url,
680                                      DOMString name,
681                                      ValidatePathNameLengthCallback callback);
682
683   // Changes the zoom factor of the Files.app.
684   // |operation| Zooming mode.
685   static void zoom(ZoomOperationType operation);
686
687   // Requests a Drive API OAuth2 access token.
688   // |refresh| Whether the token should be refetched instead of using the cached
689   //     one.
690   // |callback|
691   static void requestAccessToken(boolean refresh,
692                                  RequestAccessTokenCallback callback);
693
694   // Requests a Webstore API OAuth2 access token.
695   // |callback|
696   static void requestWebStoreAccessToken(
697       RequestWebStoreAccessTokenCallback callback);
698
699   // Requests a share dialog url for the specified file.
700   // |url| Url for the file.
701   // |callback|
702   static void getShareUrl(DOMString url, GetShareUrlCallback callback);
703
704   // Requests to install a webstore item.
705   // |item_id| The id of the item to install.
706   // |callback|
707   static void installWebstoreItem(DOMString item_id,
708                                   SimpleCallback callback);
709
710   // Obtains a list of profiles that are logged-in.
711   static void getProfiles(GetProfilesCallback callback);
712
713   // Moves the window to other user's desktop.
714   static void visitDesktop(DOMString profileId,
715                            optional SimpleCallback callback);
716 };
717
718 interface Events {
719   static void onMountCompleted(MountCompletedEvent event);
720
721   static void onFileTransfersUpdated(FileTransferStatus[] event);
722
723   static void onCopyProgress(long copyId, CopyProgressStatus status);
724
725   static void onDirectoryChanged(FileWatchEvent event);
726
727   static void onPreferencesChanged();
728
729   static void onDriveConnectionStatusChanged();
730
731   static void onDeviceChanged(DeviceEvent event);
732
733   static void onDriveSyncError(DriveSyncErrorEvent event);
734
735   // Dispatched when a profile is added.
736   static void onProfileAdded();
737
738   // Dispatched when any window moves another desktop.
739   // TODO(hirono): Add information which window is moved.
740   static void onDesktopChanged();
741 };
742 };