diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-04 14:41:38 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-04 14:41:38 +0000 |
commit | 52af9bc3801fac7b1b258861716c807790e4e42f (patch) | |
tree | 0997e75bd774e2873e7a05bce62c5a52758a0ef2 /chrome/browser/sync | |
parent | c4855a524f0c6e07aeb451c7be28f661e2ca11b0 (diff) | |
download | chromium_src-52af9bc3801fac7b1b258861716c807790e4e42f.zip chromium_src-52af9bc3801fac7b1b258861716c807790e4e42f.tar.gz chromium_src-52af9bc3801fac7b1b258861716c807790e4e42f.tar.bz2 |
Session sync integration tests. Left out many client for now, since even
without doing anything in the test it was timing out.
BUG=30519
TEST=self
Review URL: http://codereview.chromium.org/4158009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65051 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync')
-rw-r--r-- | chrome/browser/sync/glue/session_model_associator.cc | 38 | ||||
-rw-r--r-- | chrome/browser/sync/glue/session_model_associator.h | 4 | ||||
-rw-r--r-- | chrome/browser/sync/profile_sync_service_session_unittest.cc | 2 |
3 files changed, 28 insertions, 16 deletions
diff --git a/chrome/browser/sync/glue/session_model_associator.cc b/chrome/browser/sync/glue/session_model_associator.cc index 961bfc7..b4666f8 100644 --- a/chrome/browser/sync/glue/session_model_associator.cc +++ b/chrome/browser/sync/glue/session_model_associator.cc @@ -192,7 +192,9 @@ bool SessionModelAssociator::GetSessionData( // 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 @@ void SessionModelAssociator::AppendForeignSessionFromSpecifics( 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 @@ bool SessionModelAssociator::WindowHasNoTabsToSync( 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,7 +406,21 @@ void SessionModelAssociator::OnGotSession(int handle, 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( diff --git a/chrome/browser/sync/glue/session_model_associator.h b/chrome/browser/sync/glue/session_model_associator.h index ac7a234..89d30be 100644 --- a/chrome/browser/sync/glue/session_model_associator.h +++ b/chrome/browser/sync/glue/session_model_associator.h @@ -129,6 +129,10 @@ class SessionModelAssociator : public PerDataTypeAssociatorInterface< // Builds sessions from buffered specifics data bool GetSessionData(std::vector<ForeignSession*>* sessions); + // Helper method to generate session specifics from session windows. + void FillSpecificsFromSessions(std::vector<SessionWindow*>* windows, + sync_pb::SessionSpecifics* session); + // Helper method for converting session specifics to windows. void AppendForeignSessionFromSpecifics( const sync_pb::SessionSpecifics* specifics, diff --git a/chrome/browser/sync/profile_sync_service_session_unittest.cc b/chrome/browser/sync/profile_sync_service_session_unittest.cc index 77790e4..fc0757e 100644 --- a/chrome/browser/sync/profile_sync_service_session_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_session_unittest.cc @@ -314,7 +314,7 @@ TEST_F(ProfileSyncServiceSessionTest, WriteForeignSessionToNode) { ASSERT_EQ(1U, foreign_sessions[0]->windows.size()); ASSERT_EQ(1U, foreign_sessions[0]->windows[0]->tabs.size()); ASSERT_EQ(1U, foreign_sessions[0]->windows[0]->tabs[0]->navigations.size()); - ASSERT_EQ(foreign_sessions[0]->foreign_tession_tag, machine_tag); + ASSERT_EQ(foreign_sessions[0]->foreign_session_tag, machine_tag); ASSERT_EQ(1, foreign_sessions[0]->windows[0]->selected_tab_index); ASSERT_EQ(1, foreign_sessions[0]->windows[0]->type); ASSERT_EQ(13, foreign_sessions[0]->windows[0]->tabs[0]->tab_visual_index); |