Index: chrome/browser/extensions/extension_window_wrapper.cc |
diff --git a/chrome/browser/extensions/extension_window_wrapper.cc b/chrome/browser/extensions/extension_window_wrapper.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..298503996a9fd6ec1fce104f79db29f7f4355c23 |
--- /dev/null |
+++ b/chrome/browser/extensions/extension_window_wrapper.cc |
@@ -0,0 +1,91 @@ |
+// Copyright (c) 2011 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/extension_window_wrapper.h" |
+ |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/sessions/session_id.h" |
+#include "chrome/browser/ui/base_window.h" |
+ |
+ |
sky
2012/02/22 21:46:25
nit: only one newline.
stevenjb
2012/02/23 02:19:15
Done.
|
+/////////////////////////////////////////////////////////////////////////////// |
+// ExtensionWindowWrapper |
+ |
+ExtensionWindowWrapper::ExtensionWindowWrapper( |
+ BaseWindow* window, Profile* profile) : |
sky
2012/02/22 21:46:25
: on next line.
stevenjb
2012/02/23 02:19:15
Done.
|
+ window_(window), |
+ profile_(profile) { |
+} |
+ |
+bool ExtensionWindowWrapper::MatchesProfile( |
+ const Profile* match_profile, bool allow_incognito) const { |
+ return ((profile_ == match_profile) || |
+ (allow_incognito && |
+ (profile_->HasOffTheRecordProfile() && |
+ profile_->GetOffTheRecordProfile() == match_profile))); |
+} |
+ |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// ExtensionWindowWrapperList |
+ |
+// static |
+ExtensionWindowWrapperList* ExtensionWindowWrapperList::GetInstance() { |
+ return Singleton<ExtensionWindowWrapperList>::get(); |
+} |
+ |
+ExtensionWindowWrapperList::ExtensionWindowWrapperList() { |
+} |
+ |
+void ExtensionWindowWrapperList::AddExtensionWindow( |
+ ExtensionWindowWrapper* window) { |
+ windows_.push_back(window); |
+} |
+ |
+void ExtensionWindowWrapperList::RemoveExtensionWindow( |
+ ExtensionWindowWrapper* window) { |
+ WindowList::iterator iter = std::find( |
+ windows_.begin(), windows_.end(), window); |
+ if (iter != windows_.end()) |
+ windows_.erase(iter); |
+} |
+ |
+ExtensionWindowWrapper* ExtensionWindowWrapperList::FindWindowById( |
+ const Profile* profile, bool include_incognito, int id) const { |
+ for (WindowList::const_iterator iter = windows().begin(); |
+ iter != windows().end(); ++iter) { |
+ if ((*iter)->MatchesProfile(profile, include_incognito)) { |
+ if ((*iter)->GetSessionId().id() == id) |
sky
2012/02/22 21:46:25
nit: combine if statements.
stevenjb
2012/02/23 02:19:15
Done.
|
+ return *iter; |
+ } |
+ } |
+ return NULL; |
+} |
+ |
+ExtensionWindowWrapper* ExtensionWindowWrapperList::CurrentWindow( |
+ const Profile* profile, bool include_incognito) const { |
+ ExtensionWindowWrapper* result = NULL; |
+ // Returns either the focused window (if any), or the last window in the list. |
+ for (WindowList::const_iterator iter = windows().begin(); |
+ iter != windows().end(); ++iter) { |
+ if ((*iter)->MatchesProfile(profile, include_incognito)) { |
+ result = *iter; |
+ if (result->window()->IsActive()) |
+ break; // use focused window |
+ } |
+ } |
+ return result; |
+} |
+ |
+ExtensionWindowWrapper* ExtensionWindowWrapperList::FocusedWindow( |
+ const Profile* profile, bool include_incognito) const { |
+ for (WindowList::const_iterator iter = windows().begin(); |
+ iter != windows().end(); ++iter) { |
+ if ((*iter)->MatchesProfile(profile, include_incognito)) { |
sky
2012/02/22 21:46:25
nit: combine if
stevenjb
2012/02/23 02:19:15
Done.
|
+ if ((*iter)->window()->IsActive()) |
+ return *iter; |
+ } |
+ } |
+ return NULL; |
+} |