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

Side by Side Diff: chrome/browser/sync/glue/session_model_associator.cc

Issue 7981006: [Sync] use base::Time in sync (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix linux compile errors Created 9 years, 3 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/session_model_associator.h" 5 #include "chrome/browser/sync/glue/session_model_associator.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 *header_window = window_s; 191 *header_window = window_s;
192 192
193 // Update this window's representation in the synced session tracker. 193 // Update this window's representation in the synced session tracker.
194 if (window_num >= current_session->windows.size()) { 194 if (window_num >= current_session->windows.size()) {
195 // This a new window, create it. 195 // This a new window, create it.
196 current_session->windows.push_back(new SessionWindow()); 196 current_session->windows.push_back(new SessionWindow());
197 } 197 }
198 PopulateSessionWindowFromSpecifics( 198 PopulateSessionWindowFromSpecifics(
199 local_tag, 199 local_tag,
200 window_s, 200 window_s,
201 base::Time::Now().ToInternalValue(), 201 base::Time::Now(),
202 current_session->windows[window_num++], 202 current_session->windows[window_num++],
203 &synced_session_tracker_); 203 &synced_session_tracker_);
204 } 204 }
205 } 205 }
206 } 206 }
207 207
208 sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); 208 sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare());
209 sync_api::WriteNode header_node(&trans); 209 sync_api::WriteNode header_node(&trans);
210 if (!header_node.InitByIdLookup(local_session_syncid_)) { 210 if (!header_node.InitByIdLookup(local_session_syncid_)) {
211 LOG(ERROR) << "Failed to load local session header node."; 211 LOG(ERROR) << "Failed to load local session header node.";
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 tab_s->set_current_navigation_index(current_index); 331 tab_s->set_current_navigation_index(current_index);
332 332
333 tab_node.SetSessionSpecifics(session_s); 333 tab_node.SetSessionSpecifics(session_s);
334 334
335 // Convert to a local representation and store in synced session tracker. 335 // Convert to a local representation and store in synced session tracker.
336 SessionTab* session_tab = 336 SessionTab* session_tab =
337 synced_session_tracker_.GetSessionTab(GetCurrentMachineTag(), 337 synced_session_tracker_.GetSessionTab(GetCurrentMachineTag(),
338 tab_s->tab_id(), 338 tab_s->tab_id(),
339 false); 339 false);
340 PopulateSessionTabFromSpecifics(*tab_s, 340 PopulateSessionTabFromSpecifics(*tab_s,
341 base::Time::Now().ToInternalValue(), 341 base::Time::Now(),
342 session_tab); 342 session_tab);
343 return true; 343 return true;
344 } 344 }
345 345
346 // Static 346 // Static
347 // TODO(zea): perhaps sync state (scroll position, form entries, etc.) as well? 347 // TODO(zea): perhaps sync state (scroll position, form entries, etc.) as well?
348 // See http://crbug.com/67068. 348 // See http://crbug.com/67068.
349 void SessionModelAssociator::PopulateSessionSpecificsNavigation( 349 void SessionModelAssociator::PopulateSessionSpecificsNavigation(
350 const TabNavigation* navigation, 350 const TabNavigation* navigation,
351 sync_pb::TabNavigation* tab_navigation) { 351 sync_pb::TabNavigation* tab_navigation) {
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 int64 id = root.GetFirstChildId(); 574 int64 id = root.GetFirstChildId();
575 while (id != sync_api::kInvalidId) { 575 while (id != sync_api::kInvalidId) {
576 sync_api::ReadNode sync_node(trans); 576 sync_api::ReadNode sync_node(trans);
577 if (!sync_node.InitByIdLookup(id)) { 577 if (!sync_node.InitByIdLookup(id)) {
578 LOG(ERROR) << "Failed to fetch sync node for id " << id; 578 LOG(ERROR) << "Failed to fetch sync node for id " << id;
579 return false; 579 return false;
580 } 580 }
581 581
582 const sync_pb::SessionSpecifics& specifics = 582 const sync_pb::SessionSpecifics& specifics =
583 sync_node.GetSessionSpecifics(); 583 sync_node.GetSessionSpecifics();
584 const int64 modification_time = sync_node.GetModificationTime(); 584 const base::Time& modification_time = sync_node.GetModificationTime();
585 if (specifics.session_tag() != GetCurrentMachineTag()) { 585 if (specifics.session_tag() != GetCurrentMachineTag()) {
586 if (!AssociateForeignSpecifics(specifics, modification_time)) { 586 if (!AssociateForeignSpecifics(specifics, modification_time)) {
587 return false; 587 return false;
588 } 588 }
589 } else if (id != local_session_syncid_) { 589 } else if (id != local_session_syncid_) {
590 // This is previously stored local session information. 590 // This is previously stored local session information.
591 if (specifics.has_header()) { 591 if (specifics.has_header()) {
592 if (sync_api::kInvalidId != local_session_syncid_) 592 if (sync_api::kInvalidId != local_session_syncid_)
593 return false; 593 return false;
594 594
(...skipping 18 matching lines...) Expand all
613 613
614 // After updating from sync model all tabid's should be free. 614 // After updating from sync model all tabid's should be free.
615 if (!tab_pool_.full()) 615 if (!tab_pool_.full())
616 return false; 616 return false;
617 617
618 return true; 618 return true;
619 } 619 }
620 620
621 bool SessionModelAssociator::AssociateForeignSpecifics( 621 bool SessionModelAssociator::AssociateForeignSpecifics(
622 const sync_pb::SessionSpecifics& specifics, 622 const sync_pb::SessionSpecifics& specifics,
623 const int64 modification_time) { 623 const base::Time& modification_time) {
624 DCHECK(CalledOnValidThread()); 624 DCHECK(CalledOnValidThread());
625 std::string foreign_session_tag = specifics.session_tag(); 625 std::string foreign_session_tag = specifics.session_tag();
626 if (foreign_session_tag == GetCurrentMachineTag() && !setup_for_test_) 626 if (foreign_session_tag == GetCurrentMachineTag() && !setup_for_test_)
627 return false; 627 return false;
628 628
629 if (specifics.has_header()) { 629 if (specifics.has_header()) {
630 // Read in the header data for this foreign session. 630 // Read in the header data for this foreign session.
631 // Header data contains window information and ordered tab id's for each 631 // Header data contains window information and ordered tab id's for each
632 // window. 632 // window.
633 633
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 session_header->device_type = SyncedSession::TYPE_OTHER; 707 session_header->device_type = SyncedSession::TYPE_OTHER;
708 break; 708 break;
709 } 709 }
710 } 710 }
711 } 711 }
712 712
713 // Static 713 // Static
714 void SessionModelAssociator::PopulateSessionWindowFromSpecifics( 714 void SessionModelAssociator::PopulateSessionWindowFromSpecifics(
715 const std::string& session_tag, 715 const std::string& session_tag,
716 const sync_pb::SessionWindow& specifics, 716 const sync_pb::SessionWindow& specifics,
717 int64 mtime, 717 const base::Time& mtime,
718 SessionWindow* session_window, 718 SessionWindow* session_window,
719 SyncedSessionTracker* tracker) { 719 SyncedSessionTracker* tracker) {
720 if (specifics.has_window_id()) 720 if (specifics.has_window_id())
721 session_window->window_id.set_id(specifics.window_id()); 721 session_window->window_id.set_id(specifics.window_id());
722 if (specifics.has_selected_tab_index()) 722 if (specifics.has_selected_tab_index())
723 session_window->selected_tab_index = specifics.selected_tab_index(); 723 session_window->selected_tab_index = specifics.selected_tab_index();
724 if (specifics.has_browser_type()) { 724 if (specifics.has_browser_type()) {
725 if (specifics.browser_type() == 725 if (specifics.browser_type() ==
726 sync_pb::SessionWindow_BrowserType_TYPE_TABBED) { 726 sync_pb::SessionWindow_BrowserType_TYPE_TABBED) {
727 session_window->type = 1; 727 session_window->type = 1;
728 } else { 728 } else {
729 session_window->type = 2; 729 session_window->type = 2;
730 } 730 }
731 } 731 }
732 session_window->timestamp = base::Time::FromInternalValue(mtime); 732 session_window->timestamp = mtime;
733 session_window->tabs.resize(specifics.tab_size()); 733 session_window->tabs.resize(specifics.tab_size());
734 for (int i = 0; i < specifics.tab_size(); i++) { 734 for (int i = 0; i < specifics.tab_size(); i++) {
735 SessionID::id_type tab_id = specifics.tab(i); 735 SessionID::id_type tab_id = specifics.tab(i);
736 session_window->tabs[i] = 736 session_window->tabs[i] =
737 tracker->GetSessionTab(session_tag, tab_id, true); 737 tracker->GetSessionTab(session_tag, tab_id, true);
738 } 738 }
739 } 739 }
740 740
741 // Static 741 // Static
742 void SessionModelAssociator::PopulateSessionTabFromSpecifics( 742 void SessionModelAssociator::PopulateSessionTabFromSpecifics(
743 const sync_pb::SessionTab& specifics, 743 const sync_pb::SessionTab& specifics,
744 const int64 mtime, 744 const base::Time& mtime,
745 SessionTab* tab) { 745 SessionTab* tab) {
746 if (specifics.has_tab_id()) 746 if (specifics.has_tab_id())
747 tab->tab_id.set_id(specifics.tab_id()); 747 tab->tab_id.set_id(specifics.tab_id());
748 if (specifics.has_window_id()) 748 if (specifics.has_window_id())
749 tab->window_id.set_id(specifics.window_id()); 749 tab->window_id.set_id(specifics.window_id());
750 if (specifics.has_tab_visual_index()) 750 if (specifics.has_tab_visual_index())
751 tab->tab_visual_index = specifics.tab_visual_index(); 751 tab->tab_visual_index = specifics.tab_visual_index();
752 if (specifics.has_current_navigation_index()) 752 if (specifics.has_current_navigation_index())
753 tab->current_navigation_index = specifics.current_navigation_index(); 753 tab->current_navigation_index = specifics.current_navigation_index();
754 if (specifics.has_pinned()) 754 if (specifics.has_pinned())
755 tab->pinned = specifics.pinned(); 755 tab->pinned = specifics.pinned();
756 if (specifics.has_extension_app_id()) 756 if (specifics.has_extension_app_id())
757 tab->extension_app_id = specifics.extension_app_id(); 757 tab->extension_app_id = specifics.extension_app_id();
758 tab->timestamp = base::Time::FromInternalValue(mtime); 758 tab->timestamp = mtime;
759 tab->navigations.clear(); // In case we are reusing a previous SessionTab. 759 tab->navigations.clear(); // In case we are reusing a previous SessionTab.
760 for (int i = 0; i < specifics.navigation_size(); i++) { 760 for (int i = 0; i < specifics.navigation_size(); i++) {
761 AppendSessionTabNavigation(specifics.navigation(i), &tab->navigations); 761 AppendSessionTabNavigation(specifics.navigation(i), &tab->navigations);
762 } 762 }
763 } 763 }
764 764
765 // Static 765 // Static
766 void SessionModelAssociator::AppendSessionTabNavigation( 766 void SessionModelAssociator::AppendSessionTabNavigation(
767 const sync_pb::TabNavigation& specifics, 767 const sync_pb::TabNavigation& specifics,
768 std::vector<TabNavigation>* navigations) { 768 std::vector<TabNavigation>* navigations) {
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 char computer_name[MAX_COMPUTERNAME_LENGTH + 1]; 1190 char computer_name[MAX_COMPUTERNAME_LENGTH + 1];
1191 DWORD size = sizeof(computer_name); 1191 DWORD size = sizeof(computer_name);
1192 if (GetComputerNameA(computer_name, &size)) { 1192 if (GetComputerNameA(computer_name, &size)) {
1193 return computer_name; 1193 return computer_name;
1194 } 1194 }
1195 return std::string(); 1195 return std::string();
1196 } 1196 }
1197 #endif 1197 #endif
1198 1198
1199 } // namespace browser_sync 1199 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/session_model_associator.h ('k') | chrome/browser/sync/glue/session_model_associator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698