Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync/glue/synced_session_tracker.h" | 5 #include "chrome/browser/sync/glue/synced_session_tracker.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "chrome/browser/sync/glue/synced_session_util.h" | 10 #include "components/sync_sessions/sync_sessions_client.h" |
| 11 | 11 |
| 12 namespace browser_sync { | 12 namespace browser_sync { |
| 13 | 13 |
| 14 SyncedSessionTracker::SyncedSessionTracker() { | 14 namespace { |
| 15 | |
| 16 // Helper for iterating through all tabs within a window, and all navigations | |
| 17 // within a tab, to find if there's a valid syncable url. | |
| 18 bool ShouldSyncSessionWindow( | |
| 19 sync_sessions::SyncSessionsClient* sessions_client, | |
| 20 const sessions::SessionWindow& window) { | |
| 21 for (auto* tab : window.tabs) { | |
|
pavely
2015/10/16 21:55:20
Optional comment:
I think in both "for" loops you
Bernhard Bauer
2015/10/19 08:20:57
+1 for spelling out types.
Nicolas Zea
2015/10/20 23:14:41
Done.
Nicolas Zea
2015/10/20 23:14:41
Acknowledged.
| |
| 22 for (auto&& navigation : tab->navigations) { | |
| 23 if (sessions_client->ShouldSyncURL(navigation.virtual_url())) { | |
| 24 return true; | |
| 25 } | |
| 26 } | |
| 27 } | |
| 28 return false; | |
| 15 } | 29 } |
| 16 | 30 |
| 31 } // namespace | |
| 32 | |
| 33 SyncedSessionTracker::SyncedSessionTracker( | |
| 34 sync_sessions::SyncSessionsClient* sessions_client) | |
| 35 : sessions_client_(sessions_client) {} | |
| 36 | |
| 17 SyncedSessionTracker::~SyncedSessionTracker() { | 37 SyncedSessionTracker::~SyncedSessionTracker() { |
| 18 Clear(); | 38 Clear(); |
| 19 } | 39 } |
| 20 | 40 |
| 21 void SyncedSessionTracker::SetLocalSessionTag( | 41 void SyncedSessionTracker::SetLocalSessionTag( |
| 22 const std::string& local_session_tag) { | 42 const std::string& local_session_tag) { |
| 23 local_session_tag_ = local_session_tag; | 43 local_session_tag_ = local_session_tag; |
| 24 } | 44 } |
| 25 | 45 |
| 26 bool SyncedSessionTracker::LookupAllForeignSessions( | 46 bool SyncedSessionTracker::LookupAllForeignSessions( |
| 27 std::vector<const sync_driver::SyncedSession*>* sessions) const { | 47 std::vector<const sync_driver::SyncedSession*>* sessions) const { |
| 28 DCHECK(sessions); | 48 DCHECK(sessions); |
| 29 sessions->clear(); | 49 sessions->clear(); |
| 30 // Fill vector of sessions from our synced session map. | 50 // Fill vector of sessions from our synced session map. |
| 31 for (SyncedSessionMap::const_iterator i = | 51 for (SyncedSessionMap::const_iterator i = |
| 32 synced_session_map_.begin(); i != synced_session_map_.end(); ++i) { | 52 synced_session_map_.begin(); i != synced_session_map_.end(); ++i) { |
| 33 // Only include foreign sessions with open tabs. | 53 // Only include foreign sessions with open tabs. |
| 34 sync_driver::SyncedSession* foreign_session = i->second; | 54 sync_driver::SyncedSession* foreign_session = i->second; |
| 35 if (i->first != local_session_tag_ && !foreign_session->windows.empty()) { | 55 if (i->first != local_session_tag_ && !foreign_session->windows.empty()) { |
| 36 bool found_tabs = false; | 56 bool found_tabs = false; |
| 37 for (sync_driver::SyncedSession::SyncedWindowMap::const_iterator iter = | 57 for (sync_driver::SyncedSession::SyncedWindowMap::const_iterator iter = |
| 38 foreign_session->windows.begin(); | 58 foreign_session->windows.begin(); |
| 39 iter != foreign_session->windows.end(); ++iter) { | 59 iter != foreign_session->windows.end(); ++iter) { |
| 40 if (ShouldSyncSessionWindow(*(iter->second))) { | 60 if (ShouldSyncSessionWindow(sessions_client_, *(iter->second))) { |
| 41 found_tabs = true; | 61 found_tabs = true; |
| 42 break; | 62 break; |
| 43 } | 63 } |
| 44 } | 64 } |
| 45 if (found_tabs) | 65 if (found_tabs) |
| 46 sessions->push_back(foreign_session); | 66 sessions->push_back(foreign_session); |
| 47 } | 67 } |
| 48 } | 68 } |
| 49 | 69 |
| 50 return !sessions->empty(); | 70 return !sessions->empty(); |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 403 STLDeleteElements(&unmapped_tabs_); | 423 STLDeleteElements(&unmapped_tabs_); |
| 404 | 424 |
| 405 // Get rid of our Window/Tab maps (does not delete the actual Window/Tabs | 425 // Get rid of our Window/Tab maps (does not delete the actual Window/Tabs |
| 406 // themselves; they should have all been deleted above). | 426 // themselves; they should have all been deleted above). |
| 407 synced_window_map_.clear(); | 427 synced_window_map_.clear(); |
| 408 synced_tab_map_.clear(); | 428 synced_tab_map_.clear(); |
| 409 local_session_tag_.clear(); | 429 local_session_tag_.clear(); |
| 410 } | 430 } |
| 411 | 431 |
| 412 } // namespace browser_sync | 432 } // namespace browser_sync |
| OLD | NEW |