Index: chrome/browser/extensions/api/tabs/windows_helper.cc |
diff --git a/chrome/browser/extensions/api/tabs/windows_helper.cc b/chrome/browser/extensions/api/tabs/windows_helper.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d0480efdc3799c3ab1b7d759e0f6b6a00b5046df |
--- /dev/null |
+++ b/chrome/browser/extensions/api/tabs/windows_helper.cc |
@@ -0,0 +1,44 @@ |
+// 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_helper.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" |
+ |
+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; |
+} |