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

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

Issue 133073021: Pass DomContentLoaded event from prerenders to launching elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unit tests. Created 6 years, 10 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 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 } 176 }
177 177
178 private: 178 private:
179 PrerenderContents* prerender_contents_; 179 PrerenderContents* prerender_contents_;
180 }; 180 };
181 181
182 void PrerenderContents::Observer::OnPrerenderStopLoading( 182 void PrerenderContents::Observer::OnPrerenderStopLoading(
183 PrerenderContents* contents) { 183 PrerenderContents* contents) {
184 } 184 }
185 185
186 void PrerenderContents::Observer::OnPrerenderDomContentLoaded(
187 PrerenderContents* contents) {
188 }
189
186 void PrerenderContents::Observer::OnPrerenderCreatedMatchCompleteReplacement( 190 void PrerenderContents::Observer::OnPrerenderCreatedMatchCompleteReplacement(
187 PrerenderContents* contents, PrerenderContents* replacement) { 191 PrerenderContents* contents, PrerenderContents* replacement) {
188 } 192 }
189 193
190 PrerenderContents::Observer::Observer() { 194 PrerenderContents::Observer::Observer() {
191 } 195 }
192 196
193 PrerenderContents::Observer::~Observer() { 197 PrerenderContents::Observer::~Observer() {
194 } 198 }
195 199
(...skipping 14 matching lines...) Expand all
210 has_stopped_loading_(false), 214 has_stopped_loading_(false),
211 has_finished_loading_(false), 215 has_finished_loading_(false),
212 final_status_(FINAL_STATUS_MAX), 216 final_status_(FINAL_STATUS_MAX),
213 match_complete_status_(MATCH_COMPLETE_DEFAULT), 217 match_complete_status_(MATCH_COMPLETE_DEFAULT),
214 prerendering_has_been_cancelled_(false), 218 prerendering_has_been_cancelled_(false),
215 child_id_(-1), 219 child_id_(-1),
216 route_id_(-1), 220 route_id_(-1),
217 origin_(origin), 221 origin_(origin),
218 experiment_id_(experiment_id), 222 experiment_id_(experiment_id),
219 creator_child_id_(-1), 223 creator_child_id_(-1),
224 main_frame_id_(0),
220 cookie_status_(0) { 225 cookie_status_(0) {
221 DCHECK(prerender_manager != NULL); 226 DCHECK(prerender_manager != NULL);
222 } 227 }
223 228
224 PrerenderContents* PrerenderContents::CreateMatchCompleteReplacement() { 229 PrerenderContents* PrerenderContents::CreateMatchCompleteReplacement() {
225 PrerenderContents* new_contents = prerender_manager_->CreatePrerenderContents( 230 PrerenderContents* new_contents = prerender_manager_->CreatePrerenderContents(
226 prerender_url(), referrer(), origin(), experiment_id()); 231 prerender_url(), referrer(), origin(), experiment_id());
227 232
228 new_contents->load_start_time_ = load_start_time_; 233 new_contents->load_start_time_ = load_start_time_;
229 new_contents->session_storage_namespace_id_ = session_storage_namespace_id_; 234 new_contents->session_storage_namespace_id_ = session_storage_namespace_id_;
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 475
471 void PrerenderContents::NotifyPrerenderStart() { 476 void PrerenderContents::NotifyPrerenderStart() {
472 DCHECK_EQ(FINAL_STATUS_MAX, final_status_); 477 DCHECK_EQ(FINAL_STATUS_MAX, final_status_);
473 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStart(this)); 478 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStart(this));
474 } 479 }
475 480
476 void PrerenderContents::NotifyPrerenderStopLoading() { 481 void PrerenderContents::NotifyPrerenderStopLoading() {
477 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStopLoading(this)); 482 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStopLoading(this));
478 } 483 }
479 484
485 void PrerenderContents::NotifyPrerenderDomContentLoaded() {
486 FOR_EACH_OBSERVER(Observer, observer_list_,
487 OnPrerenderDomContentLoaded(this));
488 }
489
480 void PrerenderContents::NotifyPrerenderStop() { 490 void PrerenderContents::NotifyPrerenderStop() {
481 DCHECK_NE(FINAL_STATUS_MAX, final_status_); 491 DCHECK_NE(FINAL_STATUS_MAX, final_status_);
482 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStop(this)); 492 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStop(this));
483 observer_list_.Clear(); 493 observer_list_.Clear();
484 } 494 }
485 495
486 void PrerenderContents::NotifyPrerenderCreatedMatchCompleteReplacement( 496 void PrerenderContents::NotifyPrerenderCreatedMatchCompleteReplacement(
487 PrerenderContents* replacement) { 497 PrerenderContents* replacement) {
488 FOR_EACH_OBSERVER(Observer, observer_list_, 498 FOR_EACH_OBSERVER(Observer, observer_list_,
489 OnPrerenderCreatedMatchCompleteReplacement(this, 499 OnPrerenderCreatedMatchCompleteReplacement(this,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 render_frame_host->Send(new PrerenderMsg_SetIsPrerendering( 567 render_frame_host->Send(new PrerenderMsg_SetIsPrerendering(
558 render_frame_host->GetRoutingID(), true)); 568 render_frame_host->GetRoutingID(), true));
559 } 569 }
560 570
561 void PrerenderContents::DidStopLoading( 571 void PrerenderContents::DidStopLoading(
562 content::RenderViewHost* render_view_host) { 572 content::RenderViewHost* render_view_host) {
563 has_stopped_loading_ = true; 573 has_stopped_loading_ = true;
564 NotifyPrerenderStopLoading(); 574 NotifyPrerenderStopLoading();
565 } 575 }
566 576
577 void PrerenderContents::DocumentLoadedInFrame(
578 int64 frame_id,
579 RenderViewHost* render_view_host) {
580 if (frame_id == main_frame_id_)
581 NotifyPrerenderDomContentLoaded();
582 }
583
567 void PrerenderContents::DidStartProvisionalLoadForFrame( 584 void PrerenderContents::DidStartProvisionalLoadForFrame(
568 int64 frame_id, 585 int64 frame_id,
569 int64 parent_frame_id, 586 int64 parent_frame_id,
570 bool is_main_frame, 587 bool is_main_frame,
571 const GURL& validated_url, 588 const GURL& validated_url,
572 bool is_error_page, 589 bool is_error_page,
573 bool is_iframe_srcdoc, 590 bool is_iframe_srcdoc,
574 RenderViewHost* render_view_host) { 591 RenderViewHost* render_view_host) {
575 if (is_main_frame) { 592 if (is_main_frame) {
576 if (!CheckURL(validated_url)) 593 if (!CheckURL(validated_url))
577 return; 594 return;
578 595
579 // Usually, this event fires if the user clicks or enters a new URL. 596 // Usually, this event fires if the user clicks or enters a new URL.
580 // Neither of these can happen in the case of an invisible prerender. 597 // Neither of these can happen in the case of an invisible prerender.
581 // So the cause is: Some JavaScript caused a new URL to be loaded. In that 598 // So the cause is: Some JavaScript caused a new URL to be loaded. In that
582 // case, the spinner would start again in the browser, so we must reset 599 // case, the spinner would start again in the browser, so we must reset
583 // has_stopped_loading_ so that the spinner won't be stopped. 600 // has_stopped_loading_ so that the spinner won't be stopped.
584 has_stopped_loading_ = false; 601 has_stopped_loading_ = false;
585 has_finished_loading_ = false; 602 has_finished_loading_ = false;
586 } 603 }
587 } 604 }
588 605
606 void PrerenderContents::DidCommitProvisionalLoadForFrame(
607 int64 frame_id,
608 const base::string16& frame_unique_name,
609 bool is_main_frame,
610 const GURL& url,
611 content::PageTransition transition_type,
612 RenderViewHost* render_view_host) {
613 if (is_main_frame) {
614 main_frame_id_ = frame_id;
615 }
616 }
617
589 void PrerenderContents::DidFinishLoad(int64 frame_id, 618 void PrerenderContents::DidFinishLoad(int64 frame_id,
590 const GURL& validated_url, 619 const GURL& validated_url,
591 bool is_main_frame, 620 bool is_main_frame,
592 RenderViewHost* render_view_host) { 621 RenderViewHost* render_view_host) {
593 if (is_main_frame) 622 if (is_main_frame)
594 has_finished_loading_ = true; 623 has_finished_loading_ = true;
595 } 624 }
596 625
597 void PrerenderContents::DidNavigateMainFrame( 626 void PrerenderContents::DidNavigateMainFrame(
598 const content::LoadCommittedDetails& details, 627 const content::LoadCommittedDetails& details,
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 DCHECK_GE(cookie_status_, 0); 835 DCHECK_GE(cookie_status_, 0);
807 DCHECK_LT(cookie_status_, kNumCookieStatuses); 836 DCHECK_LT(cookie_status_, kNumCookieStatuses);
808 } 837 }
809 838
810 void PrerenderContents::AddResourceThrottle( 839 void PrerenderContents::AddResourceThrottle(
811 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { 840 const base::WeakPtr<PrerenderResourceThrottle>& throttle) {
812 resource_throttles_.push_back(throttle); 841 resource_throttles_.push_back(throttle);
813 } 842 }
814 843
815 } // namespace prerender 844 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698