OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_IMPL_H_ |
6 #define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_IMPL_H_ | 6 #define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_IMPL_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 // and it will return false. | 148 // and it will return false. |
149 bool RendererDidNavigate( | 149 bool RendererDidNavigate( |
150 RenderFrameHostImpl* rfh, | 150 RenderFrameHostImpl* rfh, |
151 const FrameHostMsg_DidCommitProvisionalLoad_Params& params, | 151 const FrameHostMsg_DidCommitProvisionalLoad_Params& params, |
152 LoadCommittedDetails* details); | 152 LoadCommittedDetails* details); |
153 | 153 |
154 // Notifies us that we just became active. This is used by the WebContentsImpl | 154 // Notifies us that we just became active. This is used by the WebContentsImpl |
155 // so that we know to load URLs that were pending as "lazy" loads. | 155 // so that we know to load URLs that were pending as "lazy" loads. |
156 void SetActive(bool is_active); | 156 void SetActive(bool is_active); |
157 | 157 |
158 // Returns true if the given URL would be an in-page navigation (i.e. only the | 158 // Returns true if the given URL would be an in-page navigation (e.g., if the |
159 // reference fragment is different) from the last committed URL in the | 159 // reference fragment is different, or after a pushState) from the last |
160 // specified frame. If there is no last committed entry, then nothing will be | 160 // committed URL in the specified frame. If there is no last committed entry, |
161 // in-page. | 161 // then nothing will be in-page. |
162 // | 162 // |
163 // Special note: if the URLs are the same, it does NOT automatically count as | 163 // Special note: if the URLs are the same, it does NOT automatically count as |
164 // an in-page navigation. Neither does an input URL that has no ref, even if | 164 // an in-page navigation. Neither does an input URL that has no ref, even if |
165 // the rest is the same. This may seem weird, but when we're considering | 165 // the rest is the same. This may seem weird, but when we're considering |
166 // whether a navigation happened without loading anything, the same URL could | 166 // whether a navigation happened without loading anything, the same URL could |
167 // be a reload, while only a different ref would be in-page (pages can't clear | 167 // be a reload, while only a different ref would be in-page (pages can't clear |
168 // refs without reload, only change to "#" which we don't count as empty). | 168 // refs without reload, only change to "#" which we don't count as empty). |
169 // | 169 // |
170 // The situation is made murkier by history.replaceState(), which could | 170 // The situation is made murkier by history.replaceState(), which could |
171 // provide the same URL as part of an in-page navigation, not a reload. So | 171 // provide the same URL as part of an in-page navigation, not a reload. So |
172 // we need to let the (untrustworthy) renderer resolve the ambiguity, but | 172 // we need to let the (untrustworthy) renderer resolve the ambiguity, but |
173 // only when the URLs are on the same origin. | 173 // only when the URLs are on the same origin. We rely on |origin|, which |
174 bool IsURLInPageNavigation( | 174 // matters in cases like about:blank that otherwise look cross-origin. |
175 const GURL& url, | 175 bool IsURLInPageNavigation(const GURL& url, |
176 bool renderer_says_in_page, | 176 const url::Origin& origin, |
177 RenderFrameHost* rfh) const; | 177 bool renderer_says_in_page, |
| 178 RenderFrameHost* rfh) const; |
178 | 179 |
179 // Sets the SessionStorageNamespace for the given |partition_id|. This is | 180 // Sets the SessionStorageNamespace for the given |partition_id|. This is |
180 // used during initialization of a new NavigationController to allow | 181 // used during initialization of a new NavigationController to allow |
181 // pre-population of the SessionStorageNamespace objects. Session restore, | 182 // pre-population of the SessionStorageNamespace objects. Session restore, |
182 // prerendering, and the implementaion of window.open() are the primary users | 183 // prerendering, and the implementaion of window.open() are the primary users |
183 // of this API. | 184 // of this API. |
184 // | 185 // |
185 // Calling this function when a SessionStorageNamespace has already been | 186 // Calling this function when a SessionStorageNamespace has already been |
186 // associated with a |partition_id| will CHECK() fail. | 187 // associated with a |partition_id| will CHECK() fail. |
187 void SetSessionStorageNamespace( | 188 void SetSessionStorageNamespace( |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 TimeSmoother time_smoother_; | 450 TimeSmoother time_smoother_; |
450 | 451 |
451 std::unique_ptr<NavigationEntryScreenshotManager> screenshot_manager_; | 452 std::unique_ptr<NavigationEntryScreenshotManager> screenshot_manager_; |
452 | 453 |
453 DISALLOW_COPY_AND_ASSIGN(NavigationControllerImpl); | 454 DISALLOW_COPY_AND_ASSIGN(NavigationControllerImpl); |
454 }; | 455 }; |
455 | 456 |
456 } // namespace content | 457 } // namespace content |
457 | 458 |
458 #endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_IMPL_H_ | 459 #endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_IMPL_H_ |
OLD | NEW |