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 #include "chrome/browser/prerender/prerender_contents.h" | 5 #include "chrome/browser/prerender/prerender_contents.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 PrerenderManager* prerender_manager = PrerenderManagerFactory::GetForProfile( | 282 PrerenderManager* prerender_manager = PrerenderManagerFactory::GetForProfile( |
283 Profile::FromBrowserContext(web_contents->GetBrowserContext())); | 283 Profile::FromBrowserContext(web_contents->GetBrowserContext())); |
284 if (!prerender_manager) | 284 if (!prerender_manager) |
285 return NULL; | 285 return NULL; |
286 return prerender_manager->GetPrerenderContents(web_contents); | 286 return prerender_manager->GetPrerenderContents(web_contents); |
287 } | 287 } |
288 | 288 |
289 void PrerenderContents::StartPrerendering( | 289 void PrerenderContents::StartPrerendering( |
290 int creator_child_id, | 290 int creator_child_id, |
291 const gfx::Size& size, | 291 const gfx::Size& size, |
292 SessionStorageNamespace* session_storage_namespace) { | 292 SessionStorageNamespace* session_storage_namespace, |
| 293 net::URLRequestContextGetter* request_context) { |
293 DCHECK(profile_ != NULL); | 294 DCHECK(profile_ != NULL); |
294 DCHECK(!size.IsEmpty()); | 295 DCHECK(!size.IsEmpty()); |
295 DCHECK(!prerendering_has_started_); | 296 DCHECK(!prerendering_has_started_); |
296 DCHECK(prerender_contents_.get() == NULL); | 297 DCHECK(prerender_contents_.get() == NULL); |
297 DCHECK_EQ(-1, creator_child_id_); | 298 DCHECK_EQ(-1, creator_child_id_); |
298 DCHECK(size_.IsEmpty()); | 299 DCHECK(size_.IsEmpty()); |
299 DCHECK_EQ(1U, alias_urls_.size()); | 300 DCHECK_EQ(1U, alias_urls_.size()); |
300 | 301 |
301 creator_child_id_ = creator_child_id; | 302 creator_child_id_ = creator_child_id; |
302 session_storage_namespace_id_ = session_storage_namespace->id(); | 303 session_storage_namespace_id_ = session_storage_namespace->id(); |
(...skipping 27 matching lines...) Expand all Loading... |
330 // Set the size of the prerender WebContents. | 331 // Set the size of the prerender WebContents. |
331 apps::ResizeWebContents(prerender_contents_.get(), size_); | 332 apps::ResizeWebContents(prerender_contents_.get(), size_); |
332 | 333 |
333 child_id_ = GetRenderViewHost()->GetProcess()->GetID(); | 334 child_id_ = GetRenderViewHost()->GetProcess()->GetID(); |
334 route_id_ = GetRenderViewHost()->GetRoutingID(); | 335 route_id_ = GetRenderViewHost()->GetRoutingID(); |
335 | 336 |
336 // Log transactions to see if we could merge session storage namespaces in | 337 // Log transactions to see if we could merge session storage namespaces in |
337 // the event of a mismatch. | 338 // the event of a mismatch. |
338 alias_session_storage_namespace->AddTransactionLogProcessId(child_id_); | 339 alias_session_storage_namespace->AddTransactionLogProcessId(child_id_); |
339 | 340 |
| 341 // Add this prerender to the prerender tracker. This will create a |
| 342 // Prerender Cookie Store to keep track of cookie changes performed by the |
| 343 // prerender. Once the prerender is shown, the cookie changes will be |
| 344 // committed to the actual cookie store, otherwise, they will be discarded. |
| 345 prerender_manager()->prerender_tracker()->AddPrerender( |
| 346 GetRenderViewHost()->GetProcess(), |
| 347 request_context, |
| 348 base::Bind(&PrerenderContents::Destroy, |
| 349 AsWeakPtr(), |
| 350 FINAL_STATUS_COOKIE_CONFLICT)); |
| 351 |
340 NotifyPrerenderStart(); | 352 NotifyPrerenderStart(); |
341 | 353 |
342 // Close ourselves when the application is shutting down. | 354 // Close ourselves when the application is shutting down. |
343 notification_registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING, | 355 notification_registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING, |
344 content::NotificationService::AllSources()); | 356 content::NotificationService::AllSources()); |
345 | 357 |
346 // Register to inform new RenderViews that we're prerendering. | 358 // Register to inform new RenderViews that we're prerendering. |
347 notification_registrar_.Add( | 359 notification_registrar_.Add( |
348 this, content::NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, | 360 this, content::NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, |
349 content::Source<WebContents>(prerender_contents_.get())); | 361 content::Source<WebContents>(prerender_contents_.get())); |
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 void PrerenderContents::AddResourceThrottle( | 888 void PrerenderContents::AddResourceThrottle( |
877 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { | 889 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { |
878 resource_throttles_.push_back(throttle); | 890 resource_throttles_.push_back(throttle); |
879 } | 891 } |
880 | 892 |
881 void PrerenderContents::AddNetworkBytes(int64 bytes) { | 893 void PrerenderContents::AddNetworkBytes(int64 bytes) { |
882 network_bytes_ += bytes; | 894 network_bytes_ += bytes; |
883 } | 895 } |
884 | 896 |
885 } // namespace prerender | 897 } // namespace prerender |
OLD | NEW |