// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "remoting/host/fake_oauth_token_getter.h"

#include "base/bind.h"
#include "base/location.h"
#include "base/single_thread_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"

namespace remoting {

FakeOAuthTokenGetter::FakeOAuthTokenGetter(Status status,
                                           const std::string& user_email,
                                           const std::string& access_token)
    : status_(status), user_email_(user_email), access_token_(access_token) {
}

FakeOAuthTokenGetter::~FakeOAuthTokenGetter() {
}

void FakeOAuthTokenGetter::CallWithToken(const TokenCallback& on_access_token) {
  base::ThreadTaskRunnerHandle::Get()->PostTask(
      FROM_HERE,
      base::Bind(on_access_token, status_, user_email_, access_token_));
}

void FakeOAuthTokenGetter::InvalidateCache() {
  NOTIMPLEMENTED();
}

}  // namespace remoting
