Home | History | Annotate | Download | only in browser
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_PUBLIC_BROWSER_NAVIGATION_DETAILS_H_
      6 #define CONTENT_PUBLIC_BROWSER_NAVIGATION_DETAILS_H_
      7 
      8 #include <string>
      9 #include "content/common/content_export.h"
     10 #include "content/public/browser/navigation_type.h"
     11 #include "url/gurl.h"
     12 
     13 namespace content {
     14 
     15 class NavigationEntry;
     16 
     17 // Provides the details for a NOTIFICATION_NAV_ENTRY_COMMITTED notification.
     18 // TODO(brettw) this mostly duplicates ProvisionalLoadDetails, it would be
     19 // nice to unify these somehow.
     20 struct CONTENT_EXPORT LoadCommittedDetails {
     21   // By default, the entry will be filled according to a new main frame
     22   // navigation.
     23   LoadCommittedDetails();
     24 
     25   // The committed entry. This will be the active entry in the controller.
     26   NavigationEntry* entry;
     27 
     28   // The type of navigation that just occurred. Note that not all types of
     29   // navigations in the enum are valid here, since some of them don't actually
     30   // cause a "commit" and won't generate this notification.
     31   content::NavigationType type;
     32 
     33   // The index of the previously committed navigation entry. This will be -1
     34   // if there are no previous entries.
     35   int previous_entry_index;
     36 
     37   // The previous URL that the user was on. This may be empty if none.
     38   GURL previous_url;
     39 
     40   // True if the committed entry has replaced the exisiting one.
     41   // A non-user initiated redirect causes such replacement.
     42   bool did_replace_entry;
     43 
     44   // True if the navigation was in-page. This means that the active entry's
     45   // URL and the |previous_url| are the same except for reference fragments.
     46   bool is_in_page;
     47 
     48   // True when the main frame was navigated. False means the navigation was a
     49   // sub-frame.
     50   bool is_main_frame;
     51 
     52   // When the committed load is a web page from the renderer, this string
     53   // specifies the security state if the page is secure.
     54   // See FrameHostMsg_DidCommitProvisionalLoad_Params.security_info, where it
     55   // comes from. Use SSLManager::DeserializeSecurityInfo to decode it.
     56   std::string serialized_security_info;
     57 
     58   // Returns whether the main frame navigated to a different page (e.g., not
     59   // scrolling to a fragment inside the current page). We often need this logic
     60   // for showing or hiding something.
     61   bool is_navigation_to_different_page() const {
     62     return is_main_frame && !is_in_page;
     63   }
     64 
     65   // The HTTP status code for this entry..
     66   int http_status_code;
     67 };
     68 
     69 // Provides the details for a NOTIFICATION_NAV_ENTRY_CHANGED notification.
     70 struct EntryChangedDetails {
     71   // The changed navigation entry after it has been updated.
     72   const NavigationEntry* changed_entry;
     73 
     74   // Indicates the current index in the back/forward list of the entry.
     75   int index;
     76 };
     77 
     78 // Details sent for NOTIFY_NAV_LIST_PRUNED.
     79 struct PrunedDetails {
     80   // If true, count items were removed from the front of the list, otherwise
     81   // count items were removed from the back of the list.
     82   bool from_front;
     83 
     84   // Number of items removed.
     85   int count;
     86 };
     87 
     88 }  // namespace content
     89 
     90 #endif  // CONTENT_PUBLIC_BROWSER_NAVIGATION_DETAILS_H_
     91