| // Copyright 2015 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: 26 |
| |
| module arc.mojom; |
| |
| import "gfx.mojom"; |
| import "scale_factor.mojom"; |
| |
| // Describes OrientationLock request. |
| // Note: ChromeOS currently assumes the internal panel is always landscape. |
| // All rotation angles mentioned here are measured clockwise. |
| [Extensible] |
| enum OrientationLock { |
| NONE = 0, |
| // Rotated 90 or 270 deg. |
| PORTRAIT = 1, |
| // Rotated 0 or 180 deg. |
| LANDSCAPE = 2, |
| // Keep the current orientation. |
| CURRENT = 3, |
| // Rotated 90 deg. |
| PORTRAIT_PRIMARY = 4, |
| // Rotated 0 deg. |
| LANDSCAPE_PRIMARY = 5, |
| // Rotated 270 deg. |
| PORTRAIT_SECONDARY = 6, |
| // Rotated 180 deg. |
| LANDSCAPE_SECONDARY = 7, |
| }; |
| |
| // Describes installation result. |
| struct InstallationResult { |
| string package_name; |
| bool success; // true if app was installed successfully. |
| }; |
| |
| // Describes ARC app. |
| struct AppInfo { |
| string name; |
| string package_name; |
| string activity; |
| [MinVersion=2] bool sticky; // true if the app cannot be uninstalled |
| [MinVersion=7] bool notifications_enabled; |
| [MinVersion=12] OrientationLock orientation_lock; |
| }; |
| |
| // Describes ARC package. |
| struct ArcPackageInfo { |
| string package_name; |
| int32 package_version; |
| int64 last_backup_android_id; |
| int64 last_backup_time; |
| bool sync; // true if package installation should be synced |
| [MinVersion=11] bool system; // true if package is system package. |
| // true if package registers VPNService intent. |
| [MinVersion=25] bool vpn_provider; |
| }; |
| |
| // Describes ARC app shortcut. |
| struct ShortcutInfo { |
| string name; |
| string package_name; |
| string icon_resource_id; |
| string intent_uri; |
| }; |
| |
| // Page for ShowPackageInfoOnPage. |
| [Extensible] |
| enum ShowPackageInfoPage { |
| // The main package info page. |
| MAIN = 0, |
| |
| // Page for managing links assigned to the app. |
| MANAGE_LINKS = 1, |
| }; |
| |
| // Describes a Play Store app discovery result. |
| struct AppDiscoveryResult { |
| string? launch_intent_uri; |
| string? install_intent_uri; |
| string? label; |
| bool is_instant_app; |
| bool is_recent; |
| string? publisher_name; |
| string? formatted_price; |
| float review_score; |
| array<uint8> icon_png_data; |
| [MinVersion=22] string? package_name; |
| }; |
| |
| // Describes the status of an app discovery request, including completed |
| // states and all possible anomalies. |
| [Extensible] |
| enum AppDiscoveryRequestState { |
| // Request handled successfully. |
| SUCCESS = 0, |
| // Request canceled when a newer request is sent. |
| CANCELED = 1, |
| // Request failed due to any communication error or Play Store internal error. |
| ERROR_DEPRECATED = 2, |
| |
| // All possible reasons of ending a request: |
| // PlayStoreProxyService is not available. |
| PLAY_STORE_PROXY_NOT_AVAILABLE = 3, |
| // It fails to cancel the previous request. |
| FAILED_TO_CALL_CANCEL = 4, |
| // It fails to call findApps API. |
| FAILED_TO_CALL_FINDAPPS = 5, |
| // It comes with invalid parameters. |
| REQUEST_HAS_INVALID_PARAMS = 6, |
| // It times out. |
| REQUEST_TIMEOUT = 7, |
| // At least one result returned from Phonesky has an unmatched request code. |
| PHONESKY_RESULT_REQUEST_CODE_UNMATCHED = 8, |
| // At least one result returned from Phonesky has an unmatched session id. |
| PHONESKY_RESULT_SESSION_ID_UNMATCHED = 9, |
| // Phonesky returns with an unmatched request code. |
| PHONESKY_REQUEST_REQUEST_CODE_UNMATCHED = 10, |
| // The app discovery service is not available. |
| PHONESKY_APP_DISCOVERY_NOT_AVAILABLE = 11, |
| // The installed Phonesky version doesn't support app discovery. |
| PHONESKY_VERSION_NOT_SUPPORTED = 12, |
| // It gets an unexpected exception from Phonesky. |
| PHONESKY_UNEXPECTED_EXCEPTION = 13, |
| // The Phonesky app discovery service thinks it's malformed. |
| PHONESKY_MALFORMED_QUERY = 14, |
| // An internal error happens in Phonesky while processing the request. |
| PHONESKY_INTERNAL_ERROR = 15, |
| // At least one result returned with invalid app data. |
| PHONESKY_RESULT_INVALID_DATA = 16, |
| }; |
| |
| // Next method ID: 18 |
| interface AppHost { |
| // Sends newly added ARC app to Chrome. This message is sent when ARC receives |
| // package added notification. Multiple apps may be added in the one package. |
| [MinVersion=1] OnAppAddedDeprecated@2(AppInfo app); |
| |
| // Receives an icon of required |scale_factor| for specific ARC app. The app |
| // is defined by |package_name| and |activity|. The icon content cannot be |
| // empty and must match to |scale_factor| assuming 48x48 for |
| // SCALE_FACTOR_100P. |scale_factor| is an enum defined at ui/base/layout.h. |
| // |icon_png_data| is a png-encoded image. |
| OnAppIcon@1(string package_name, string activity, |
| ScaleFactor scale_factor, array<uint8> icon_png_data); |
| |
| // Receives a list of available ARC apps to Chrome. Members of AppInfo must |
| // contain non-empty string. |
| OnAppListRefreshed@0(array<AppInfo> apps); |
| |
| // Notifies that a package has been added. |
| [MinVersion=8] OnPackageAdded@8(ArcPackageInfo arcPackageInfo); |
| |
| // Notifies that a package list of apps has been updated. |
| [MinVersion=14] OnPackageAppListRefreshed@13(string package_name, |
| array<AppInfo> apps); |
| |
| // Receives a list of available ARC packages to Chrome. Members of |
| // PackageInfo must contain non-empty string. |
| [MinVersion=8] OnPackageListRefreshed@9(array<ArcPackageInfo> packages); |
| |
| // Notifies that a package has been modified. |
| [MinVersion=8] OnPackageModified@10(ArcPackageInfo arcPackageInfo); |
| |
| // Sends removed ARC package to Chrome. |package_name| must contain non-empty |
| // string. This message is sent when ARC receives package removed |
| // notification. Removing one package can potentially remove more than one |
| // app. |
| [MinVersion=1] OnPackageRemoved@3(string package_name); |
| |
| // Sends information about newly created task |package_name| and |activity| |
| // specifies launch activity and |intent| is initial intent used to start |
| // new task. |
| [MinVersion=4] OnTaskCreated@4(int32 task_id@0, |
| string package_name@1, |
| string activity@2, |
| [MinVersion=13] string? name@3, |
| [MinVersion=15] string? intent@4); |
| |
| // Sends task label and icon. |
| [MinVersion=19] OnTaskDescriptionUpdated@17(int32 task_id, |
| string label, |
| array<uint8> icon_png_data); |
| |
| // Notifies that task has been destroyed. |
| [MinVersion=4] OnTaskDestroyed@5(int32 task_id); |
| |
| // Notifies that task requested orientation lock. |
| [MinVersion=12] OnTaskOrientationLockRequested@12(int32 task_id, |
| OrientationLock lock); |
| |
| // Notifies that task has been activated. |
| [MinVersion=4] OnTaskSetActive@6(int32 task_id); |
| |
| // Notifies that notifications enabled settings in Android is changed. |
| [MinVersion=7] OnNotificationsEnabledChanged@7(string package_name, |
| bool enabled); |
| |
| // Notifies that an application shortcut needs to be created. |
| [MinVersion=9] OnInstallShortcut@11(ShortcutInfo shortcut); |
| |
| // Notifies that Play Store installation has been started. |package_name| |
| // specifies installation package |
| [MinVersion=16] OnInstallationStarted@14( |
| [MinVersion=17] string? package_name@0); |
| |
| // Notifies that Play Store installation is finished. |result| contains |
| // details of installation result. |
| [MinVersion=16] OnInstallationFinished@15( |
| [MinVersion=17] InstallationResult? result@1); |
| |
| // Notifies that an application shortcut needs to be deleted. Shortcut is |
| // defined by its |intent_uri| and |package_name|. |
| [MinVersion=18] OnUninstallShortcut@16(string package_name, |
| string intent_uri); |
| }; |
| |
| // TODO(lhchavez): Migrate all request/response messages to Mojo. |
| // Next method ID: 21 |
| interface AppInstance { |
| Init@0(AppHost host_ptr); |
| |
| [MinVersion=1] CanHandleResolutionDeprecated@4( |
| string package_name, string activity, Rect dimension) => |
| (bool can_handle); |
| |
| // Closes the the given task. |
| [MinVersion=4] CloseTask@8(int32 task_id); |
| |
| // Requests information about task. |
| [MinVersion=3] GetTaskInfo@6(int32 task_id) => (string package_name, |
| string activity); |
| |
| // Sends a request to ARC to install package. |
| [MinVersion=8] InstallPackage@11(ArcPackageInfo arcPackageInfo); |
| |
| LaunchAppDeprecated@1(string package_name, string activity, |
| [MinVersion=1] Rect? dimension_on_screen); |
| |
| // Sends a request to ARC to launch an ARC app defined by |package_name| and |
| // |activity|, which cannot be empty. |
| [MinVersion=23] LaunchApp@18(string package_name, string activity, |
| int64 display_id); |
| |
| [MinVersion=9] LaunchIntentDeprecated@12(string intent_uri, |
| Rect? dimension_on_screen); |
| |
| // Sends a request to ARC to launch an intent. The intent is encoded as a URI |
| // string. See Intent.toUri(). |
| [MinVersion=23] LaunchIntent@19(string intent_uri, int64 display_id); |
| |
| // Sends a request to ARC to refresh a list of ARC apps. |
| // OnRefreshAppsList is expected in response to this message. However, |
| // response may not be sent if ARC is not ready yet (boot completed event is |
| // not received). |
| RefreshAppList@2(); |
| |
| // Sends a request to ARC for the ARC app icon of a required scale factor. |
| // Scale factor is an enum defined at ui/base/layout.h. App is defined by |
| // |package_name| and |activity|, which cannot be empty. |
| RequestAppIcon@3(string package_name, string activity, |
| ScaleFactor scale_factor); |
| |
| // Sends a request for the ARC shortcut icon of a given resource id and scale |
| // factor. |
| [MinVersion=9] RequestIcon@13(string icon_resource_id, |
| ScaleFactor scale_factor) => |
| (array<uint8> icon_png_data); |
| |
| // Removes cached shortcut icon with the given resource id. |
| [MinVersion=9] RemoveCachedIcon@14(string icon_resource_id); |
| |
| // Activates the given task and move it to foreground. |
| [MinVersion=4] SetTaskActive@7(int32 task_id); |
| |
| [MinVersion=5] ShowPackageInfoDeprecated@9(string package_name, |
| Rect dimension_on_screen); |
| |
| [MinVersion=10] ShowPackageInfoOnPageDeprecated@15(string package_name, |
| ShowPackageInfoPage page, |
| Rect dimension_on_screen); |
| |
| // Sends a request to ARC to show package info for given package on the |
| // specified page. |
| [MinVersion=23] ShowPackageInfoOnPage@20(string package_name, |
| ShowPackageInfoPage page, |
| int64 display_id); |
| |
| // Sets notification setting for the package. |
| [MinVersion=6] SetNotificationsEnabled@10(string package_name, bool enabled); |
| |
| // Sends a request to ARC to start PAI flow. |
| [MinVersion=21] StartPaiFlow@17(); |
| |
| // Sends a request to ARC to uninstall the given package. Error (if ever |
| // happens) is ignored, and uninstall option should appear in the UI. |
| [MinVersion=2] UninstallPackage@5(string package_name); |
| |
| // Starts a query for Play Store apps. |
| [MinVersion=20] GetRecentAndSuggestedAppsFromPlayStore@16( |
| string query, int32 max_results) => |
| (AppDiscoveryRequestState state@1, array<AppDiscoveryResult> results@0); |
| }; |