1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "remoting/client/token_fetcher_proxy.h"
6
7namespace remoting {
8
9TokenFetcherProxy::TokenFetcherProxy(
10    const TokenFetcherCallback& token_fetcher_impl,
11    const std::string& host_public_key)
12    : host_public_key_(host_public_key),
13      token_fetcher_impl_(token_fetcher_impl),
14      weak_factory_(this) {
15}
16
17TokenFetcherProxy::~TokenFetcherProxy() {
18}
19
20void TokenFetcherProxy::FetchThirdPartyToken(
21    const GURL& token_url,
22    const std::string& scope,
23    const TokenFetchedCallback& token_fetched_callback) {
24  token_fetched_callback_ = token_fetched_callback;
25  token_fetcher_impl_.Run(
26      token_url, host_public_key_, scope, weak_factory_.GetWeakPtr());
27}
28
29void TokenFetcherProxy::OnTokenFetched(
30    const std::string& token, const std::string& shared_secret) {
31  if (!token_fetched_callback_.is_null()) {
32    token_fetched_callback_.Run(token, shared_secret);
33    token_fetched_callback_.Reset();
34  }
35}
36
37}  // namespace remoting
38