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

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

Issue 1896403002: Prerender: Remove MatchComplete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: re-enable PrerenderDeferredSynchronousXHR Created 4 years, 7 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <functional> 10 #include <functional>
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 }; 177 };
178 178
179 void PrerenderContents::Observer::OnPrerenderStopLoading( 179 void PrerenderContents::Observer::OnPrerenderStopLoading(
180 PrerenderContents* contents) { 180 PrerenderContents* contents) {
181 } 181 }
182 182
183 void PrerenderContents::Observer::OnPrerenderDomContentLoaded( 183 void PrerenderContents::Observer::OnPrerenderDomContentLoaded(
184 PrerenderContents* contents) { 184 PrerenderContents* contents) {
185 } 185 }
186 186
187 void PrerenderContents::Observer::OnPrerenderCreatedMatchCompleteReplacement(
188 PrerenderContents* contents, PrerenderContents* replacement) {
189 }
190
191 PrerenderContents::Observer::Observer() { 187 PrerenderContents::Observer::Observer() {
192 } 188 }
193 189
194 PrerenderContents::Observer::~Observer() { 190 PrerenderContents::Observer::~Observer() {
195 } 191 }
196 192
197 PrerenderContents::PrerenderContents( 193 PrerenderContents::PrerenderContents(
198 PrerenderManager* prerender_manager, 194 PrerenderManager* prerender_manager,
199 Profile* profile, 195 Profile* profile,
200 const GURL& url, 196 const GURL& url,
(...skipping 10 matching lines...) Expand all
211 final_status_(FINAL_STATUS_MAX), 207 final_status_(FINAL_STATUS_MAX),
212 match_complete_status_(MATCH_COMPLETE_DEFAULT), 208 match_complete_status_(MATCH_COMPLETE_DEFAULT),
213 prerendering_has_been_cancelled_(false), 209 prerendering_has_been_cancelled_(false),
214 child_id_(-1), 210 child_id_(-1),
215 route_id_(-1), 211 route_id_(-1),
216 origin_(origin), 212 origin_(origin),
217 network_bytes_(0) { 213 network_bytes_(0) {
218 DCHECK(prerender_manager != NULL); 214 DCHECK(prerender_manager != NULL);
219 } 215 }
220 216
221 PrerenderContents* PrerenderContents::CreateMatchCompleteReplacement() {
222 PrerenderContents* new_contents = prerender_manager_->CreatePrerenderContents(
223 prerender_url(), referrer(), origin());
224
225 new_contents->load_start_time_ = load_start_time_;
226 new_contents->session_storage_namespace_id_ = session_storage_namespace_id_;
227 new_contents->set_match_complete_status(
228 PrerenderContents::MATCH_COMPLETE_REPLACEMENT_PENDING);
229
230 const bool did_init = new_contents->Init();
231 DCHECK(did_init);
232 DCHECK_EQ(alias_urls_.front(), new_contents->alias_urls_.front());
233 DCHECK_EQ(1u, new_contents->alias_urls_.size());
234 new_contents->alias_urls_ = alias_urls_;
235 // Erase all but the first alias URL; the replacement has adopted the
236 // remainder without increasing the renderer-side reference count.
237 alias_urls_.resize(1);
238 new_contents->set_match_complete_status(
239 PrerenderContents::MATCH_COMPLETE_REPLACEMENT);
240 NotifyPrerenderCreatedMatchCompleteReplacement(new_contents);
241 return new_contents;
242 }
243
244 bool PrerenderContents::Init() { 217 bool PrerenderContents::Init() {
245 return AddAliasURL(prerender_url_); 218 return AddAliasURL(prerender_url_);
246 } 219 }
247 220
248 // static 221 // static
249 PrerenderContents::Factory* PrerenderContents::CreateFactory() { 222 PrerenderContents::Factory* PrerenderContents::CreateFactory() {
250 return new PrerenderContentsFactoryImpl(); 223 return new PrerenderContentsFactoryImpl();
251 } 224 }
252 225
253 // static 226 // static
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 FOR_EACH_OBSERVER(Observer, observer_list_, 441 FOR_EACH_OBSERVER(Observer, observer_list_,
469 OnPrerenderDomContentLoaded(this)); 442 OnPrerenderDomContentLoaded(this));
470 } 443 }
471 444
472 void PrerenderContents::NotifyPrerenderStop() { 445 void PrerenderContents::NotifyPrerenderStop() {
473 DCHECK_NE(FINAL_STATUS_MAX, final_status_); 446 DCHECK_NE(FINAL_STATUS_MAX, final_status_);
474 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStop(this)); 447 FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderStop(this));
475 observer_list_.Clear(); 448 observer_list_.Clear();
476 } 449 }
477 450
478 void PrerenderContents::NotifyPrerenderCreatedMatchCompleteReplacement(
479 PrerenderContents* replacement) {
480 FOR_EACH_OBSERVER(Observer, observer_list_,
481 OnPrerenderCreatedMatchCompleteReplacement(this,
482 replacement));
483 }
484
485 bool PrerenderContents::OnMessageReceived(const IPC::Message& message) { 451 bool PrerenderContents::OnMessageReceived(const IPC::Message& message) {
486 bool handled = true; 452 bool handled = true;
487 // The following messages we do want to consume. 453 // The following messages we do want to consume.
488 IPC_BEGIN_MESSAGE_MAP(PrerenderContents, message) 454 IPC_BEGIN_MESSAGE_MAP(PrerenderContents, message)
489 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_CancelPrerenderForPrinting, 455 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_CancelPrerenderForPrinting,
490 OnCancelPrerenderForPrinting) 456 OnCancelPrerenderForPrinting)
491 IPC_MESSAGE_UNHANDLED(handled = false) 457 IPC_MESSAGE_UNHANDLED(handled = false)
492 IPC_END_MESSAGE_MAP() 458 IPC_END_MESSAGE_MAP()
493 459
494 return handled; 460 return handled;
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 599
634 if (prerendering_has_been_cancelled_) 600 if (prerendering_has_been_cancelled_)
635 return; 601 return;
636 602
637 SetFinalStatus(final_status); 603 SetFinalStatus(final_status);
638 604
639 prerendering_has_been_cancelled_ = true; 605 prerendering_has_been_cancelled_ = true;
640 prerender_manager_->AddToHistory(this); 606 prerender_manager_->AddToHistory(this);
641 prerender_manager_->MoveEntryToPendingDelete(this, final_status); 607 prerender_manager_->MoveEntryToPendingDelete(this, final_status);
642 608
643 // Note that if this PrerenderContents was made into a MatchComplete 609 if (!prerender_manager_->IsControlGroup() && prerendering_has_started())
644 // replacement by MoveEntryToPendingDelete, NotifyPrerenderStop will
645 // not reach the PrerenderHandle. Rather
646 // OnPrerenderCreatedMatchCompleteReplacement will propogate that
647 // information to the referer.
648 if (!prerender_manager_->IsControlGroup() &&
649 (prerendering_has_started() ||
650 match_complete_status() == MATCH_COMPLETE_REPLACEMENT)) {
651 NotifyPrerenderStop(); 610 NotifyPrerenderStop();
652 }
653 } 611 }
654 612
655 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() { 613 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() {
656 if (process_metrics_.get() == NULL) { 614 if (process_metrics_.get() == NULL) {
657 // If a PrenderContents hasn't started prerending, don't be fully formed. 615 // If a PrenderContents hasn't started prerending, don't be fully formed.
658 if (!GetRenderViewHost() || !GetRenderViewHost()->GetProcess()) 616 if (!GetRenderViewHost() || !GetRenderViewHost()->GetProcess())
659 return NULL; 617 return NULL;
660 base::ProcessHandle handle = GetRenderViewHost()->GetProcess()->GetHandle(); 618 base::ProcessHandle handle = GetRenderViewHost()->GetProcess()->GetHandle();
661 if (handle == base::kNullProcessHandle) 619 if (handle == base::kNullProcessHandle)
662 return NULL; 620 return NULL;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 void PrerenderContents::AddResourceThrottle( 718 void PrerenderContents::AddResourceThrottle(
761 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { 719 const base::WeakPtr<PrerenderResourceThrottle>& throttle) {
762 resource_throttles_.push_back(throttle); 720 resource_throttles_.push_back(throttle);
763 } 721 }
764 722
765 void PrerenderContents::AddNetworkBytes(int64_t bytes) { 723 void PrerenderContents::AddNetworkBytes(int64_t bytes) {
766 network_bytes_ += bytes; 724 network_bytes_ += bytes;
767 } 725 }
768 726
769 } // namespace prerender 727 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/prerender/prerender_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698