// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Next MinVersion: 4
module crosapi.mojom;
import "mojo/public/mojom/base/unguessable_token.mojom";
// Represents an update to an instance of a tabbed Chrome browser window.
[Stable]
struct BrowserWindowInstanceUpdate {
// Instance ID generated in lacros-chrome.
mojo_base.mojom.UnguessableToken id@0;
// Wayland ID of the browser's Aura window.
string window_id@1;
// Browser window is currently activated.
bool is_active@2;
// Unique session id for the browser's window from the current browser
// session.
[MinVersion=2]
uint32 browser_session_id@3;
// Unique restored session id for the browser's window from the restored
// browser session.
[MinVersion=2]
uint32 restored_browser_session_id@4;
// Whether the browser window is an incognito window.
[MinVersion=3]
bool is_incognito@5;
// Unique lacros profile id for the profile browser belongs to.
[MinVersion=4]
uint64 lacros_profile_id@6;
};
[Stable, Extensible]
enum BrowserAppInstanceType {
kAppTab,
kAppWindow,
};
// Represents an update to an instance of an app running in WebContents (either
// an app window or a tab).
[Stable]
struct BrowserAppInstanceUpdate {
// Instance ID generated in lacros-chrome.
mojo_base.mojom.UnguessableToken id@0;
// Indicates if it's a tab in a browser or a standalone window.
BrowserAppInstanceType type@1;
// App ID.
string app_id@2;
// Wayland ID of the browser's Aura window. It may change for apps of type
// kAppTab, and stays the same for instances of type kAppWindow.
string window_id@3;
// Current title of this instance's WebContents.
string title@4;
// The browser hosting this instance's WebContents is currently activated.
bool is_browser_active@5;
// The instance's WebContents is the active tab in the browser's tab strip.
// May change for apps of type kAppTab, stays the same (true) for instances
// of type kAppWindow.
bool is_web_contents_active@6;
// Unique session id for the browser's window from the current browser
// session.
[MinVersion=2]
uint32 browser_session_id@7;
// Unique restored session id for the browser's window from the restored
// browser session.
[MinVersion=2]
uint32 restored_browser_session_id@8;
};
// Implemented in ash-chrome, and is used to receive browser app instance
// events from lacros-chrome.
[Stable, Uuid="c29f078d-8d82-4f65-bce0-18f047b1ea31"]
interface BrowserAppInstanceRegistry {
// Called by lacros-chrome when when a new browser window is created.
OnBrowserWindowAdded@0(BrowserWindowInstanceUpdate update);
// Called when a browser window is updated.
OnBrowserWindowUpdated@1(BrowserWindowInstanceUpdate update);
// Called when a browser window is closed.
OnBrowserWindowRemoved@2(BrowserWindowInstanceUpdate update);
// Called by lacros-chrome when a new browser-based app instance is created
// in Lacros.
OnBrowserAppAdded@3(BrowserAppInstanceUpdate update);
// Called by lacros-chrome when any attributes in a Lacros browser-based app
// instance are updated.
OnBrowserAppUpdated@4(BrowserAppInstanceUpdate update);
// Called by lacros-chrome browser-based app instance is terminated.
OnBrowserAppRemoved@5(BrowserAppInstanceUpdate update);
// Binds the BrowserAppInstanceController interface, which allows the
// BrowserAppInstanceRegistry implemented in ash-chrome to communicate with
// its controller which is implemented in lacros-chrome.
[MinVersion=1]
RegisterController@6(
pending_remote<BrowserAppInstanceController> controller);
};
// Implemented in lacros-chrome, and is used to perform actions on instances
// that live in lacros-chrome from ash-chrome.
[Stable, Uuid="5058756a-9826-4276-abff-f2a84b9386b9"]
interface BrowserAppInstanceController {
// Activate the tab for the given instance ID in lacros-chrome. If the
// instance being referenced is not a tab instance, does nothing.
[MinVersion=1]
ActivateTabInstance@0(mojo_base.mojom.UnguessableToken id);
};