OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 CHROME_BROWSER_PRERENDER_PRERENDER_CONTENTS_H_ | 5 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_CONTENTS_H_ |
6 #define CHROME_BROWSER_PRERENDER_PRERENDER_CONTENTS_H_ | 6 #define CHROME_BROWSER_PRERENDER_PRERENDER_CONTENTS_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 // starting a prerender, without actually creating the RenderView. | 106 // starting a prerender, without actually creating the RenderView. |
107 // |creator_child_id| is the id of the child process that caused the prerender | 107 // |creator_child_id| is the id of the child process that caused the prerender |
108 // to be created, and is needed so that the prerendered URLs can be sent to it | 108 // to be created, and is needed so that the prerendered URLs can be sent to it |
109 // so render-initiated navigations will swap in the prerendered page. |size| | 109 // so render-initiated navigations will swap in the prerendered page. |size| |
110 // indicates the rectangular dimensions that the prerendered page should be. | 110 // indicates the rectangular dimensions that the prerendered page should be. |
111 // |session_storage_namespace| indicates the namespace that the prerendered | 111 // |session_storage_namespace| indicates the namespace that the prerendered |
112 // page should be part of. | 112 // page should be part of. |
113 virtual void StartPrerendering( | 113 virtual void StartPrerendering( |
114 int creator_child_id, | 114 int creator_child_id, |
115 const gfx::Size& size, | 115 const gfx::Size& size, |
116 content::SessionStorageNamespace* session_storage_namespace, | 116 const content::SessionStorageNamespaceMap& session_storage_namespace_map, |
117 bool is_control_group); | 117 bool is_control_group); |
118 | 118 |
119 // Verifies that the prerendering is not using too many resources, and kills | 119 // Verifies that the prerendering is not using too many resources, and kills |
120 // it if not. | 120 // it if not. |
121 void DestroyWhenUsingTooManyResources(); | 121 void DestroyWhenUsingTooManyResources(); |
122 | 122 |
123 content::RenderViewHost* GetRenderViewHostMutable(); | 123 content::RenderViewHost* GetRenderViewHostMutable(); |
124 const content::RenderViewHost* GetRenderViewHost() const; | 124 const content::RenderViewHost* GetRenderViewHost() const; |
125 | 125 |
126 string16 title() const { return title_; } | 126 string16 title() const { return title_; } |
(...skipping 27 matching lines...) Expand all Loading... |
154 | 154 |
155 Origin origin() const { return origin_; } | 155 Origin origin() const { return origin_; } |
156 uint8 experiment_id() const { return experiment_id_; } | 156 uint8 experiment_id() const { return experiment_id_; } |
157 | 157 |
158 base::TimeTicks load_start_time() const { return load_start_time_; } | 158 base::TimeTicks load_start_time() const { return load_start_time_; } |
159 | 159 |
160 // Indicates whether this prerendered page can be used for the provided | 160 // Indicates whether this prerendered page can be used for the provided |
161 // |url| and |session_storage_namespace|. | 161 // |url| and |session_storage_namespace|. |
162 bool Matches( | 162 bool Matches( |
163 const GURL& url, | 163 const GURL& url, |
164 const content::SessionStorageNamespace* session_storage_namespace) const; | 164 const content::SessionStorageNamespaceMap& session_storage_namespace_map) |
| 165 const; |
165 | 166 |
166 // content::WebContentsObserver implementation. | 167 // content::WebContentsObserver implementation. |
167 virtual void DidStopLoading( | 168 virtual void DidStopLoading( |
168 content::RenderViewHost* render_view_host) OVERRIDE; | 169 content::RenderViewHost* render_view_host) OVERRIDE; |
169 virtual void DidStartProvisionalLoadForFrame( | 170 virtual void DidStartProvisionalLoadForFrame( |
170 int64 frame_id, | 171 int64 frame_id, |
171 bool is_main_frame, | 172 bool is_main_frame, |
172 const GURL& validated_url, | 173 const GURL& validated_url, |
173 bool is_error_page, | 174 bool is_error_page, |
174 content::RenderViewHost* render_view_host) OVERRIDE; | 175 content::RenderViewHost* render_view_host) OVERRIDE; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 const content::Referrer& referrer, | 241 const content::Referrer& referrer, |
241 const gfx::Size& size); | 242 const gfx::Size& size); |
242 ~PendingPrerenderInfo(); | 243 ~PendingPrerenderInfo(); |
243 | 244 |
244 base::WeakPtr<PrerenderHandle> weak_prerender_handle; | 245 base::WeakPtr<PrerenderHandle> weak_prerender_handle; |
245 GURL url; | 246 GURL url; |
246 content::Referrer referrer; | 247 content::Referrer referrer; |
247 gfx::Size size; | 248 gfx::Size size; |
248 }; | 249 }; |
249 | 250 |
| 251 // TODO(ajwong): These protected virtuals are only around for unittests. Make |
| 252 // them private. |
| 253 |
250 PrerenderContents(PrerenderManager* prerender_manager, | 254 PrerenderContents(PrerenderManager* prerender_manager, |
251 PrerenderTracker* prerender_tracker, | 255 PrerenderTracker* prerender_tracker, |
252 Profile* profile, | 256 Profile* profile, |
253 const GURL& url, | 257 const GURL& url, |
254 const content::Referrer& referrer, | 258 const content::Referrer& referrer, |
255 Origin origin, | 259 Origin origin, |
256 uint8 experiment_id); | 260 uint8 experiment_id); |
257 | 261 |
258 // Called whenever a RenderViewHost is created for prerendering. Only called | 262 // Called whenever a RenderViewHost is created for prerendering. Only called |
259 // once the RenderViewHost has a RenderView and RenderWidgetHostView. | 263 // once the RenderViewHost has a RenderView and RenderWidgetHostView. |
260 virtual void OnRenderViewHostCreated( | 264 virtual void OnRenderViewHostCreated( |
261 content::RenderViewHost* new_render_view_host); | 265 content::RenderViewHost* new_render_view_host); |
262 | 266 |
263 content::NotificationRegistrar& notification_registrar() { | 267 content::NotificationRegistrar& notification_registrar() { |
264 return notification_registrar_; | 268 return notification_registrar_; |
265 } | 269 } |
266 | 270 |
267 const std::vector<PendingPrerenderInfo>& pending_prerenders() const { | 271 const std::vector<PendingPrerenderInfo>& pending_prerenders() const { |
268 return pending_prerenders_; | 272 return pending_prerenders_; |
269 } | 273 } |
270 | 274 |
271 bool prerendering_has_been_cancelled() const { | 275 bool prerendering_has_been_cancelled() const { |
272 return prerendering_has_been_cancelled_; | 276 return prerendering_has_been_cancelled_; |
273 } | 277 } |
274 | 278 |
275 virtual content::WebContents* CreateWebContents( | 279 virtual content::WebContents* CreateWebContents( |
276 content::SessionStorageNamespace* session_storage_namespace); | 280 const content::SessionStorageNamespaceMap& |
| 281 session_storage_namespace_map); |
277 | 282 |
278 bool prerendering_has_started_; | 283 bool prerendering_has_started_; |
279 | 284 |
280 // Time at which we started to load the URL. This is used to compute | 285 // Time at which we started to load the URL. This is used to compute |
281 // the time elapsed from initiating a prerender until the time the | 286 // the time elapsed from initiating a prerender until the time the |
282 // (potentially only partially) prerendered page is shown to the user. | 287 // (potentially only partially) prerendered page is shown to the user. |
283 base::TimeTicks load_start_time_; | 288 base::TimeTicks load_start_time_; |
284 | 289 |
285 private: | 290 private: |
286 class TabContentsDelegateImpl; | 291 class TabContentsDelegateImpl; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 int32 page_id_; | 328 int32 page_id_; |
324 GURL url_; | 329 GURL url_; |
325 GURL icon_url_; | 330 GURL icon_url_; |
326 content::NotificationRegistrar notification_registrar_; | 331 content::NotificationRegistrar notification_registrar_; |
327 | 332 |
328 // A vector of URLs that this prerendered page matches against. | 333 // A vector of URLs that this prerendered page matches against. |
329 // This array can contain more than element as a result of redirects, | 334 // This array can contain more than element as a result of redirects, |
330 // such as HTTP redirects or javascript redirects. | 335 // such as HTTP redirects or javascript redirects. |
331 std::vector<GURL> alias_urls_; | 336 std::vector<GURL> alias_urls_; |
332 | 337 |
333 // The session storage namespace id for use in matching. We must save it | 338 // The session storage namespace ids for use in matching. We must save it |
334 // rather than get it from the RenderViewHost since in the control group | 339 // rather than get it from the RenderViewHost since in the control group |
335 // we won't have a RenderViewHost. | 340 // we won't have a RenderViewHost. |
336 int64 session_storage_namespace_id_; | 341 std::set<int64> session_storage_namespace_ids_; |
337 | 342 |
338 bool has_stopped_loading_; | 343 bool has_stopped_loading_; |
339 | 344 |
340 // True when the main frame has finished loading. | 345 // True when the main frame has finished loading. |
341 bool has_finished_loading_; | 346 bool has_finished_loading_; |
342 | 347 |
343 // This must be the same value as the PrerenderTracker has recorded for | 348 // This must be the same value as the PrerenderTracker has recorded for |
344 // |this|, when |this| has a RenderView. | 349 // |this|, when |this| has a RenderView. |
345 FinalStatus final_status_; | 350 FinalStatus final_status_; |
346 | 351 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 | 387 |
383 // The size of the WebView from the launching page. | 388 // The size of the WebView from the launching page. |
384 gfx::Size size_; | 389 gfx::Size size_; |
385 | 390 |
386 DISALLOW_COPY_AND_ASSIGN(PrerenderContents); | 391 DISALLOW_COPY_AND_ASSIGN(PrerenderContents); |
387 }; | 392 }; |
388 | 393 |
389 } // namespace prerender | 394 } // namespace prerender |
390 | 395 |
391 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_CONTENTS_H_ | 396 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_CONTENTS_H_ |
OLD | NEW |