diff options
Diffstat (limited to 'chromium/components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc')
-rw-r--r-- | chromium/components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/chromium/components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc b/chromium/components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc new file mode 100644 index 00000000000..aa0626cbfd4 --- /dev/null +++ b/chromium/components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc @@ -0,0 +1,64 @@ +// Copyright 2016 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 "components/ntp_snippets/sessions/tab_delegate_sync_adapter.h" + +#include "components/sync/driver/sync_service.h" +#include "components/sync_sessions/open_tabs_ui_delegate.h" + +using syncer::SyncService; +using sync_sessions::OpenTabsUIDelegate; + +namespace ntp_snippets { + +TabDelegateSyncAdapter::TabDelegateSyncAdapter(SyncService* sync_service) + : sync_service_(sync_service) { + sync_service_->AddObserver(this); +} + +TabDelegateSyncAdapter::~TabDelegateSyncAdapter() { + sync_service_->RemoveObserver(this); +} + +bool TabDelegateSyncAdapter::HasSessionsData() { + // GetOpenTabsUIDelegate will be a nullptr if sync has not started, or if the + // sessions data type is not enabled. + return sync_service_->GetOpenTabsUIDelegate() != nullptr; +} + +std::vector<const sync_sessions::SyncedSession*> +TabDelegateSyncAdapter::GetAllForeignSessions() { + std::vector<const sync_sessions::SyncedSession*> sessions; + OpenTabsUIDelegate* delegate = sync_service_->GetOpenTabsUIDelegate(); + if (delegate != nullptr) { + // The return bool from GetAllForeignSessions(...) is ignored. + delegate->GetAllForeignSessions(&sessions); + } + return sessions; +} + +void TabDelegateSyncAdapter::SubscribeForForeignTabChange( + const base::Closure& change_callback) { + DCHECK(change_callback_.is_null()); + change_callback_ = change_callback; +} + +void TabDelegateSyncAdapter::OnStateChanged() { + // Ignored. +} + +void TabDelegateSyncAdapter::OnSyncConfigurationCompleted() { + InvokeCallback(); +} + +void TabDelegateSyncAdapter::OnForeignSessionUpdated() { + InvokeCallback(); +} + +void TabDelegateSyncAdapter::InvokeCallback() { + if (!change_callback_.is_null()) + change_callback_.Run(); +} + +} // namespace ntp_snippets |