Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Unified Diff: chrome/browser/sync/sessions2/sessions_sync_manager.cc

Issue 74653002: sync: Add --enable-sync-sessions-v2 and necessary plumbing to use SessionsSyncManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/sessions2/sessions_sync_manager.cc
diff --git a/chrome/browser/sync/sessions2/sessions_sync_manager.cc b/chrome/browser/sync/sessions2/sessions_sync_manager.cc
index 0da9fd0b514fe296f95790c799e2a5ad76601fce..66ae4d31bb6ad92e29ed83a1fd462a9bc77e3050 100644
--- a/chrome/browser/sync/sessions2/sessions_sync_manager.cc
+++ b/chrome/browser/sync/sessions2/sessions_sync_manager.cc
@@ -8,6 +8,7 @@
#if !defined(OS_ANDROID)
#include "chrome/browser/network_time/navigation_time_helper.h"
#endif
+#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/glue/synced_tab_delegate.h"
#include "chrome/browser/sync/glue/synced_window_delegate.h"
#include "chrome/common/url_constants.h"
@@ -38,13 +39,12 @@ static const int kMaxSyncNavigationCount = 6;
SessionsSyncManager::SessionsSyncManager(
Profile* profile,
- scoped_ptr<SyncPrefs> sync_prefs,
SyncInternalApiDelegate* delegate)
: favicon_cache_(profile, kMaxSyncFavicons),
+ sync_prefs_(profile->GetPrefs()),
profile_(profile),
delegate_(delegate),
local_session_header_node_id_(TabNodePool2::kInvalidTabNodeID) {
- sync_prefs_ = sync_prefs.Pass();
}
SessionsSyncManager::~SessionsSyncManager() {
@@ -105,9 +105,10 @@ syncer::SyncMergeResult SessionsSyncManager::MergeDataAndStartSyncing(
}
#if defined(OS_ANDROID)
- std::string sync_machine_tag(BuildMachineTag(delegate_->GetCacheGuid()));
+ std::string sync_machine_tag(BuildMachineTag(
+ delegate_->GetLocalSyncCacheGUID()));
if (current_machine_tag_.compare(sync_machine_tag) != 0)
- DeleteForeignSession(sync_machine_tag, &new_changes);
+ DeleteForeignSessionInternal(sync_machine_tag, &new_changes);
#endif
// Check if anything has changed on the local client side.
@@ -346,8 +347,17 @@ bool SessionsSyncManager::ShouldSyncWindow(
void SessionsSyncManager::ForwardRelevantFaviconUpdatesToFaviconCache(
const std::set<GURL>& updated_favicon_page_urls) {
- NOTIMPLEMENTED() <<
- "TODO(tim): SessionModelAssociator::FaviconsUpdated equivalent.";
+ // TODO(zea): consider a separate container for tabs with outstanding favicon
+ // loads so we don't have to iterate through all tabs comparing urls.
+ for (std::set<GURL>::const_iterator i = updated_favicon_page_urls.begin();
+ i != updated_favicon_page_urls.end(); ++i) {
+ for (TabLinksMap::iterator tab_iter = local_tab_map_.begin();
+ tab_iter != local_tab_map_.end();
+ ++tab_iter) {
+ if (tab_iter->second->url() == *i)
+ favicon_cache_.OnPageFaviconUpdated(*i);
+ }
+ }
}
void SessionsSyncManager::StopSyncing(syncer::ModelType type) {
@@ -551,14 +561,14 @@ void SessionsSyncManager::UpdateTrackerWithForeignSession(
void SessionsSyncManager::InitializeCurrentMachineTag() {
DCHECK(current_machine_tag_.empty());
std::string persisted_guid;
- persisted_guid = sync_prefs_->GetSyncSessionsGUID();
+ persisted_guid = sync_prefs_.GetSyncSessionsGUID();
if (!persisted_guid.empty()) {
current_machine_tag_ = persisted_guid;
DVLOG(1) << "Restoring persisted session sync guid: " << persisted_guid;
} else {
- current_machine_tag_ = BuildMachineTag(delegate_->GetCacheGuid());
+ current_machine_tag_ = BuildMachineTag(delegate_->GetLocalSyncCacheGUID());
DVLOG(1) << "Creating session sync guid: " << current_machine_tag_;
- sync_prefs_->SetSyncSessionsGUID(current_machine_tag_);
+ sync_prefs_.SetSyncSessionsGUID(current_machine_tag_);
}
local_tab_pool_.SetMachineTag(current_machine_tag_);
@@ -653,7 +663,13 @@ bool SessionsSyncManager::GetSyncedFaviconForPageURL(
return favicon_cache_.GetSyncedFaviconForPageURL(GURL(page_url), favicon_png);
}
-void SessionsSyncManager::DeleteForeignSession(
+void SessionsSyncManager::DeleteForeignSession(const std::string& tag) {
+ syncer::SyncChangeList changes;
+ DeleteForeignSessionInternal(tag, &changes);
+ sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
+}
+
+void SessionsSyncManager::DeleteForeignSessionInternal(
const std::string& tag, syncer::SyncChangeList* change_output) {
if (tag == current_machine_tag()) {
LOG(ERROR) << "Attempting to delete local session. This is not currently "
@@ -722,6 +738,25 @@ GURL SessionsSyncManager::GetCurrentFaviconURL(
GURL());
}
+bool SessionsSyncManager::GetForeignSession(
+ const std::string& tag,
+ std::vector<const SessionWindow*>* windows) {
+ return session_tracker_.LookupSessionWindows(tag, windows);
+}
+
+bool SessionsSyncManager::GetForeignTab(
+ const std::string& tag,
+ const SessionID::id_type tab_id,
+ const SessionTab** tab) {
+ const SessionTab* synced_tab = NULL;
+ bool success = session_tracker_.LookupSessionTab(tag,
+ tab_id,
+ &synced_tab);
+ if (success)
+ *tab = synced_tab;
+ return success;
+}
+
void SessionsSyncManager::LocalTabDelegateToSpecifics(
const SyncedTabDelegate& tab_delegate,
sync_pb::SessionSpecifics* specifics) {
@@ -833,4 +868,9 @@ void SessionsSyncManager::SetSessionTabFromDelegate(
session_tab->session_storage_persistent_id.clear();
}
+
+FaviconCache* SessionsSyncManager::GetFaviconCache() {
+ return &favicon_cache_;
+}
+
}; // namespace browser_sync

Powered by Google App Engine
This is Rietveld 408576698