// Copyright (c) 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. #ifndef CONTENT_PUBLIC_BROWSER_NAVIGATION_DETAILS_H_ #define CONTENT_PUBLIC_BROWSER_NAVIGATION_DETAILS_H_ #include <string> #include "content/common/content_export.h" #include "content/public/browser/navigation_type.h" #include "url/gurl.h" namespace content { class NavigationEntry; // Provides the details for a NOTIFICATION_NAV_ENTRY_COMMITTED notification. // TODO(brettw) this mostly duplicates ProvisionalLoadDetails, it would be // nice to unify these somehow. struct CONTENT_EXPORT LoadCommittedDetails { // By default, the entry will be filled according to a new main frame // navigation. LoadCommittedDetails(); // The committed entry. This will be the active entry in the controller. NavigationEntry* entry; // The type of navigation that just occurred. Note that not all types of // navigations in the enum are valid here, since some of them don't actually // cause a "commit" and won't generate this notification. content::NavigationType type; // The index of the previously committed navigation entry. This will be -1 // if there are no previous entries. int previous_entry_index; // The previous URL that the user was on. This may be empty if none. GURL previous_url; // True if the committed entry has replaced the exisiting one. // A non-user initiated redirect causes such replacement. bool did_replace_entry; // True if the navigation was in-page. This means that the active entry's // URL and the |previous_url| are the same except for reference fragments. bool is_in_page; // True when the main frame was navigated. False means the navigation was a // sub-frame. bool is_main_frame; // When the committed load is a web page from the renderer, this string // specifies the security state if the page is secure. // See FrameHostMsg_DidCommitProvisionalLoad_Params.security_info, where it // comes from. Use SSLManager::DeserializeSecurityInfo to decode it. std::string serialized_security_info; // Returns whether the main frame navigated to a different page (e.g., not // scrolling to a fragment inside the current page). We often need this logic // for showing or hiding something. bool is_navigation_to_different_page() const { return is_main_frame && !is_in_page; } // The HTTP status code for this entry.. int http_status_code; }; // Provides the details for a NOTIFICATION_NAV_ENTRY_CHANGED notification. struct EntryChangedDetails { // The changed navigation entry after it has been updated. const NavigationEntry* changed_entry; // Indicates the current index in the back/forward list of the entry. int index; }; // Details sent for NOTIFY_NAV_LIST_PRUNED. struct PrunedDetails { // If true, count items were removed from the front of the list, otherwise // count items were removed from the back of the list. bool from_front; // Number of items removed. int count; }; } // namespace content #endif // CONTENT_PUBLIC_BROWSER_NAVIGATION_DETAILS_H_