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

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

Issue 10826110: Modify prerendering to support having multiple session storage namespaces per tab. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months 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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 const gfx::Size& size); 117 const gfx::Size& size);
118 118
119 // Adds a prerender for |url| if valid. As the prerender request is coming 119 // Adds a prerender for |url| if valid. As the prerender request is coming
120 // from a source without a RenderViewHost (i.e., the omnibox) we don't have a 120 // from a source without a RenderViewHost (i.e., the omnibox) we don't have a
121 // child or route id, or a referrer. This method uses sensible values for 121 // child or route id, or a referrer. This method uses sensible values for
122 // those. The |session_storage_namespace| matches the namespace of the active 122 // those. The |session_storage_namespace| matches the namespace of the active
123 // tab at the time the prerender is generated from the omnibox. Returns a 123 // tab at the time the prerender is generated from the omnibox. Returns a
124 // caller-owned PrerenderHandle*, or NULL. 124 // caller-owned PrerenderHandle*, or NULL.
125 PrerenderHandle* AddPrerenderFromOmnibox( 125 PrerenderHandle* AddPrerenderFromOmnibox(
126 const GURL& url, 126 const GURL& url,
127 content::SessionStorageNamespace* session_storage_namespace, 127 const content::SessionStorageNamespaceMap& session_storage_namespace_map,
128 const gfx::Size& size); 128 const gfx::Size& size);
129 129
130 // If |process_id| and |view_id| refer to a running prerender, destroy 130 // If |process_id| and |view_id| refer to a running prerender, destroy
131 // it with |final_status|. 131 // it with |final_status|.
132 virtual void DestroyPrerenderForRenderView(int process_id, 132 virtual void DestroyPrerenderForRenderView(int process_id,
133 int view_id, 133 int view_id,
134 FinalStatus final_status); 134 FinalStatus final_status);
135 135
136 // Cancels all active prerenders. 136 // Cancels all active prerenders.
137 void CancelAllPrerenders(); 137 void CancelAllPrerenders();
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 288
289 // Adds a prerender from a pending Prerender, called by 289 // Adds a prerender from a pending Prerender, called by
290 // PrerenderContents::StartPendingPrerenders. 290 // PrerenderContents::StartPendingPrerenders.
291 void StartPendingPrerender( 291 void StartPendingPrerender(
292 PrerenderHandle* existing_prerender_handle, 292 PrerenderHandle* existing_prerender_handle,
293 Origin origin, 293 Origin origin,
294 int process_id, 294 int process_id,
295 const GURL& url, 295 const GURL& url,
296 const content::Referrer& referrer, 296 const content::Referrer& referrer,
297 const gfx::Size& size, 297 const gfx::Size& size,
298 content::SessionStorageNamespace* session_storage_namespace); 298 const content::SessionStorageNamespaceMap& session_storage_namespace_map);
299 299
300 void DestroyPendingPrerenderData(PrerenderData* pending_prerender_data); 300 void DestroyPendingPrerenderData(PrerenderData* pending_prerender_data);
301 301
302 // Utility method that is called from the virtual Shutdown method on this 302 // Utility method that is called from the virtual Shutdown method on this
303 // class but is called directly from the TestPrerenderManager in the unit 303 // class but is called directly from the TestPrerenderManager in the unit
304 // tests. 304 // tests.
305 void DoShutdown(); 305 void DoShutdown();
306 306
307 private: 307 private:
308 friend class PrerenderBrowserTest; 308 friend class PrerenderBrowserTest;
(...skipping 18 matching lines...) Expand all
327 // |child_id|. The |origin| specifies how the prerender was added. If |size| 327 // |child_id|. The |origin| specifies how the prerender was added. If |size|
328 // is empty, then PrerenderContents::StartPrerendering will instead use a 328 // is empty, then PrerenderContents::StartPrerendering will instead use a
329 // default from PrerenderConfig. Returns a PrerenderHandle*, owned by the 329 // default from PrerenderConfig. Returns a PrerenderHandle*, owned by the
330 // caller, or NULL. 330 // caller, or NULL.
331 PrerenderHandle* AddPrerender( 331 PrerenderHandle* AddPrerender(
332 Origin origin, 332 Origin origin,
333 int child_id, 333 int child_id,
334 const GURL& url, 334 const GURL& url,
335 const content::Referrer& referrer, 335 const content::Referrer& referrer,
336 const gfx::Size& size, 336 const gfx::Size& size,
337 content::SessionStorageNamespace* session_storage_namespace); 337 const content::SessionStorageNamespaceMap&
338 session_storage_namespace_map);
338 339
339 void StartSchedulingPeriodicCleanups(); 340 void StartSchedulingPeriodicCleanups();
340 void StopSchedulingPeriodicCleanups(); 341 void StopSchedulingPeriodicCleanups();
341 342
342 void EvictOldestPrerendersIfNecessary(); 343 void EvictOldestPrerendersIfNecessary();
343 344
344 // Deletes stale and cancelled prerendered PrerenderContents, as well as 345 // Deletes stale and cancelled prerendered PrerenderContents, as well as
345 // WebContents that have been replaced by prerendered WebContents. 346 // WebContents that have been replaced by prerendered WebContents.
346 // Also identifies and kills PrerenderContents that use too much 347 // Also identifies and kills PrerenderContents that use too much
347 // resources. 348 // resources.
(...skipping 16 matching lines...) Expand all
364 uint8 experiment_id); 365 uint8 experiment_id);
365 366
366 // Deletes any PrerenderContents that have been added to the pending delete 367 // Deletes any PrerenderContents that have been added to the pending delete
367 // list. 368 // list.
368 void DeletePendingDeleteEntries(); 369 void DeletePendingDeleteEntries();
369 370
370 // Finds the active PrerenderData object for a running prerender matching 371 // Finds the active PrerenderData object for a running prerender matching
371 // |url| and |session_storage_namespace|. 372 // |url| and |session_storage_namespace|.
372 PrerenderData* FindPrerenderData( 373 PrerenderData* FindPrerenderData(
373 const GURL& url, 374 const GURL& url,
374 const content::SessionStorageNamespace* session_storage_namespace); 375 const content::SessionStorageNamespaceMap& session_storage_namespace_map);
375 376
376 // If |child_id| and |route_id| correspond to a RenderView that is an active 377 // If |child_id| and |route_id| correspond to a RenderView that is an active
377 // prerender, returns the PrerenderData object for that prerender. Otherwise, 378 // prerender, returns the PrerenderData object for that prerender. Otherwise,
378 // returns NULL. 379 // returns NULL.
379 PrerenderData* FindPrerenderDataForChildAndRoute(int child_id, int route_id); 380 PrerenderData* FindPrerenderDataForChildAndRoute(int child_id, int route_id);
380 381
381 // Given the |prerender_contents|, find the iterator in active_prerender_list_ 382 // Given the |prerender_contents|, find the iterator in active_prerender_list_
382 // correponding to the given prerender. 383 // correponding to the given prerender.
383 std::list<linked_ptr<PrerenderData> >::iterator 384 std::list<linked_ptr<PrerenderData> >::iterator
384 FindIteratorForPrerenderContents(PrerenderContents* prerender_contents); 385 FindIteratorForPrerenderContents(PrerenderContents* prerender_contents);
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 503
503 DISALLOW_COPY_AND_ASSIGN(PrerenderManager); 504 DISALLOW_COPY_AND_ASSIGN(PrerenderManager);
504 }; 505 };
505 506
506 PrerenderManager* FindPrerenderManagerUsingRenderProcessId( 507 PrerenderManager* FindPrerenderManagerUsingRenderProcessId(
507 int render_process_id); 508 int render_process_id);
508 509
509 } // namespace prerender 510 } // namespace prerender
510 511
511 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_ 512 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.cc ('k') | chrome/browser/prerender/prerender_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698