| Index: chrome/browser/tab_contents/navigation_entry.h
|
| ===================================================================
|
| --- chrome/browser/tab_contents/navigation_entry.h (revision 75329)
|
| +++ chrome/browser/tab_contents/navigation_entry.h (working copy)
|
| @@ -6,424 +6,7 @@
|
| #define CHROME_BROWSER_TAB_CONTENTS_NAVIGATION_ENTRY_H_
|
| #pragma once
|
|
|
| -#include <string>
|
| +// TODO(jam): remove this file when all files have been converted.
|
| +#include "content/browser/tab_contents/navigation_entry.h"
|
|
|
| -#include "base/basictypes.h"
|
| -#include "base/ref_counted.h"
|
| -#include "chrome/common/page_type.h"
|
| -#include "chrome/common/page_transition_types.h"
|
| -#include "chrome/common/security_style.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "third_party/skia/include/core/SkBitmap.h"
|
| -
|
| -class SiteInstance;
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -//
|
| -// NavigationEntry class
|
| -//
|
| -// A NavigationEntry is a data structure that captures all the information
|
| -// required to recreate a browsing state. This includes some opaque binary
|
| -// state as provided by the TabContents as well as some clear text title and
|
| -// URL which is used for our user interface.
|
| -//
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -class NavigationEntry {
|
| - public:
|
| - // SSL -----------------------------------------------------------------------
|
| -
|
| - // Collects the SSL information for this NavigationEntry.
|
| - class SSLStatus {
|
| - public:
|
| - // Flags used for the page security content status.
|
| - enum ContentStatusFlags {
|
| - // HTTP page, or HTTPS page with no insecure content.
|
| - NORMAL_CONTENT = 0,
|
| -
|
| - // HTTPS page containing "displayed" HTTP resources (e.g. images, CSS).
|
| - DISPLAYED_INSECURE_CONTENT = 1 << 0,
|
| -
|
| - // HTTPS page containing "executed" HTTP resources (i.e. script).
|
| - // Also currently used for HTTPS page containing broken-HTTPS resources;
|
| - // this is wrong and should be fixed (see comments in
|
| - // SSLPolicy::OnRequestStarted()).
|
| - RAN_INSECURE_CONTENT = 1 << 1,
|
| - };
|
| -
|
| - SSLStatus();
|
| -
|
| - bool Equals(const SSLStatus& status) const {
|
| - return security_style_ == status.security_style_ &&
|
| - cert_id_ == status.cert_id_ &&
|
| - cert_status_ == status.cert_status_ &&
|
| - security_bits_ == status.security_bits_ &&
|
| - content_status_ == status.content_status_;
|
| - }
|
| -
|
| - void set_security_style(SecurityStyle security_style) {
|
| - security_style_ = security_style;
|
| - }
|
| - SecurityStyle security_style() const {
|
| - return security_style_;
|
| - }
|
| -
|
| - void set_cert_id(int ssl_cert_id) {
|
| - cert_id_ = ssl_cert_id;
|
| - }
|
| - int cert_id() const {
|
| - return cert_id_;
|
| - }
|
| -
|
| - void set_cert_status(int ssl_cert_status) {
|
| - cert_status_ = ssl_cert_status;
|
| - }
|
| - int cert_status() const {
|
| - return cert_status_;
|
| - }
|
| -
|
| - void set_security_bits(int security_bits) {
|
| - security_bits_ = security_bits;
|
| - }
|
| - int security_bits() const {
|
| - return security_bits_;
|
| - }
|
| -
|
| - void set_displayed_insecure_content() {
|
| - content_status_ |= DISPLAYED_INSECURE_CONTENT;
|
| - }
|
| - bool displayed_insecure_content() const {
|
| - return (content_status_ & DISPLAYED_INSECURE_CONTENT) != 0;
|
| - }
|
| -
|
| - void set_ran_insecure_content() {
|
| - content_status_ |= RAN_INSECURE_CONTENT;
|
| - }
|
| - bool ran_insecure_content() const {
|
| - return (content_status_ & RAN_INSECURE_CONTENT) != 0;
|
| - }
|
| -
|
| - void set_connection_status(int connection_status) {
|
| - connection_status_ = connection_status;
|
| - }
|
| - int connection_status() const {
|
| - return connection_status_;
|
| - }
|
| -
|
| - // Raw accessors for all the content status flags. This contains a
|
| - // combination of any of the ContentStatusFlags defined above. It is used
|
| - // by some tests for checking and for certain copying. Use the per-status
|
| - // functions for normal usage.
|
| - void set_content_status(int content_status) {
|
| - content_status_ = content_status;
|
| - }
|
| - int content_status() const {
|
| - return content_status_;
|
| - }
|
| -
|
| - private:
|
| - // See the accessors above for descriptions.
|
| - SecurityStyle security_style_;
|
| - int cert_id_;
|
| - int cert_status_;
|
| - int security_bits_;
|
| - int connection_status_;
|
| - int content_status_;
|
| -
|
| - // Copy and assignment is explicitly allowed for this class.
|
| - };
|
| -
|
| - // Favicon -------------------------------------------------------------------
|
| -
|
| - // Collects the favicon related information for a NavigationEntry.
|
| - class FaviconStatus {
|
| - public:
|
| - FaviconStatus();
|
| -
|
| - // Indicates whether we've gotten an official favicon for the page, or are
|
| - // just using the default favicon.
|
| - void set_is_valid(bool is_valid) {
|
| - valid_ = is_valid;
|
| - }
|
| - bool is_valid() const {
|
| - return valid_;
|
| - }
|
| -
|
| - // The URL of the favicon which was used to load it off the web.
|
| - void set_url(const GURL& favicon_url) {
|
| - url_ = favicon_url;
|
| - }
|
| - const GURL& url() const {
|
| - return url_;
|
| - }
|
| -
|
| - // The favicon bitmap for the page. If the favicon has not been explicitly
|
| - // set or it empty, it will return the default favicon. Note that this is
|
| - // loaded asynchronously, so even if the favicon URL is valid we may return
|
| - // the default favicon if we haven't gotten the data yet.
|
| - void set_bitmap(const SkBitmap& bitmap) {
|
| - bitmap_ = bitmap;
|
| - }
|
| - const SkBitmap& bitmap() const {
|
| - return bitmap_;
|
| - }
|
| -
|
| - private:
|
| - // See the accessors above for descriptions.
|
| - bool valid_;
|
| - GURL url_;
|
| - SkBitmap bitmap_;
|
| -
|
| - // Copy and assignment is explicitly allowed for this class.
|
| - };
|
| -
|
| - // ---------------------------------------------------------------------------
|
| -
|
| - NavigationEntry();
|
| - NavigationEntry(SiteInstance* instance,
|
| - int page_id,
|
| - const GURL& url,
|
| - const GURL& referrer,
|
| - const string16& title,
|
| - PageTransition::Type transition_type);
|
| - ~NavigationEntry();
|
| -
|
| - // Page-related stuff --------------------------------------------------------
|
| -
|
| - // A unique ID is preserved across commits and redirects, which means that
|
| - // sometimes a NavigationEntry's unique ID needs to be set (e.g. when
|
| - // creating a committed entry to correspond to a to-be-deleted pending entry,
|
| - // the pending entry's ID must be copied).
|
| - void set_unique_id(int unique_id) {
|
| - unique_id_ = unique_id;
|
| - }
|
| - int unique_id() const {
|
| - return unique_id_;
|
| - }
|
| -
|
| - // The SiteInstance tells us how to share sub-processes when the tab type is
|
| - // TAB_CONTENTS_WEB. This will be NULL otherwise. This is a reference counted
|
| - // pointer to a shared site instance.
|
| - //
|
| - // Note that the SiteInstance should usually not be changed after it is set,
|
| - // but this may happen if the NavigationEntry was cloned and needs to use a
|
| - // different SiteInstance.
|
| - void set_site_instance(SiteInstance* site_instance);
|
| - SiteInstance* site_instance() const {
|
| - return site_instance_;
|
| - }
|
| -
|
| - // The page type tells us if this entry is for an interstitial or error page.
|
| - // See the PageType enum above.
|
| - void set_page_type(PageType page_type) {
|
| - page_type_ = page_type;
|
| - }
|
| - PageType page_type() const {
|
| - return page_type_;
|
| - }
|
| -
|
| - // The actual URL of the page. For some about pages, this may be a scary
|
| - // data: URL or something like that. Use virtual_url() below for showing to
|
| - // the user.
|
| - void set_url(const GURL& url) {
|
| - url_ = url;
|
| - cached_display_title_.clear();
|
| - }
|
| - const GURL& url() const {
|
| - return url_;
|
| - }
|
| -
|
| - // The referring URL. Can be empty.
|
| - void set_referrer(const GURL& referrer) {
|
| - referrer_ = referrer;
|
| - }
|
| - const GURL& referrer() const {
|
| - return referrer_;
|
| - }
|
| -
|
| - // The virtual URL, when nonempty, will override the actual URL of the page
|
| - // when we display it to the user. This allows us to have nice and friendly
|
| - // URLs that the user sees for things like about: URLs, but actually feed
|
| - // the renderer a data URL that results in the content loading.
|
| - //
|
| - // virtual_url() will return the URL to display to the user in all cases, so
|
| - // if there is no overridden display URL, it will return the actual one.
|
| - void set_virtual_url(const GURL& url) {
|
| - virtual_url_ = (url == url_) ? GURL() : url;
|
| - cached_display_title_.clear();
|
| - }
|
| - bool has_virtual_url() const {
|
| - return !virtual_url_.is_empty();
|
| - }
|
| - const GURL& virtual_url() const {
|
| - return virtual_url_.is_empty() ? url_ : virtual_url_;
|
| - }
|
| -
|
| - bool update_virtual_url_with_url() const {
|
| - return update_virtual_url_with_url_;
|
| - }
|
| - void set_update_virtual_url_with_url(bool update) {
|
| - update_virtual_url_with_url_ = update;
|
| - }
|
| -
|
| - // The title as set by the page. This will be empty if there is no title set.
|
| - // The caller is responsible for detecting when there is no title and
|
| - // displaying the appropriate "Untitled" label if this is being displayed to
|
| - // the user.
|
| - void set_title(const string16& title) {
|
| - title_ = title;
|
| - cached_display_title_.clear();
|
| - }
|
| - const string16& title() const {
|
| - return title_;
|
| - }
|
| -
|
| - // The favicon data and tracking information. See FaviconStatus above.
|
| - const FaviconStatus& favicon() const {
|
| - return favicon_;
|
| - }
|
| - FaviconStatus& favicon() {
|
| - return favicon_;
|
| - }
|
| -
|
| - // Content state is an opaque blob created by WebKit that represents the
|
| - // state of the page. This includes form entries and scroll position for each
|
| - // frame. We store it so that we can supply it back to WebKit to restore form
|
| - // state properly when the user goes back and forward.
|
| - //
|
| - // WARNING: This state is saved to the file and used to restore previous
|
| - // states. If the format is modified in the future, we should still be able to
|
| - // deal with older versions.
|
| - void set_content_state(const std::string& state) {
|
| - content_state_ = state;
|
| - }
|
| - const std::string& content_state() const {
|
| - return content_state_;
|
| - }
|
| -
|
| - // Describes the current page that the tab represents. For web pages
|
| - // (TAB_CONTENTS_WEB) this is the ID that the renderer generated for the page
|
| - // and is how we can tell new versus renavigations.
|
| - void set_page_id(int page_id) {
|
| - page_id_ = page_id;
|
| - }
|
| - int32 page_id() const {
|
| - return page_id_;
|
| - }
|
| -
|
| - // All the SSL flags and state. See SSLStatus above.
|
| - const SSLStatus& ssl() const {
|
| - return ssl_;
|
| - }
|
| - SSLStatus& ssl() {
|
| - return ssl_;
|
| - }
|
| -
|
| - // Page-related helpers ------------------------------------------------------
|
| -
|
| - // Returns the title to be displayed on the tab. This could be the title of
|
| - // the page if it is available or the URL. |languages| is the list of
|
| - // accpeted languages (e.g., prefs::kAcceptLanguages) or empty if proper
|
| - // URL formatting isn't needed (e.g., unit tests).
|
| - const string16& GetTitleForDisplay(const std::string& languages);
|
| -
|
| - // Returns true if the current tab is in view source mode. This will be false
|
| - // if there is no navigation.
|
| - bool IsViewSourceMode() const;
|
| -
|
| - // Tracking stuff ------------------------------------------------------------
|
| -
|
| - // The transition type indicates what the user did to move to this page from
|
| - // the previous page.
|
| - void set_transition_type(PageTransition::Type transition_type) {
|
| - transition_type_ = transition_type;
|
| - }
|
| - PageTransition::Type transition_type() const {
|
| - return transition_type_;
|
| - }
|
| -
|
| - // The user typed URL was the URL that the user initiated the navigation
|
| - // with, regardless of any redirects. This is used to generate keywords, for
|
| - // example, based on "what the user thinks the site is called" rather than
|
| - // what it's actually called. For example, if the user types "foo.com", that
|
| - // may redirect somewhere arbitrary like "bar.com/foo", and we want to use
|
| - // the name that the user things of the site as having.
|
| - //
|
| - // This URL will be is_empty() if the URL was navigated to some other way.
|
| - // Callers should fall back on using the regular or display URL in this case.
|
| - void set_user_typed_url(const GURL& user_typed_url) {
|
| - user_typed_url_ = user_typed_url;
|
| - }
|
| - const GURL& user_typed_url() const {
|
| - return user_typed_url_;
|
| - }
|
| -
|
| - // Post data is form data that was posted to get to this page. The data will
|
| - // have to be reposted to reload the page properly. This flag indicates
|
| - // whether the page had post data.
|
| - //
|
| - // The actual post data is stored in the content_state and is extracted by
|
| - // WebKit to actually make the request.
|
| - void set_has_post_data(bool has_post_data) {
|
| - has_post_data_ = has_post_data;
|
| - }
|
| - bool has_post_data() const {
|
| - return has_post_data_;
|
| - }
|
| -
|
| - // Enumerations of the possible restore types.
|
| - enum RestoreType {
|
| - // The entry has been restored is from the last session.
|
| - RESTORE_LAST_SESSION,
|
| -
|
| - // The entry has been restored from the current session. This is used when
|
| - // the user issues 'reopen closed tab'.
|
| - RESTORE_CURRENT_SESSION,
|
| -
|
| - // The entry was not restored.
|
| - RESTORE_NONE
|
| - };
|
| -
|
| - // The RestoreType for this entry. This is set if the entry was retored. This
|
| - // is set to RESTORE_NONE once the entry is loaded.
|
| - void set_restore_type(RestoreType type) {
|
| - restore_type_ = type;
|
| - }
|
| - RestoreType restore_type() const {
|
| - return restore_type_;
|
| - }
|
| -
|
| - private:
|
| - // WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
| - // Session/Tab restore save portions of this class so that it can be recreated
|
| - // later. If you add a new field that needs to be persisted you'll have to
|
| - // update SessionService/TabRestoreService appropriately.
|
| - // WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
| -
|
| - // See the accessors above for descriptions.
|
| - int unique_id_;
|
| - scoped_refptr<SiteInstance> site_instance_;
|
| - PageType page_type_;
|
| - GURL url_;
|
| - GURL referrer_;
|
| - GURL virtual_url_;
|
| - bool update_virtual_url_with_url_;
|
| - string16 title_;
|
| - FaviconStatus favicon_;
|
| - std::string content_state_;
|
| - int32 page_id_;
|
| - SSLStatus ssl_;
|
| - PageTransition::Type transition_type_;
|
| - GURL user_typed_url_;
|
| - bool has_post_data_;
|
| - RestoreType restore_type_;
|
| -
|
| - // This is a cached version of the result of GetTitleForDisplay. It prevents
|
| - // us from having to do URL formatting on the URL evey time the title is
|
| - // displayed. When the URL, virtual URL, or title is set, this should be
|
| - // cleared to force a refresh.
|
| - string16 cached_display_title_;
|
| -
|
| - // Copy and assignment is explicitly allowed for this class.
|
| -};
|
| -
|
| #endif // CHROME_BROWSER_TAB_CONTENTS_NAVIGATION_ENTRY_H_
|
|
|