blob: e685568f818b7c9ce9ccbbd622ec4d26d7942759 [file] [log] [blame]
// Copyright 2019 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.
import {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js';
export class TabsApiProxy {
/**
* @param {number} tabId
* @return {!Promise<!Tab>}
*/
activateTab(tabId) {
return new Promise(resolve => {
chrome.tabs.update(tabId, {active: true}, resolve);
});
}
/**
* @return {!Promise<!Array<!Tab>>}
*/
getTabs() {
return sendWithPromise('getTabs');
}
/**
* @param {number} tabId
* @return {!Promise}
*/
closeTab(tabId) {
return new Promise(resolve => {
chrome.tabs.remove(tabId, resolve);
});
}
/**
* @param {number} tabId
* @param {number} newIndex
* @return {!Promise<!Tab>}
*/
moveTab(tabId, newIndex) {
return new Promise(resolve => {
chrome.tabs.move(tabId, {index: newIndex}, tab => {
resolve(tab);
});
});
}
/**
* @param {number} tabId
*/
trackThumbnailForTab(tabId) {
chrome.send('addTrackedTab', [tabId]);
}
}
addSingletonGetter(TabsApiProxy);