diff options
Diffstat (limited to 'chrome')
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 |