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