Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Side by Side Diff: chrome/browser/prerender/prerender_manager.h

Issue 11316311: Make PrerenderHandle an observer of PrerenderContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix windows build Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_MANAGER_H_ 5 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_
6 #define CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_ 6 #define CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 // provided URL. 260 // provided URL.
261 void RecordNavigation(const GURL& url); 261 void RecordNavigation(const GURL& url);
262 262
263 Profile* profile() const { return profile_; } 263 Profile* profile() const { return profile_; }
264 264
265 protected: 265 protected:
266 class PrerenderData : public base::SupportsWeakPtr<PrerenderData> { 266 class PrerenderData : public base::SupportsWeakPtr<PrerenderData> {
267 public: 267 public:
268 struct OrderByExpiryTime; 268 struct OrderByExpiryTime;
269 269
270 // Constructor for a pending prerender, which will get its contents later.
271 explicit PrerenderData(PrerenderManager* manager);
272
273 // Constructor for an active prerender.
274 PrerenderData(PrerenderManager* manager, 270 PrerenderData(PrerenderManager* manager,
275 PrerenderContents* contents, 271 PrerenderContents* contents,
276 base::TimeTicks expiry_time); 272 base::TimeTicks expiry_time);
277 273
278 ~PrerenderData(); 274 ~PrerenderData();
279 275
280 // Turn this PrerenderData into a Match Complete replacement for itself, 276 // Turn this PrerenderData into a Match Complete replacement for itself,
281 // placing the current prerender contents into |to_delete_prerenders_|. 277 // placing the current prerender contents into |to_delete_prerenders_|.
282 void MakeIntoMatchCompleteReplacement(); 278 void MakeIntoMatchCompleteReplacement();
283 279
284 // A new PrerenderHandle has been created for this PrerenderData. 280 // A new PrerenderHandle has been created for this PrerenderData.
285 void OnNewHandle(); 281 void OnNewHandle(PrerenderHandle* prerender_handle);
mmenke 2012/12/06 22:22:15 I think "OnHandleCreated" seems to fit in a bit mo
gavinp 2012/12/10 17:55:10 Done.
286 282
287 // The launcher associated with a handle is navigating away from the context 283 // The launcher associated with a handle is navigating away from the context
288 // that launched this prerender. If the prerender is active, it may stay 284 // that launched this prerender. If the prerender is active, it may stay
289 // alive briefly though, in case we we going through a redirect chain that 285 // alive briefly though, in case we we going through a redirect chain that
290 // will eventually land at it. 286 // will eventually land at it.
291 void OnNavigateAwayByHandle(); 287 void OnNavigateAwayByHandle(PrerenderHandle* prerender_handle);
292 288
293 // The launcher associated with a handle has taken explicit action to cancel 289 // The launcher associated with a handle has taken explicit action to cancel
294 // this prerender. We may well destroy the prerender in this case if no 290 // this prerender. We may well destroy the prerender in this case if no
295 // other handles continue to track it. 291 // other handles continue to track it.
296 void OnCancelByHandle(); 292 void OnCancelByHandle(PrerenderHandle* prerender_handle);
mmenke 2012/12/06 22:22:15 I'd suggest OnHandleNavigatedAway and OnHandleCanc
gavinp 2012/12/10 17:55:10 Done. Good work using the American spelling of "Ca
mmenke 2012/12/11 19:53:45 Thanks. It's one of the few cases where I hate th
gavinp 2012/12/13 13:38:03 Wait: the American spelling is "Canceled." Would y
297 293
298 PrerenderContents* contents() { return contents_.get(); } 294 PrerenderContents* contents() { return contents_.get(); }
299 295
300 PrerenderContents* ReleaseContents(); 296 PrerenderContents* ReleaseContents();
301 297
302 int handle_count() const { return handle_count_; } 298 int handle_count() const { return handle_count_; }
303 299
304 base::TimeTicks expiry_time() const { return expiry_time_; } 300 base::TimeTicks expiry_time() const { return expiry_time_; }
305 void set_expiry_time(base::TimeTicks expiry_time) { 301 void set_expiry_time(base::TimeTicks expiry_time) {
306 expiry_time_ = expiry_time; 302 expiry_time_ = expiry_time;
(...skipping 20 matching lines...) Expand all
327 void SetPrerenderContentsFactory( 323 void SetPrerenderContentsFactory(
328 PrerenderContents::Factory* prerender_contents_factory); 324 PrerenderContents::Factory* prerender_contents_factory);
329 325
330 // Adds prerenders from the pending Prerenders, called by 326 // Adds prerenders from the pending Prerenders, called by
331 // PrerenderContents::StartPendingPrerenders. 327 // PrerenderContents::StartPendingPrerenders.
332 void StartPendingPrerenders( 328 void StartPendingPrerenders(
333 int process_id, 329 int process_id,
334 ScopedVector<PrerenderContents::PendingPrerenderInfo>* pending_prerenders, 330 ScopedVector<PrerenderContents::PendingPrerenderInfo>* pending_prerenders,
335 content::SessionStorageNamespace* session_storage_namespace); 331 content::SessionStorageNamespace* session_storage_namespace);
336 332
337 // Called by a PrerenderData to self-destroy, but only when the PrerenderData
338 // is pending (as in not yet active). Should not be called except for
339 // objects known to be in |pending_prerender_list_|.
340 void DestroyPendingPrerenderData(PrerenderData* pending_prerender_data);
341
342 // Called by a PrerenderData to signal that the launcher has navigated away 333 // Called by a PrerenderData to signal that the launcher has navigated away
343 // from the context that launched the prerender. A user may have clicked 334 // from the context that launched the prerender. A user may have clicked
344 // a link in a page containing a <link rel=prerender> element, or the user 335 // a link in a page containing a <link rel=prerender> element, or the user
345 // might have committed an omnibox navigation. This is used to possibly 336 // might have committed an omnibox navigation. This is used to possibly
346 // shorten the TTL of the prerendered page. 337 // shorten the TTL of the prerendered page.
347 void SourceNavigatedAway(PrerenderData* prerender_data); 338 void SourceNavigatedAway(PrerenderData* prerender_data);
348 339
349 private: 340 private:
350 friend class PrerenderBrowserTest; 341 friend class PrerenderBrowserTest;
351 friend class PrerenderContents; 342 friend class PrerenderContents;
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 static bool is_prefetch_enabled_; 502 static bool is_prefetch_enabled_;
512 503
513 // The profile that owns this PrerenderManager. 504 // The profile that owns this PrerenderManager.
514 Profile* profile_; 505 Profile* profile_;
515 506
516 PrerenderTracker* prerender_tracker_; 507 PrerenderTracker* prerender_tracker_;
517 508
518 // All running prerenders. Sorted by expiry time, in ascending order. 509 // All running prerenders. Sorted by expiry time, in ascending order.
519 ScopedVector<PrerenderData> active_prerenders_; 510 ScopedVector<PrerenderData> active_prerenders_;
520 511
521 // All pending prerenders.
522 ScopedVector<PrerenderData> pending_prerenders_;
523
524 // Prerenders awaiting deletion. 512 // Prerenders awaiting deletion.
525 ScopedVector<PrerenderData> to_delete_prerenders_; 513 ScopedVector<PrerenderData> to_delete_prerenders_;
526 514
527 // List of recent navigations in this profile, sorted by ascending 515 // List of recent navigations in this profile, sorted by ascending
528 // navigate_time_. 516 // navigate_time_.
529 std::list<NavigationRecord> navigations_; 517 std::list<NavigationRecord> navigations_;
530 518
531 // This map is from all WebContents which are currently displaying a 519 // This map is from all WebContents which are currently displaying a
532 // prerendered page which has already been swapped in to a 520 // prerendered page which has already been swapped in to a
533 // PrerenderedWebContentsData for tracking full lifetime information 521 // PrerenderedWebContentsData for tracking full lifetime information
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 567
580 DISALLOW_COPY_AND_ASSIGN(PrerenderManager); 568 DISALLOW_COPY_AND_ASSIGN(PrerenderManager);
581 }; 569 };
582 570
583 PrerenderManager* FindPrerenderManagerUsingRenderProcessId( 571 PrerenderManager* FindPrerenderManagerUsingRenderProcessId(
584 int render_process_id); 572 int render_process_id);
585 573
586 } // namespace prerender 574 } // namespace prerender
587 575
588 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_ 576 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698