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

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

Issue 9387015: Upstreaming prerendering changes for Android. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: 2 Created 8 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 <utility> 8 #include <utility>
9 9
10 #include "base/process_util.h" 10 #include "base/process_util.h"
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 const content::Referrer& referrer, 213 const content::Referrer& referrer,
214 Origin origin, 214 Origin origin,
215 uint8 experiment_id) 215 uint8 experiment_id)
216 : prerender_manager_(prerender_manager), 216 : prerender_manager_(prerender_manager),
217 prerender_tracker_(prerender_tracker), 217 prerender_tracker_(prerender_tracker),
218 prerender_url_(url), 218 prerender_url_(url),
219 referrer_(referrer), 219 referrer_(referrer),
220 profile_(profile), 220 profile_(profile),
221 page_id_(0), 221 page_id_(0),
222 has_stopped_loading_(false), 222 has_stopped_loading_(false),
223 has_finished_loading_(false),
223 final_status_(FINAL_STATUS_MAX), 224 final_status_(FINAL_STATUS_MAX),
224 prerendering_has_started_(false), 225 prerendering_has_started_(false),
225 match_complete_status_(MATCH_COMPLETE_DEFAULT), 226 match_complete_status_(MATCH_COMPLETE_DEFAULT),
226 prerendering_has_been_cancelled_(false), 227 prerendering_has_been_cancelled_(false),
227 child_id_(-1), 228 child_id_(-1),
228 route_id_(-1), 229 route_id_(-1),
229 origin_(origin), 230 origin_(origin),
230 experiment_id_(experiment_id) { 231 experiment_id_(experiment_id) {
231 DCHECK(prerender_manager != NULL); 232 DCHECK(prerender_manager != NULL);
232 } 233 }
(...skipping 13 matching lines...) Expand all
246 DCHECK(profile_ != NULL); 247 DCHECK(profile_ != NULL);
247 DCHECK(!prerendering_has_started_); 248 DCHECK(!prerendering_has_started_);
248 DCHECK(prerender_contents_.get() == NULL); 249 DCHECK(prerender_contents_.get() == NULL);
249 250
250 prerendering_has_started_ = true; 251 prerendering_has_started_ = true;
251 WebContents* new_contents = WebContents::Create( 252 WebContents* new_contents = WebContents::Create(
252 profile_, NULL, MSG_ROUTING_NONE, NULL, session_storage_namespace); 253 profile_, NULL, MSG_ROUTING_NONE, NULL, session_storage_namespace);
253 prerender_contents_.reset(new TabContentsWrapper(new_contents)); 254 prerender_contents_.reset(new TabContentsWrapper(new_contents));
254 content::WebContentsObserver::Observe(new_contents); 255 content::WebContentsObserver::Observe(new_contents);
255 256
256 gfx::Rect tab_bounds(640, 480); 257 gfx::Rect tab_bounds = prerender_manager_->config().default_tab_bounds;
257 if (source_render_view_host) { 258 if (source_render_view_host) {
258 DCHECK(source_render_view_host->view() != NULL); 259 DCHECK(source_render_view_host->view() != NULL);
259 WebContents* source_wc = 260 WebContents* source_wc =
260 source_render_view_host->delegate()->GetAsWebContents(); 261 source_render_view_host->delegate()->GetAsWebContents();
261 if (source_wc) { 262 if (source_wc) {
262 // Set the size of the new TC to that of the old TC. 263 // Set the size of the new TC to that of the old TC.
263 source_wc->GetView()->GetContainerBounds(&tab_bounds); 264 source_wc->GetView()->GetContainerBounds(&tab_bounds);
264 } 265 }
265 } else { 266 } else {
266 // Try to get the active tab of the active browser and use that for tab 267 // Try to get the active tab of the active browser and use that for tab
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 if (is_main_frame) { 525 if (is_main_frame) {
525 if (!AddAliasURL(validated_url)) 526 if (!AddAliasURL(validated_url))
526 return; 527 return;
527 528
528 // Usually, this event fires if the user clicks or enters a new URL. 529 // Usually, this event fires if the user clicks or enters a new URL.
529 // Neither of these can happen in the case of an invisible prerender. 530 // Neither of these can happen in the case of an invisible prerender.
530 // So the cause is: Some JavaScript caused a new URL to be loaded. In that 531 // So the cause is: Some JavaScript caused a new URL to be loaded. In that
531 // case, the spinner would start again in the browser, so we must reset 532 // case, the spinner would start again in the browser, so we must reset
532 // has_stopped_loading_ so that the spinner won't be stopped. 533 // has_stopped_loading_ so that the spinner won't be stopped.
533 has_stopped_loading_ = false; 534 has_stopped_loading_ = false;
535 has_finished_loading_ = false;
534 } 536 }
535 } 537 }
536 538
539 void PrerenderContents::DidFinishLoad(int64 frame_id,
540 const GURL& validated_url,
541 bool is_main_frame) {
542 if (is_main_frame)
543 has_finished_loading_ = true;
544 }
545
537 bool PrerenderContents::ShouldSuppressDialogs() { 546 bool PrerenderContents::ShouldSuppressDialogs() {
538 // Always suppress JavaScript messages if they're triggered by a page being 547 // Always suppress JavaScript messages if they're triggered by a page being
539 // prerendered. 548 // prerendered.
540 // We still want to show the user the message when they navigate to this 549 // We still want to show the user the message when they navigate to this
541 // page, so cancel this prerender. 550 // page, so cancel this prerender.
542 Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); 551 Destroy(FINAL_STATUS_JAVASCRIPT_ALERT);
543 return true; 552 return true;
544 } 553 }
545 554
546 void PrerenderContents::Destroy(FinalStatus final_status) { 555 void PrerenderContents::Destroy(FinalStatus final_status) {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 bool PrerenderContents::IsCrossSiteNavigationPending() const { 660 bool PrerenderContents::IsCrossSiteNavigationPending() const {
652 if (!prerender_contents_.get() || !prerender_contents_->web_contents()) 661 if (!prerender_contents_.get() || !prerender_contents_->web_contents())
653 return false; 662 return false;
654 const WebContents* web_contents = prerender_contents_->web_contents(); 663 const WebContents* web_contents = prerender_contents_->web_contents();
655 return (web_contents->GetSiteInstance() != 664 return (web_contents->GetSiteInstance() !=
656 web_contents->GetPendingSiteInstance()); 665 web_contents->GetPendingSiteInstance());
657 } 666 }
658 667
659 668
660 } // namespace prerender 669 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698