easy_unlock_private_api.cc revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/bind.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/lazy_instance.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/strings/utf_string_conversions.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/values.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_bluetooth_util.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_crypto_delegate.h" 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/signin/easy_unlock_screenlock_state_handler.h" 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/signin/easy_unlock_service.h" 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/extensions/api/easy_unlock_private.h" 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "chrome/grit/generated_resources.h" 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/browser/browser_context_keyed_api_factory.h" 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_CHROMEOS) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/chromeos_utils.h" 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions { 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace api { 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace { 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static base::LazyInstance<BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI> > 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) g_factory = LAZY_INSTANCE_INITIALIZER; 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Utility method for getting the API's crypto delegate. 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCryptoDelegate* GetCryptoDelegate( 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* context) { 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI>::Get(context) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ->crypto_delegate(); 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockScreenlockStateHandler* GetScreenlockStateHandler( 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) content::BrowserContext* context) { 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockService::Get(Profile::FromBrowserContext(context)) 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->GetScreenlockStateHandler(); 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockScreenlockStateHandler::State ToScreenlockStateHandlerState( 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::State state) { 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switch (state) { 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_NO_BLUETOOTH: 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH; 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_BLUETOOTH_CONNECTING: 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING; 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_NO_PHONE: 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_NO_PHONE; 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_NOT_AUTHENTICATED: 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED; 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_LOCKED: 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED; 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_UNLOCKABLE: 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE; 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_NOT_NEARBY: 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_NEARBY; 6303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_UNSUPPORTED: 6403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED; 656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_AUTHENTICATED: 666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED; 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) default: 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_INACTIVE; 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI>* 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockPrivateAPI::GetFactoryInstance() { 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return g_factory.Pointer(); 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateAPI::EasyUnlockPrivateAPI(content::BrowserContext* context) 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : crypto_delegate_(EasyUnlockPrivateCryptoDelegate::Create()) { 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateAPI::~EasyUnlockPrivateAPI() {} 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGetStringsFunction::EasyUnlockPrivateGetStringsFunction() { 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGetStringsFunction::~EasyUnlockPrivateGetStringsFunction() { 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateGetStringsFunction::RunSync() { 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<base::DictionaryValue> strings(new base::DictionaryValue); 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_CHROMEOS) 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::string16 device_type = chromeos::GetChromeDeviceType(); 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(isherman): Set an appropriate device name for non-ChromeOS devices. 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::string16 device_type = base::ASCIIToUTF16("Chromeschnozzle"); 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Common strings. 1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "learnMoreLinkTitle", 1046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_LEARN_MORE_LINK_TITLE)); 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup notification strings. 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationTitle", 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_TITLE, 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationMessage", 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_MESSAGE, 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationButtonTitle", 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_NOTIFICATION_BUTTON_TITLE)); 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Success notification strings. 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationTitle", 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_TITLE)); 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationMessage", 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_MESSAGE, 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Chromebook added to Easy Unlock notification strings. 1306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "chromebookAddedNotificationTitle", 1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_CHROMEBOOK_ADDED_NOTIFICATION_TITLE)); 1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "chromebookAddedNotificationMessage", 1366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringFUTF16( 1376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_CHROMEBOOK_ADDED_NOTIFICATION_MESSAGE, 1386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) device_type)); 1396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup dialog strings. 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 1: Intro. 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderTitle", 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TITLE, device_type)); 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderText", 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TEXT, device_type)); 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderFootnote", 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_FOOTNOTE)); 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindPhoneButtonLabel", 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FIND_PHONE_BUTTON_LABEL)); 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindingPhoneButtonLabel", 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FINDING_PHONE_BUTTON_LABEL)); 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupIntroRetryFindPhoneButtonLabel", 1646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 1656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_RETRY_FIND_PHONE_BUTTON_LABEL)); 1666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHowIsThisSecureLinkText", 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HOW_IS_THIS_SECURE_LINK_TEXT)); 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 2: Found a viable phone. 1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderTitle", 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TITLE, device_type)); 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderText", 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TEXT, device_type)); 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneUseThisPhoneButtonLabel", 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_USE_THIS_PHONE_BUTTON_LABEL)); 1836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupPairingPhoneFailedButtonLabel", 1856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 1866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_PAIRING_PHONE_FAILED_BUTTON_LABEL)); 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 3: Setup completed successfully. 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderTitle", 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TITLE)); 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderText", 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TEXT)); 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteTryItOutButtonLabel", 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_TRY_IT_OUT_BUTTON_LABEL)); 2005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteSettingsLinkText", 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_SETTINGS_LINK_TEXT)); 2045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Error strings. 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothUnavailable", 2085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_UNAVAILBLE, device_type)); 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorOffline", 2125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_OFFLINE, device_type)); 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorFindingPhone", 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SETUP_ERROR_FINDING_PHONE)); 2175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothConnectionFailed", 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_CONNECTION_FAILED, 2215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 2225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupErrorConnectionToPhoneTimeout", 2246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringFUTF16( 2256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_CONNECT_TO_PHONE_TIMEOUT, 2266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) device_type)); 2276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupErrorSyncPhoneState", 2296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 2306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_SYNC_PHONE_STATE_FAILED)); 2316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorConnectingToPhone", 2335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_CONNECTING_TO_PHONE, device_type)); 2355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(isherman): Remove these strings once the app has been updated. 2375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "notificationTitle", 2395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_TITLE, 2405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 2415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "notificationMessage", 2435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_MESSAGE, 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 2455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "notificationButtonTitle", 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_NOTIFICATION_BUTTON_TITLE)); 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetResult(strings.release()); 2515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 2555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 2565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 2585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 2595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivatePerformECDHKeyAgreementFunction::RunAsync() { 2615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::PerformECDHKeyAgreement::Params> params = 2625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::PerformECDHKeyAgreement::Params::Create(*args_); 2635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 2645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->PerformECDHKeyAgreement( 2665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->private_key, 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->public_key, 2685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData, 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData( 2745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& secret_key) { 2755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 2765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!secret_key.empty()) { 2775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::PerformECDHKeyAgreement::Results::Create( 2785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) secret_key); 2795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 2815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 2845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 2855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 2875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 2885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateGenerateEcP256KeyPairFunction::RunAsync() { 2905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->GenerateEcP256KeyPair( 2915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData, 2925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData( 2975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& private_key, 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& public_key) { 2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!public_key.empty() && !private_key.empty()) { 3015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::GenerateEcP256KeyPair::Results::Create( 3025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public_key, private_key); 3035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 3085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction() {} 3095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 3115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateCreateSecureMessageFunction() {} 3125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateCreateSecureMessageFunction::RunAsync() { 3145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::CreateSecureMessage::Params> params = 3155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::CreateSecureMessage::Params::Create(*args_); 3165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 3175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->CreateSecureMessage( 3195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->payload, 3205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->key, 3215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.associated_data ? 3225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.associated_data : std::string(), 3235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.public_metadata ? 3245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.public_metadata : std::string(), 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.verification_key_id ? 3265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.verification_key_id : std::string(), 3275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.encrypt_type, 3285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.sign_type, 3295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateCreateSecureMessageFunction::OnData, 3305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateCreateSecureMessageFunction::OnData( 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message) { 3365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!message.empty()) { 3385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::CreateSecureMessage::Results::Create( 3395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) message); 3405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 3455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction() {} 3465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 3485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateUnwrapSecureMessageFunction() {} 3495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateUnwrapSecureMessageFunction::RunAsync() { 3515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::UnwrapSecureMessage::Params> params = 3525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::UnwrapSecureMessage::Params::Create(*args_); 3535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 3545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->UnwrapSecureMessage( 3565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->secure_message, 3575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->key, 3585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.associated_data ? 3595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.associated_data : std::string(), 3605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.encrypt_type, 3615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.sign_type, 3625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateUnwrapSecureMessageFunction::OnData, 3635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateUnwrapSecureMessageFunction::OnData( 3685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& data) { 3695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!data.empty()) 3715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::UnwrapSecureMessage::Results::Create(data); 3725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 3775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ~EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 3805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::RunAsync() { 3825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::SeekBluetoothDeviceByAddress::Params> params( 3835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::SeekBluetoothDeviceByAddress::Params::Create( 3845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *args_)); 3855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 3865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock::SeekBluetoothDeviceByAddress( 3885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->device_address, 3895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind( 3905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OnSeekCompleted, 3925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekCompleted( 3975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const easy_unlock::SeekDeviceResult& seek_result) { 3985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (seek_result.success) { 3995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 4005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 4015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetError(seek_result.error_message); 4025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(false); 4035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 4045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 40603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 40703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction() {} 40803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 40903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 41003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ~EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction() {} 41103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 41203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 41303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ConnectToService(device::BluetoothDevice* device, 41403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const device::BluetoothUUID& uuid) { 41503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) easy_unlock::ConnectToBluetoothServiceInsecurely( 41603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) device, 41703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) uuid, 41803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::Bind(&EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 41903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) OnConnect, 42003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) this), 42103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::Bind(&EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 42203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) OnConnectError, 42303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) this)); 42403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 42503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateUpdateScreenlockStateFunction:: 4276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateUpdateScreenlockStateFunction() {} 4286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateUpdateScreenlockStateFunction:: 4306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateUpdateScreenlockStateFunction() {} 4316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateUpdateScreenlockStateFunction::RunSync() { 4336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::UpdateScreenlockState::Params> params( 4346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::UpdateScreenlockState::Params::Create(*args_)); 4356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockScreenlockStateHandler* screenlock_state_handler = 4386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GetScreenlockStateHandler(browser_context()); 4396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (screenlock_state_handler) { 4406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) screenlock_state_handler->ChangeState( 4416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ToScreenlockStateHandlerState(params->state)); 4426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 4446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetError("Not allowed"); 4466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return false; 4476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetPermitAccessFunction:: 4506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateSetPermitAccessFunction() { 4516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetPermitAccessFunction:: 4546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateSetPermitAccessFunction() { 4556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateSetPermitAccessFunction::RunSync() { 4586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::SetPermitAccess::Params> params( 4596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::SetPermitAccess::Params::Create(*args_)); 4606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 4636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile) 4646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->SetPermitAccess(*params->permit_access.ToValue()); 4656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetPermitAccessFunction:: 4706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateGetPermitAccessFunction() { 4716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetPermitAccessFunction:: 4746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateGetPermitAccessFunction() { 4756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateGetPermitAccessFunction::RunSync() { 4786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 4796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::DictionaryValue* permit_value = 4806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->GetPermitAccess(); 4816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (permit_value) { 4826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::PermitRecord> permit = 4836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::PermitRecord::FromValue(*permit_value); 4846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) results_ = easy_unlock_private::GetPermitAccess::Results::Create(*permit); 4856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 4866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateClearPermitAccessFunction:: 4916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateClearPermitAccessFunction() { 4926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateClearPermitAccessFunction:: 4956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateClearPermitAccessFunction() { 4966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateClearPermitAccessFunction::RunSync() { 4996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->ClearPermitAccess(); 5016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetRemoteDevicesFunction:: 5056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateSetRemoteDevicesFunction() { 5066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetRemoteDevicesFunction:: 5096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateSetRemoteDevicesFunction() { 5106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateSetRemoteDevicesFunction::RunSync() { 5136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::SetRemoteDevices::Params> params( 5146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::SetRemoteDevices::Params::Create(*args_)); 5156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 5166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (params->devices.empty()) { 5196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->ClearRemoteDevices(); 5206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } else { 5216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::ListValue devices; 5226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) for (size_t i = 0; i < params->devices.size(); ++i) { 5236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) devices.Append(params->devices[i]->ToValue().release()); 5246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->SetRemoteDevices(devices); 5266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetRemoteDevicesFunction:: 5326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateGetRemoteDevicesFunction() { 5336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetRemoteDevicesFunction:: 5366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateGetRemoteDevicesFunction() { 5376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateGetRemoteDevicesFunction::RunSync() { 5406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::ListValue* devices = 5426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->GetRemoteDevices(); 5436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetResult(devices ? devices->DeepCopy() : new base::ListValue()); 5446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace api 5485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace extensions 549