Chromium Code Reviews| Index: chrome/browser/extensions/api/tabs/windows_util.cc |
| diff --git a/chrome/browser/extensions/api/tabs/windows_util.cc b/chrome/browser/extensions/api/tabs/windows_util.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..29f43a004f709d09a962847e238dce6b60d10657 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/api/tabs/windows_util.cc |
| @@ -0,0 +1,48 @@ |
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/extensions/api/tabs/windows_util.h" |
| + |
| +#include "base/strings/string_number_conversions.h" |
| +#include "chrome/browser/extensions/api/tabs/tabs_constants.h" |
| +#include "chrome/browser/extensions/extension_function.h" |
| +#include "chrome/browser/extensions/extension_function_dispatcher.h" |
| +#include "chrome/browser/extensions/window_controller.h" |
| +#include "chrome/browser/extensions/window_controller_list.h" |
| +#include "extensions/common/error_utils.h" |
| + |
| +namespace windows_util { |
| + |
|
not at google - send to devlin
2013/08/15 20:16:24
comment here would be nice
Kristen Dwan
2013/08/16 22:03:06
put one in header.
|
| +bool GetWindowFromWindowID(UIThreadExtensionFunction* function, |
| + int window_id, |
| + extensions::WindowController** controller) { |
| + if (window_id == extension_misc::kCurrentWindowId) { |
| + extensions::WindowController* extension_window_controller = |
| + function->dispatcher()->delegate()->GetExtensionWindowController(); |
| + // If there is a window controller associated with this extension, use that. |
| + if (extension_window_controller) { |
| + *controller = extension_window_controller; |
| + } else { |
| + // Otherwise get the focused or most recently added window. |
| + *controller = extensions::WindowControllerList::GetInstance()-> |
| + CurrentWindowForFunction(function); |
| + } |
| + if (!(*controller)) { |
| + function->SetError(extensions::tabs_constants::kNoCurrentWindowError); |
| + return false; |
| + } |
| + } else { |
| + *controller = extensions::WindowControllerList::GetInstance()-> |
| + FindWindowForFunctionById(function, window_id); |
| + if (!(*controller)) { |
| + function->SetError(extensions::ErrorUtils::FormatErrorMessage( |
| + extensions::tabs_constants::kWindowNotFoundError, |
| + base::IntToString(window_id))); |
| + return false; |
| + } |
| + } |
| + return true; |
| +} |
| + |
| +} // namespace windows_util |