blob: 76917a19c59b83d0d3e286e02b2092fabc06ae6c [file] [log] [blame]
// Copyright (c) 2011 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.
// Show a list of all tabs in the same process as this one.
function init() {
chrome.windows.getCurrent({populate: true}, function(currentWindow) {
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
var current = currentWindow.tabs.filter(function(tab) {
return tab.active;
})[0];
chrome.experimental.processes.getProcessIdForTab(current.id,
function(pid) {
var outputDiv = document.getElementById("tab-list");
var titleDiv = document.getElementById("title");
titleDiv.innerHTML = "<b>Tabs in Process " + pid + ":</b>";
displayTabInfo(currentWindow.id, current, outputDiv);
displaySameProcessTabs(current, pid, outputDiv);
}
);
});
});
}
function displaySameProcessTabs(selectedTab, processId, outputDiv) {
// Loop over all windows and their tabs
var tabs = [];
chrome.windows.getAll({ populate: true }, function(windowList) {
for (var i = 0; i < windowList.length; i++) {
for (var j = 0; j < windowList[i].tabs.length; j++) {
var tab = windowList[i].tabs[j];
if (tab.id != selectedTab.id) {
tabs.push(tab);
}
}
}
// Display tab in list if it is in the same process
tabs.forEach(function(tab) {
chrome.experimental.processes.getProcessIdForTab(tab.id,
function(pid) {
if (pid == processId) {
displayTabInfo(tab.windowId, tab, outputDiv);
}
}
);
});
});
}
// Print a link to a given tab
function displayTabInfo(windowId, tab, outputDiv) {
if (tab.favIconUrl != undefined) {
outputDiv.innerHTML += "<img src='chrome://favicon/" + tab.url + "'>\n";
}
outputDiv.innerHTML +=
"<b><a href='#' onclick='showTab(window, " + windowId + ", " + tab.id +
")'>" + tab.title + "</a></b><br>\n" +
"<i>" + tab.url + "</i><br>\n";
}
// Bring the selected tab to the front
function showTab(origWindow, windowId, tabId) {
// TODO: Bring the window to the front. (See http://crbug.com/31434)
//chrome.windows.update(windowId, {focused: true});
chrome.tabs.update(tabId, { selected: true });
origWindow.close();
}
// Kick things off.
document.addEventListener('DOMContentLoaded', init);