diff options
-rw-r--r-- | chrome/browser/extensions/api/tabs/tabs_api.cc | 3 | ||||
-rw-r--r-- | chrome/test/data/extensions/api_test/tabs/basics/crud2.js | 15 |
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); + })); + })); + })); } + ]); |