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

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 129813006: Move DidReceiveServerRedirectForProvisionalLoad from RenderView to RenderFrame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix layout test failures. Created 6 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 | Annotate | Revision Log
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 "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 365
366 #if defined(OS_ANDROID) 366 #if defined(OS_ANDROID)
367 // Delay between tapping in content and launching the associated android intent. 367 // Delay between tapping in content and launching the associated android intent.
368 // Used to allow users see what has been recognized as content. 368 // Used to allow users see what has been recognized as content.
369 const size_t kContentIntentDelayMilliseconds = 700; 369 const size_t kContentIntentDelayMilliseconds = 700;
370 #endif 370 #endif
371 371
372 static RenderViewImpl* (*g_create_render_view_impl)(RenderViewImplParams*) = 372 static RenderViewImpl* (*g_create_render_view_impl)(RenderViewImplParams*) =
373 NULL; 373 NULL;
374 374
375 static void GetRedirectChain(WebDataSource* ds, std::vector<GURL>* result) {
376 // Replace any occurrences of swappedout:// with about:blank.
377 const WebURL& blank_url = GURL(kAboutBlankURL);
378 WebVector<WebURL> urls;
379 ds->redirectChain(urls);
380 result->reserve(urls.size());
381 for (size_t i = 0; i < urls.size(); ++i) {
382 if (urls[i] != GURL(kSwappedOutURL))
383 result->push_back(urls[i]);
384 else
385 result->push_back(blank_url);
386 }
387 }
388
389 // If |data_source| is non-null and has an InternalDocumentStateData associated 375 // If |data_source| is non-null and has an InternalDocumentStateData associated
390 // with it, the AltErrorPageResourceFetcher is reset. 376 // with it, the AltErrorPageResourceFetcher is reset.
391 static void StopAltErrorPageFetcher(WebDataSource* data_source) { 377 static void StopAltErrorPageFetcher(WebDataSource* data_source) {
392 if (data_source) { 378 if (data_source) {
393 InternalDocumentStateData* internal_data = 379 InternalDocumentStateData* internal_data =
394 InternalDocumentStateData::FromDataSource(data_source); 380 InternalDocumentStateData::FromDataSource(data_source);
395 if (internal_data) 381 if (internal_data)
396 internal_data->set_alt_error_page_fetcher(NULL); 382 internal_data->set_alt_error_page_fetcher(NULL);
397 } 383 }
398 } 384 }
399 385
400 static bool IsReload(const ViewMsg_Navigate_Params& params) { 386 static bool IsReload(const ViewMsg_Navigate_Params& params) {
401 return 387 return
402 params.navigation_type == ViewMsg_Navigate_Type::RELOAD || 388 params.navigation_type == ViewMsg_Navigate_Type::RELOAD ||
403 params.navigation_type == ViewMsg_Navigate_Type::RELOAD_IGNORING_CACHE || 389 params.navigation_type == ViewMsg_Navigate_Type::RELOAD_IGNORING_CACHE ||
404 params.navigation_type == 390 params.navigation_type ==
405 ViewMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; 391 ViewMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
406 } 392 }
407 393
408 // static 394 // static
395 void RenderViewImpl::GetRedirectChain(WebDataSource* ds,
396 std::vector<GURL>* result) {
397 // Replace any occurrences of swappedout:// with about:blank.
398 const WebURL& blank_url = GURL(kAboutBlankURL);
399 WebVector<WebURL> urls;
400 ds->redirectChain(urls);
401 result->reserve(urls.size());
402 for (size_t i = 0; i < urls.size(); ++i) {
403 if (urls[i] != GURL(kSwappedOutURL))
404 result->push_back(urls[i]);
405 else
406 result->push_back(blank_url);
407 }
408 }
409
410 // static
409 WebReferrerPolicy RenderViewImpl::GetReferrerPolicyFromRequest( 411 WebReferrerPolicy RenderViewImpl::GetReferrerPolicyFromRequest(
410 WebFrame* frame, 412 WebFrame* frame,
411 const WebURLRequest& request) { 413 const WebURLRequest& request) {
412 return request.extraData() ? 414 return request.extraData() ?
413 static_cast<RequestExtraData*>(request.extraData())->referrer_policy() : 415 static_cast<RequestExtraData*>(request.extraData())->referrer_policy() :
414 frame->document().referrerPolicy(); 416 frame->document().referrerPolicy();
415 } 417 }
416 418
417 // static 419 // static
418 Referrer RenderViewImpl::GetReferrerFromRequest( 420 Referrer RenderViewImpl::GetReferrerFromRequest(
(...skipping 3110 matching lines...) Expand 10 before | Expand all | Expand 10 after
3529 3531
3530 float maxPageScaleFactor = 3532 float maxPageScaleFactor =
3531 command_line.HasSwitch(switches::kEnablePinch) ? 4.f : 1.f ; 3533 command_line.HasSwitch(switches::kEnablePinch) ? 4.f : 1.f ;
3532 webview()->setPageScaleFactorLimits(1, maxPageScaleFactor); 3534 webview()->setPageScaleFactorLimits(1, maxPageScaleFactor);
3533 } 3535 }
3534 3536
3535 // TODO(nasko): Remove this method once WebTestProxy in Blink is fixed. 3537 // TODO(nasko): Remove this method once WebTestProxy in Blink is fixed.
3536 void RenderViewImpl::didStartProvisionalLoad(WebFrame* frame) { 3538 void RenderViewImpl::didStartProvisionalLoad(WebFrame* frame) {
3537 } 3539 }
3538 3540
3539 void RenderViewImpl::didReceiveServerRedirectForProvisionalLoad(
3540 WebFrame* frame) {
3541 if (frame->parent())
3542 return;
3543 // Received a redirect on the main frame.
3544 WebDataSource* data_source = frame->provisionalDataSource();
3545 if (!data_source) {
3546 // Should only be invoked when we have a data source.
3547 NOTREACHED();
3548 return;
3549 }
3550 std::vector<GURL> redirects;
3551 GetRedirectChain(data_source, &redirects);
3552 if (redirects.size() >= 2) {
3553 Send(new ViewHostMsg_DidRedirectProvisionalLoad(routing_id_, page_id_,
3554 redirects[redirects.size() - 2], redirects.back()));
3555 }
3556 }
3557
3558 void RenderViewImpl::didFailProvisionalLoad(WebFrame* frame, 3541 void RenderViewImpl::didFailProvisionalLoad(WebFrame* frame,
3559 const WebURLError& error) { 3542 const WebURLError& error) {
3560 // Notify the browser that we failed a provisional load with an error. 3543 // Notify the browser that we failed a provisional load with an error.
3561 // 3544 //
3562 // Note: It is important this notification occur before DidStopLoading so the 3545 // Note: It is important this notification occur before DidStopLoading so the
3563 // SSL manager can react to the provisional load failure before being 3546 // SSL manager can react to the provisional load failure before being
3564 // notified the load stopped. 3547 // notified the load stopped.
3565 // 3548 //
3566 FOR_EACH_OBSERVER( 3549 FOR_EACH_OBSERVER(
3567 RenderViewObserver, observers_, DidFailProvisionalLoad(frame, error)); 3550 RenderViewObserver, observers_, DidFailProvisionalLoad(frame, error));
(...skipping 2812 matching lines...) Expand 10 before | Expand all | Expand 10 after
6380 for (size_t i = 0; i < icon_urls.size(); i++) { 6363 for (size_t i = 0; i < icon_urls.size(); i++) {
6381 WebURL url = icon_urls[i].iconURL(); 6364 WebURL url = icon_urls[i].iconURL();
6382 if (!url.isEmpty()) 6365 if (!url.isEmpty())
6383 urls.push_back(FaviconURL(url, 6366 urls.push_back(FaviconURL(url,
6384 ToFaviconType(icon_urls[i].iconType()))); 6367 ToFaviconType(icon_urls[i].iconType())));
6385 } 6368 }
6386 SendUpdateFaviconURL(urls); 6369 SendUpdateFaviconURL(urls);
6387 } 6370 }
6388 6371
6389 } // namespace content 6372 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/shell/renderer/test_runner/WebFrameTestProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698