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

Side by Side Diff: chrome/browser/sessions/session_types.cc

Issue 10990012: [Sync] Refactor handling of session tabs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Few more fixes Created 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/sessions/session_types.h" 5 #include "chrome/browser/sessions/session_types.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/pickle.h" 8 #include "base/pickle.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 navigation.has_post_data_ = entry.GetHasPostData(); 47 navigation.has_post_data_ = entry.GetHasPostData();
48 navigation.post_id_ = entry.GetPostID(); 48 navigation.post_id_ = entry.GetPostID();
49 navigation.original_request_url_ = entry.GetOriginalRequestURL(); 49 navigation.original_request_url_ = entry.GetOriginalRequestURL();
50 navigation.is_overriding_user_agent_ = entry.GetIsOverridingUserAgent(); 50 navigation.is_overriding_user_agent_ = entry.GetIsOverridingUserAgent();
51 navigation.timestamp_ = timestamp; 51 navigation.timestamp_ = timestamp;
52 return navigation; 52 return navigation;
53 } 53 }
54 54
55 TabNavigation TabNavigation::FromSyncData( 55 TabNavigation TabNavigation::FromSyncData(
56 int index, 56 int index,
57 const sync_pb::TabNavigation& specifics) { 57 const sync_pb::TabNavigation& sync_data) {
58 TabNavigation navigation; 58 TabNavigation navigation;
59 navigation.index_ = index; 59 navigation.index_ = index;
60 if (specifics.has_unique_id()) { 60 if (sync_data.has_unique_id()) {
61 navigation.unique_id_ = specifics.unique_id(); 61 navigation.unique_id_ = sync_data.unique_id();
62 } 62 }
63 if (specifics.has_referrer()) { 63 if (sync_data.has_referrer()) {
64 navigation.referrer_ = 64 navigation.referrer_ =
65 content::Referrer(GURL(specifics.referrer()), 65 content::Referrer(GURL(sync_data.referrer()),
66 WebKit::WebReferrerPolicyDefault); 66 WebKit::WebReferrerPolicyDefault);
67 } 67 }
68 if (specifics.has_virtual_url()) 68 if (sync_data.has_virtual_url())
69 navigation.virtual_url_ = GURL(specifics.virtual_url()); 69 navigation.virtual_url_ = GURL(sync_data.virtual_url());
70 if (specifics.has_title()) 70 if (sync_data.has_title())
71 navigation.title_ = UTF8ToUTF16(specifics.title()); 71 navigation.title_ = UTF8ToUTF16(sync_data.title());
72 if (specifics.has_state()) 72 if (sync_data.has_state())
73 navigation.content_state_ = specifics.state(); 73 navigation.content_state_ = sync_data.state();
74 navigation.transition_type_ = content::PAGE_TRANSITION_LINK; 74 navigation.transition_type_ = content::PAGE_TRANSITION_LINK;
75 if (specifics.has_page_transition() || 75 if (sync_data.has_page_transition() ||
76 specifics.has_navigation_qualifier()) { 76 sync_data.has_navigation_qualifier()) {
77 switch (specifics.page_transition()) { 77 switch (sync_data.page_transition()) {
78 case sync_pb::SyncEnums_PageTransition_LINK: 78 case sync_pb::SyncEnums_PageTransition_LINK:
79 navigation.transition_type_ = content::PAGE_TRANSITION_LINK; 79 navigation.transition_type_ = content::PAGE_TRANSITION_LINK;
80 break; 80 break;
81 case sync_pb::SyncEnums_PageTransition_TYPED: 81 case sync_pb::SyncEnums_PageTransition_TYPED:
82 navigation.transition_type_ = content::PAGE_TRANSITION_TYPED; 82 navigation.transition_type_ = content::PAGE_TRANSITION_TYPED;
83 break; 83 break;
84 case sync_pb::SyncEnums_PageTransition_AUTO_BOOKMARK: 84 case sync_pb::SyncEnums_PageTransition_AUTO_BOOKMARK:
85 navigation.transition_type_ = content::PAGE_TRANSITION_AUTO_BOOKMARK; 85 navigation.transition_type_ = content::PAGE_TRANSITION_AUTO_BOOKMARK;
86 break; 86 break;
87 case sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME: 87 case sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME:
(...skipping 21 matching lines...) Expand all
109 navigation.transition_type_ = 109 navigation.transition_type_ =
110 content::PAGE_TRANSITION_KEYWORD_GENERATED; 110 content::PAGE_TRANSITION_KEYWORD_GENERATED;
111 break; 111 break;
112 case sync_pb::SyncEnums_PageTransition_CHAIN_START: 112 case sync_pb::SyncEnums_PageTransition_CHAIN_START:
113 navigation.transition_type_ = content::PAGE_TRANSITION_CHAIN_START; 113 navigation.transition_type_ = content::PAGE_TRANSITION_CHAIN_START;
114 break; 114 break;
115 case sync_pb::SyncEnums_PageTransition_CHAIN_END: 115 case sync_pb::SyncEnums_PageTransition_CHAIN_END:
116 navigation.transition_type_ = content::PAGE_TRANSITION_CHAIN_END; 116 navigation.transition_type_ = content::PAGE_TRANSITION_CHAIN_END;
117 break; 117 break;
118 default: 118 default:
119 switch (specifics.navigation_qualifier()) { 119 switch (sync_data.navigation_qualifier()) {
120 case sync_pb::SyncEnums_PageTransitionQualifier_CLIENT_REDIRECT: 120 case sync_pb::SyncEnums_PageTransitionQualifier_CLIENT_REDIRECT:
121 navigation.transition_type_ = 121 navigation.transition_type_ =
122 content::PAGE_TRANSITION_CLIENT_REDIRECT; 122 content::PAGE_TRANSITION_CLIENT_REDIRECT;
123 break; 123 break;
124 case sync_pb::SyncEnums_PageTransitionQualifier_SERVER_REDIRECT: 124 case sync_pb::SyncEnums_PageTransitionQualifier_SERVER_REDIRECT:
125 navigation.transition_type_ = 125 navigation.transition_type_ =
126 content::PAGE_TRANSITION_SERVER_REDIRECT; 126 content::PAGE_TRANSITION_SERVER_REDIRECT;
127 break; 127 break;
128 default: 128 default:
129 navigation.transition_type_ = content::PAGE_TRANSITION_TYPED; 129 navigation.transition_type_ = content::PAGE_TRANSITION_TYPED;
130 } 130 }
131 } 131 }
132 } 132 }
133 if (specifics.has_timestamp()) { 133 if (sync_data.has_timestamp()) {
134 navigation.timestamp_ = syncer::ProtoTimeToTime(specifics.timestamp()); 134 navigation.timestamp_ = syncer::ProtoTimeToTime(sync_data.timestamp());
135 } 135 }
136 return navigation; 136 return navigation;
137 } 137 }
138 138
139 namespace { 139 namespace {
140 140
141 // Helper used by TabNavigation::WriteToPickle(). It writes |str| to 141 // Helper used by TabNavigation::WriteToPickle(). It writes |str| to
142 // |pickle|, if and only if |str| fits within (|max_bytes| - 142 // |pickle|, if and only if |str| fits within (|max_bytes| -
143 // |*bytes_written|). |bytes_written| is incremented to reflect the 143 // |*bytes_written|). |bytes_written| is incremented to reflect the
144 // data written. 144 // data written.
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 424
425 SessionTab::SessionTab() 425 SessionTab::SessionTab()
426 : tab_visual_index(-1), 426 : tab_visual_index(-1),
427 current_navigation_index(-1), 427 current_navigation_index(-1),
428 pinned(false) { 428 pinned(false) {
429 } 429 }
430 430
431 SessionTab::~SessionTab() { 431 SessionTab::~SessionTab() {
432 } 432 }
433 433
434 void SessionTab::SetFromSyncData(const sync_pb::SessionTab& sync_data,
435 base::Time timestamp) {
436 window_id.set_id(sync_data.window_id());
437 tab_id.set_id(sync_data.tab_id());
438 tab_visual_index = sync_data.tab_visual_index();
439 current_navigation_index = sync_data.current_navigation_index();
440 pinned = sync_data.pinned();
441 extension_app_id = sync_data.extension_app_id();
442 user_agent_override.clear();
443 this->timestamp = timestamp;
444 navigations.clear();
445 for (int i = 0; i < sync_data.navigation_size(); ++i) {
446 navigations.push_back(
447 TabNavigation::FromSyncData(i, sync_data.navigation(i)));
448 }
449 session_storage_persistent_id.clear();
450 }
451
452 sync_pb::SessionTab SessionTab::ToSyncData() const {
453 sync_pb::SessionTab sync_data;
454 sync_data.set_tab_id(tab_id.id());
455 sync_data.set_window_id(window_id.id());
456 sync_data.set_tab_visual_index(tab_visual_index);
457 sync_data.set_current_navigation_index(current_navigation_index);
458 sync_data.set_pinned(pinned);
459 sync_data.set_extension_app_id(extension_app_id);
460 for (std::vector<TabNavigation>::const_iterator it = navigations.begin();
461 it != navigations.end(); ++it) {
462 *sync_data.add_navigation() = it->ToSyncData();
463 }
464 return sync_data;
465 }
466
434 // SessionWindow --------------------------------------------------------------- 467 // SessionWindow ---------------------------------------------------------------
435 468
436 SessionWindow::SessionWindow() 469 SessionWindow::SessionWindow()
437 : selected_tab_index(-1), 470 : selected_tab_index(-1),
438 type(Browser::TYPE_TABBED), 471 type(Browser::TYPE_TABBED),
439 is_constrained(true), 472 is_constrained(true),
440 show_state(ui::SHOW_STATE_DEFAULT) { 473 show_state(ui::SHOW_STATE_DEFAULT) {
441 } 474 }
442 475
443 SessionWindow::~SessionWindow() { 476 SessionWindow::~SessionWindow() {
444 STLDeleteElements(&tabs); 477 STLDeleteElements(&tabs);
445 } 478 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698