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

Side by Side Diff: chrome/browser/prerender/prerender_contents.cc

Issue 797443002: Remove prerender sessionStorage namespace merging (1/2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 11 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
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 #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 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 if (prerender_manager_->IsControlGroup(experiment_id())) 315 if (prerender_manager_->IsControlGroup(experiment_id()))
316 return; 316 return;
317 317
318 if (origin_ == ORIGIN_LOCAL_PREDICTOR && 318 if (origin_ == ORIGIN_LOCAL_PREDICTOR &&
319 IsLocalPredictorPrerenderAlwaysControlEnabled()) { 319 IsLocalPredictorPrerenderAlwaysControlEnabled()) {
320 return; 320 return;
321 } 321 }
322 322
323 prerendering_has_started_ = true; 323 prerendering_has_started_ = true;
324 324
325 alias_session_storage_namespace = session_storage_namespace->CreateAlias(); 325 prerender_contents_.reset(CreateWebContents(session_storage_namespace));
326 prerender_contents_.reset(
327 CreateWebContents(alias_session_storage_namespace.get()));
328 TabHelpers::AttachTabHelpers(prerender_contents_.get()); 326 TabHelpers::AttachTabHelpers(prerender_contents_.get());
329 content::WebContentsObserver::Observe(prerender_contents_.get()); 327 content::WebContentsObserver::Observe(prerender_contents_.get());
330 328
331 web_contents_delegate_.reset(new WebContentsDelegateImpl(this)); 329 web_contents_delegate_.reset(new WebContentsDelegateImpl(this));
332 prerender_contents_.get()->SetDelegate(web_contents_delegate_.get()); 330 prerender_contents_.get()->SetDelegate(web_contents_delegate_.get());
333 // Set the size of the prerender WebContents. 331 // Set the size of the prerender WebContents.
334 ResizeWebContents(prerender_contents_.get(), size_); 332 ResizeWebContents(prerender_contents_.get(), size_);
335 333
336 child_id_ = GetRenderViewHost()->GetProcess()->GetID(); 334 child_id_ = GetRenderViewHost()->GetProcess()->GetID();
337 route_id_ = GetRenderViewHost()->GetRoutingID(); 335 route_id_ = GetRenderViewHost()->GetRoutingID();
338 336
339 // Log transactions to see if we could merge session storage namespaces in
340 // the event of a mismatch.
341 alias_session_storage_namespace->AddTransactionLogProcessId(child_id_);
342
343 // Add the RenderProcessHost to the Prerender Manager. 337 // Add the RenderProcessHost to the Prerender Manager.
344 prerender_manager()->AddPrerenderProcessHost( 338 prerender_manager()->AddPrerenderProcessHost(
345 GetRenderViewHost()->GetProcess()); 339 GetRenderViewHost()->GetProcess());
346 340
347 // In the prerender tracker, create a Prerender Cookie Store to keep track of 341 // In the prerender tracker, create a Prerender Cookie Store to keep track of
348 // cookie changes performed by the prerender. Once the prerender is shown, 342 // cookie changes performed by the prerender. Once the prerender is shown,
349 // the cookie changes will be committed to the actual cookie store, 343 // the cookie changes will be committed to the actual cookie store,
350 // otherwise, they will be discarded. 344 // otherwise, they will be discarded.
351 // If |request_context| is NULL, the feature must be disabled, so the 345 // If |request_context| is NULL, the feature must be disabled, so the
352 // operation will not be performed. 346 // operation will not be performed.
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 content::RenderProcessHost* host = host_iterator.GetCurrentValue(); 575 content::RenderProcessHost* host = host_iterator.GetCurrentValue();
582 host->Send(new PrerenderMsg_OnPrerenderAddAlias(url)); 576 host->Send(new PrerenderMsg_OnPrerenderAddAlias(url));
583 } 577 }
584 578
585 return true; 579 return true;
586 } 580 }
587 581
588 bool PrerenderContents::Matches( 582 bool PrerenderContents::Matches(
589 const GURL& url, 583 const GURL& url,
590 const SessionStorageNamespace* session_storage_namespace) const { 584 const SessionStorageNamespace* session_storage_namespace) const {
585 // TODO(davidben): Remove any consumers that pass in a NULL
586 // session_storage_namespace and only test with matches.
591 if (session_storage_namespace && 587 if (session_storage_namespace &&
592 session_storage_namespace_id_ != session_storage_namespace->id()) { 588 session_storage_namespace_id_ != session_storage_namespace->id()) {
593 return false; 589 return false;
594 } 590 }
595 return std::count_if(alias_urls_.begin(), alias_urls_.end(), 591 return std::count_if(alias_urls_.begin(), alias_urls_.end(),
596 std::bind2nd(std::equal_to<GURL>(), url)) != 0; 592 std::bind2nd(std::equal_to<GURL>(), url)) != 0;
597 } 593 }
598 594
599 void PrerenderContents::RenderProcessGone(base::TerminationStatus status) { 595 void PrerenderContents::RenderProcessGone(base::TerminationStatus status) {
600 Destroy(FINAL_STATUS_RENDERER_CRASHED); 596 Destroy(FINAL_STATUS_RENDERER_CRASHED);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 size_t private_bytes, shared_bytes; 735 size_t private_bytes, shared_bytes;
740 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes) && 736 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes) &&
741 private_bytes > prerender_manager_->config().max_bytes) { 737 private_bytes > prerender_manager_->config().max_bytes) {
742 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED); 738 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED);
743 } 739 }
744 } 740 }
745 741
746 WebContents* PrerenderContents::ReleasePrerenderContents() { 742 WebContents* PrerenderContents::ReleasePrerenderContents() {
747 prerender_contents_->SetDelegate(NULL); 743 prerender_contents_->SetDelegate(NULL);
748 content::WebContentsObserver::Observe(NULL); 744 content::WebContentsObserver::Observe(NULL);
749 if (alias_session_storage_namespace.get())
750 alias_session_storage_namespace->RemoveTransactionLogProcessId(child_id_);
751 return prerender_contents_.release(); 745 return prerender_contents_.release();
752 } 746 }
753 747
754 RenderViewHost* PrerenderContents::GetRenderViewHostMutable() { 748 RenderViewHost* PrerenderContents::GetRenderViewHostMutable() {
755 return const_cast<RenderViewHost*>(GetRenderViewHost()); 749 return const_cast<RenderViewHost*>(GetRenderViewHost());
756 } 750 }
757 751
758 const RenderViewHost* PrerenderContents::GetRenderViewHost() const { 752 const RenderViewHost* PrerenderContents::GetRenderViewHost() const {
759 if (!prerender_contents_.get()) 753 if (!prerender_contents_.get())
760 return NULL; 754 return NULL;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 796
803 NotifyPrerenderStop(); 797 NotifyPrerenderStop();
804 798
805 BrowserThread::PostTask( 799 BrowserThread::PostTask(
806 BrowserThread::IO, 800 BrowserThread::IO,
807 FROM_HERE, 801 FROM_HERE,
808 base::Bind(&ResumeThrottles, resource_throttles_)); 802 base::Bind(&ResumeThrottles, resource_throttles_));
809 resource_throttles_.clear(); 803 resource_throttles_.clear();
810 } 804 }
811 805
812 SessionStorageNamespace* PrerenderContents::GetSessionStorageNamespace() const {
813 if (!prerender_contents())
814 return NULL;
815 return prerender_contents()->GetController().
816 GetDefaultSessionStorageNamespace();
817 }
818
819 void PrerenderContents::OnCancelPrerenderForPrinting() { 806 void PrerenderContents::OnCancelPrerenderForPrinting() {
820 Destroy(FINAL_STATUS_WINDOW_PRINT); 807 Destroy(FINAL_STATUS_WINDOW_PRINT);
821 } 808 }
822 809
823 void PrerenderContents::RecordCookieEvent(CookieEvent event, 810 void PrerenderContents::RecordCookieEvent(CookieEvent event,
824 bool is_main_frame_http_request, 811 bool is_main_frame_http_request,
825 bool is_third_party_cookie, 812 bool is_third_party_cookie,
826 bool is_for_blocking_resource, 813 bool is_for_blocking_resource,
827 base::Time earliest_create_date) { 814 base::Time earliest_create_date) {
828 // We don't care about sent cookies that were created after this prerender 815 // We don't care about sent cookies that were created after this prerender
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 void PrerenderContents::AddResourceThrottle( 871 void PrerenderContents::AddResourceThrottle(
885 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { 872 const base::WeakPtr<PrerenderResourceThrottle>& throttle) {
886 resource_throttles_.push_back(throttle); 873 resource_throttles_.push_back(throttle);
887 } 874 }
888 875
889 void PrerenderContents::AddNetworkBytes(int64 bytes) { 876 void PrerenderContents::AddNetworkBytes(int64 bytes) {
890 network_bytes_ += bytes; 877 network_bytes_ += bytes;
891 } 878 }
892 879
893 } // namespace prerender 880 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/prerender/prerender_events.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698