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

#ifndef CONTENT_BROWSER_WEBID_TEST_MOCK_IDP_NETWORK_REQUEST_MANAGER_H_
#define CONTENT_BROWSER_WEBID_TEST_MOCK_IDP_NETWORK_REQUEST_MANAGER_H_

#include "content/browser/webid/idp_network_request_manager.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/blink/public/common/webid/login_status_options.h"
#include "third_party/blink/public/mojom/webid/federated_request.mojom.h"

namespace url {
class Origin;
}  // namespace url

namespace content {

class MockIdpNetworkRequestManager : public webid::IdpNetworkRequestManager {
 public:
  MockIdpNetworkRequestManager();
  ~MockIdpNetworkRequestManager() override;

  MockIdpNetworkRequestManager(const MockIdpNetworkRequestManager&) = delete;
  MockIdpNetworkRequestManager& operator=(const MockIdpNetworkRequestManager&) =
      delete;

  MOCK_METHOD(void,
              FetchWellKnown,
              (const GURL&, FetchWellKnownCallback),
              (override));
  MOCK_METHOD(void,
              FetchConfig,
              (const GURL&, int, int, FetchConfigCallback),
              (override));
  MOCK_METHOD(
      void,
      FetchClientMetadata,
      (const GURL&, const std::string&, int, int, FetchClientMetadataCallback),
      (override));
  MOCK_METHOD(bool,
              SendAccountsRequest,
              (const url::Origin& idp_origin,
               const GURL&,
               AccountsRequestCallback),
              (override));
  MOCK_METHOD(void,
              SendTokenRequest,
              (const GURL&,
               const std::string&,
               const std::string&,
               bool,
               TokenRequestCallback,
               ContinueOnCallback,
               RedirectToCallback,
               RecordErrorMetricsCallback),
              (override));
  MOCK_METHOD(void,
              SendSuccessfulTokenRequestMetrics,
              (const GURL&,
               base::TimeDelta,
               base::TimeDelta,
               base::TimeDelta,
               base::TimeDelta),
              (override));
  MOCK_METHOD(void,
              SendFailedTokenRequestMetrics,
              (const GURL&, bool, webid::MetricsEndpointErrorCode),
              (override));
  MOCK_METHOD(void,
              DownloadAndDecodeImage,
              (const GURL&, ImageCallback),
              (override));
  MOCK_METHOD(void,
              DownloadAndDecodeCachedImage,
              (const url::Origin& idp_origin, const GURL&, ImageCallback),
              (override));

  MOCK_METHOD(void,
              CacheAccountPictures,
              (const url::Origin&, const std::vector<GURL>&),
              (override));
};

}  // namespace content

#endif  // CONTENT_BROWSER_WEBID_TEST_MOCK_IDP_NETWORK_REQUEST_MANAGER_H_
