summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/sync/glue/synced_window_delegate_android.cc30
-rw-r--r--chrome/browser/sync/glue/synced_window_delegate_registry.cc33
-rw-r--r--chrome/browser/sync/glue/synced_window_delegate_registry.h27
-rw-r--r--chrome/chrome_browser.gypi5
4 files changed, 95 insertions, 0 deletions
diff --git a/chrome/browser/sync/glue/synced_window_delegate_android.cc b/chrome/browser/sync/glue/synced_window_delegate_android.cc
new file mode 100644
index 0000000..20feece
--- /dev/null
+++ b/chrome/browser/sync/glue/synced_window_delegate_android.cc
@@ -0,0 +1,30 @@
+// Copyright (c) 2012 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/sync/glue/synced_window_delegate.h"
+
+#include "chrome/browser/sessions/session_id.h"
+#include "chrome/browser/sync/glue/synced_window_delegate_registry.h"
+
+namespace browser_sync {
+
+const std::set<SyncedWindowDelegate*>
+ SyncedWindowDelegate::GetSyncedWindowDelegates() {
+ return SyncedWindowDelegateRegistry::GetSyncedWindowDelegates();
+}
+
+const SyncedWindowDelegate*
+ SyncedWindowDelegate::FindSyncedWindowDelegateWithId(
+ SessionID::id_type session_id) {
+ std::set<SyncedWindowDelegate*> window =
+ SyncedWindowDelegateRegistry::GetSyncedWindowDelegates();
+ for (std::set<SyncedWindowDelegate*>::const_iterator i =
+ window.begin(); i != window.end(); ++i) {
+ if ((*i)->GetSessionId() == session_id)
+ return *i;
+ }
+ return NULL;
+}
+
+} // namespace browser_sync
diff --git a/chrome/browser/sync/glue/synced_window_delegate_registry.cc b/chrome/browser/sync/glue/synced_window_delegate_registry.cc
new file mode 100644
index 0000000..c077f12
--- /dev/null
+++ b/chrome/browser/sync/glue/synced_window_delegate_registry.cc
@@ -0,0 +1,33 @@
+// Copyright (c) 2012 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/sync/glue/synced_window_delegate_registry.h"
+
+#include "base/lazy_instance.h"
+#include "chrome/browser/sync/glue/synced_window_delegate.h"
+
+namespace browser_sync {
+
+namespace {
+base::LazyInstance<std::set<SyncedWindowDelegate*> >::Leaky g_delegates =
+ LAZY_INSTANCE_INITIALIZER;
+} // namespace
+
+/* static */
+void SyncedWindowDelegateRegistry::Register(SyncedWindowDelegate* delegate) {
+ g_delegates.Pointer()->insert(delegate);
+}
+
+/* static */
+void SyncedWindowDelegateRegistry::Unregister(SyncedWindowDelegate* delegate) {
+ g_delegates.Pointer()->erase(delegate);
+}
+
+/* static */
+const std::set<SyncedWindowDelegate*>&
+SyncedWindowDelegateRegistry::GetSyncedWindowDelegates() {
+ return g_delegates.Get();
+}
+
+} // namespace browser_sync
diff --git a/chrome/browser/sync/glue/synced_window_delegate_registry.h b/chrome/browser/sync/glue/synced_window_delegate_registry.h
new file mode 100644
index 0000000..7b39e95
--- /dev/null
+++ b/chrome/browser/sync/glue/synced_window_delegate_registry.h
@@ -0,0 +1,27 @@
+// Copyright (c) 2012 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.
+
+#ifndef CHROME_BROWSER_SYNC_GLUE_SYNCED_WINDOW_DELEGATE_REGISTRY_H_
+#define CHROME_BROWSER_SYNC_GLUE_SYNCED_WINDOW_DELEGATE_REGISTRY_H_
+#pragma once
+
+#include <set>
+
+namespace browser_sync {
+
+class SyncedWindowDelegate;
+
+// A location to register SyncedWindowDelegates such that Android can provide
+// pseudo-browsers for the purposes of Sync without having a dependency from
+// sync onto Android's model of a browser.
+class SyncedWindowDelegateRegistry {
+ public:
+ static const std::set<SyncedWindowDelegate*>& GetSyncedWindowDelegates();
+ static void Register(SyncedWindowDelegate* delegate);
+ static void Unregister(SyncedWindowDelegate* delegate);
+};
+
+} // namespace browser_sync
+
+#endif // CHROME_BROWSER_SYNC_GLUE_SYNCED_WINDOW_DELEGATE_REGISTRY_H_
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index e1bebe4..f592669 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -2131,6 +2131,7 @@
'browser/sync/glue/synced_session.h',
'browser/sync/glue/synced_session.cc',
'browser/sync/glue/synced_window_delegate.h',
+ 'browser/sync/glue/synced_window_delegate_android.cc',
'browser/sync/glue/sync_backend_host.cc',
'browser/sync/glue/sync_backend_host.h',
'browser/sync/glue/sync_backend_registrar.cc',
@@ -4459,6 +4460,10 @@
],
}],
['OS=="android"', {
+ 'sources': [
+ 'browser/sync/glue/synced_window_delegate_registry.cc',
+ 'browser/sync/glue/synced_window_delegate_registry.h',
+ ],
'sources!': [
'browser/bookmarks/bookmark_context_menu_controller.cc',
# Bookmark export/import are handled via the BookmarkColumns