OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/tabs/tabs.h" | 5 #include "chrome/browser/extensions/api/tabs/tabs.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 // In windows 8 metro mode we don't allow windows to be created. | 231 // In windows 8 metro mode we don't allow windows to be created. |
232 if (base::win::IsMetroProcess()) | 232 if (base::win::IsMetroProcess()) |
233 use_existing_browser_window = true; | 233 use_existing_browser_window = true; |
234 #endif // OS_WIN | 234 #endif // OS_WIN |
235 | 235 |
236 Browser* new_window = NULL; | 236 Browser* new_window = NULL; |
237 if (use_existing_browser_window) | 237 if (use_existing_browser_window) |
238 // The false parameter passed below is to ensure that we find a browser | 238 // The false parameter passed below is to ensure that we find a browser |
239 // object matching the profile passed in, instead of the original profile | 239 // object matching the profile passed in, instead of the original profile |
240 new_window = browser::FindTabbedBrowser( | 240 new_window = browser::FindTabbedBrowser( |
241 profile, false, chrome::GetActiveDesktop()); | 241 profile, false, params.host_desktop_type); |
242 | 242 |
243 if (!new_window) | 243 if (!new_window) |
244 new_window = new Browser(params); | 244 new_window = new Browser(params); |
245 return new_window; | 245 return new_window; |
246 } | 246 } |
247 | 247 |
248 } // namespace | 248 } // namespace |
249 | 249 |
250 // Windows --------------------------------------------------------------------- | 250 // Windows --------------------------------------------------------------------- |
251 | 251 |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
608 if (extension_id.empty()) { | 608 if (extension_id.empty()) { |
609 create_params.initial_bounds = window_bounds; | 609 create_params.initial_bounds = window_bounds; |
610 } else { | 610 } else { |
611 create_params = Browser::CreateParams::CreateForApp( | 611 create_params = Browser::CreateParams::CreateForApp( |
612 window_type, | 612 window_type, |
613 web_app::GenerateApplicationNameFromExtensionId(extension_id), | 613 web_app::GenerateApplicationNameFromExtensionId(extension_id), |
614 window_bounds, | 614 window_bounds, |
615 window_profile); | 615 window_profile); |
616 } | 616 } |
617 create_params.initial_show_state = ui::SHOW_STATE_NORMAL; | 617 create_params.initial_show_state = ui::SHOW_STATE_NORMAL; |
| 618 create_params.host_desktop_type = chrome::GetActiveDesktop(); |
618 | 619 |
619 Browser* new_window = CreateBrowserWindow(create_params, window_profile, | 620 Browser* new_window = CreateBrowserWindow(create_params, window_profile, |
620 extension_id); | 621 extension_id); |
621 | 622 |
622 for (std::vector<GURL>::iterator i = urls.begin(); i != urls.end(); ++i) { | 623 for (std::vector<GURL>::iterator i = urls.begin(); i != urls.end(); ++i) { |
623 WebContents* tab = chrome::AddSelectedTabWithURL( | 624 WebContents* tab = chrome::AddSelectedTabWithURL( |
624 new_window, *i, content::PAGE_TRANSITION_LINK); | 625 new_window, *i, content::PAGE_TRANSITION_LINK); |
625 if (window_type == Browser::TYPE_PANEL) { | 626 if (window_type == Browser::TYPE_PANEL) { |
626 extensions::TabHelper::FromWebContents(tab)-> | 627 extensions::TabHelper::FromWebContents(tab)-> |
627 SetExtensionAppIconById(extension_id); | 628 SetExtensionAppIconById(extension_id); |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
990 if (args->HasKey(keys::kWindowIdKey)) | 991 if (args->HasKey(keys::kWindowIdKey)) |
991 EXTENSION_FUNCTION_VALIDATE(args->GetInteger( | 992 EXTENSION_FUNCTION_VALIDATE(args->GetInteger( |
992 keys::kWindowIdKey, &window_id)); | 993 keys::kWindowIdKey, &window_id)); |
993 | 994 |
994 Browser* browser = NULL; | 995 Browser* browser = NULL; |
995 if (!GetBrowserFromWindowID(this, window_id, &browser)) | 996 if (!GetBrowserFromWindowID(this, window_id, &browser)) |
996 return false; | 997 return false; |
997 | 998 |
998 // Ensure the selected browser is tabbed. | 999 // Ensure the selected browser is tabbed. |
999 if (!browser->is_type_tabbed() && browser->IsAttemptingToCloseBrowser()) | 1000 if (!browser->is_type_tabbed() && browser->IsAttemptingToCloseBrowser()) |
1000 browser = browser::FindTabbedBrowserDeprecated(profile(), | 1001 browser = browser::FindTabbedBrowser(profile(), include_incognito(), |
1001 include_incognito()); | 1002 browser->host_desktop_type()); |
1002 | 1003 |
1003 if (!browser || !browser->window()) | 1004 if (!browser || !browser->window()) |
1004 return false; | 1005 return false; |
1005 | 1006 |
1006 // TODO(jstritar): Add a constant, chrome.tabs.TAB_ID_ACTIVE, that | 1007 // TODO(jstritar): Add a constant, chrome.tabs.TAB_ID_ACTIVE, that |
1007 // represents the active tab. | 1008 // represents the active tab. |
1008 WebContents* opener = NULL; | 1009 WebContents* opener = NULL; |
1009 if (args->HasKey(keys::kOpenerTabIdKey)) { | 1010 if (args->HasKey(keys::kOpenerTabIdKey)) { |
1010 int opener_id = -1; | 1011 int opener_id = -1; |
1011 EXTENSION_FUNCTION_VALIDATE(args->GetInteger( | 1012 EXTENSION_FUNCTION_VALIDATE(args->GetInteger( |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 bool pinned = false; | 1058 bool pinned = false; |
1058 if (args->HasKey(keys::kPinnedKey)) | 1059 if (args->HasKey(keys::kPinnedKey)) |
1059 EXTENSION_FUNCTION_VALIDATE(args->GetBoolean(keys::kPinnedKey, &pinned)); | 1060 EXTENSION_FUNCTION_VALIDATE(args->GetBoolean(keys::kPinnedKey, &pinned)); |
1060 | 1061 |
1061 // We can't load extension URLs into incognito windows unless the extension | 1062 // We can't load extension URLs into incognito windows unless the extension |
1062 // uses split mode. Special case to fall back to a tabbed window. | 1063 // uses split mode. Special case to fall back to a tabbed window. |
1063 if (url.SchemeIs(extensions::kExtensionScheme) && | 1064 if (url.SchemeIs(extensions::kExtensionScheme) && |
1064 !GetExtension()->incognito_split_mode() && | 1065 !GetExtension()->incognito_split_mode() && |
1065 browser->profile()->IsOffTheRecord()) { | 1066 browser->profile()->IsOffTheRecord()) { |
1066 Profile* profile = browser->profile()->GetOriginalProfile(); | 1067 Profile* profile = browser->profile()->GetOriginalProfile(); |
1067 browser = browser::FindTabbedBrowserDeprecated(profile, false); | 1068 chrome::HostDesktopType desktop_type = browser->host_desktop_type(); |
| 1069 |
| 1070 browser = browser::FindTabbedBrowser(profile, false, desktop_type); |
1068 if (!browser) { | 1071 if (!browser) { |
1069 browser = new Browser(Browser::CreateParams(profile)); | 1072 browser = new Browser(Browser::CreateParams(Browser::TYPE_TABBED, |
| 1073 profile, desktop_type)); |
1070 browser->window()->Show(); | 1074 browser->window()->Show(); |
1071 } | 1075 } |
1072 } | 1076 } |
1073 | 1077 |
1074 // If index is specified, honor the value, but keep it bound to | 1078 // If index is specified, honor the value, but keep it bound to |
1075 // -1 <= index <= tab_strip->count() where -1 invokes the default behavior. | 1079 // -1 <= index <= tab_strip->count() where -1 invokes the default behavior. |
1076 int index = -1; | 1080 int index = -1; |
1077 if (args->HasKey(keys::kIndexKey)) | 1081 if (args->HasKey(keys::kIndexKey)) |
1078 EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kIndexKey, &index)); | 1082 EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kIndexKey, &index)); |
1079 | 1083 |
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1870 // called for every API call the extension made. | 1874 // called for every API call the extension made. |
1871 GotLanguage(language); | 1875 GotLanguage(language); |
1872 } | 1876 } |
1873 | 1877 |
1874 void DetectTabLanguageFunction::GotLanguage(const std::string& language) { | 1878 void DetectTabLanguageFunction::GotLanguage(const std::string& language) { |
1875 SetResult(Value::CreateStringValue(language.c_str())); | 1879 SetResult(Value::CreateStringValue(language.c_str())); |
1876 SendResponse(true); | 1880 SendResponse(true); |
1877 | 1881 |
1878 Release(); // Balanced in Run() | 1882 Release(); // Balanced in Run() |
1879 } | 1883 } |
OLD | NEW |