blob: 4d2e9ac93ccd6391b72345b7af8ef0ec9502f1e0 [file] [log] [blame]
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sessions/session_types.h"
#include "base/basictypes.h"
#include "base/stl_util.h"
#include "components/sessions/session_command.h"
namespace sessions {
//using class SerializedNavigationEntry;
// SessionTab -----------------------------------------------------------------
SessionTab::SessionTab()
: tab_visual_index(-1),
current_navigation_index(-1),
pinned(false) {
}
SessionTab::~SessionTab() {
}
void SessionTab::SetFromSyncData(const sync_pb::SessionTab& sync_data,
base::Time timestamp) {
window_id.set_id(sync_data.window_id());
tab_id.set_id(sync_data.tab_id());
tab_visual_index = sync_data.tab_visual_index();
current_navigation_index = sync_data.current_navigation_index();
pinned = sync_data.pinned();
extension_app_id = sync_data.extension_app_id();
user_agent_override.clear();
this->timestamp = timestamp;
navigations.clear();
for (int i = 0; i < sync_data.navigation_size(); ++i) {
navigations.push_back(
SerializedNavigationEntry::FromSyncData(i, sync_data.navigation(i)));
}
session_storage_persistent_id.clear();
variation_ids.clear();
for (int i = 0; i < sync_data.variation_id_size(); ++i)
variation_ids.push_back(sync_data.variation_id(i));
}
sync_pb::SessionTab SessionTab::ToSyncData() const {
sync_pb::SessionTab sync_data;
sync_data.set_tab_id(tab_id.id());
sync_data.set_window_id(window_id.id());
sync_data.set_tab_visual_index(tab_visual_index);
sync_data.set_current_navigation_index(current_navigation_index);
sync_data.set_pinned(pinned);
sync_data.set_extension_app_id(extension_app_id);
for (const SerializedNavigationEntry& navigation : navigations) {
*sync_data.add_navigation() = navigation.ToSyncData();
}
for (const variations::VariationID variation_id : variation_ids) {
sync_data.add_variation_id(variation_id);
}
return sync_data;
}
// SessionWindow ---------------------------------------------------------------
SessionWindow::SessionWindow()
: selected_tab_index(-1),
type(TYPE_TABBED),
is_constrained(true),
show_state(ui::SHOW_STATE_DEFAULT) {
}
SessionWindow::~SessionWindow() {
STLDeleteElements(&tabs);
}
sync_pb::SessionWindow SessionWindow::ToSyncData() const {
sync_pb::SessionWindow sync_data;
sync_data.set_window_id(window_id.id());
sync_data.set_selected_tab_index(selected_tab_index);
switch (type) {
case SessionWindow::TYPE_TABBED:
sync_data.set_browser_type(
sync_pb::SessionWindow_BrowserType_TYPE_TABBED);
break;
case SessionWindow::TYPE_POPUP:
sync_data.set_browser_type(
sync_pb::SessionWindow_BrowserType_TYPE_POPUP);
break;
default:
NOTREACHED() << "Unhandled browser type.";
}
for (size_t i = 0; i < tabs.size(); i++)
sync_data.add_tab(tabs[i]->tab_id.id());
return sync_data;
}
} // namespace sessions