Index: components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc |
diff --git a/components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc b/components/ntp_snippets/sessions/tab_delegate_sync_adapter.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..954c24e8f9cf6ae80199b5c8a6c7ab54a20ef7e3 |
--- /dev/null |
+++ b/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 sync_driver::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 |