146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "remoting/client/token_fetcher_proxy.h" 646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace remoting { 846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TokenFetcherProxy::TokenFetcherProxy( 1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const TokenFetcherCallback& token_fetcher_impl, 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string& host_public_key) 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) : host_public_key_(host_public_key), 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) token_fetcher_impl_(token_fetcher_impl), 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) weak_factory_(this) { 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TokenFetcherProxy::~TokenFetcherProxy() { 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void TokenFetcherProxy::FetchThirdPartyToken( 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const GURL& token_url, 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string& scope, 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const TokenFetchedCallback& token_fetched_callback) { 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) token_fetched_callback_ = token_fetched_callback; 2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) token_fetcher_impl_.Run( 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) token_url, host_public_key_, scope, weak_factory_.GetWeakPtr()); 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void TokenFetcherProxy::OnTokenFetched( 3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string& token, const std::string& shared_secret) { 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (!token_fetched_callback_.is_null()) { 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) token_fetched_callback_.Run(token, shared_secret); 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) token_fetched_callback_.Reset(); 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace remoting 38