| 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 a3868fa496ff9da8caff15d9cb7df8d78abbabc6..ea1d3bec032e65984563c3df30945471b4494c94 100644
|
| --- a/chrome/browser/extensions/extension_tabs_module.cc
|
| +++ b/chrome/browser/extensions/extension_tabs_module.cc
|
| @@ -164,12 +164,20 @@ bool GetWindowFunction::RunImpl() {
|
|
|
| bool GetCurrentWindowFunction::RunImpl() {
|
| Browser* browser = dispatcher_->GetBrowser();
|
| + if (!browser) {
|
| + error_ = keys::kNoCurrentWindowError;
|
| + return false;
|
| + }
|
| result_.reset(CreateWindowValue(browser, false));
|
| return true;
|
| }
|
|
|
| bool GetLastFocusedWindowFunction::RunImpl() {
|
| Browser* browser = BrowserList::GetLastActiveWithProfile(profile());
|
| + if (!browser) {
|
| + error_ = keys::kNoLastFocusedWindowError;
|
| + return false;
|
| + }
|
| result_.reset(CreateWindowValue(browser, false));
|
| return true;
|
| }
|
| @@ -218,7 +226,10 @@ bool CreateWindowFunction::RunImpl() {
|
| gfx::Rect bounds;
|
| bool maximized;
|
| // The call offsets the bounds by kWindowTilePixels (defined in WindowSizer to
|
| - // be 10).
|
| + // be 10)
|
| + //
|
| + // NOTE(rafaelw): It's ok if dispatcher_->GetBrowser() returns NULL here.
|
| + // GetBrowserWindowBounds will default to saved "default" values for the app.
|
| WindowSizer::GetBrowserWindowBounds(std::wstring(), empty_bounds,
|
| dispatcher_->GetBrowser(), &bounds,
|
| &maximized);
|
| @@ -309,9 +320,6 @@ bool UpdateWindowFunction::RunImpl() {
|
| 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));
|
| @@ -342,16 +350,21 @@ bool GetSelectedTabFunction::RunImpl() {
|
| if (!args_->IsType(Value::TYPE_NULL)) {
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&window_id));
|
| browser = GetBrowserInProfileWithId(profile(), window_id, &error_);
|
| - if (!browser)
|
| - return false;
|
| } else {
|
| browser = dispatcher_->GetBrowser();
|
| + if (!browser)
|
| + error_ = keys::kNoCurrentWindowError;
|
| }
|
| + if (!browser)
|
| + return false;
|
|
|
| TabStripModel* tab_strip = browser->tabstrip_model();
|
| - result_.reset(ExtensionTabUtil::CreateTabValue(
|
| - tab_strip->GetSelectedTabContents(),
|
| - tab_strip,
|
| + TabContents* contents = tab_strip->GetSelectedTabContents();
|
| + if (!contents) {
|
| + error_ = keys::kNoSelectedTabError;
|
| + return false;
|
| + }
|
| + result_.reset(ExtensionTabUtil::CreateTabValue(contents, tab_strip,
|
| tab_strip->selected_index()));
|
| return true;
|
| }
|
| @@ -363,11 +376,13 @@ bool GetAllTabsInWindowFunction::RunImpl() {
|
| if (!args_->IsType(Value::TYPE_NULL)) {
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&window_id));
|
| browser = GetBrowserInProfileWithId(profile(), window_id, &error_);
|
| - if (!browser)
|
| - return false;
|
| } else {
|
| browser = dispatcher_->GetBrowser();
|
| + if (!browser)
|
| + error_ = keys::kNoCurrentWindowError;
|
| }
|
| + if (!browser)
|
| + return false;
|
|
|
| result_.reset(CreateTabList(browser));
|
|
|
| @@ -385,11 +400,13 @@ bool CreateTabFunction::RunImpl() {
|
| EXTENSION_FUNCTION_VALIDATE(args->GetInteger(
|
| keys::kWindowIdKey, &window_id));
|
| browser = GetBrowserInProfileWithId(profile(), window_id, &error_);
|
| - if (!browser)
|
| - return false;
|
| } else {
|
| - browser = dispatcher_->GetBrowser();
|
| + browser = dispatcher_->GetBrowser();
|
| + if (!browser)
|
| + error_ = keys::kNoCurrentWindowError;
|
| }
|
| + if (!browser)
|
| + return false;
|
|
|
| TabStripModel* tab_strip = browser->tabstrip_model();
|
|
|
|
|