blob: e4d6c7e1fadbe490ca7a8c7ce4f1328a5b5d0518 [file] [log] [blame]
// Copyright 2017 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.
#ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_FINGERPRINT_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_FINGERPRINT_HANDLER_H_
#include "base/containers/flat_map.h"
#include "base/scoped_observer.h"
#include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
#include "components/session_manager/core/session_manager_observer.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/device/public/mojom/fingerprint.mojom.h"
class Profile;
namespace base {
class ListValue;
} // namespace base
namespace session_manager {
class SessionManager;
} // namespace session_manager
namespace chromeos {
namespace settings {
// Chrome OS fingerprint setup settings page UI handler.
class FingerprintHandler : public ::settings::SettingsPageUIHandler,
public device::mojom::FingerprintObserver,
public session_manager::SessionManagerObserver {
public:
explicit FingerprintHandler(Profile* profile);
~FingerprintHandler() override;
// SettingsPageUIHandler overrides:
void RegisterMessages() override;
void OnJavascriptAllowed() override;
void OnJavascriptDisallowed() override;
// device::mojom::FingerprintObserver:
void OnRestarted() override;
void OnEnrollScanDone(device::mojom::ScanResult scan_result,
bool enroll_session_complete,
int percent_complete) override;
void OnAuthScanDone(
device::mojom::ScanResult scan_result,
const base::flat_map<std::string, std::vector<std::string>>& matches)
override;
void OnSessionFailed() override;
// session_manager::SessionManagerObserver:
void OnSessionStateChanged() override;
private:
void HandleGetFingerprintsList(const base::ListValue* args);
void HandleGetNumFingerprints(const base::ListValue* args);
void HandleStartEnroll(const base::ListValue* args);
void HandleCancelCurrentEnroll(const base::ListValue* args);
void HandleGetEnrollmentLabel(const base::ListValue* args);
void HandleRemoveEnrollment(const base::ListValue* args);
void HandleChangeEnrollmentLabel(const base::ListValue* args);
void HandleStartAuthentication(const base::ListValue* args);
void HandleEndCurrentAuthentication(const base::ListValue* args);
void OnGetFingerprintsList(const std::string& callback_id,
const base::flat_map<std::string, std::string>&
fingerprints_list_mapping);
void OnRequestRecordLabel(const std::string& callback_id,
const std::string& label);
void OnCancelCurrentEnrollSession(bool success);
void OnRemoveRecord(const std::string& callback_id, bool success);
void OnSetRecordLabel(const std::string& callback_id, bool success);
void OnEndCurrentAuthSession(bool success);
Profile* profile_; // unowned
std::vector<std::string> fingerprints_labels_;
std::vector<std::string> fingerprints_paths_;
std::string user_id_;
device::mojom::FingerprintPtr fp_service_;
mojo::Binding<device::mojom::FingerprintObserver> binding_;
ScopedObserver<session_manager::SessionManager,
session_manager::SessionManagerObserver>
session_observer_;
base::WeakPtrFactory<FingerprintHandler> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(FingerprintHandler);
};
} // namespace settings
} // namespace chromeos
#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_FINGERPRINT_HANDLER_H_