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

Unified Diff: chrome/browser/sync/glue/session_model_associator.cc

Issue 4158009: Session sync integration tests. Left out many client for now, since even... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 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/glue/session_model_associator.cc
===================================================================
--- chrome/browser/sync/glue/session_model_associator.cc (revision 64006)
+++ chrome/browser/sync/glue/session_model_associator.cc (working copy)
@@ -192,7 +192,9 @@
// Build vector of sessions from specifics data
for (std::vector<const sync_pb::SessionSpecifics*>::const_iterator i =
specifics_.begin(); i != specifics_.end(); ++i) {
- AppendForeignSessionFromSpecifics(*i, sessions);
+ // Only include sessions with open windows.
+ if ((*i)->session_window_size() > 0)
+ AppendForeignSessionFromSpecifics(*i, sessions);
}
return true;
@@ -202,7 +204,7 @@
const sync_pb::SessionSpecifics* specifics,
std::vector<ForeignSession*>* session) {
ForeignSession* foreign_session = new ForeignSession();
- foreign_session->foreign_tession_tag = specifics->session_tag();
+ foreign_session->foreign_session_tag = specifics->session_tag();
session->insert(session->end(), foreign_session);
for (int i = 0; i < specifics->session_window_size(); i++) {
const sync_pb::SessionWindow* window = &specifics->session_window(i);
@@ -386,24 +388,16 @@
void SessionModelAssociator::OnGotSession(int handle,
std::vector<SessionWindow*>* windows) {
- sync_pb::SessionSpecifics session;
+ sync_pb::SessionSpecifics specifics;
// Set the tag, then iterate through the vector of windows, extracting the
// window data, along with the tabs data and tab navigation data to populate
// the session specifics.
- session.set_session_tag(GetCurrentMachineTag());
- for (std::vector<SessionWindow*>::const_iterator i = windows->begin();
- i != windows->end(); ++i) {
- const SessionWindow* window = *i;
- if (WindowHasNoTabsToSync(window)) {
- continue;
- }
- sync_pb::SessionWindow* session_window = session.add_session_window();
- PopulateSessionSpecificsWindow(window, session_window);
- }
+ specifics.set_session_tag(GetCurrentMachineTag());
+ FillSpecificsFromSessions(windows, &specifics);
bool has_nodes = false;
if (!SyncModelHasUserCreatedNodes(&has_nodes))
return;
- if (session.session_window_size() == 0 && has_nodes)
+ if (specifics.session_window_size() == 0 && has_nodes)
return;
sync_api::WriteTransaction trans(
sync_service_->backend()->GetUserShareHandle());
@@ -412,9 +406,23 @@
LOG(ERROR) << kNoSessionsFolderError;
return;
}
- UpdateSyncModel(&session, &trans, &root);
+ UpdateSyncModel(&specifics, &trans, &root);
}
+void SessionModelAssociator::FillSpecificsFromSessions(
+ std::vector<SessionWindow*>* windows,
+ sync_pb::SessionSpecifics* session) {
+ for (std::vector<SessionWindow*>::const_iterator i = windows->begin();
+ i != windows->end(); ++i) {
+ const SessionWindow* window = *i;
+ if (WindowHasNoTabsToSync(window)) {
+ continue;
+ }
+ sync_pb::SessionWindow* session_window = session->add_session_window();
+ PopulateSessionSpecificsWindow(window, session_window);
+ }
+}
+
void SessionModelAssociator::AppendSessionTabNavigation(
std::vector<TabNavigation>* navigations,
const sync_pb::TabNavigation* navigation) {
« no previous file with comments | « chrome/browser/sync/glue/session_model_associator.h ('k') | chrome/browser/sync/profile_sync_service_session_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698