blob: 443287baa244ae933c0c597cd9690d73d6818253 [file] [log] [blame]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:js/js.dart';
@JS()
external Chrome get chrome;
@JS()
@anonymous
class Chrome {
external BrowserAction get browserAction;
external Debugger get debugger;
external Runtime get runtime;
external Tabs get tabs;
external WebNavigation get webNavigation;
external Windows get windows;
}
@JS()
@anonymous
class BrowserAction {
// https://developer.chrome.com/docs/extensions/reference/browserAction/#method-setIcon
external void setIcon(IconInfo iconInfo, Function? callback);
// https://developer.chrome.com/docs/extensions/reference/browserAction/#event-onClicked
external OnClickedHandler get onClicked;
}
@JS()
@anonymous
class OnClickedHandler {
external void addListener(void Function(Tab tab) callback);
}
@JS()
@anonymous
class Debugger {
// https://developer.chrome.com/docs/extensions/reference/debugger/#method-attach
external void attach(
Debuggee target,
String requiredVersion,
Function? callback,
);
// https://developer.chrome.com/docs/extensions/reference/debugger/#method-detach
external void detach(Debuggee target, Function? callback);
// https://developer.chrome.com/docs/extensions/reference/debugger/#method-sendCommand
external void sendCommand(
Debuggee target,
String method,
Object? commandParams,
Function? callback,
);
// https://developer.chrome.com/docs/extensions/reference/debugger/#event-onDetach
external OnDetachHandler get onDetach;
// https://developer.chrome.com/docs/extensions/reference/debugger/#event-onEvent
external OnEventHandler get onEvent;
}
@JS()
@anonymous
class OnDetachHandler {
external void addListener(
void Function(Debuggee source, String reason) callback,
);
}
@JS()
@anonymous
class OnEventHandler {
external void addListener(
void Function(Debuggee source, String method, Object? params) callback,
);
}
@JS()
@anonymous
class Runtime {
// https://developer.chrome.com/docs/extensions/reference/runtime/#method-sendMessage
external void sendMessage(
String? id,
Object? message,
Object? options,
Function? callback,
);
// https://developer.chrome.com/docs/extensions/reference/runtime/#property-lastError
// Note: Not checking the lastError when one occurs throws a runtime exception.
external ChromeError? get lastError;
// https://developer.chrome.com/docs/extensions/reference/runtime/#event-onMessage
external OnMessageHandler get onMessage;
// https://developer.chrome.com/docs/extensions/reference/runtime/#event-onMessageExternal
external OnMessageHandler get onMessageExternal;
}
@JS()
@anonymous
class OnMessageHandler {
external void addListener(
void Function(dynamic, MessageSender, Function) callback,
);
}
@JS()
@anonymous
class Tabs {
// https://developer.chrome.com/docs/extensions/reference/tabs/#method-query
external List<Tab> query(
QueryInfo queryInfo,
void Function(List<Tab>) callback,
);
// https://developer.chrome.com/docs/extensions/reference/tabs/#event-onActivated
external OnActivatedHandler get onActivated;
// https://developer.chrome.com/docs/extensions/reference/tabs/#event-onCreated
external OnCreatedHandler get onCreated;
// https://developer.chrome.com/docs/extensions/reference/tabs/#event-onRemoved
external OnRemovedHandler get onRemoved;
}
@JS()
@anonymous
class OnActivatedHandler {
external void addListener(void Function(ActiveInfo activeInfo) callback);
}
@JS()
@anonymous
class OnCreatedHandler {
external void addListener(void Function(Tab tab) callback);
}
@JS()
@anonymous
class OnRemovedHandler {
external void addListener(
void Function(int tabId, RemoveInfo removeInfo) callback,
);
}
@JS()
@anonymous
class WebNavigation {
// https://developer.chrome.com/docs/extensions/reference/webNavigation/#event-onCommitted
external OnCommittedHandler get onCommitted;
}
@JS()
@anonymous
class OnCommittedHandler {
external void addListener(void Function(NavigationInfo details) callback);
}
@JS()
@anonymous
class Windows {
external OnFocusChangedHandler get onFocusChanged;
}
@JS()
@anonymous
class OnFocusChangedHandler {
external void addListener(void Function(int windowId) callback);
}
@JS()
@anonymous
class ActiveInfo {
external int get tabId;
}
@JS()
class ChromeError {
external String get message;
}
@JS()
@anonymous
class Debuggee {
external int get tabId;
external String get extensionId;
external String get targetId;
external factory Debuggee({int tabId, String? extensionId, String? targetId});
}
@JS()
@anonymous
class IconInfo {
external String get path;
external factory IconInfo({String path});
}
@JS()
@anonymous
class MessageSender {
external String? get id;
external Tab? get tab;
external String? get url;
external factory MessageSender({String? id, String? url, Tab? tab});
}
@JS()
@anonymous
class NavigationInfo {
external String get transitionType;
external int get tabId;
}
@JS()
@anonymous
class QueryInfo {
external bool get active;
external bool get currentWindow;
external factory QueryInfo({bool? active, bool? currentWindow});
}
@JS()
@anonymous
class RemoveInfo {
external int get windowId;
external bool get isWindowClosing;
}
@JS()
@anonymous
class Tab {
external int get id;
external String get url;
}
@JS()
@anonymous
class UrlFilter {
external String? get hostContains;
external String? get hostEquals;
external String? get hostPrefix;
external String? get hostSuffix;
}