summaryrefslogtreecommitdiffstats
path: root/ios/web/public/navigation_item.h
diff options
context:
space:
mode:
Diffstat (limited to 'ios/web/public/navigation_item.h')
-rw-r--r--ios/web/public/navigation_item.h68
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