From 8a1502da173e2f8372825f6ca542afbee0da58fb Mon Sep 17 00:00:00 2001 From: Jocelyn Liu Date: Sun, 28 Oct 2018 12:59:38 -0700 Subject: [PATCH] Allow redirecting to the same URL when referrer is overwritten --- browser/net/brave_network_delegate_base.cc | 3 ++- browser/net/brave_site_hacks_network_delegate_helper.cc | 4 +++- browser/net/url_context.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/browser/net/brave_network_delegate_base.cc b/browser/net/brave_network_delegate_base.cc index 9611ac8f36b8..a9ca51ef0c9d 100644 --- a/browser/net/brave_network_delegate_base.cc +++ b/browser/net/brave_network_delegate_base.cc @@ -180,7 +180,8 @@ void BraveNetworkDelegateBase::RunNextCallback( if (ctx->event_type == brave::kOnBeforeRequest) { if (!ctx->new_url_spec.empty() && - ctx->new_url_spec != ctx->request_url.spec() && + (ctx->new_url_spec != ctx->request_url.spec() || + ctx->referrer_changed) && IsRequestIdentifierValid(ctx->request_identifier)) { *ctx->new_url = GURL(ctx->new_url_spec); } diff --git a/browser/net/brave_site_hacks_network_delegate_helper.cc b/browser/net/brave_site_hacks_network_delegate_helper.cc index 2e41caf12e3a..393bdf7d98fa 100644 --- a/browser/net/brave_site_hacks_network_delegate_helper.cc +++ b/browser/net/brave_site_hacks_network_delegate_helper.cc @@ -54,8 +54,10 @@ int OnBeforeURLRequest_SiteHacksWork( const ResponseCallback& next_callback, std::shared_ptr ctx) { - if (ApplyPotentialReferrerBlock(ctx->request)) + if (ApplyPotentialReferrerBlock(ctx->request)) { ctx->new_url_spec = ctx->request_url.spec(); + ctx->referrer_changed = true; + } return net::OK; } diff --git a/browser/net/url_context.h b/browser/net/url_context.h index bfd0e37707b8..0be0a8edfb44 100644 --- a/browser/net/url_context.h +++ b/browser/net/url_context.h @@ -53,6 +53,7 @@ struct BraveRequestInfo { bool allow_brave_shields = true; bool allow_ads = false; bool allow_http_upgradable_resource = false; + bool referrer_changed = false; int render_process_id = 0; int render_frame_id = 0; int frame_tree_node_id = 0;