1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "remoting/client/plugin/pepper_token_fetcher.h"
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "remoting/client/plugin/chromoting_instance.h"
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace remoting {
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PepperTokenFetcher::PepperTokenFetcher(base::WeakPtr<ChromotingInstance> plugin,
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                       const std::string& host_public_key)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : plugin_(plugin),
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      host_public_key_(host_public_key),
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      weak_factory_(this) {
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)PepperTokenFetcher::~PepperTokenFetcher() {
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PepperTokenFetcher::FetchThirdPartyToken(
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const GURL& token_url,
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const std::string& scope,
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const TokenFetchedCallback& token_fetched_callback) {
25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  if (plugin_.get()) {
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    token_fetched_callback_ = token_fetched_callback;
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    plugin_->FetchThirdPartyToken(token_url, host_public_key_, scope,
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  weak_factory_.GetWeakPtr());
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void PepperTokenFetcher::OnTokenFetched(
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const std::string& token, const std::string& shared_secret) {
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (!token_fetched_callback_.is_null()) {
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    token_fetched_callback_.Run(token, shared_secret);
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    token_fetched_callback_.Reset();
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace remoting
41