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 229d89aaed2445c1b428504800768e261b4dedac..f7052324d63bc67c8978b2f1b76728736f6db8b2 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::State state) { |
| + switch (state) { |
| + case windows::STATE_NORMAL: |
| + return ui::SHOW_STATE_NORMAL; |
| + case windows::STATE_MINIMIZED: |
| + return ui::SHOW_STATE_MINIMIZED; |
| + case windows::STATE_MAXIMIZED: |
| + return ui::SHOW_STATE_MAXIMIZED; |
| + case windows::STATE_FULLSCREEN: |
| + return ui::SHOW_STATE_FULLSCREEN; |
| + case windows::STATE_NONE: |
| + return ui::SHOW_STATE_DEFAULT; |
| + } |
| + NOTREACHED(); |
| + return ui::SHOW_STATE_DEFAULT; |
| +} |
| + |
| } // namespace |
| void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode, |
| @@ -559,6 +576,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); |
| @@ -595,20 +616,28 @@ bool WindowsCreateFunction::RunSync() { |
| if (!saw_focus_key && create_panel) |
| focused = false; |
| + WindowController* controller = new_window->extension_window_controller(); |
| + // Start being fullscreen before Show(). This make the window looks like |
| + // initialy fullscreen. |
| + if (create_params.initial_show_state == ui::SHOW_STATE_FULLSCREEN) |
| + controller->SetFullscreenMode(true, extension()->url()); |
| + |
| if (focused) |
| new_window->window()->Show(); |
| else |
| new_window->window()->ShowInactive(); |
| + // Make window minimized. Because Window can't be initially minimized. |
| + if (create_params.initial_show_state == ui::SHOW_STATE_MINIMIZED) |
| + new_window->window()->Minimize(); |
|
tapted
2015/04/01 03:41:55
These additions still don't look right to me.
On
limasdf
2015/04/01 23:59:45
Yeah. views::Widget::Show() make newly made window
limasdf
2015/04/02 16:57:48
I found that minimized window creation from X11 is
tapted
2015/04/15 00:36:12
So is it just X11 that's affected?
reading Deskto
limasdf
2015/04/15 23:34:49
About creation of minimized window, Only X11 doesn
tapted
2015/04/16 00:31:03
For Windows and fullscreen, I've seen this too. Se
|
| + |
| 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; |
| @@ -624,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::Update::Params::UpdateInfo::STATE_NORMAL: |
| - show_state = ui::SHOW_STATE_NORMAL; |
| - break; |
| - case windows::Update::Params::UpdateInfo::STATE_MINIMIZED: |
| - show_state = ui::SHOW_STATE_MINIMIZED; |
| - break; |
| - case windows::Update::Params::UpdateInfo::STATE_MAXIMIZED: |
| - show_state = ui::SHOW_STATE_MAXIMIZED; |
| - break; |
| - case windows::Update::Params::UpdateInfo::STATE_FULLSCREEN: |
| - show_state = ui::SHOW_STATE_FULLSCREEN; |
| - break; |
| - case windows::Update::Params::UpdateInfo::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) |