diff options
Diffstat (limited to 'ios/web/public/navigation_item.h')
-rw-r--r-- | ios/web/public/navigation_item.h | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/ios/web/public/navigation_item.h b/ios/web/public/navigation_item.h index 59638f7d..8b2af55 100644 --- a/ios/web/public/navigation_item.h +++ b/ios/web/public/navigation_item.h @@ -6,11 +6,15 @@ #define IOS_WEB_PUBLIC_NAVIGATION_ITEM_H_ #include "base/strings/string16.h" +#include "base/time/time.h" #include "ui/base/page_transition_types.h" class GURL; namespace web { +struct FaviconStatus; +struct Referrer; +struct SSLStatus; // A NavigationItem is a data structure that captures all the information // required to recreate a browsing state. It represents one point in the @@ -19,25 +23,83 @@ class NavigationItem { public: virtual ~NavigationItem() {} + // 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). + virtual int GetUniqueID() const = 0; + // The actual URL of the page. For some about pages, this may be a scary // data: URL or something like that. Use GetVirtualURL() below for showing to // the user. + virtual void SetURL(const GURL& url) = 0; virtual const GURL& GetURL() const = 0; - // The URL that should be shown to the user. In most cases this is the same - // as the URL above, but in some case the underlying URL might not be - // suitable for display to the user. + // The referring URL. Can be empty. + virtual void SetReferrer(const Referrer& referrer) = 0; + virtual const Referrer& GetReferrer() const = 0; + + // 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. + // + // GetVirtualURL() 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. + virtual void SetVirtualURL(const GURL& url) = 0; virtual const GURL& GetVirtualURL() const = 0; // 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. + virtual void SetTitle(const base::string16& title) = 0; virtual const base::string16& GetTitle() const = 0; + // Describes the current page that the tab represents. This is the ID that the + // renderer generated for the page and is how we can tell new versus + // renavigations. + virtual void SetPageID(int page_id) = 0; + virtual int32 GetPageID() const = 0; + + // 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). + virtual const base::string16& GetTitleForDisplay( + const std::string& languages) const = 0; + + // Tracking stuff ------------------------------------------------------------ + // The transition type indicates what the user did to move to this page from // the previous page. + virtual void SetTransitionType(ui::PageTransition transition_type) = 0; virtual ui::PageTransition GetTransitionType() const = 0; + + // The favicon data and tracking information. See web::FaviconStatus. + virtual const FaviconStatus& GetFavicon() const = 0; + virtual FaviconStatus& GetFavicon() = 0; + + // All the SSL flags and state. See web::SSLStatus. + virtual const SSLStatus& GetSSL() const = 0; + virtual SSLStatus& GetSSL() = 0; + + // The time at which the last known local navigation has + // completed. (A navigation can be completed more than once if the + // page is reloaded.) + // + // If GetTimestamp() returns a null time, that means that either: + // + // - this navigation hasn't completed yet; + // - this navigation was restored and for some reason the + // timestamp wasn't available; + // - or this navigation was copied from a foreign session. + virtual void SetTimestamp(base::Time timestamp) = 0; + virtual base::Time GetTimestamp() const = 0; }; } // namespace web |