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..4d4bd7d084346fe9fc68f65ab57182952101a7da 100644 |
| --- a/chrome/browser/extensions/extension_tabs_module.cc |
| +++ b/chrome/browser/extensions/extension_tabs_module.cc |
| @@ -470,7 +470,7 @@ bool CreateWindowFunction::RunImpl() { |
| } |
| extension_id = GetExtension()->id(); |
| } else if (type_str != keys::kWindowTypeValueNormal) { |
| - EXTENSION_FUNCTION_VALIDATE(false); |
| + EXTENSION_FUNCTION_ERROR(keys::kInvalidWindowTypeError); |
| } |
| } |
| } |
| @@ -530,8 +530,38 @@ bool UpdateWindowFunction::RunImpl() { |
| return false; |
| } |
| + 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_ERROR(keys::kInvalidWindowStateError); |
| + } |
| + |
| + switch (show_state) { |
| + case ui::SHOW_STATE_MINIMIZED: |
| + browser->window()->Minimize(); |
| + break; |
| + case ui::SHOW_STATE_MAXIMIZED: |
| + browser->window()->Maximize(); |
| + break; |
| + case ui::SHOW_STATE_NORMAL: |
| + browser->window()->Restore(); |
| + break; |
| + default: |
| + break; |
| + } |
| + |
| 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)) { |
| @@ -565,17 +595,30 @@ bool UpdateWindowFunction::RunImpl() { |
| bounds.set_height(bounds_val); |
| set_bounds = true; |
| } |
| - if (set_bounds) |
| - browser->window()->SetBounds(bounds); |
| + |
| + if (set_bounds) { |
| + if (show_state == ui::SHOW_STATE_MINIMIZED || |
| + show_state == ui::SHOW_STATE_MAXIMIZED) |
| + EXTENSION_FUNCTION_ERROR(keys::kInvalidWindowStateError); |
| + else |
| + 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) |
| + EXTENSION_FUNCTION_ERROR(keys::kInvalidWindowStateError); |
| + else |
| + browser->window()->Activate(); |
| + } else { |
| + if (show_state == ui::SHOW_STATE_MAXIMIZED) |
| + EXTENSION_FUNCTION_ERROR(keys::kInvalidWindowStateError); |
|
asargent_no_longer_on_chrome
2011/11/21 19:04:05
nit: EXTENSION_FUNCTION_ERROR sets bad_message_ =
|
| + else |
| + browser->window()->Deactivate(); |
| + } |
| } |
| bool draw_attention = false; |