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

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

Issue 1048963002: Fix incorrect creation of duplicate navigation entries for repeated page load failures. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@committype3
Patch Set: with more comment Created 5 years, 8 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
« no previous file with comments | « content/browser/web_contents/web_contents_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 2511 matching lines...) Expand 10 before | Expand all | Expand 10 after
2522 failed_request, 2522 failed_request,
2523 error, 2523 error,
2524 NULL, 2524 NULL,
2525 &params.error_description); 2525 &params.error_description);
2526 params.url = error.unreachableURL; 2526 params.url = error.unreachableURL;
2527 params.showing_repost_interstitial = show_repost_interstitial; 2527 params.showing_repost_interstitial = show_repost_interstitial;
2528 Send(new FrameHostMsg_DidFailProvisionalLoadWithError( 2528 Send(new FrameHostMsg_DidFailProvisionalLoadWithError(
2529 routing_id_, params)); 2529 routing_id_, params));
2530 2530
2531 // Don't display an error page if this is simply a cancelled load. Aside 2531 // Don't display an error page if this is simply a cancelled load. Aside
2532 // from being dumb, WebCore doesn't expect it and it will cause a crash. 2532 // from being dumb, Blink doesn't expect it and it will cause a crash.
2533 if (error.reason == net::ERR_ABORTED) 2533 if (error.reason == net::ERR_ABORTED)
2534 return; 2534 return;
2535 2535
2536 // Don't display "client blocked" error page if browser has asked us not to. 2536 // Don't display "client blocked" error page if browser has asked us not to.
2537 if (error.reason == net::ERR_BLOCKED_BY_CLIENT && 2537 if (error.reason == net::ERR_BLOCKED_BY_CLIENT &&
2538 render_view_->renderer_preferences_.disable_client_blocked_error_page) { 2538 render_view_->renderer_preferences_.disable_client_blocked_error_page) {
2539 return; 2539 return;
2540 } 2540 }
2541 2541
2542 // Allow the embedder to suppress an error page. 2542 // Allow the embedder to suppress an error page.
(...skipping 11 matching lines...) Expand all
2554 frame->enableViewSourceMode(false); 2554 frame->enableViewSourceMode(false);
2555 2555
2556 DocumentState* document_state = DocumentState::FromDataSource(ds); 2556 DocumentState* document_state = DocumentState::FromDataSource(ds);
2557 NavigationStateImpl* navigation_state = 2557 NavigationStateImpl* navigation_state =
2558 static_cast<NavigationStateImpl*>(document_state->navigation_state()); 2558 static_cast<NavigationStateImpl*>(document_state->navigation_state());
2559 2559
2560 // If this is a failed back/forward/reload navigation, then we need to do a 2560 // If this is a failed back/forward/reload navigation, then we need to do a
2561 // 'replace' load. This is necessary to avoid messing up session history. 2561 // 'replace' load. This is necessary to avoid messing up session history.
2562 // Otherwise, we do a normal load, which simulates a 'go' navigation as far 2562 // Otherwise, we do a normal load, which simulates a 'go' navigation as far
2563 // as session history is concerned. 2563 // as session history is concerned.
2564 // 2564 bool replace = commit_type != blink::WebStandardCommit;
2565 // AUTO_SUBFRAME loads should always be treated as loads that do not advance
2566 // the page id.
2567 //
2568 // TODO(davidben): This should also take the failed navigation's replacement
2569 // state into account, if a location.replace() failed.
2570 bool replace =
2571 navigation_state->request_params().page_id != -1 ||
2572 ui::PageTransitionCoreTypeIs(navigation_state->GetTransitionType(),
2573 ui::PAGE_TRANSITION_AUTO_SUBFRAME);
2574 2565
2575 // If we failed on a browser initiated request, then make sure that our error 2566 // If we failed on a browser initiated request, then make sure that our error
2576 // page load is regarded as the same browser initiated request. 2567 // page load is regarded as the same browser initiated request.
2577 if (!navigation_state->IsContentInitiated()) { 2568 if (!navigation_state->IsContentInitiated()) {
2578 pending_navigation_params_.reset(new NavigationParams( 2569 pending_navigation_params_.reset(new NavigationParams(
2579 navigation_state->common_params(), navigation_state->start_params(), 2570 navigation_state->common_params(), navigation_state->start_params(),
2580 navigation_state->request_params())); 2571 navigation_state->request_params()));
2581 pending_navigation_params_->request_params.request_time = 2572 pending_navigation_params_->request_params.request_time =
2582 document_state->request_time(); 2573 document_state->request_time();
2583 } 2574 }
(...skipping 2121 matching lines...) Expand 10 before | Expand all | Expand 10 after
4705 #elif defined(ENABLE_BROWSER_CDMS) 4696 #elif defined(ENABLE_BROWSER_CDMS)
4706 cdm_manager_, 4697 cdm_manager_,
4707 #endif 4698 #endif
4708 this); 4699 this);
4709 } 4700 }
4710 4701
4711 return cdm_factory_; 4702 return cdm_factory_;
4712 } 4703 }
4713 4704
4714 } // namespace content 4705 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698