easy_unlock_private_api.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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) 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector> 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/bind.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/lazy_instance.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/linked_ptr.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/strings/utf_string_conversions.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/values.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_crypto_delegate.h" 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/signin/easy_unlock_screenlock_state_handler.h" 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/signin/easy_unlock_service.h" 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/extensions/api/easy_unlock_private.h" 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "chrome/grit/generated_resources.h" 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/proximity_auth/bluetooth_util.h" 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/browser_thread.h" 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/browser/browser_context_keyed_api_factory.h" 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_CHROMEOS) 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/chromeos_utils.h" 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/user_manager/user.h" 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/user_manager/user_manager.h" 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions { 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace api { 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace { 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static base::LazyInstance<BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI> > 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) g_factory = LAZY_INSTANCE_INITIALIZER; 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Utility method for getting the API's crypto delegate. 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCryptoDelegate* GetCryptoDelegate( 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* context) { 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI>::Get(context) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ->crypto_delegate(); 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (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) 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS) 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const user_manager::UserManager* manager = user_manager::UserManager::Get(); 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const user_manager::User* user = manager ? manager->GetActiveUser() : NULL; 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string user_email_utf8 = 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user ? user->display_email() : std::string(); 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::string16 user_email = base::UTF8ToUTF16(user_email_utf8); 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(isherman): Set an appropriate user display email for non-ChromeOS 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // platforms. 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::string16 user_email = base::UTF8ToUTF16("superman@example.com"); 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // defined(OS_CHROMEOS) 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Common strings. 1146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "learnMoreLinkTitle", 1166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_LEARN_MORE_LINK_TITLE)); 1176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup notification strings. 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationTitle", 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_TITLE, 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationMessage", 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_MESSAGE, 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationButtonTitle", 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_NOTIFICATION_BUTTON_TITLE)); 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Success notification strings. 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationTitle", 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_TITLE)); 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationMessage", 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_MESSAGE, 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Chromebook added to Easy Unlock notification strings. 1426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "chromebookAddedNotificationTitle", 1446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 1456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_CHROMEBOOK_ADDED_NOTIFICATION_TITLE)); 1466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "chromebookAddedNotificationMessage", 1486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringFUTF16( 1496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_CHROMEBOOK_ADDED_NOTIFICATION_MESSAGE, 1506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) device_type)); 1516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup dialog strings. 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 1: Intro. 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderTitle", 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TITLE, device_type)); 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderText", 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TEXT, 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci device_type, 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user_email)); 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindPhoneButtonLabel", 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FIND_PHONE_BUTTON_LABEL)); 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindingPhoneButtonLabel", 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FINDING_PHONE_BUTTON_LABEL)); 1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupIntroRetryFindPhoneButtonLabel", 1736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 1746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_RETRY_FIND_PHONE_BUTTON_LABEL)); 1756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHowIsThisSecureLinkText", 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HOW_IS_THIS_SECURE_LINK_TEXT)); 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 2: Found a viable phone. 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderTitle", 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TITLE, device_type)); 1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderText", 1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TEXT, device_type)); 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneUseThisPhoneButtonLabel", 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_USE_THIS_PHONE_BUTTON_LABEL)); 1926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupPairingPhoneFailedButtonLabel", 1946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 1956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_PAIRING_PHONE_FAILED_BUTTON_LABEL)); 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 3: Setup completed successfully. 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderTitle", 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TITLE)); 2015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderText", 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TEXT)); 2055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteTryItOutButtonLabel", 2075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_TRY_IT_OUT_BUTTON_LABEL)); 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteSettingsLinkText", 2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_SETTINGS_LINK_TEXT)); 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Error strings. 2155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothUnavailable", 2175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_UNAVAILBLE, device_type)); 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorOffline", 2215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_OFFLINE, device_type)); 2235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorFindingPhone", 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SETUP_ERROR_FINDING_PHONE)); 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothConnectionFailed", 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_CONNECTION_FAILED, 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupErrorConnectionToPhoneTimeout", 2336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringFUTF16( 2346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_CONNECT_TO_PHONE_TIMEOUT, 2356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) device_type)); 2366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupErrorSyncPhoneState", 2386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 2396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_SYNC_PHONE_STATE_FAILED)); 2406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorConnectingToPhone", 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_CONNECTING_TO_PHONE, device_type)); 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(isherman): Remove this string once the app has been updated. 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci strings->SetString("setupIntroHeaderFootnote", base::string16()); 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetResult(strings.release()); 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 2535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 2545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 2565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 2575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivatePerformECDHKeyAgreementFunction::RunAsync() { 2595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::PerformECDHKeyAgreement::Params> params = 2605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::PerformECDHKeyAgreement::Params::Create(*args_); 2615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 2625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->PerformECDHKeyAgreement( 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *params, 2655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData, 2665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData( 2715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& secret_key) { 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 2735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!secret_key.empty()) { 2745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::PerformECDHKeyAgreement::Results::Create( 2755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) secret_key); 2765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 2785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 2815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 2825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 2845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 2855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateGenerateEcP256KeyPairFunction::RunAsync() { 2875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->GenerateEcP256KeyPair( 2885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData, 2895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData( 2945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& private_key, 2955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& public_key) { 2965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 2975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!public_key.empty() && !private_key.empty()) { 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::GenerateEcP256KeyPair::Results::Create( 2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public_key, private_key); 3005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 3055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction() {} 3065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 3085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateCreateSecureMessageFunction() {} 3095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateCreateSecureMessageFunction::RunAsync() { 3115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::CreateSecureMessage::Params> params = 3125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::CreateSecureMessage::Params::Create(*args_); 3135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 3145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->CreateSecureMessage( 3161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *params, 3175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateCreateSecureMessageFunction::OnData, 3185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateCreateSecureMessageFunction::OnData( 3235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message) { 3245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!message.empty()) { 3265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::CreateSecureMessage::Results::Create( 3275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) message); 3285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 3335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction() {} 3345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 3365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateUnwrapSecureMessageFunction() {} 3375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateUnwrapSecureMessageFunction::RunAsync() { 3395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::UnwrapSecureMessage::Params> params = 3405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::UnwrapSecureMessage::Params::Create(*args_); 3415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 3425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->UnwrapSecureMessage( 3441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *params, 3455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateUnwrapSecureMessageFunction::OnData, 3465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateUnwrapSecureMessageFunction::OnData( 3515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& data) { 3525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!data.empty()) 3545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::UnwrapSecureMessage::Results::Create(data); 3555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 3605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ~EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 3635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::RunAsync() { 3655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::SeekBluetoothDeviceByAddress::Params> params( 3665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::SeekBluetoothDeviceByAddress::Params::Create( 3675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *args_)); 3685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 3695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci proximity_auth::bluetooth_util::SeekDeviceByAddress( 3715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->device_address, 3725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind( 3731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekSuccess, 3741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this), 3751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind( 3761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekFailure, 3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this), 3781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::BrowserThread::GetBlockingPool()); 3795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekSuccess() { 3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SendResponse(true); 3841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekFailure( 3871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& error_message) { 3881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetError(error_message); 3891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SendResponse(false); 3905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 39203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 39303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction() {} 39403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 39503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 39603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ~EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction() {} 39703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 39803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 39903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ConnectToService(device::BluetoothDevice* device, 40003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const device::BluetoothUUID& uuid) { 4011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci proximity_auth::bluetooth_util::ConnectToServiceInsecurely( 40203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) device, 40303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) uuid, 40403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::Bind(&EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 40503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) OnConnect, 40603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) this), 40703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::Bind(&EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 40803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) OnConnectError, 40903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) this)); 41003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 41103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateUpdateScreenlockStateFunction:: 4136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateUpdateScreenlockStateFunction() {} 4146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateUpdateScreenlockStateFunction:: 4166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateUpdateScreenlockStateFunction() {} 4176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateUpdateScreenlockStateFunction::RunSync() { 4196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::UpdateScreenlockState::Params> params( 4206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::UpdateScreenlockState::Params::Create(*args_)); 4216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile = Profile::FromBrowserContext(browser_context()); 4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (EasyUnlockService::Get(profile)->UpdateScreenlockState( 4251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ToScreenlockStateHandlerState(params->state))) 4266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetError("Not allowed"); 4296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return false; 4306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetPermitAccessFunction:: 4336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateSetPermitAccessFunction() { 4346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetPermitAccessFunction:: 4376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateSetPermitAccessFunction() { 4386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateSetPermitAccessFunction::RunSync() { 4416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::SetPermitAccess::Params> params( 4426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::SetPermitAccess::Params::Create(*args_)); 4436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 4466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile) 4476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->SetPermitAccess(*params->permit_access.ToValue()); 4486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetPermitAccessFunction:: 4536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateGetPermitAccessFunction() { 4546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetPermitAccessFunction:: 4576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateGetPermitAccessFunction() { 4586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateGetPermitAccessFunction::RunSync() { 4616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 4626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::DictionaryValue* permit_value = 4636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->GetPermitAccess(); 4646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (permit_value) { 4656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::PermitRecord> permit = 4666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::PermitRecord::FromValue(*permit_value); 4676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) results_ = easy_unlock_private::GetPermitAccess::Results::Create(*permit); 4686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 4696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateClearPermitAccessFunction:: 4746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateClearPermitAccessFunction() { 4756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateClearPermitAccessFunction:: 4786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateClearPermitAccessFunction() { 4796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateClearPermitAccessFunction::RunSync() { 4826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 4836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->ClearPermitAccess(); 4846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetRemoteDevicesFunction:: 4886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateSetRemoteDevicesFunction() { 4896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetRemoteDevicesFunction:: 4926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateSetRemoteDevicesFunction() { 4936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateSetRemoteDevicesFunction::RunSync() { 4966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::SetRemoteDevices::Params> params( 4976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::SetRemoteDevices::Params::Create(*args_)); 4986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (params->devices.empty()) { 5026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->ClearRemoteDevices(); 5036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } else { 5046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::ListValue devices; 5056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) for (size_t i = 0; i < params->devices.size(); ++i) { 5066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) devices.Append(params->devices[i]->ToValue().release()); 5076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->SetRemoteDevices(devices); 5096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetRemoteDevicesFunction:: 5156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateGetRemoteDevicesFunction() { 5166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetRemoteDevicesFunction:: 5196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateGetRemoteDevicesFunction() { 5206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateGetRemoteDevicesFunction::RunSync() { 5236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::ListValue* devices = 5256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->GetRemoteDevices(); 5266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetResult(devices ? devices->DeepCopy() : new base::ListValue()); 5276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetSignInChallengeFunction:: 5311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockPrivateGetSignInChallengeFunction() { 5321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetSignInChallengeFunction:: 5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~EasyUnlockPrivateGetSignInChallengeFunction() { 5361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool EasyUnlockPrivateGetSignInChallengeFunction::RunSync() { 5391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile = Profile::FromBrowserContext(browser_context()); 5401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string challenge = 5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService::Get(profile)->GetChallenge(); 5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!challenge.empty()) { 5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci results_ = 5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci easy_unlock_private::GetSignInChallenge::Results::Create(challenge); 5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 5471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateTrySignInSecretFunction:: 5501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockPrivateTrySignInSecretFunction() { 5511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateTrySignInSecretFunction:: 5541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~EasyUnlockPrivateTrySignInSecretFunction() { 5551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool EasyUnlockPrivateTrySignInSecretFunction::RunSync() { 5581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<easy_unlock_private::TrySignInSecret::Params> params( 5591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci easy_unlock_private::TrySignInSecret::Params::Create(*args_)); 5601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXTENSION_FUNCTION_VALIDATE(params.get()); 5611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile = Profile::FromBrowserContext(browser_context()); 5631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService::Get(profile)->FinalizeSignin(params->sign_in_secret); 5641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 5651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetUserInfoFunction::EasyUnlockPrivateGetUserInfoFunction() { 5681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetUserInfoFunction::~EasyUnlockPrivateGetUserInfoFunction() { 5711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool EasyUnlockPrivateGetUserInfoFunction::RunSync() { 5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService* service = 5751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService::Get(Profile::FromBrowserContext(browser_context())); 5761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<linked_ptr<easy_unlock_private::UserInfo> > users; 5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string user_id = service->GetUserEmail(); 5781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!user_id.empty()) { 5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users.push_back( 5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci linked_ptr<easy_unlock_private::UserInfo>( 5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci new easy_unlock_private::UserInfo())); 5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users[0]->user_id = user_id; 5831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users[0]->logged_in = service->GetType() == EasyUnlockService::TYPE_REGULAR; 5841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users[0]->data_ready = users[0]->logged_in || 5851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci service->GetRemoteDevices() != NULL; 5861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci results_ = easy_unlock_private::GetUserInfo::Results::Create(users); 5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 5891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace api 5925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace extensions 593