Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2819)

Unified Diff: chrome/browser/signin/easy_unlock_service.h

Issue 577683002: Introduce EasyUnlockService class for signin profile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/signin/easy_unlock_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/signin/easy_unlock_service.h
diff --git a/chrome/browser/signin/easy_unlock_service.h b/chrome/browser/signin/easy_unlock_service.h
index ab4f50ad277b6b8a63486f0499a40b25ed43d0a2..ee1cd06ce41962c15ee02e78c9731fc47f1887a7 100644
--- a/chrome/browser/signin/easy_unlock_service.h
+++ b/chrome/browser/signin/easy_unlock_service.h
@@ -5,11 +5,12 @@
#ifndef CHROME_BROWSER_SIGNIN_EASY_UNLOCK_SERVICE_H_
#define CHROME_BROWSER_SIGNIN_EASY_UNLOCK_SERVICE_H_
+#include <string>
+
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
-#include "base/prefs/pref_change_registrar.h"
#include "components/keyed_service/core/keyed_service.h"
namespace base {
@@ -23,7 +24,6 @@ class PrefRegistrySyncable;
class EasyUnlockScreenlockStateHandler;
class EasyUnlockServiceObserver;
-class EasyUnlockToggleFlow;
class Profile;
class EasyUnlockService : public KeyedService {
@@ -34,8 +34,10 @@ class EasyUnlockService : public KeyedService {
FAIL,
};
- explicit EasyUnlockService(Profile* profile);
- virtual ~EasyUnlockService();
+ enum Type {
+ TYPE_REGULAR,
+ TYPE_SIGNIN
+ };
// Gets EasyUnlockService instance.
static EasyUnlockService* Get(Profile* profile);
@@ -43,13 +45,33 @@ class EasyUnlockService : public KeyedService {
// Registers Easy Unlock profile preferences.
static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
+ // Returns the EasyUnlockService type.
+ virtual Type GetType() const = 0;
+
+ // Returns the user currently associated with the service.
+ virtual std::string GetUserEmail() const = 0;
+
// Launches Easy Unlock Setup app.
- void LaunchSetup();
+ virtual void LaunchSetup() = 0;
- // Whether easy unlock is allowed to be used. If the controlling preference
- // is set (from policy), this returns the preference value. Otherwise, it is
- // permitted either the flag is enabled or its field trial is enabled.
- bool IsAllowed();
+ // Gets/Sets/Clears the permit access for the local device.
+ virtual const base::DictionaryValue* GetPermitAccess() const = 0;
+ virtual void SetPermitAccess(const base::DictionaryValue& permit) = 0;
+ virtual void ClearPermitAccess() = 0;
+
+ // Gets/Sets/Clears the remote devices list.
+ virtual const base::ListValue* GetRemoteDevices() const = 0;
+ virtual void SetRemoteDevices(const base::ListValue& devices) = 0;
+ virtual void ClearRemoteDevices() = 0;
+
+ // Runs the flow for turning Easy unlock off.
+ virtual void RunTurnOffFlow() = 0;
+
+ // Resets the turn off flow if one is in progress.
+ virtual void ResetTurnOffFlow() = 0;
+
+ // Returns the cirernt turn off flow status.
+ virtual TurnOffFlowStatus GetTurnOffFlowStatus() const = 0;
// Gets |screenlock_state_handler_|. Returns NULL if Easy Unlock is not
// allowed. Otherwise, if |screenlock_state_handler_| is not set, an instance
@@ -57,32 +79,28 @@ class EasyUnlockService : public KeyedService {
// Unlock gets disabled.
EasyUnlockScreenlockStateHandler* GetScreenlockStateHandler();
- // Gets/Sets/Clears the permit access for the local device.
- const base::DictionaryValue* GetPermitAccess() const;
- void SetPermitAccess(const base::DictionaryValue& permit);
- void ClearPermitAccess();
-
- // Gets/Sets/Clears the remote devices list.
- const base::ListValue* GetRemoteDevices() const;
- void SetRemoteDevices(const base::ListValue& devices);
- void ClearRemoteDevices();
-
- void RunTurnOffFlow();
- void ResetTurnOffFlow();
+ // Whether easy unlock is allowed to be used. If the controlling preference
+ // is set (from policy), this returns the preference value. Otherwise, it is
+ // permitted either the flag is enabled or its field trial is enabled.
+ bool IsAllowed();
void AddObserver(EasyUnlockServiceObserver* observer);
void RemoveObserver(EasyUnlockServiceObserver* observer);
- TurnOffFlowStatus turn_off_flow_status() const {
- return turn_off_flow_status_;
- }
+ protected:
+ explicit EasyUnlockService(Profile* profile);
+ virtual ~EasyUnlockService();
- private:
- // A class to detect whether a bluetooth adapter is present.
- class BluetoothDetector;
+ // Does service type specific initialization.
+ virtual void InitializeInternal() = 0;
- // Initializes the service after ExtensionService is ready.
- void Initialize();
+ // Service type specific tests for whether the service is allowed. Returns
+ // false if service is not allowed. If true is returned, the service may still
+ // not be allowed if common tests fail (e.g. if Bluetooth is not available).
+ virtual bool IsAllowedInternal() = 0;
+
+ // Exposes the profile to which the service is attached to subclasses.
+ Profile* profile() const { return profile_; }
// Installs the Easy unlock component app if it isn't installed or enables
// the app if it is installed but disabled.
@@ -91,30 +109,31 @@ class EasyUnlockService : public KeyedService {
// Disables the Easy unlock component app if it's loaded.
void DisableAppIfLoaded();
+ // Reloads the Easy unlock component app if it's loaded.
+ void ReloadApp();
+
// Checks whether Easy unlock should be running and updates app state.
void UpdateAppState();
- // Callback when the controlling pref changes.
- void OnPrefsChanged();
+ // Notifies observers that the turn off flow status changed.
+ void NotifyTurnOffOperationStatusChanged();
- // Callback when Bluetooth adapter present state changes.
- void OnBluetoothAdapterPresentChanged();
+ private:
+ // A class to detect whether a bluetooth adapter is present.
+ class BluetoothDetector;
- // Sets the new turn-off flow status.
- void SetTurnOffFlowStatus(TurnOffFlowStatus status);
+ // Initializes the service after ExtensionService is ready.
+ void Initialize();
- // Callback invoked when turn off flow has finished.
- void OnTurnOffFlowFinished(bool success);
+ // Callback when Bluetooth adapter present state changes.
+ void OnBluetoothAdapterPresentChanged();
Profile* profile_;
- PrefChangeRegistrar registrar_;
- scoped_ptr<BluetoothDetector> bluetooth_detector_;
+
// Created lazily in |GetScreenlockStateHandler|.
scoped_ptr<EasyUnlockScreenlockStateHandler> screenlock_state_handler_;
- TurnOffFlowStatus turn_off_flow_status_;
- scoped_ptr<EasyUnlockToggleFlow> turn_off_flow_;
- ObserverList<EasyUnlockServiceObserver> observers_;
+ scoped_ptr<BluetoothDetector> bluetooth_detector_;
#if defined(OS_CHROMEOS)
// Monitors suspend and wake state of ChromeOS.
@@ -122,6 +141,8 @@ class EasyUnlockService : public KeyedService {
scoped_ptr<PowerMonitor> power_monitor_;
#endif
+ ObserverList<EasyUnlockServiceObserver> observers_;
+
base::WeakPtrFactory<EasyUnlockService> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(EasyUnlockService);
« no previous file with comments | « no previous file | chrome/browser/signin/easy_unlock_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698