Chromium Code Reviews| Index: chrome/browser/extensions/extension_tabs_module.cc |
| diff --git a/chrome/browser/extensions/extension_tabs_module.cc b/chrome/browser/extensions/extension_tabs_module.cc |
| index f493f1b2c7f221d160f2f0164c7485666b2ebe87..e7196678298480b8221642d9eff1aa9a2e948273 100644 |
| --- a/chrome/browser/extensions/extension_tabs_module.cc |
| +++ b/chrome/browser/extensions/extension_tabs_module.cc |
| @@ -530,52 +530,81 @@ bool UpdateWindowFunction::RunImpl() { |
| return false; |
| } |
| - gfx::Rect bounds = browser->window()->GetRestoredBounds(); |
| - bool set_bounds = false; |
| - // Any part of the bounds can optionally be set by the caller. |
| - int bounds_val; |
| - if (update_props->HasKey(keys::kLeftKey)) { |
| - EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| - keys::kLeftKey, |
| - &bounds_val)); |
| - bounds.set_x(bounds_val); |
| - set_bounds = true; |
| - } |
| - |
| - if (update_props->HasKey(keys::kTopKey)) { |
| - EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| - keys::kTopKey, |
| - &bounds_val)); |
| - bounds.set_y(bounds_val); |
| - set_bounds = true; |
| - } |
| - |
| - if (update_props->HasKey(keys::kWidthKey)) { |
| - EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| - keys::kWidthKey, |
| - &bounds_val)); |
| - bounds.set_width(bounds_val); |
| - set_bounds = true; |
| - } |
| - |
| - if (update_props->HasKey(keys::kHeightKey)) { |
| - EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| - keys::kHeightKey, |
| - &bounds_val)); |
| - bounds.set_height(bounds_val); |
| - set_bounds = true; |
| - } |
| - if (set_bounds) |
| - browser->window()->SetBounds(bounds); |
| + ui::WindowShowState show_state = ui::SHOW_STATE_DEFAULT; // No change. |
| + std::string state_str; |
| + if (update_props->HasKey(keys::kShowStateKey)) { |
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetString(keys::kShowStateKey, |
| + &state_str)); |
| + if (state_str == keys::kShowStateValueNormal) |
| + show_state = ui::SHOW_STATE_NORMAL; |
| + else if (state_str == keys::kShowStateValueMinimized) |
| + show_state = ui::SHOW_STATE_MINIMIZED; |
| + else if (state_str == keys::kShowStateValueMaximized) |
| + show_state = ui::SHOW_STATE_MAXIMIZED; |
| + else |
| + EXTENSION_FUNCTION_VALIDATE(false); |
|
asargent_no_longer_on_chrome
2011/11/18 18:52:24
nit: instead of EXTENSION_FUNCTION_VALIDATE(false
jennb
2011/11/19 01:44:33
Done.
|
| + } |
| + |
| + // Bounds information is ignored if minimized or maximized state is requested. |
|
asargent_no_longer_on_chrome
2011/11/18 18:52:24
Instead of ignoring, I wonder if it would make sen
jennb
2011/11/19 01:44:33
Done.
|
| + if (show_state == ui::SHOW_STATE_MINIMIZED) { |
| + browser->window()->Minimize(); |
| + } else if (show_state == ui::SHOW_STATE_MAXIMIZED) { |
| + browser->window()->Maximize(); |
| + } else { |
| + if (show_state == ui::SHOW_STATE_NORMAL) |
| + browser->window()->Restore(); |
| + |
| + gfx::Rect bounds = browser->window()->GetRestoredBounds(); |
| + bool set_bounds = false; |
| + |
| + // Any part of the bounds can optionally be set by the caller. |
| + int bounds_val; |
| + if (update_props->HasKey(keys::kLeftKey)) { |
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| + keys::kLeftKey, |
| + &bounds_val)); |
| + bounds.set_x(bounds_val); |
| + set_bounds = true; |
| + } |
| + |
| + if (update_props->HasKey(keys::kTopKey)) { |
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| + keys::kTopKey, |
| + &bounds_val)); |
| + bounds.set_y(bounds_val); |
| + set_bounds = true; |
| + } |
| + |
| + if (update_props->HasKey(keys::kWidthKey)) { |
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| + keys::kWidthKey, |
| + &bounds_val)); |
| + bounds.set_width(bounds_val); |
| + set_bounds = true; |
| + } |
| + |
| + if (update_props->HasKey(keys::kHeightKey)) { |
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger( |
| + keys::kHeightKey, |
| + &bounds_val)); |
| + bounds.set_height(bounds_val); |
| + set_bounds = true; |
| + } |
| + if (set_bounds) |
| + browser->window()->SetBounds(bounds); |
| + } |
| bool active_val = false; |
| if (update_props->HasKey(keys::kFocusedKey)) { |
| EXTENSION_FUNCTION_VALIDATE(update_props->GetBoolean( |
| keys::kFocusedKey, &active_val)); |
| - if (active_val) |
| - browser->window()->Activate(); |
| - else |
| - browser->window()->Deactivate(); |
| + if (active_val) { |
| + if (show_state != ui::SHOW_STATE_MINIMIZED) |
| + browser->window()->Activate(); |
| + } else { |
| + if (show_state != ui::SHOW_STATE_MAXIMIZED) |
| + browser->window()->Deactivate(); |
| + } |
|
asargent_no_longer_on_chrome
2011/11/18 18:52:24
Same question here: would it be better to return a
jennb
2011/11/19 01:44:33
Done.
|
| } |
| bool draw_attention = false; |