summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/extensions/api/tabs/tabs_api.cc3
-rw-r--r--chrome/test/data/extensions/api_test/tabs/basics/crud2.js15
2 files changed, 17 insertions, 1 deletions
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
index 2d967b3..d355a07 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -672,7 +672,8 @@ bool WindowsCreateFunction::RunImpl() {
TabStripModel* target_tab_strip = new_window->tab_strip_model();
target_tab_strip->InsertWebContentsAt(urls.size(), contents,
TabStripModel::ADD_NONE);
- } else if (urls.empty()) {
+ } else if (urls.empty() && window_type != Browser::TYPE_POPUP) {
+ // Don't create a new tab when it is intended to create an empty popup.
chrome::NewTab(new_window);
}
chrome::SelectNumberedTab(new_window, 0);
diff --git a/chrome/test/data/extensions/api_test/tabs/basics/crud2.js b/chrome/test/data/extensions/api_test/tabs/basics/crud2.js
index 300ac72..8ffedb3 100644
--- a/chrome/test/data/extensions/api_test/tabs/basics/crud2.js
+++ b/chrome/test/data/extensions/api_test/tabs/basics/crud2.js
@@ -136,5 +136,20 @@ chrome.test.runTests([
assertEq(window.id, tab.windowId);
}));
}));
+ },
+
+ // An empty popup window does not contain any tabs and the number of tabs
+ // before and after creation should be the same.
+ function testOpenEmptyPopup() {
+ chrome.tabs.query({}, pass(function(tabs) {
+ var tabsCountBefore = tabs.length;
+ chrome.windows.create({type: 'popup'}, pass(function(window) {
+ assertEq(window.tabs.length, 0);
+ chrome.tabs.query({}, pass(function(tabs) {
+ assertEq(tabsCountBefore, tabs.length);
+ }));
+ }));
+ }));
}
+
]);