summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_browser_event_router.cc
diff options
context:
space:
mode:
authorjstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-28 03:32:30 +0000
committerjstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-28 03:32:30 +0000
commit8c3495cdfbc29b4d903103bf3f0cea7e5bfc24de (patch)
tree025f57b645272c61fe681d1418acfc4523309381 /chrome/browser/extensions/extension_browser_event_router.cc
parent98af60b92b1828945dca0c8cf384645a62682f6d (diff)
downloadchromium_src-8c3495cdfbc29b4d903103bf3f0cea7e5bfc24de.zip
chromium_src-8c3495cdfbc29b4d903103bf3f0cea7e5bfc24de.tar.gz
chromium_src-8c3495cdfbc29b4d903103bf3f0cea7e5bfc24de.tar.bz2
Extend chrome.tabs* API to support multiple tabs.
This adds support for handling multiple tabs, including selecting, removing and moving many tabs at once. (Selecting is now called highlighting for backwards compatibility). The changes are outlined below. Adds: - 'highlighted' property to Tab, chrome.tabs.update - chrome.tabs.query for searching across tabs - chrome.tabs.highlight for selecting multiple tabs - chrome.tabs.onHighlightChanged for listening to multi-select events Modifies: - renames 'selected' to 'active' on Tab, chrome.tabs.create, chrome.tabs.update - renames onSelectionChanged to onActiveChanged - chrome.tabs.move to accept an array of tabs or a single tab - chrome.tabs.remove to accept an array of tabs or a single tab - deprecates chrome.tabs.getSelected in favor of chrome.tabs.query - deprecates chrome.tabs.getAllInWindow in favor of chrome.tabs.query BUG=81411 TEST=ExtensionApiTest.*Tab* Review URL: http://codereview.chromium.org/7731004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103084 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_browser_event_router.cc')
-rw-r--r--chrome/browser/extensions/extension_browser_event_router.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc
index 661cdb4..66b3236 100644
--- a/chrome/browser/extensions/extension_browser_event_router.cc
+++ b/chrome/browser/extensions/extension_browser_event_router.cc
@@ -345,8 +345,41 @@ void ExtensionBrowserEventRouter::ActiveTabChanged(
std::string json_args;
base::JSONWriter::Write(&args, false, &json_args);
+ // The onTabSelectionChanged event has been deprecated by onActiveChanged.
DispatchEvent(new_contents->profile(), events::kOnTabSelectionChanged,
json_args);
+ DispatchEvent(new_contents->profile(), events::kOnTabActiveChanged,
+ json_args);
+}
+
+void ExtensionBrowserEventRouter::TabSelectionChanged(
+ TabStripModel* tab_strip_model,
+ const TabStripSelectionModel& old_model) {
+ TabStripSelectionModel::SelectedIndices new_selection =
+ tab_strip_model->selection_model().selected_indices();
+ ListValue* all = new ListValue();
+
+ for (size_t i = 0; i < new_selection.size(); ++i) {
+ int index = new_selection[i];
+ int tab_id = ExtensionTabUtil::GetTabId(
+ tab_strip_model->GetTabContentsAt(index)->tab_contents());
+ all->Append(Value::CreateIntegerValue(tab_id));
+ }
+
+ ListValue args;
+ DictionaryValue* select_info = new DictionaryValue();
+
+ select_info->Set(tab_keys::kWindowIdKey, Value::CreateIntegerValue(
+ ExtensionTabUtil::GetWindowIdOfTabStripModel(tab_strip_model)));
+
+ select_info->Set(tab_keys::kTabIdsKey, all);
+ args.Append(select_info);
+
+ std::string json_args;
+ base::JSONWriter::Write(&args, false, &json_args);
+
+ DispatchEvent(tab_strip_model->profile(), events::kOnTabHighlightChanged,
+ json_args);
}
void ExtensionBrowserEventRouter::TabMoved(TabContentsWrapper* contents,