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 d212cafc223bf329158f547c68b5884c1a69a766..9444773602bf56ba587bfb2b2cc499e9de6f6d4f 100644 |
| --- a/chrome/browser/extensions/api/tabs/tabs_api.cc |
| +++ b/chrome/browser/extensions/api/tabs/tabs_api.cc |
| @@ -181,6 +181,23 @@ void AssignOptionalValue(const scoped_ptr<T>& source, |
| } |
| } |
| +ui::WindowShowState ConvertToWindowShowState(windows::WindowState state) { |
| + switch (state) { |
| + case windows::WINDOW_STATE_NORMAL: |
| + return ui::SHOW_STATE_NORMAL; |
| + case windows::WINDOW_STATE_MINIMIZED: |
| + return ui::SHOW_STATE_MINIMIZED; |
| + case windows::WINDOW_STATE_MAXIMIZED: |
| + return ui::SHOW_STATE_MAXIMIZED; |
| + case windows::WINDOW_STATE_FULLSCREEN: |
| + return ui::SHOW_STATE_FULLSCREEN; |
| + case windows::WINDOW_STATE_NONE: |
| + return ui::SHOW_STATE_DEFAULT; |
| + } |
| + NOTREACHED(); |
| + return ui::SHOW_STATE_DEFAULT; |
| +} |
| + |
| } // namespace |
| void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode, |
| @@ -558,6 +575,10 @@ bool WindowsCreateFunction::RunSync() { |
| host_desktop_type); |
| } |
| create_params.initial_show_state = ui::SHOW_STATE_NORMAL; |
| + if (create_data && create_data->state) { |
| + create_params.initial_show_state = |
| + ConvertToWindowShowState(create_data->state); |
| + } |
| create_params.host_desktop_type = chrome::GetActiveDesktop(); |
| Browser* new_window = new Browser(create_params); |
| @@ -599,15 +620,24 @@ bool WindowsCreateFunction::RunSync() { |
| else |
| new_window->window()->ShowInactive(); |
| + WindowController* controller = new_window->extension_window_controller(); |
| + |
| + // TODO(limasdf): Minimize() should be removed after DesktopWindowTreeHostX11 |
|
tapted
2015/04/16 00:31:03
put this in
#if defined(OS_LINUX) && !defined(OS
|
| + // is able to create new window with minimized state. |
| + // See http://crbug.com/473228 |
| + if (create_params.initial_show_state == ui::SHOW_STATE_MINIMIZED) { |
| + new_window->window()->Minimize(); |
| + } else if (create_params.initial_show_state == ui::SHOW_STATE_FULLSCREEN) { |
| + controller->SetFullscreenMode(true, extension()->url()); |
| + } |
| + |
| if (new_window->profile()->IsOffTheRecord() && |
| !GetProfile()->IsOffTheRecord() && !include_incognito()) { |
| // Don't expose incognito windows if extension itself works in non-incognito |
| // profile and CanCrossIncognito isn't allowed. |
| SetResult(base::Value::CreateNullValue()); |
| } else { |
| - SetResult( |
| - new_window->extension_window_controller()->CreateWindowValueWithTabs( |
| - extension())); |
| + SetResult(controller->CreateWindowValueWithTabs(extension())); |
| } |
| return true; |
| @@ -623,26 +653,8 @@ bool WindowsUpdateFunction::RunSync() { |
| &controller)) |
| return false; |
| - ui::WindowShowState show_state = ui::SHOW_STATE_DEFAULT; // No change. |
| - switch (params->update_info.state) { |
| - case windows::WINDOW_STATE_NORMAL: |
| - show_state = ui::SHOW_STATE_NORMAL; |
| - break; |
| - case windows::WINDOW_STATE_MINIMIZED: |
| - show_state = ui::SHOW_STATE_MINIMIZED; |
| - break; |
| - case windows::WINDOW_STATE_MAXIMIZED: |
| - show_state = ui::SHOW_STATE_MAXIMIZED; |
| - break; |
| - case windows::WINDOW_STATE_FULLSCREEN: |
| - show_state = ui::SHOW_STATE_FULLSCREEN; |
| - break; |
| - case windows::WINDOW_STATE_NONE: |
| - break; |
| - default: |
| - error_ = keys::kInvalidWindowStateError; |
| - return false; |
| - } |
| + ui::WindowShowState show_state = |
| + ConvertToWindowShowState(params->update_info.state); |
| if (show_state != ui::SHOW_STATE_FULLSCREEN && |
| show_state != ui::SHOW_STATE_DEFAULT) |