Index: services/authenticating_url_loader/authenticating_url_loader_impl.cc |
diff --git a/services/authenticating_url_loader/authenticating_url_loader_impl.cc b/services/authenticating_url_loader/authenticating_url_loader_impl.cc |
index 9d839afdca9c5b75fc50ef6174553e171cfbc641..e525d1a95e8af7cb4f3bfefbc9005af1988dbca1 100644 |
--- a/services/authenticating_url_loader/authenticating_url_loader_impl.cc |
+++ b/services/authenticating_url_loader/authenticating_url_loader_impl.cc |
@@ -14,13 +14,15 @@ AuthenticatingURLLoaderImpl::AuthenticatingURLLoaderImpl( |
InterfaceRequest<AuthenticatingURLLoader> request, |
authentication::AuthenticationService* authentication_service, |
NetworkService* network_service, |
+ std::map<GURL, std::string>* cached_tokens, |
const Callback<void(AuthenticatingURLLoaderImpl*)>& |
connection_error_callback) |
: binding_(this, request.Pass()), |
authentication_service_(authentication_service), |
network_service_(network_service), |
connection_error_callback_(connection_error_callback), |
- request_authorization_state_(REQUEST_NOT_AUTHORIZED) { |
+ request_authorization_state_(REQUEST_NOT_AUTHORIZED), |
+ cached_tokens_(cached_tokens) { |
binding_.set_error_handler(this); |
} |
@@ -38,11 +40,16 @@ void AuthenticatingURLLoaderImpl::Start( |
callback.Run(nullptr); |
return; |
} |
- url_ = request->url; |
+ url_ = GURL(request->url); |
auto_follow_redirects_ = request->auto_follow_redirects; |
bypass_cache_ = request->bypass_cache; |
headers_ = request->headers.Clone(); |
pending_start_callback_ = callback; |
+ GURL url(request->url); |
blundell
2015/05/27 15:43:44
nit: unneeded, just use |url_|.
qsr
2015/05/27 16:02:26
Missed one. Thanks.
|
+ if (cached_tokens_->find(url_.GetOrigin()) != cached_tokens_->end()) { |
+ request->headers.push_back("Authorization: Bearer " + |
+ (*cached_tokens_)[url.GetOrigin()]); |
+ } |
StartNetworkRequest(request.Pass()); |
} |
@@ -117,6 +124,7 @@ void AuthenticatingURLLoaderImpl::OnOAuth2TokenReceived(String token, |
} |
DCHECK(token); |
+ (*cached_tokens_)[url_.GetOrigin()] = token; |
token_ = token; |
mojo::Array<mojo::String> headers(0); |
if (headers_) |
@@ -124,7 +132,7 @@ void AuthenticatingURLLoaderImpl::OnOAuth2TokenReceived(String token, |
headers.push_back("Authorization: Bearer " + token.get()); |
URLRequestPtr request(mojo::URLRequest::New()); |
- request->url = url_; |
+ request->url = url_.spec(); |
request->auto_follow_redirects = auto_follow_redirects_; |
request->bypass_cache = bypass_cache_; |
request->headers = headers.Pass(); |