blob: 3729c78e8d37e772e5be16ea9bb93e9e305c4a3a [file] [log] [blame]
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_ARC_AUTH_ARC_AUTH_CODE_FETCHER_H_
#define CHROME_BROWSER_ASH_ARC_AUTH_ARC_AUTH_CODE_FETCHER_H_
#include <string>
#include "base/functional/callback.h"
#include "chrome/browser/ash/arc/auth/arc_fetcher_base.h"
namespace arc {
// Interface to implement auth code token fetching.
class ArcAuthCodeFetcher : public ArcFetcherBase {
public:
~ArcAuthCodeFetcher() override = default;
// Fetches the auth code in the background and calls |callback| when done.
// |success| indicates whether the operation was successful. In case of
// success, |auth_code| contains the auth code.
// Fetch() should be called once per instance, and it is expected that
// the inflight operation is cancelled without calling the |callback|
// when the instance is deleted.
// TODO(sinhak): Consider moving to |std::optional<std::string>| for the
// |auth_code| to avoid meaningless auth_code on error.
using FetchCallback =
base::OnceCallback<void(bool success, const std::string& auth_code)>;
virtual void Fetch(FetchCallback callback) = 0;
};
} // namespace arc
#endif // CHROME_BROWSER_ASH_ARC_AUTH_ARC_AUTH_CODE_FETCHER_H_