| Index: components/sessions/serialized_navigation_entry.h
|
| diff --git a/chrome/browser/sessions/session_types.h b/components/sessions/serialized_navigation_entry.h
|
| similarity index 25%
|
| copy from chrome/browser/sessions/session_types.h
|
| copy to components/sessions/serialized_navigation_entry.h
|
| index 48a7318d3fff9bad713794c6438936f22ed278fd..5adfdb8f54b746fd3a133d344d20a39162c0fa92 100644
|
| --- a/chrome/browser/sessions/session_types.h
|
| +++ b/components/sessions/serialized_navigation_entry.h
|
| @@ -1,24 +1,21 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright 2013 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.
|
|
|
| -#ifndef CHROME_BROWSER_SESSIONS_SESSION_TYPES_H_
|
| -#define CHROME_BROWSER_SESSIONS_SESSION_TYPES_H_
|
| +#ifndef COMPONENTS_SESSIONS_SERIALIZED_NAVIGATION_ENTRY_H_
|
| +#define COMPONENTS_SESSIONS_SERIALIZED_NAVIGATION_ENTRY_H_
|
|
|
| -#include <algorithm>
|
| #include <string>
|
| -#include <vector>
|
|
|
| +#include "base/basictypes.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/string16.h"
|
| #include "base/time.h"
|
| -#include "chrome/browser/sessions/session_id.h"
|
| +#include "components/sessions/sessions_export.h"
|
| #include "content/public/common/page_transition_types.h"
|
| #include "content/public/common/referrer.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "sync/protocol/session_specifics.pb.h"
|
| -#include "ui/base/ui_base_types.h"
|
| -#include "ui/gfx/rect.h"
|
|
|
| class Pickle;
|
| class PickleIterator;
|
| @@ -28,57 +25,59 @@ class BrowserContext;
|
| class NavigationEntry;
|
| }
|
|
|
| -// TabNavigation -------------------------------------------------------------
|
| +namespace sessions {
|
|
|
| -// TabNavigation is a "freeze-dried" version of NavigationEntry. It
|
| -// contains the data needed to restore a NavigationEntry during
|
| -// session restore and tab restore, and it can also be pickled and
|
| -// unpickled. It is also convertible to a sync protocol buffer for
|
| -// session syncing.
|
| +class SerializedNavigationEntryTestHelper;
|
| +
|
| +// The key used to store search terms data in the NavigationEntry.
|
| +SESSIONS_EXPORT extern const char kSearchTermsKey[];
|
| +
|
| +// SerializedNavigationEntry is a "freeze-dried" version of NavigationEntry. It
|
| +// contains the data needed to restore a NavigationEntry during session restore
|
| +// and tab restore, and it can also be pickled and unpickled. It is also
|
| +// convertible to a sync protocol buffer for session syncing.
|
| //
|
| // Default copy constructor and assignment operator welcome.
|
| -class TabNavigation {
|
| +class SESSIONS_EXPORT SerializedNavigationEntry {
|
| public:
|
| - // Creates an invalid (index < 0) TabNavigation.
|
| - TabNavigation();
|
| - ~TabNavigation();
|
| + // Creates an invalid (index < 0) SerializedNavigationEntry.
|
| + SerializedNavigationEntry();
|
| + ~SerializedNavigationEntry();
|
|
|
| - // Construct a TabNavigation for a particular index from the given
|
| + // Construct a SerializedNavigationEntry for a particular index from the given
|
| // NavigationEntry.
|
| - static TabNavigation FromNavigationEntry(
|
| + static SerializedNavigationEntry FromNavigationEntry(
|
| int index,
|
| const content::NavigationEntry& entry);
|
|
|
| - // Construct a TabNavigation for a particular index from a sync
|
| - // protocol buffer. Note that the sync protocol buffer doesn't
|
| - // contain all TabNavigation fields. Also, the timestamp of the
|
| - // returned TabNavigation is nulled out, as we assume that the
|
| - // protocol buffer is from a foreign session.
|
| - static TabNavigation FromSyncData(
|
| + // Construct a SerializedNavigationEntry for a particular index from a sync
|
| + // protocol buffer. Note that the sync protocol buffer doesn't contain all
|
| + // SerializedNavigationEntry fields. Also, the timestamp of the returned
|
| + // SerializedNavigationEntry is nulled out, as we assume that the protocol
|
| + // buffer is from a foreign session.
|
| + static SerializedNavigationEntry FromSyncData(
|
| int index,
|
| const sync_pb::TabNavigation& sync_data);
|
|
|
| - // Note that not all TabNavigation fields are preserved.
|
| - void WriteToPickle(Pickle* pickle) const;
|
| + // Note that not all SerializedNavigationEntry fields are preserved.
|
| + // |max_size| is the max number of bytes to write.
|
| + void WriteToPickle(int max_size, Pickle* pickle) const;
|
| bool ReadFromPickle(PickleIterator* iterator);
|
|
|
| - // Convert this TabNavigation into a NavigationEntry with the given
|
| - // page ID and context. The NavigationEntry will have a transition
|
| - // type of PAGE_TRANSITION_RELOAD and a new unique ID.
|
| + // Convert this SerializedNavigationEntry into a NavigationEntry with the
|
| + // given page ID and context. The NavigationEntry will have a transition type
|
| + // of PAGE_TRANSITION_RELOAD and a new unique ID.
|
| scoped_ptr<content::NavigationEntry> ToNavigationEntry(
|
| int page_id,
|
| content::BrowserContext* browser_context) const;
|
|
|
| - // Convert this navigation into its sync protocol buffer equivalent.
|
| - // Note that the protocol buffer doesn't contain all TabNavigation
|
| + // Convert this navigation into its sync protocol buffer equivalent. Note
|
| + // that the protocol buffer doesn't contain all SerializedNavigationEntry
|
| // fields.
|
| sync_pb::TabNavigation ToSyncData() const;
|
|
|
| - // The index in the NavigationController. This TabNavigation is
|
| + // The index in the NavigationController. This SerializedNavigationEntry is
|
| // valid only when the index is non-negative.
|
| - //
|
| - // This is used when determining the selected TabNavigation and only
|
| - // used by SessionService.
|
| int index() const { return index_; }
|
| void set_index(int index) { index_ = index; }
|
|
|
| @@ -89,17 +88,25 @@ class TabNavigation {
|
| const std::string& content_state() const { return content_state_; }
|
| const string16& search_terms() const { return search_terms_; }
|
| const GURL& favicon_url() const { return favicon_url_; }
|
| -
|
| - // Converts a set of TabNavigations into a list of NavigationEntrys
|
| - // with sequential page IDs and the given context. The caller owns
|
| - // the returned NavigationEntrys.
|
| - static std::vector<content::NavigationEntry*>
|
| - CreateNavigationEntriesFromTabNavigations(
|
| - const std::vector<TabNavigation>& navigations,
|
| + const content::Referrer& referrer() const { return referrer_; }
|
| + content::PageTransition transition_type() const {
|
| + return transition_type_;
|
| + }
|
| + bool has_post_data() const { return has_post_data_; }
|
| + int64 post_id() const { return post_id_; }
|
| + const GURL& original_request_url() const { return original_request_url_; }
|
| + bool is_overriding_user_agent() const { return is_overriding_user_agent_; }
|
| + base::Time timestamp() const { return timestamp_; }
|
| +
|
| + // Converts a set of SerializedNavigationEntrys into a list of
|
| + // NavigationEntrys with sequential page IDs and the given context. The caller
|
| + // owns the returned NavigationEntrys.
|
| + static std::vector<content::NavigationEntry*> ToNavigationEntries(
|
| + const std::vector<SerializedNavigationEntry>& navigations,
|
| content::BrowserContext* browser_context);
|
|
|
| private:
|
| - friend struct SessionTypesTestHelper;
|
| + friend class SerializedNavigationEntryTestHelper;
|
|
|
| // Index in the NavigationController.
|
| int index_;
|
| @@ -120,130 +127,6 @@ class TabNavigation {
|
| GURL favicon_url_;
|
| };
|
|
|
| -// SessionTab ----------------------------------------------------------------
|
| -
|
| -// SessionTab corresponds to a NavigationController.
|
| -struct SessionTab {
|
| - SessionTab();
|
| - ~SessionTab();
|
| -
|
| - // Since the current_navigation_index can be larger than the index for number
|
| - // of navigations in the current sessions (chrome://newtab is not stored), we
|
| - // must perform bounds checking.
|
| - // Returns a normalized bounds-checked navigation_index.
|
| - int normalized_navigation_index() const {
|
| - return std::max(0, std::min(current_navigation_index,
|
| - static_cast<int>(navigations.size() - 1)));
|
| - }
|
| -
|
| - // Set all the fields of this object from the given sync data and
|
| - // timestamp. Uses TabNavigation::FromSyncData to fill
|
| - // |navigations|. Note that the sync protocol buffer doesn't
|
| - // contain all TabNavigation fields.
|
| - void SetFromSyncData(const sync_pb::SessionTab& sync_data,
|
| - base::Time timestamp);
|
| -
|
| - // Convert this object into its sync protocol buffer equivalent.
|
| - // Uses TabNavigation::ToSyncData to convert |navigations|. Note
|
| - // that the protocol buffer doesn't contain all TabNavigation
|
| - // fields, and that the returned protocol buffer doesn't have any
|
| - // favicon data.
|
| - sync_pb::SessionTab ToSyncData() const;
|
| -
|
| - // Unique id of the window.
|
| - SessionID window_id;
|
| -
|
| - // Unique if of the tab.
|
| - SessionID tab_id;
|
| -
|
| - // Visual index of the tab within its window. There may be gaps in these
|
| - // values.
|
| - //
|
| - // NOTE: this is really only useful for the SessionService during
|
| - // restore, others can likely ignore this and use the order of the
|
| - // tabs in SessionWindow.tabs.
|
| - int tab_visual_index;
|
| -
|
| - // Identifies the index of the current navigation in navigations. For
|
| - // example, if this is 2 it means the current navigation is navigations[2].
|
| - //
|
| - // NOTE: when the service is creating SessionTabs, initially this
|
| - // corresponds to TabNavigation.index, not the index in navigations. When done
|
| - // creating though, this is set to the index in navigations.
|
| - //
|
| - // NOTE 2: this value can be larger than the size of |navigations|, due to
|
| - // only valid url's being stored (ie chrome://newtab is not stored). Bounds
|
| - // checking must be performed before indexing into |navigations|.
|
| - int current_navigation_index;
|
| -
|
| - // True if the tab is pinned.
|
| - bool pinned;
|
| -
|
| - // If non-empty, this tab is an app tab and this is the id of the extension.
|
| - std::string extension_app_id;
|
| -
|
| - // If non-empty, this string is used as the user agent whenever the tab's
|
| - // NavigationEntries need it overridden.
|
| - std::string user_agent_override;
|
| -
|
| - // Timestamp for when this tab was last modified.
|
| - base::Time timestamp;
|
| -
|
| - std::vector<TabNavigation> navigations;
|
| -
|
| - // For reassociating sessionStorage.
|
| - std::string session_storage_persistent_id;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(SessionTab);
|
| -};
|
| -
|
| -// SessionWindow -------------------------------------------------------------
|
| -
|
| -// Describes a saved window.
|
| -struct SessionWindow {
|
| - SessionWindow();
|
| - ~SessionWindow();
|
| -
|
| - // Identifier of the window.
|
| - SessionID window_id;
|
| -
|
| - // Bounds of the window.
|
| - gfx::Rect bounds;
|
| -
|
| - // Index of the selected tab in tabs; -1 if no tab is selected. After restore
|
| - // this value is guaranteed to be a valid index into tabs.
|
| - //
|
| - // NOTE: when the service is creating SessionWindows, initially this
|
| - // corresponds to SessionTab.tab_visual_index, not the index in
|
| - // tabs. When done creating though, this is set to the index in
|
| - // tabs.
|
| - int selected_tab_index;
|
| -
|
| - // Type of the browser. Currently we only store browsers of type
|
| - // TYPE_TABBED and TYPE_POPUP.
|
| - // This would be Browser::Type, but that would cause a circular dependency.
|
| - int type;
|
| -
|
| - // If true, the window is constrained.
|
| - //
|
| - // Currently SessionService prunes all constrained windows so that session
|
| - // restore does not attempt to restore them.
|
| - bool is_constrained;
|
| -
|
| - // Timestamp for when this window was last modified.
|
| - base::Time timestamp;
|
| -
|
| - // The tabs, ordered by visual order.
|
| - std::vector<SessionTab*> tabs;
|
| -
|
| - // Is the window maximized, minimized, or normal?
|
| - ui::WindowShowState show_state;
|
| -
|
| - std::string app_name;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(SessionWindow);
|
| -};
|
| +} // namespace sessions
|
|
|
| -#endif // CHROME_BROWSER_SESSIONS_SESSION_TYPES_H_
|
| +#endif // COMPONENTS_SESSIONS_SERIALIZED_NAVIGATION_ENTRY_H_
|
|
|