chromium/components/permissions/android/nfc/mock_nfc_system_level_setting.h

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

#ifndef COMPONENTS_PERMISSIONS_ANDROID_NFC_MOCK_NFC_SYSTEM_LEVEL_SETTING_H_
#define COMPONENTS_PERMISSIONS_ANDROID_NFC_MOCK_NFC_SYSTEM_LEVEL_SETTING_H_

#include "components/permissions/android/nfc/nfc_system_level_setting.h"

namespace permissions {

// Mock implementation of NfcSystemLevelSetting for unit tests.
class MockNfcSystemLevelSetting : public NfcSystemLevelSetting {
 public:
  MockNfcSystemLevelSetting();

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

  ~MockNfcSystemLevelSetting() override;

  static void SetNfcAccessIsPossible(bool is_possible);
  static void SetNfcSystemLevelSettingEnabled(bool is_enabled);
  static bool HasShownNfcSettingPrompt();
  static void ClearHasShownNfcSettingPrompt();

  // NfcSystemLevelSetting implementation:
  bool IsNfcAccessPossible() override;
  bool IsNfcSystemLevelSettingEnabled() override;
  void PromptToEnableNfcSystemLevelSetting(
      content::WebContents* web_contents,
      base::OnceClosure prompt_completed_callback) override;
};

}  // namespace permissions

#endif  // COMPONENTS_PERMISSIONS_ANDROID_NFC_MOCK_NFC_SYSTEM_LEVEL_SETTING_H_