// Copyright 2016 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. // // Next MinVersion: 21 module arc.mojom; import "components/arc/common/scale_factor.mojom"; // Describes the type of action to invoke. enum ActionType { VIEW, SEND, SEND_MULTIPLE, }; [Extensible] enum PatternType { PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, }; struct PatternMatcher { string pattern; PatternType type; }; struct AuthorityEntry { string host; int32 port; }; struct IntentInfo { string action; array? categories; string? data; // URI string? type; // explicit MIME type for data [MinVersion=13] string? clip_data_uri; // optional URI to provide as ClipData. [MinVersion=20] bool ui_bypassed; // Whether or not the user saw the UI. }; struct IntentFilter { array actions; array categories; array data_schemes; [MinVersion=10] array? data_authorities; [MinVersion=10] array? data_paths; [MinVersion=10] array? deprecated_data_scheme_specific_parts; }; // Describes a package that can handle an intent. struct IntentHandlerInfo { string name; string package_name; string activity_name; // A hint for retrieving the package's icon. [MinVersion=4] ActionType action_type; [MinVersion=6] bool is_preferred; [MinVersion=11] string? action; // e.g. "android.intent.action.VIEW" // RequestUrlHandlerList may fill |fallback_url| when it is called with an // intent: URL. [MinVersion=14] string? fallback_url; }; // Describes an activity. struct ActivityName { string package_name; string? activity_name; // may be null to indicate any activity within package }; // Describes an icon for the activity. struct ActivityIcon { ActivityName activity; uint32 width; // in px uint32 height; // in px array icon; // in BGRA8888 format }; // URL associated with its mime type. struct UrlWithMimeType { string url; string mime_type; }; // Describes a specific page in chrome://, about:blank, about:downloads and about:history. [Extensible] enum ChromePage { MULTIDEVICE, MAIN, POWER, BLUETOOTH, DATETIME, DISPLAY, WIFI, LANGUAGES, PRIVACY, HELP, ACCOUNTS, APPEARANCE, AUTOFILL, BLUETOOTHDEVICES, CHANGEPICTURE, CLEARBROWSERDATA, CLOUDPRINTERS, CUPSPRINTERS, DOWNLOADS, KEYBOARDOVERLAY, LOCKSCREEN, MANAGEACCESSIBILITY, NETWORKSTYPEVPN, ONSTARTUP, PASSWORDS, POINTEROVERLAY, RESET, SEARCH, STORAGE, SYNCSETUP, ABOUTBLANK, ABOUTDOWNLOADS, ABOUTHISTORY, LAST = ABOUTHISTORY, }; // Handles intents from ARC in Chrome. // Deprecated method ID: 4 // Next method ID: 8 interface IntentHelperHost { // Called when icons associated with the package are no longer up to date. [MinVersion=3] OnIconInvalidated@1(string package_name); // Called when intent filters are updated. Either on startup or when // apps are installed or uninstalled. [MinVersion=9] OnIntentFiltersUpdated@5(array intent_filters); // Opens the downloads directory in the Chrome OS file manager. [MinVersion=5] OnOpenDownloads@2(); // Opens the url with Chrome for Chrome OS. // This function is intended to only open URLs that other web content in Chrome would be able to // navigate to as well. No special URLs that allow access to privileged functions are allowed. OnOpenUrl@0(string url); // Opens the wallpaper picker dialog. [MinVersion=6] OpenWallpaperPicker@3(); // Sets an image as the wallpaper. // |jpeg_data| is a JPEG encoded wallpaper image. [MinVersion=8] SetWallpaperDeprecated@4(array jpeg_data); // Opens the volume control. [MinVersion=16] OpenVolumeControl@6(); // Opens the specified Chrome page in the Chrome browser. [MinVersion=17] OnOpenChromePage@7([MinVersion=18] ChromePage page); }; // Sends intents to ARC on behalf of Chrome. // Next method ID: 14 interface IntentHelperInstance { // Sets the given package as a preferred package. The next time an ACTION_VIEW // intent is sent with a URL that requires disambiguation, instead of opening // the ResolverActivity, this package will be picked if it is on the list. // When multiple packages are set as preferred, the most recent setting wins. [MinVersion=7] AddPreferredPackage@8(string package_name); // DEPRECATED. Use FileSystemInstance.GetFileSize() instead. [MinVersion=15] GetFileSizeDeprecated@11(string url) => (int64 size); // Passes an intent to an activity. [MinVersion=12] HandleIntent@10(IntentInfo intent, ActivityName activity); // Handles the URL by sending an ACTION_VIEW intent to the package. The // most suitable activity for the URL within the package will be started. [MinVersion=2] HandleUrl@2(string url, string package_name); // Handles the list of URLs by sending a specified intent to the handler. [MinVersion=5] HandleUrlList@7(array urls, ActivityName activity, ActionType action_type); // DEPRECATED: Please use Init@13 instead. InitDeprecated@0(IntentHelperHost host_ptr); // Establishes full-duplex communication with the host. [MinVersion=19] Init@13(IntentHelperHost host_ptr) => (); // DEPRECATED. Use FileSystemInstance.OpenFileToRead() instead. [MinVersion=15] OpenFileToReadDeprecated@12(string url) => (handle? fd); // Requests 48dp * 48dp icons of the |activities| suitable for the // |scale_factor|. An array of icon data will be returned. [MinVersion=3] RequestActivityIcons@4(array activities, ScaleFactor scale_factor) => (array icons); // Requests a list of packages that can handle |intent|. [MinVersion=12] RequestIntentHandlerList@9(IntentInfo intent) => (array handlers); // Requests a list of packages that can handle the URL. [MinVersion=2] RequestUrlHandlerList@3(string url) => (array handlers); // Requests a list of packages that can handle the list of files. [MinVersion=4] RequestUrlListHandlerList@6(array urls) => (array handlers); // Send an Android broadcast message to the Android package and class // specified. Data can be sent as extras by including a JSON map string which // will be automatically converted to a bundle accessible by the receiver. // // Note: Broadcasts can only be sent to whitelisted packages. Packages can be // added to the whitelist in ArcBridgeService.java in the Android source. [MinVersion=1] SendBroadcast@1(string action, string package_name, string cls, string extras); };