OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |