summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-04 14:41:38 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-04 14:41:38 +0000
commit52af9bc3801fac7b1b258861716c807790e4e42f (patch)
tree0997e75bd774e2873e7a05bce62c5a52758a0ef2 /chrome/browser/sync
parentc4855a524f0c6e07aeb451c7be28f661e2ca11b0 (diff)
downloadchromium_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.cc38
-rw-r--r--chrome/browser/sync/glue/session_model_associator.h4
-rw-r--r--chrome/browser/sync/profile_sync_service_session_unittest.cc2
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);