| 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 6e61976a90dc2547974783f0da2eca5b955f9d3d..09415f46f18b0180dec8f0a8b2af45a4530932a1 100644
|
| --- a/chrome/browser/extensions/extension_tabs_module.cc
|
| +++ b/chrome/browser/extensions/extension_tabs_module.cc
|
| @@ -253,6 +253,55 @@ bool CreateWindowFunction::RunImpl() {
|
| return true;
|
| }
|
|
|
| +bool UpdateWindowFunction::RunImpl() {
|
| + EXTENSION_FUNCTION_VALIDATE(args_->IsType(Value::TYPE_LIST));
|
| + const ListValue* args = static_cast<const ListValue*>(args_);
|
| + int window_id;
|
| + EXTENSION_FUNCTION_VALIDATE(args->GetInteger(0, &window_id));
|
| + DictionaryValue* update_props;
|
| + EXTENSION_FUNCTION_VALIDATE(args->GetDictionary(1, &update_props));
|
| +
|
| + Browser* browser = GetBrowserInProfileWithId(profile(), window_id, &error_);
|
| + if (!browser)
|
| + return false;
|
| +
|
| + gfx::Rect bounds = browser->window()->GetNormalBounds();
|
| + // Any part of the bounds can optionally be set by the caller.
|
| + int bounds_val;
|
| + if (update_props->HasKey(kLeftKey)) {
|
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(kLeftKey,
|
| + &bounds_val));
|
| + bounds.set_x(bounds_val);
|
| + }
|
| +
|
| + if (update_props->HasKey(kTopKey)) {
|
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(kTopKey,
|
| + &bounds_val));
|
| + bounds.set_y(bounds_val);
|
| + }
|
| +
|
| + if (update_props->HasKey(kWidthKey)) {
|
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(kWidthKey,
|
| + &bounds_val));
|
| + bounds.set_width(bounds_val);
|
| + }
|
| +
|
| + if (update_props->HasKey(kHeightKey)) {
|
| + EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(kHeightKey,
|
| + &bounds_val));
|
| + bounds.set_height(bounds_val);
|
| + }
|
| +
|
| + // TODO(rafaelw): This call to SetBounds() ends up resulting in the target
|
| + // window being activated (pushed to the front). On win32, this appears to be
|
| + // the result of HWND event handling.
|
| + browser->window()->SetBounds(bounds);
|
| + // TODO(rafaelw): Support |focused|.
|
| + result_.reset(CreateWindowValue(browser, false));
|
| +
|
| + return true;
|
| +}
|
| +
|
| bool RemoveWindowFunction::RunImpl() {
|
| int window_id;
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&window_id));
|
| @@ -576,10 +625,10 @@ static bool GetTabById(int tab_id, Profile* profile, Browser** browser,
|
| if (ExtensionTabUtil::GetTabById(tab_id, profile, browser, tab_strip,
|
| contents, tab_index))
|
| return true;
|
| -
|
| +
|
| if (error_message)
|
| *error_message = ExtensionErrorUtils::FormatErrorMessage(
|
| kTabNotFoundError, IntToString(tab_id));
|
| -
|
| +
|
| return false;
|
| }
|
|
|