Chromium Code Reviews| Index: chrome/browser/extensions/api/tabs/tabs_api.cc |
| diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc |
| index cbced11e5836c0bdddf8486a2ddc677eaf9f2c19..414d51881f4ae4c737f9b5d70410ad2dfb0fde56 100644 |
| --- a/chrome/browser/extensions/api/tabs/tabs_api.cc |
| +++ b/chrome/browser/extensions/api/tabs/tabs_api.cc |
| @@ -48,7 +48,6 @@ |
| #include "chrome/browser/ui/browser_navigator.h" |
| #include "chrome/browser/ui/browser_navigator_params.h" |
| #include "chrome/browser/ui/browser_window.h" |
| -#include "chrome/browser/ui/panels/panel_manager.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| #include "chrome/browser/ui/tabs/tab_utils.h" |
| #include "chrome/browser/ui/window_sizer/window_sizer.h" |
| @@ -506,10 +505,7 @@ bool WindowsCreateFunction::RunSync() { |
| } |
| Browser::Type window_type = Browser::TYPE_TABBED; |
| - bool create_panel = false; |
| - |
| - // panel_create_mode only applies if create_panel = true |
| - PanelManager::CreateMode panel_create_mode = PanelManager::CREATE_AS_DOCKED; |
| + bool create_chromeOS_panel = false; |
|
sky
2016/08/22 15:05:55
Style guide says all lower case, e.g. chrome_os_pa
stevenjb
2016/08/22 15:45:02
create_ash_panel would be best (see below). Also t
Dmitry Titov
2016/08/22 23:45:53
Done.
Dmitry Titov
2016/08/22 23:45:53
Done.
|
| gfx::Rect window_bounds; |
| bool focused = true; |
| @@ -524,23 +520,30 @@ bool WindowsCreateFunction::RunSync() { |
| window_type = Browser::TYPE_POPUP; |
| extension_id = extension()->id(); |
| break; |
| + |
| case windows::CREATE_TYPE_PANEL: |
| case windows::CREATE_TYPE_DETACHED_PANEL: { |
| +#if defined(OS_CHROMEOS) |
| + // Only ChromeOS' version of chrome.windows.create would create a panel |
| + // window. It is whitelisted to Hangouts extension for limited time until |
| + // it transitioned to other types of windows. |
| extension_id = extension()->id(); |
| - bool use_panels = PanelManager::ShouldUsePanels(extension_id); |
| - if (use_panels) { |
| - create_panel = true; |
| -#if !defined(USE_ASH) |
| - // Non-ash supports both docked and detached panel types. |
| - if (create_data->type == windows::CREATE_TYPE_DETACHED_PANEL) { |
| - panel_create_mode = PanelManager::CREATE_AS_DETACHED; |
| + for (const char* id : extension_misc::kHangoutsExtensionIds) { |
| + if (extension_id == id) { |
| + create_chromeOS_panel = true; |
| + break; |
| } |
| -#endif // USE_ASH |
| - } else { |
| - window_type = Browser::TYPE_POPUP; |
| } |
| +#endif // defined(OS_CHROMEOS) |
| + // Everything else gets POPUP instead of PANEL. |
| + // TODO(dimich): Eventually, remove the 'panel' values form valid |
| + // window.create parameters. However, this is a more breaking change, so |
| + // for now simply treat it as a POPUP. |
| + if (!create_chromeOS_panel) |
| + window_type = Browser::TYPE_POPUP; |
|
stevenjb
2016/08/22 15:45:02
Don't we need to set extension_id for non chrome o
Dmitry Titov
2016/08/22 23:45:54
Done.
|
| break; |
| } |
| + |
| case windows::CREATE_TYPE_NONE: |
| case windows::CREATE_TYPE_NORMAL: |
| break; |
| @@ -552,7 +555,7 @@ bool WindowsCreateFunction::RunSync() { |
| // Initialize default window bounds according to window type. |
| if (window_type == Browser::TYPE_TABBED || |
| window_type == Browser::TYPE_POPUP || |
| - create_panel) { |
| + create_chromeOS_panel) { |
| // Try to position the new browser relative to its originating |
| // browser window. The call offsets the bounds by kWindowTilePixels |
| // (defined in WindowSizer to be 10). |
| @@ -568,11 +571,6 @@ bool WindowsCreateFunction::RunSync() { |
| &show_state); |
| } |
| - if (create_panel && PanelManager::CREATE_AS_DETACHED == panel_create_mode) { |
| - window_bounds.set_origin( |
| - PanelManager::GetInstance()->GetDefaultDetachedPanelOrigin()); |
| - } |
| - |
| // Any part of the bounds can optionally be set by the caller. |
| if (create_data->left) |
| window_bounds.set_x(*create_data->left); |
| @@ -592,7 +590,7 @@ bool WindowsCreateFunction::RunSync() { |
| } |
| } |
| - if (create_panel) { |
| + if (create_chromeOS_panel) { |
| if (urls.empty()) |
| urls.push_back(GURL(chrome::kChromeUINewTabURL)); |
| @@ -615,30 +613,11 @@ bool WindowsCreateFunction::RunSync() { |
| SetResult(window_controller->CreateWindowValueWithTabs(extension())); |
| return true; |
| #else |
| - std::string title = |
| - web_app::GenerateApplicationNameFromExtensionId(extension_id); |
| - content::SiteInstance* source_site_instance = |
| - render_frame_host()->GetSiteInstance(); |
| - // Note: Panels ignore all but the first url provided. |
| - Panel* panel = PanelManager::GetInstance()->CreatePanel( |
| - title, window_profile, urls[0], source_site_instance, window_bounds, |
| - panel_create_mode); |
| - |
| - // Unlike other window types, Panels do not take focus by default. |
| - if (!saw_focus_key || !focused) |
| - panel->ShowInactive(); |
| - else |
| - panel->Show(); |
| - |
| - SetResult(panel->extension_window_controller()->CreateWindowValueWithTabs( |
| - extension())); |
| - return true; |
| + return false; |
| #endif |
| } |
| // Create a new BrowserWindow. |
| - if (create_panel) |
| - window_type = Browser::TYPE_POPUP; |
| Browser::CreateParams create_params(window_type, window_profile); |
| if (extension_id.empty()) { |
| create_params.initial_bounds = window_bounds; |
| @@ -662,10 +641,6 @@ bool WindowsCreateFunction::RunSync() { |
| navigate_params.source_site_instance = |
| render_frame_host()->GetSiteInstance(); |
| chrome::Navigate(&navigate_params); |
| - if (create_panel) { |
| - TabHelper::FromWebContents(navigate_params.target_contents) |
| - ->SetExtensionAppIconById(extension_id); |
| - } |
| } |
| WebContents* contents = NULL; |
| @@ -688,10 +663,6 @@ bool WindowsCreateFunction::RunSync() { |
| } |
| chrome::SelectNumberedTab(new_window, 0); |
| - // Unlike other window types, Panels do not take focus by default. |
| - if (!saw_focus_key && create_panel) |
| - focused = false; |
| - |
| if (focused) |
| new_window->window()->Show(); |
| else |