Commit 5603e3e2 authored by Xiyuan Xia's avatar Xiyuan Xia Committed by Commit Bot

[cros] Fix 400 error on gmail.com after sign-in

Throttle redirected requests as well to avoid the racing between
background MergeSession call and tab/xhr loading to google servers.

Bug: 781451
Test: Start up tab of gmail.com loads fine.
Change-Id: Ideb16c8ad8609e0585fe9840f6592fcc2a655360
Reviewed-on: https://chromium-review.googlesource.com/830833
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524737}
parent 6ab3ac0f
......@@ -45,6 +45,11 @@ MergeSessionNavigationThrottle::WillStartRequest() {
return content::NavigationThrottle::DEFER;
}
content::NavigationThrottle::ThrottleCheckResult
MergeSessionNavigationThrottle::WillRedirectRequest() {
return WillStartRequest();
}
const char* MergeSessionNavigationThrottle::GetNameForLogging() {
return "MergeSessionNavigationThrottle";
}
......
......@@ -29,6 +29,8 @@ class MergeSessionNavigationThrottle : public content::NavigationThrottle {
// content::NavigationThrottle implementation:
content::NavigationThrottle::ThrottleCheckResult WillStartRequest() override;
content::NavigationThrottle::ThrottleCheckResult WillRedirectRequest()
override;
const char* GetNameForLogging() override;
// MergeSessionLoadPage callback.
......
......@@ -52,22 +52,31 @@ MergeSessionResourceThrottle::~MergeSessionResourceThrottle() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
}
void MergeSessionResourceThrottle::WillStartRequest(bool* defer) {
bool MergeSessionResourceThrottle::MaybeDeferLoading(const GURL& url) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!merge_session_throttling_utils::ShouldDelayUrl(request_->url()))
return;
if (!merge_session_throttling_utils::ShouldDelayUrl(url))
return false;
DVLOG(1) << "WillStartRequest: defer " << request_->url();
DVLOG(1) << "MergeSessionResourceThrottle: defer " << url;
const content::ResourceRequestInfo* info =
content::ResourceRequestInfo::ForRequest(request_);
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(
&DelayXHRLoadOnUIThread, info->GetWebContentsGetterForRequest(),
request_->url(),
&DelayXHRLoadOnUIThread, info->GetWebContentsGetterForRequest(), url,
base::Bind(&MergeSessionResourceThrottle::OnBlockingPageComplete,
weak_factory_.GetWeakPtr())));
*defer = true;
return true;
}
void MergeSessionResourceThrottle::WillStartRequest(bool* defer) {
*defer = MaybeDeferLoading(request_->url());
}
void MergeSessionResourceThrottle::WillRedirectRequest(
const net::RedirectInfo& redirect_info,
bool* defer) {
*defer = MaybeDeferLoading(redirect_info.new_url);
}
const char* MergeSessionResourceThrottle::GetNameForLogging() const {
......
......@@ -9,6 +9,8 @@
#include "base/memory/weak_ptr.h"
#include "content/public/browser/resource_throttle.h"
class GURL;
namespace net {
class URLRequest;
}
......@@ -19,8 +21,13 @@ class MergeSessionResourceThrottle : public content::ResourceThrottle {
~MergeSessionResourceThrottle() override;
private:
// Returns true if the resource loading for the given url should be deferred.
bool MaybeDeferLoading(const GURL& url);
// content::ResourceThrottle implementation:
void WillStartRequest(bool* defer) override;
void WillRedirectRequest(const net::RedirectInfo& redirect_info,
bool* defer) override;
const char* GetNameForLogging() const override;
// MergeSessionXHRRequestWaiter callback.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment