Index: chrome/browser/sync/sessions/sync_sessions_multi_windowed_web_contents_router.cc |
diff --git a/chrome/browser/sync/sessions/sync_sessions_multi_windowed_web_contents_router.cc b/chrome/browser/sync/sessions/sync_sessions_multi_windowed_web_contents_router.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..36ae222c430a234b36d576d985f3b751779ebd5a |
--- /dev/null |
+++ b/chrome/browser/sync/sessions/sync_sessions_multi_windowed_web_contents_router.cc |
@@ -0,0 +1,57 @@ |
+// Copyright 2017 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/sessions/sync_sessions_multi_windowed_web_contents_router.h" |
+ |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/browser_list.h" |
+#include "chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h" |
+#include "chrome/browser/ui/tabs/tab_strip_model.h" |
+ |
+namespace sync_sessions { |
+ |
+SyncSessionsMultiWindowedWebContentsRouter:: |
+ SyncSessionsMultiWindowedWebContentsRouter(Profile* profile) |
+ : SyncSessionsWebContentsRouter(profile) { |
+ BrowserList* browser_list = BrowserList::GetInstance(); |
+ for (Browser* browser : *browser_list) |
+ browser->tab_strip_model()->AddObserver(this); |
+ browser_list->AddObserver(this); |
+} |
+ |
+SyncSessionsMultiWindowedWebContentsRouter:: |
+ ~SyncSessionsMultiWindowedWebContentsRouter() {} |
+ |
+void SyncSessionsMultiWindowedWebContentsRouter::Shutdown() { |
+ SyncSessionsWebContentsRouter::Shutdown(); |
+ BrowserList* browser_list = BrowserList::GetInstance(); |
+ for (Browser* browser : *browser_list) |
+ browser->tab_strip_model()->RemoveObserver(this); |
+ BrowserList::GetInstance()->RemoveObserver(this); |
+} |
+ |
+void SyncSessionsMultiWindowedWebContentsRouter::OnBrowserAdded( |
+ Browser* browser) { |
+ browser->tab_strip_model()->AddObserver(this); |
+} |
+ |
+void SyncSessionsMultiWindowedWebContentsRouter::OnBrowserRemoved( |
+ Browser* browser) { |
+ browser->tab_strip_model()->RemoveObserver(this); |
+} |
+ |
+void SyncSessionsMultiWindowedWebContentsRouter::TabInsertedAt( |
+ TabStripModel* model, |
+ content::WebContents* web_contents, |
+ int index, |
+ bool foreground) { |
+ if (handler_ && web_contents) { |
+ SyncedTabDelegate* delegate = |
+ TabContentsSyncedTabDelegate::FromWebContents(web_contents); |
+ if (delegate) |
+ handler_->OnLocalTabModified(delegate); |
+ } |
+} |
+ |
+} // namespace sync_sessions |