| OLD | NEW |
| (Empty) |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/sessions/session_types.h" | |
| 6 | |
| 7 #include "base/basictypes.h" | |
| 8 #include "base/stl_util.h" | |
| 9 #include "components/sessions/session_command.h" | |
| 10 | |
| 11 namespace sessions { | |
| 12 | |
| 13 //using class SerializedNavigationEntry; | |
| 14 | |
| 15 // SessionTab ----------------------------------------------------------------- | |
| 16 | |
| 17 SessionTab::SessionTab() | |
| 18 : tab_visual_index(-1), | |
| 19 current_navigation_index(-1), | |
| 20 pinned(false) { | |
| 21 } | |
| 22 | |
| 23 SessionTab::~SessionTab() { | |
| 24 } | |
| 25 | |
| 26 void SessionTab::SetFromSyncData(const sync_pb::SessionTab& sync_data, | |
| 27 base::Time timestamp) { | |
| 28 window_id.set_id(sync_data.window_id()); | |
| 29 tab_id.set_id(sync_data.tab_id()); | |
| 30 tab_visual_index = sync_data.tab_visual_index(); | |
| 31 current_navigation_index = sync_data.current_navigation_index(); | |
| 32 pinned = sync_data.pinned(); | |
| 33 extension_app_id = sync_data.extension_app_id(); | |
| 34 user_agent_override.clear(); | |
| 35 this->timestamp = timestamp; | |
| 36 navigations.clear(); | |
| 37 for (int i = 0; i < sync_data.navigation_size(); ++i) { | |
| 38 navigations.push_back( | |
| 39 SerializedNavigationEntry::FromSyncData(i, sync_data.navigation(i))); | |
| 40 } | |
| 41 session_storage_persistent_id.clear(); | |
| 42 variation_ids.clear(); | |
| 43 for (int i = 0; i < sync_data.variation_id_size(); ++i) | |
| 44 variation_ids.push_back(sync_data.variation_id(i)); | |
| 45 } | |
| 46 | |
| 47 sync_pb::SessionTab SessionTab::ToSyncData() const { | |
| 48 sync_pb::SessionTab sync_data; | |
| 49 sync_data.set_tab_id(tab_id.id()); | |
| 50 sync_data.set_window_id(window_id.id()); | |
| 51 sync_data.set_tab_visual_index(tab_visual_index); | |
| 52 sync_data.set_current_navigation_index(current_navigation_index); | |
| 53 sync_data.set_pinned(pinned); | |
| 54 sync_data.set_extension_app_id(extension_app_id); | |
| 55 for (const SerializedNavigationEntry& navigation : navigations) { | |
| 56 *sync_data.add_navigation() = navigation.ToSyncData(); | |
| 57 } | |
| 58 for (const variations::VariationID variation_id : variation_ids) { | |
| 59 sync_data.add_variation_id(variation_id); | |
| 60 } | |
| 61 return sync_data; | |
| 62 } | |
| 63 | |
| 64 // SessionWindow --------------------------------------------------------------- | |
| 65 | |
| 66 SessionWindow::SessionWindow() | |
| 67 : selected_tab_index(-1), | |
| 68 type(TYPE_TABBED), | |
| 69 is_constrained(true), | |
| 70 show_state(ui::SHOW_STATE_DEFAULT) { | |
| 71 } | |
| 72 | |
| 73 SessionWindow::~SessionWindow() { | |
| 74 STLDeleteElements(&tabs); | |
| 75 } | |
| 76 | |
| 77 sync_pb::SessionWindow SessionWindow::ToSyncData() const { | |
| 78 sync_pb::SessionWindow sync_data; | |
| 79 sync_data.set_window_id(window_id.id()); | |
| 80 sync_data.set_selected_tab_index(selected_tab_index); | |
| 81 switch (type) { | |
| 82 case SessionWindow::TYPE_TABBED: | |
| 83 sync_data.set_browser_type( | |
| 84 sync_pb::SessionWindow_BrowserType_TYPE_TABBED); | |
| 85 break; | |
| 86 case SessionWindow::TYPE_POPUP: | |
| 87 sync_data.set_browser_type( | |
| 88 sync_pb::SessionWindow_BrowserType_TYPE_POPUP); | |
| 89 break; | |
| 90 default: | |
| 91 NOTREACHED() << "Unhandled browser type."; | |
| 92 } | |
| 93 | |
| 94 for (size_t i = 0; i < tabs.size(); i++) | |
| 95 sync_data.add_tab(tabs[i]->tab_id.id()); | |
| 96 | |
| 97 return sync_data; | |
| 98 } | |
| 99 | |
| 100 } // namespace sessions | |
| OLD | NEW |