OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <list> | 9 #include <list> |
10 #include <map> | 10 #include <map> |
(...skipping 20 matching lines...) Expand all Loading... |
31 std::size_t operator()(TabContents* value) const { | 31 std::size_t operator()(TabContents* value) const { |
32 return reinterpret_cast<std::size_t>(value); | 32 return reinterpret_cast<std::size_t>(value); |
33 } | 33 } |
34 }; | 34 }; |
35 } | 35 } |
36 | 36 |
37 #endif | 37 #endif |
38 | 38 |
39 namespace prerender { | 39 namespace prerender { |
40 | 40 |
| 41 class PrerenderTracker; |
| 42 |
41 // Adds either a preload or a pending preload to the PrerenderManager. | 43 // Adds either a preload or a pending preload to the PrerenderManager. |
42 // Must be called on the UI thread. | 44 // Must be called on the UI thread. |
43 void HandlePrefetchTag( | 45 void HandlePrefetchTag( |
44 const base::WeakPtr<PrerenderManager>& prerender_manager, | 46 const base::WeakPtr<PrerenderManager>& prerender_manager, |
45 int render_process_id, | 47 int render_process_id, |
46 int render_view_id, | 48 int render_view_id, |
47 const GURL& url, | 49 const GURL& url, |
48 const GURL& referrer, | 50 const GURL& referrer, |
49 bool make_pending); | 51 bool make_pending); |
50 | 52 |
| 53 void DestroyPreloadForRenderView( |
| 54 const base::WeakPtr<PrerenderManager>& prerender_manager_weak_ptr, |
| 55 int child_id, |
| 56 int route_id, |
| 57 FinalStatus final_status); |
| 58 |
51 // PrerenderManager is responsible for initiating and keeping prerendered | 59 // PrerenderManager is responsible for initiating and keeping prerendered |
52 // views of webpages. All methods must be called on the UI thread unless | 60 // views of webpages. All methods must be called on the UI thread unless |
53 // indicated otherwise. | 61 // indicated otherwise. |
54 class PrerenderManager : public base::SupportsWeakPtr<PrerenderManager>, | 62 class PrerenderManager : public base::SupportsWeakPtr<PrerenderManager>, |
55 public base::NonThreadSafe { | 63 public base::NonThreadSafe { |
56 public: | 64 public: |
57 // PrerenderManagerMode is used in a UMA_HISTOGRAM, so please do not | 65 // PrerenderManagerMode is used in a UMA_HISTOGRAM, so please do not |
58 // add in the middle. | 66 // add in the middle. |
59 enum PrerenderManagerMode { | 67 enum PrerenderManagerMode { |
60 PRERENDER_MODE_DISABLED, | 68 PRERENDER_MODE_DISABLED, |
61 PRERENDER_MODE_ENABLED, | 69 PRERENDER_MODE_ENABLED, |
62 PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP, | 70 PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP, |
63 PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP, | 71 PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP, |
64 PRERENDER_MODE_MAX | 72 PRERENDER_MODE_MAX |
65 }; | 73 }; |
66 | 74 |
67 // Owned by a Profile object for the lifetime of the profile. | 75 // Owned by a Profile object for the lifetime of the profile. |
68 explicit PrerenderManager(Profile* profile); | 76 PrerenderManager(Profile* profile, PrerenderTracker* prerender_tracker); |
69 | 77 |
70 virtual ~PrerenderManager(); | 78 virtual ~PrerenderManager(); |
71 | 79 |
72 // Preloads |url| if valid. |child_route_id_pair| identifies the | 80 // Preloads |url| if valid. |child_route_id_pair| identifies the |
73 // RenderViewHost that the prerender request came from and is used to | 81 // RenderViewHost that the prerender request came from and is used to |
74 // set the initial window size of the RenderViewHost used for prerendering. | 82 // set the initial window size of the RenderViewHost used for prerendering. |
75 // Returns true if the URL was added, false if it was not. | 83 // Returns true if the URL was added, false if it was not. |
76 bool AddPreload( | 84 bool AddPreload( |
77 const std::pair<int, int>& child_route_id_pair, | 85 const std::pair<int, int>& child_route_id_pair, |
78 const GURL& url, | 86 const GURL& url, |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 // Cleans up old NavigationRecord's. | 269 // Cleans up old NavigationRecord's. |
262 void CleanUpOldNavigations(); | 270 void CleanUpOldNavigations(); |
263 | 271 |
264 // Specifies whether prerendering is currently enabled for this | 272 // Specifies whether prerendering is currently enabled for this |
265 // manager. The value can change dynamically during the lifetime | 273 // manager. The value can change dynamically during the lifetime |
266 // of the PrerenderManager. | 274 // of the PrerenderManager. |
267 bool enabled_; | 275 bool enabled_; |
268 | 276 |
269 Profile* profile_; | 277 Profile* profile_; |
270 | 278 |
| 279 PrerenderTracker* prerender_tracker_; |
| 280 |
271 base::TimeDelta max_prerender_age_; | 281 base::TimeDelta max_prerender_age_; |
272 // Maximum amount of memory, in megabytes, that a single PrerenderContents | 282 // Maximum amount of memory, in megabytes, that a single PrerenderContents |
273 // can use before it's cancelled. | 283 // can use before it's cancelled. |
274 size_t max_prerender_memory_mb_; | 284 size_t max_prerender_memory_mb_; |
275 unsigned int max_elements_; | 285 unsigned int max_elements_; |
276 | 286 |
277 // List of prerendered elements. | 287 // List of prerendered elements. |
278 std::list<PrerenderContentsData> prerender_list_; | 288 std::list<PrerenderContentsData> prerender_list_; |
279 | 289 |
280 // List of recent navigations in this profile, sorted by ascending | 290 // List of recent navigations in this profile, sorted by ascending |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 | 330 |
321 // Cancels pending tasks on deletion. | 331 // Cancels pending tasks on deletion. |
322 ScopedRunnableMethodFactory<PrerenderManager> runnable_method_factory_; | 332 ScopedRunnableMethodFactory<PrerenderManager> runnable_method_factory_; |
323 | 333 |
324 DISALLOW_COPY_AND_ASSIGN(PrerenderManager); | 334 DISALLOW_COPY_AND_ASSIGN(PrerenderManager); |
325 }; | 335 }; |
326 | 336 |
327 } // namespace prerender | 337 } // namespace prerender |
328 | 338 |
329 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_ | 339 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_ |
OLD | NEW |