Index: chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.cc |
diff --git a/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.cc b/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.cc |
index a7f1ce612bd5baa88d9da56f050c474165e529de..1b7f87e4225524c8878bcc8a6c6a8f11f662adb9 100644 |
--- a/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.cc |
+++ b/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.cc |
@@ -10,6 +10,9 @@ |
#include "base/values.h" |
#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_bluetooth_util.h" |
#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_crypto_delegate.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/signin/easy_unlock_screenlock_state_handler.h" |
+#include "chrome/browser/signin/easy_unlock_service.h" |
#include "chrome/common/extensions/api/easy_unlock_private.h" |
#include "extensions/browser/browser_context_keyed_api_factory.h" |
#include "grit/generated_resources.h" |
@@ -34,6 +37,36 @@ EasyUnlockPrivateCryptoDelegate* GetCryptoDelegate( |
->crypto_delegate(); |
} |
+EasyUnlockScreenlockStateHandler* GetScreenlockStateHandler( |
+ content::BrowserContext* context) { |
+ return EasyUnlockService::Get(Profile::FromBrowserContext(context)) |
+ ->GetScreenlockStateHandler(); |
+} |
+ |
+EasyUnlockScreenlockStateHandler::State ToScreenlockStateHandlerState( |
+ easy_unlock_private::State state) { |
+ switch (state) { |
+ case easy_unlock_private::STATE_NO_BLUETOOTH: |
+ return EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH; |
+ case easy_unlock_private::STATE_BLUETOOTH_CONNECTING: |
+ return EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING; |
+ case easy_unlock_private::STATE_NO_PHONE: |
+ return EasyUnlockScreenlockStateHandler::STATE_NO_PHONE; |
+ case easy_unlock_private::STATE_PHONE_NOT_AUTHENTICATED: |
+ return EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED; |
+ case easy_unlock_private::STATE_PHONE_LOCKED: |
+ return EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED; |
+ case easy_unlock_private::STATE_PHONE_UNLOCKABLE: |
+ return EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE; |
+ case easy_unlock_private::STATE_PHONE_NOT_NEARBY: |
+ return EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_NEARBY; |
+ case easy_unlock_private::STATE_AUTHENTICATED: |
+ return EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED; |
+ default: |
+ return EasyUnlockScreenlockStateHandler::STATE_INACTIVE; |
+ } |
+} |
+ |
} // namespace |
// static |
@@ -368,5 +401,28 @@ void EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekCompleted( |
} |
} |
+EasyUnlockPrivateUpdateScreenlockStateFunction:: |
+ EasyUnlockPrivateUpdateScreenlockStateFunction() {} |
+ |
+EasyUnlockPrivateUpdateScreenlockStateFunction:: |
+ ~EasyUnlockPrivateUpdateScreenlockStateFunction() {} |
+ |
+bool EasyUnlockPrivateUpdateScreenlockStateFunction::RunSync() { |
+ scoped_ptr<easy_unlock_private::UpdateScreenlockState::Params> params( |
+ easy_unlock_private::UpdateScreenlockState::Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params.get()); |
+ |
+ EasyUnlockScreenlockStateHandler* screenlock_state_handler = |
+ GetScreenlockStateHandler(browser_context()); |
+ if (screenlock_state_handler) { |
+ screenlock_state_handler->ChangeState( |
+ ToScreenlockStateHandlerState(params->state)); |
+ return true; |
+ } |
+ |
+ SetError("Not allowed"); |
+ return false; |
+} |
+ |
} // namespace api |
} // namespace extensions |