diff options
Diffstat (limited to 'chrome/browser/extensions/api')
3 files changed, 93 insertions, 3 deletions
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 a7f1ce6..1b7f87e 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 diff --git a/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.h b/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.h index de47c5e..3802861 100644 --- a/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.h +++ b/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.h @@ -81,6 +81,8 @@ class EasyUnlockPrivatePerformECDHKeyAgreementFunction DECLARE_EXTENSION_FUNCTION("easyUnlockPrivate.performECDHKeyAgreement", EASYUNLOCKPRIVATE_PERFORMECDHKEYAGREEMENT) + + DISALLOW_COPY_AND_ASSIGN(EasyUnlockPrivatePerformECDHKeyAgreementFunction); }; class EasyUnlockPrivateGenerateEcP256KeyPairFunction @@ -99,6 +101,8 @@ class EasyUnlockPrivateGenerateEcP256KeyPairFunction DECLARE_EXTENSION_FUNCTION("easyUnlockPrivate.generateEcP256KeyPair", EASYUNLOCKPRIVATE_GENERATEECP256KEYPAIR) + + DISALLOW_COPY_AND_ASSIGN(EasyUnlockPrivateGenerateEcP256KeyPairFunction); }; class EasyUnlockPrivateCreateSecureMessageFunction @@ -116,6 +120,8 @@ class EasyUnlockPrivateCreateSecureMessageFunction DECLARE_EXTENSION_FUNCTION("easyUnlockPrivate.createSecureMessage", EASYUNLOCKPRIVATE_CREATESECUREMESSAGE) + + DISALLOW_COPY_AND_ASSIGN(EasyUnlockPrivateCreateSecureMessageFunction); }; class EasyUnlockPrivateUnwrapSecureMessageFunction @@ -133,6 +139,8 @@ class EasyUnlockPrivateUnwrapSecureMessageFunction DECLARE_EXTENSION_FUNCTION("easyUnlockPrivate.unwrapSecureMessage", EASYUNLOCKPRIVATE_UNWRAPSECUREMESSAGE) + + DISALLOW_COPY_AND_ASSIGN(EasyUnlockPrivateUnwrapSecureMessageFunction); }; class EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction @@ -155,6 +163,23 @@ class EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction); }; +class EasyUnlockPrivateUpdateScreenlockStateFunction + : public SyncExtensionFunction { + public: + EasyUnlockPrivateUpdateScreenlockStateFunction(); + + protected: + virtual ~EasyUnlockPrivateUpdateScreenlockStateFunction(); + + virtual bool RunSync() OVERRIDE; + + private: + DECLARE_EXTENSION_FUNCTION("easyUnlockPrivate.updateScreenlockState", + EASYUNLOCKPRIVATE_UPDATESCREENLOCKSTATE) + + DISALLOW_COPY_AND_ASSIGN(EasyUnlockPrivateUpdateScreenlockStateFunction); +}; + } // namespace api } // namespace extensions diff --git a/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc b/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc index a51aca6..eb7b6e2 100644 --- a/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc +++ b/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc @@ -7,6 +7,7 @@ #include <vector> #include "base/lazy_instance.h" +#include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/api/screenlock_private.h" @@ -100,7 +101,7 @@ bool ScreenlockPrivateShowMessageFunction::RunAsync() { ScreenlockBridge::LockHandler* locker = ScreenlockBridge::Get()->lock_handler(); if (locker) - locker->ShowBannerMessage(params->message); + locker->ShowBannerMessage(base::UTF8ToUTF16(params->message)); SendResponse(error_.empty()); return true; } @@ -168,9 +169,17 @@ void ScreenlockPrivateShowCustomIconFunction::OnImageLoaded( const gfx::Image& image) { ScreenlockBridge::LockHandler* locker = ScreenlockBridge::Get()->lock_handler(); + if (!locker) { + SetError(kNotLockedError); + SendResponse(false); + return; + } + + ScreenlockBridge::UserPodCustomIconOptions icon; + icon.SetIconAsImage(image); locker->ShowUserPodCustomIcon( ScreenlockBridge::GetAuthenticatedUserEmail(GetProfile()), - image); + icon); SendResponse(error_.empty()); } @@ -212,7 +221,7 @@ bool ScreenlockPrivateSetAuthTypeFunction::RunAsync() { locker->SetAuthType( ScreenlockBridge::GetAuthenticatedUserEmail(GetProfile()), ToLockHandlerAuthType(params->auth_type), - initial_value); + base::UTF8ToUTF16(initial_value)); } else { SetError(kNotLockedError); } |