easy_unlock_private_api.cc revision e4256316f8b5e8d1ec0df1f7762771622a53fa63
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" 18e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch#include "chrome/browser/signin/screenlock_bridge.h" 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/extensions/api/easy_unlock_private.h" 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "chrome/grit/generated_resources.h" 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/proximity_auth/bluetooth_util.h" 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/browser_thread.h" 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/browser/browser_context_keyed_api_factory.h" 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_CHROMEOS) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/chromeos_utils.h" 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/user_manager/user.h" 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/user_manager/user_manager.h" 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions { 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace api { 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace { 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static base::LazyInstance<BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI> > 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) g_factory = LAZY_INSTANCE_INITIALIZER; 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Utility method for getting the API's crypto delegate. 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCryptoDelegate* GetCryptoDelegate( 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* context) { 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI>::Get(context) 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ->crypto_delegate(); 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockScreenlockStateHandler::State ToScreenlockStateHandlerState( 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::State state) { 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switch (state) { 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_NO_BLUETOOTH: 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH; 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_BLUETOOTH_CONNECTING: 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING; 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_NO_PHONE: 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_NO_PHONE; 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_NOT_AUTHENTICATED: 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED; 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_LOCKED: 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED; 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_UNLOCKABLE: 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE; 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_NOT_NEARBY: 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_NEARBY; 6403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case easy_unlock_private::STATE_PHONE_UNSUPPORTED: 6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED; 666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) case easy_unlock_private::STATE_AUTHENTICATED: 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED; 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) default: 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return EasyUnlockScreenlockStateHandler::STATE_INACTIVE; 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI>* 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockPrivateAPI::GetFactoryInstance() { 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return g_factory.Pointer(); 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateAPI::EasyUnlockPrivateAPI(content::BrowserContext* context) 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : crypto_delegate_(EasyUnlockPrivateCryptoDelegate::Create()) { 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateAPI::~EasyUnlockPrivateAPI() {} 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGetStringsFunction::EasyUnlockPrivateGetStringsFunction() { 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGetStringsFunction::~EasyUnlockPrivateGetStringsFunction() { 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateGetStringsFunction::RunSync() { 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<base::DictionaryValue> strings(new base::DictionaryValue); 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_CHROMEOS) 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::string16 device_type = chromeos::GetChromeDeviceType(); 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(isherman): Set an appropriate device name for non-ChromeOS devices. 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::string16 device_type = base::ASCIIToUTF16("Chromeschnozzle"); 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS) 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const user_manager::UserManager* manager = user_manager::UserManager::Get(); 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const user_manager::User* user = manager ? manager->GetActiveUser() : NULL; 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string user_email_utf8 = 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user ? user->display_email() : std::string(); 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::string16 user_email = base::UTF8ToUTF16(user_email_utf8); 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(isherman): Set an appropriate user display email for non-ChromeOS 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // platforms. 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::string16 user_email = base::UTF8ToUTF16("superman@example.com"); 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // defined(OS_CHROMEOS) 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Common strings. 1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "learnMoreLinkTitle", 1176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_LEARN_MORE_LINK_TITLE)); 118e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString("deviceType", device_type); 1196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup notification strings. 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationTitle", 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_TITLE, 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationMessage", 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_MESSAGE, 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationButtonTitle", 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_NOTIFICATION_BUTTON_TITLE)); 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Success notification strings. 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationTitle", 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_TITLE)); 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationMessage", 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_MESSAGE, 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Chromebook added to Easy Unlock notification strings. 1446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 1456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "chromebookAddedNotificationTitle", 1466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 1476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_CHROMEBOOK_ADDED_NOTIFICATION_TITLE)); 1486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 149e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "chromebookAddedNotificationMessage", 150e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringFUTF16( 1516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_CHROMEBOOK_ADDED_NOTIFICATION_MESSAGE, 1526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) device_type)); 153e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString( 154e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "chromebookAddedNotificationAboutButton", 155e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringUTF16( 156e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch IDS_EASY_UNLOCK_CHROMEBOOK_ADDED_NOTIFICATION_ABOUT_BUTTON)); 157e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 158e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch // Shared "Learn more" button for the pairing changed and pairing change 159e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch // applied notification. 160e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString( 161e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "phoneChangedNotificationLearnMoreButton", 162e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringUTF16( 163e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch IDS_EASY_UNLOCK_NOTIFICATION_LEARN_MORE_BUTTON)); 164e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 165e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch // Pairing changed notification strings. 166e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString( 167e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "phoneChangedNotificationTitle", 168e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringUTF16( 169e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch IDS_EASY_UNLOCK_PAIRING_CHANGED_NOTIFICATION_TITLE)); 170e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString( 171e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "phoneChangedNotificationMessage", 172e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringFUTF16( 173e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch IDS_EASY_UNLOCK_PAIRING_CHANGED_NOTIFICATION_MESSAGE, 174e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch device_type)); 175e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString( 176e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "phoneChangedNotificationUpdateButton", 177e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringUTF16( 178e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch IDS_EASY_UNLOCK_PAIRING_CHANGED_NOTIFICATION_UPDATE_BUTTON)); 179e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 180e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch // Phone change applied notification strings. 181e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString( 182e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "phoneChangeAppliedNotificationTitle", 183e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringUTF16( 184e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch IDS_EASY_UNLOCK_PAIRING_CHANGE_APPLIED_NOTIFICATION_TITLE)); 185e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch strings->SetString( 186e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch "phoneChangeAppliedNotificationMessage", 187e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch l10n_util::GetStringUTF16( 188e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch IDS_EASY_UNLOCK_PAIRING_CHANGE_APPLIED_NOTIFICATION_MESSAGE)); 1896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup dialog strings. 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 1: Intro. 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderTitle", 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TITLE, device_type)); 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderText", 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TEXT, 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci device_type, 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user_email)); 2015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindPhoneButtonLabel", 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FIND_PHONE_BUTTON_LABEL)); 2055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindingPhoneButtonLabel", 2075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FINDING_PHONE_BUTTON_LABEL)); 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupIntroRetryFindPhoneButtonLabel", 2116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 2126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_RETRY_FIND_PHONE_BUTTON_LABEL)); 2136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHowIsThisSecureLinkText", 2155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HOW_IS_THIS_SECURE_LINK_TEXT)); 2175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 2: Found a viable phone. 2185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderTitle", 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TITLE, device_type)); 2225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderText", 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TEXT, device_type)); 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneUseThisPhoneButtonLabel", 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_USE_THIS_PHONE_BUTTON_LABEL)); 2306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupPairingPhoneFailedButtonLabel", 2326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 2336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_PAIRING_PHONE_FAILED_BUTTON_LABEL)); 2345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 3: Setup completed successfully. 2355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderTitle", 2375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TITLE)); 2395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderText", 2415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TEXT)); 2435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteTryItOutButtonLabel", 2455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_TRY_IT_OUT_BUTTON_LABEL)); 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteSettingsLinkText", 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_SETTINGS_LINK_TEXT)); 2515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Error strings. 2535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothUnavailable", 2555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_UNAVAILBLE, device_type)); 2575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorOffline", 2595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_OFFLINE, device_type)); 2615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorFindingPhone", 2635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SETUP_ERROR_FINDING_PHONE)); 2645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothConnectionFailed", 2665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_CONNECTION_FAILED, 2685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 2706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupErrorConnectionToPhoneTimeout", 2716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringFUTF16( 2726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_CONNECT_TO_PHONE_TIMEOUT, 2736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) device_type)); 2746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "setupErrorSyncPhoneState", 2766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) l10n_util::GetStringUTF16( 2776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_SYNC_PHONE_STATE_FAILED)); 2786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) strings->SetString( 2795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorConnectingToPhone", 2805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 2815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_CONNECTING_TO_PHONE, device_type)); 2825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(isherman): Remove this string once the app has been updated. 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci strings->SetString("setupIntroHeaderFootnote", base::string16()); 2855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetResult(strings.release()); 2875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 2915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 2925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 2945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 2955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivatePerformECDHKeyAgreementFunction::RunAsync() { 2975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::PerformECDHKeyAgreement::Params> params = 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::PerformECDHKeyAgreement::Params::Create(*args_); 2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 3005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->PerformECDHKeyAgreement( 3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *params, 3035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData, 3045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData( 3095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& secret_key) { 3105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!secret_key.empty()) { 3125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::PerformECDHKeyAgreement::Results::Create( 3135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) secret_key); 3145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 3195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 3205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 3225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 3235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateGenerateEcP256KeyPairFunction::RunAsync() { 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->GenerateEcP256KeyPair( 3265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData, 3275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData( 3325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& private_key, 3335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& public_key) { 3345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!public_key.empty() && !private_key.empty()) { 3365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::GenerateEcP256KeyPair::Results::Create( 3375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public_key, private_key); 3385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 3435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction() {} 3445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 3465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateCreateSecureMessageFunction() {} 3475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateCreateSecureMessageFunction::RunAsync() { 3495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::CreateSecureMessage::Params> params = 3505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::CreateSecureMessage::Params::Create(*args_); 3515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 3525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->CreateSecureMessage( 3541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *params, 3555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateCreateSecureMessageFunction::OnData, 3565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateCreateSecureMessageFunction::OnData( 3615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message) { 3625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!message.empty()) { 3645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::CreateSecureMessage::Results::Create( 3655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) message); 3665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 3715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction() {} 3725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 3745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateUnwrapSecureMessageFunction() {} 3755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateUnwrapSecureMessageFunction::RunAsync() { 3775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::UnwrapSecureMessage::Params> params = 3785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::UnwrapSecureMessage::Params::Create(*args_); 3795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 3805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->UnwrapSecureMessage( 3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *params, 3835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateUnwrapSecureMessageFunction::OnData, 3845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateUnwrapSecureMessageFunction::OnData( 3895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& data) { 3905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!data.empty()) 3925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::UnwrapSecureMessage::Results::Create(data); 3935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 3985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 4005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ~EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 4015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::RunAsync() { 4035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::SeekBluetoothDeviceByAddress::Params> params( 4045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::SeekBluetoothDeviceByAddress::Params::Create( 4055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *args_)); 4065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci proximity_auth::bluetooth_util::SeekDeviceByAddress( 4095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->device_address, 4105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind( 4111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekSuccess, 4121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this), 4131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind( 4141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekFailure, 4151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this), 4161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::BrowserThread::GetBlockingPool()); 4175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 4185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekSuccess() { 4211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SendResponse(true); 4221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekFailure( 4251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& error_message) { 4261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetError(error_message); 4271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SendResponse(false); 4285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 43003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 43103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction() {} 43203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 43303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 43403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ~EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction() {} 43503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 43603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 43703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ConnectToService(device::BluetoothDevice* device, 43803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const device::BluetoothUUID& uuid) { 4391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci proximity_auth::bluetooth_util::ConnectToServiceInsecurely( 44003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) device, 44103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) uuid, 44203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::Bind(&EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 44303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) OnConnect, 44403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) this), 44503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::Bind(&EasyUnlockPrivateConnectToBluetoothServiceInsecurelyFunction:: 44603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) OnConnectError, 44703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) this)); 44803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 44903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateUpdateScreenlockStateFunction:: 4516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateUpdateScreenlockStateFunction() {} 4526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateUpdateScreenlockStateFunction:: 4546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateUpdateScreenlockStateFunction() {} 4556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateUpdateScreenlockStateFunction::RunSync() { 4576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::UpdateScreenlockState::Params> params( 4586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::UpdateScreenlockState::Params::Create(*args_)); 4596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile = Profile::FromBrowserContext(browser_context()); 4621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (EasyUnlockService::Get(profile)->UpdateScreenlockState( 4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ToScreenlockStateHandlerState(params->state))) 4646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetError("Not allowed"); 4676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return false; 4686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetPermitAccessFunction:: 4716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateSetPermitAccessFunction() { 4726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetPermitAccessFunction:: 4756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateSetPermitAccessFunction() { 4766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateSetPermitAccessFunction::RunSync() { 4796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::SetPermitAccess::Params> params( 4806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::SetPermitAccess::Params::Create(*args_)); 4816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 4826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 4846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile) 4856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->SetPermitAccess(*params->permit_access.ToValue()); 4866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 4886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetPermitAccessFunction:: 4916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateGetPermitAccessFunction() { 4926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetPermitAccessFunction:: 4956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateGetPermitAccessFunction() { 4966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateGetPermitAccessFunction::RunSync() { 4996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::DictionaryValue* permit_value = 5016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->GetPermitAccess(); 5026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (permit_value) { 5036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::PermitRecord> permit = 5046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::PermitRecord::FromValue(*permit_value); 5056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) results_ = easy_unlock_private::GetPermitAccess::Results::Create(*permit); 5066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateClearPermitAccessFunction:: 5126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateClearPermitAccessFunction() { 5136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateClearPermitAccessFunction:: 5166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateClearPermitAccessFunction() { 5176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateClearPermitAccessFunction::RunSync() { 5206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->ClearPermitAccess(); 5226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetRemoteDevicesFunction:: 5266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateSetRemoteDevicesFunction() { 5276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateSetRemoteDevicesFunction:: 5306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateSetRemoteDevicesFunction() { 5316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateSetRemoteDevicesFunction::RunSync() { 5346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<easy_unlock_private::SetRemoteDevices::Params> params( 5356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) easy_unlock_private::SetRemoteDevices::Params::Create(*args_)); 5366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 5376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (params->devices.empty()) { 5406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->ClearRemoteDevices(); 5416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } else { 5426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::ListValue devices; 5436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) for (size_t i = 0; i < params->devices.size(); ++i) { 5446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) devices.Append(params->devices[i]->ToValue().release()); 5456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->SetRemoteDevices(devices); 5476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 5486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetRemoteDevicesFunction:: 5536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockPrivateGetRemoteDevicesFunction() { 5546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)EasyUnlockPrivateGetRemoteDevicesFunction:: 5576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~EasyUnlockPrivateGetRemoteDevicesFunction() { 5586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool EasyUnlockPrivateGetRemoteDevicesFunction::RunSync() { 5616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Profile* profile = Profile::FromBrowserContext(browser_context()); 5626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::ListValue* devices = 5636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(profile)->GetRemoteDevices(); 5646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetResult(devices ? devices->DeepCopy() : new base::ListValue()); 5656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 5666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 5676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 5681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetSignInChallengeFunction:: 5691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockPrivateGetSignInChallengeFunction() { 5701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetSignInChallengeFunction:: 5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~EasyUnlockPrivateGetSignInChallengeFunction() { 5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool EasyUnlockPrivateGetSignInChallengeFunction::RunSync() { 5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile = Profile::FromBrowserContext(browser_context()); 5781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string challenge = 5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService::Get(profile)->GetChallenge(); 5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!challenge.empty()) { 5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci results_ = 5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci easy_unlock_private::GetSignInChallenge::Results::Create(challenge); 5831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 5851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateTrySignInSecretFunction:: 5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockPrivateTrySignInSecretFunction() { 5891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateTrySignInSecretFunction:: 5921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~EasyUnlockPrivateTrySignInSecretFunction() { 5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool EasyUnlockPrivateTrySignInSecretFunction::RunSync() { 5961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<easy_unlock_private::TrySignInSecret::Params> params( 5971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci easy_unlock_private::TrySignInSecret::Params::Create(*args_)); 5981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXTENSION_FUNCTION_VALIDATE(params.get()); 5991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile = Profile::FromBrowserContext(browser_context()); 6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService::Get(profile)->FinalizeSignin(params->sign_in_secret); 6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetUserInfoFunction::EasyUnlockPrivateGetUserInfoFunction() { 6061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEasyUnlockPrivateGetUserInfoFunction::~EasyUnlockPrivateGetUserInfoFunction() { 6091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool EasyUnlockPrivateGetUserInfoFunction::RunSync() { 6121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService* service = 6131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockService::Get(Profile::FromBrowserContext(browser_context())); 6141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<linked_ptr<easy_unlock_private::UserInfo> > users; 6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string user_id = service->GetUserEmail(); 6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!user_id.empty()) { 6171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users.push_back( 6181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci linked_ptr<easy_unlock_private::UserInfo>( 6191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci new easy_unlock_private::UserInfo())); 6201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users[0]->user_id = user_id; 6211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users[0]->logged_in = service->GetType() == EasyUnlockService::TYPE_REGULAR; 6221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci users[0]->data_ready = users[0]->logged_in || 6231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci service->GetRemoteDevices() != NULL; 6241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci results_ = easy_unlock_private::GetUserInfo::Results::Create(users); 6261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 6271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace api 6305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace extensions 631