1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/webui/options/sync_setup_handler.h" 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/json/json_reader.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/json/json_writer.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/values.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/google/google_util.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/profiles/profile.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/sync/profile_sync_service.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/sync/sync_setup_flow.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "grit/chromium_strings.h" 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "grit/generated_resources.h" 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "grit/locale_settings.h" 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ui/base/l10n/l10n_util.h" 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenusing l10n_util::GetStringFUTF16; 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenusing l10n_util::GetStringUTF16; 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace { 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// TODO(jhawkins): Move these to url_constants.h. 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst char* kInvalidPasswordHelpUrl = 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "http://www.google.com/support/accounts/bin/answer.py?ctx=ch&answer=27444"; 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst char* kCanNotAccessAccountUrl = 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "http://www.google.com/support/accounts/bin/answer.py?answer=48598"; 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#if defined(OS_CHROMEOS) 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst char* kEncryptionHelpUrl = 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "http://www.google.com/support/chromeos/bin/answer.py?answer=1181035"; 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#else 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst char* kEncryptionHelpUrl = 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "http://www.google.com/support/chrome/bin/answer.py?answer=1181035"; 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst char* kCreateNewAccountUrl = 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "https://www.google.com/accounts/NewAccount?service=chromiumsync"; 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenbool GetAuthData(const std::string& json, 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string* username, 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string* password, 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string* captcha, 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string* access_code) { 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<Value> parsed_value(base::JSONReader::Read(json, false)); 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!parsed_value.get() || !parsed_value->IsType(Value::TYPE_DICTIONARY)) 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DictionaryValue* result = static_cast<DictionaryValue*>(parsed_value.get()); 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetString("user", username) || 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen !result->GetString("pass", password) || 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen !result->GetString("captcha", captcha) || 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen !result->GetString("access_code", access_code)) { 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return true; 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenbool GetConfiguration(const std::string& json, SyncConfiguration* config) { 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<Value> parsed_value(base::JSONReader::Read(json, false)); 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!parsed_value.get() || !parsed_value->IsType(Value::TYPE_DICTIONARY)) 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DictionaryValue* result = static_cast<DictionaryValue*>(parsed_value.get()); 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("keepEverythingSynced", &config->sync_everything)) 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // These values need to be kept in sync with where they are written in 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // choose_datatypes.html. 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_bookmarks; 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncBookmarks", &sync_bookmarks)) 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_bookmarks) 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::BOOKMARKS); 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_preferences; 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncPreferences", &sync_preferences)) 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_preferences) 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::PREFERENCES); 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_themes; 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncThemes", &sync_themes)) 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_themes) 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::THEMES); 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_passwords; 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncPasswords", &sync_passwords)) 89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_passwords) 91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::PASSWORDS); 92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_autofill; 94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncAutofill", &sync_autofill)) 95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_autofill) 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::AUTOFILL); 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_extensions; 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncExtensions", &sync_extensions)) 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_extensions) 103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::EXTENSIONS); 104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_typed_urls; 106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncTypedUrls", &sync_typed_urls)) 107ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_typed_urls) 109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::TYPED_URLS); 110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 111ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_sessions; 112ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncSessions", &sync_sessions)) 113ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 114ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_sessions) 115ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::SESSIONS); 116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool sync_apps; 118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("syncApps", &sync_apps)) 119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (sync_apps) 121ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen config->data_types.insert(syncable::APPS); 122ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 123ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Encryption settings. 124ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!result->GetBoolean("usePassphrase", &config->use_secondary_passphrase)) 125ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 126ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (config->use_secondary_passphrase && 127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen !result->GetString("passphrase", &config->secondary_passphrase)) 128ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 129ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 130ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return true; 131ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 132ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 133ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenbool GetPassphrase(const std::string& json, std::string* passphrase) { 134ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<Value> parsed_value(base::JSONReader::Read(json, false)); 135ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!parsed_value.get() || !parsed_value->IsType(Value::TYPE_DICTIONARY)) 136ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 137ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 138ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DictionaryValue* result = static_cast<DictionaryValue*>(parsed_value.get()); 139ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return result->GetString("passphrase", passphrase); 140ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 141ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 142ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenbool GetFirstPassphrase(const std::string& json, 143ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string* option, 144ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string* passphrase) { 145ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<Value> parsed_value(base::JSONReader::Read(json, false)); 146ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!parsed_value.get() || !parsed_value->IsType(Value::TYPE_DICTIONARY)) 147ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return false; 148ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 149ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DictionaryValue* result = static_cast<DictionaryValue*>(parsed_value.get()); 150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return result->GetString("option", option) && 151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen result->GetString("passphrase", passphrase); 152ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace 155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenSyncSetupHandler::SyncSetupHandler() : flow_(NULL) { 157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 158ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 159ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenSyncSetupHandler::~SyncSetupHandler() { 160ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 161ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 162ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::GetLocalizedValues(DictionaryValue* localized_strings) { 163ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(localized_strings); 164ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 165ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 166ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "invalidpasswordhelpurl", 167ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen google_util::StringAppendGoogleLocaleParam(kInvalidPasswordHelpUrl)); 168ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 169ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "cannotaccessaccounturl", 170ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen google_util::StringAppendGoogleLocaleParam(kCanNotAccessAccountUrl)); 171ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 172ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "createnewaccounturl", 173ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen google_util::StringAppendGoogleLocaleParam(kCreateNewAccountUrl)); 174ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 175ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "introduction", 176ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringFUTF16(IDS_SYNC_LOGIN_INTRODUCTION, 177ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringUTF16(IDS_PRODUCT_NAME))); 178ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 179ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "choosedatatypesinstructions", 180ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringFUTF16(IDS_SYNC_CHOOSE_DATATYPES_INSTRUCTIONS, 181ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringUTF16(IDS_PRODUCT_NAME))); 182ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 183ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "encryptionInstructions", 184ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringFUTF16(IDS_SYNC_ENCRYPTION_INSTRUCTIONS, 185ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringUTF16(IDS_PRODUCT_NAME))); 186ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 187ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "encryptionhelpurl", 188ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen google_util::StringAppendGoogleLocaleParam(kEncryptionHelpUrl)); 189ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen localized_strings->SetString( 190ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "passphraseEncryptionMessage", 191ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringFUTF16(IDS_SYNC_PASSPHRASE_ENCRYPTION_MESSAGE, 192ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetStringUTF16(IDS_PRODUCT_NAME))); 193ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 194ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static OptionsStringResource resources[] = { 195ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "syncSetupOverlayTitle", IDS_SYNC_SETUP_TITLE }, 196ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "syncSetupConfigureTitle", IDS_SYNC_SETUP_CONFIGURE_TITLE }, 197ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "signinprefix", IDS_SYNC_LOGIN_SIGNIN_PREFIX }, 198ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "signinsuffix", IDS_SYNC_LOGIN_SIGNIN_SUFFIX }, 199ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cannotbeblank", IDS_SYNC_CANNOT_BE_BLANK }, 200ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "emaillabel", IDS_SYNC_LOGIN_EMAIL }, 201ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passwordlabel", IDS_SYNC_LOGIN_PASSWORD }, 202ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "invalidcredentials", IDS_SYNC_INVALID_USER_CREDENTIALS }, 203ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "signin", IDS_SYNC_SIGNIN }, 204ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "couldnotconnect", IDS_SYNC_LOGIN_COULD_NOT_CONNECT }, 205ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cannotaccessaccount", IDS_SYNC_CANNOT_ACCESS_ACCOUNT }, 206ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "createaccount", IDS_SYNC_CREATE_ACCOUNT }, 207ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cancel", IDS_CANCEL }, 208ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "settingup", IDS_SYNC_LOGIN_SETTING_UP }, 209ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "settingupsync", IDS_SYNC_LOGIN_SETTING_UP_SYNC }, 210ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "errorsigningin", IDS_SYNC_ERROR_SIGNING_IN }, 211ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "captchainstructions", IDS_SYNC_GAIA_CAPTCHA_INSTRUCTIONS }, 212ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "invalidaccesscode", IDS_SYNC_INVALID_ACCESS_CODE_LABEL }, 213ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "enteraccesscode", IDS_SYNC_ENTER_ACCESS_CODE_LABEL }, 214ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "getaccesscodehelp", IDS_SYNC_ACCESS_CODE_HELP_LABEL }, 215ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "getaccesscodeurl", IDS_SYNC_GET_ACCESS_CODE_URL }, 216ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "dataTypes", IDS_SYNC_DATA_TYPES_TAB_NAME }, 217ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "encryption", IDS_SYNC_ENCRYPTION_TAB_NAME }, 218ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "choosedatatypesheader", IDS_SYNC_CHOOSE_DATATYPES_HEADER }, 219ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "keepeverythingsynced", IDS_SYNC_EVERYTHING }, 220ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "choosedatatypes", IDS_SYNC_CHOOSE_DATATYPES }, 221ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "bookmarks", IDS_SYNC_DATATYPE_BOOKMARKS }, 222ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "preferences", IDS_SYNC_DATATYPE_PREFERENCES }, 223ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "autofill", IDS_SYNC_DATATYPE_AUTOFILL }, 224ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "themes", IDS_SYNC_DATATYPE_THEMES }, 225ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passwords", IDS_SYNC_DATATYPE_PASSWORDS }, 226ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "extensions", IDS_SYNC_DATATYPE_EXTENSIONS }, 227ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "typedurls", IDS_SYNC_DATATYPE_TYPED_URLS }, 228ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "apps", IDS_SYNC_DATATYPE_APPS }, 229ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "foreignsessions", IDS_SYNC_DATATYPE_SESSIONS }, 230ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "synczerodatatypeserror", IDS_SYNC_ZERO_DATA_TYPES_ERROR }, 231ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "abortederror", IDS_SYNC_SETUP_ABORTED_BY_PENDING_CLEAR }, 232ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "encryptAllLabel", IDS_SYNC_ENCRYPT_ALL_LABEL }, 233ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "googleOption", IDS_SYNC_PASSPHRASE_OPT_GOOGLE }, 234ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "explicitOption", IDS_SYNC_PASSPHRASE_OPT_EXPLICIT }, 235ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "sectionGoogleMessage", IDS_SYNC_PASSPHRASE_MSG_GOOGLE }, 236ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "sectionExplicitMessage", IDS_SYNC_PASSPHRASE_MSG_EXPLICIT }, 237ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passphraseLabel", IDS_SYNC_PASSPHRASE_LABEL }, 238ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "confirmLabel", IDS_SYNC_CONFIRM_PASSPHRASE_LABEL }, 239ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "emptyErrorMessage", IDS_SYNC_EMPTY_PASSPHRASE_ERROR }, 240ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "mismatchErrorMessage", IDS_SYNC_PASSPHRASE_MISMATCH_ERROR }, 241ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passphraseWarning", IDS_SYNC_PASSPHRASE_WARNING }, 242ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cleardata", IDS_SYNC_CLEAR_DATA_FOR_PASSPHRASE }, 243ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cleardatalink", IDS_SYNC_CLEAR_DATA_LINK }, 244ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "settingup", IDS_SYNC_LOGIN_SETTING_UP }, 245ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "success", IDS_SYNC_SUCCESS }, 246ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "firsttimesummary", IDS_SYNC_SETUP_FIRST_TIME_ALL_DONE }, 247ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "okay", IDS_SYNC_SETUP_OK_BUTTON_LABEL }, 248ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "enterPassphraseTitle", IDS_SYNC_ENTER_PASSPHRASE_TITLE }, 249ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "firstPassphraseTitle", IDS_SYNC_FIRST_PASSPHRASE_TITLE }, 250ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "customizeLinkLabel", IDS_SYNC_CUSTOMIZE_LINK_LABEL }, 251ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "confirmSyncPreferences", IDS_SYNC_CONFIRM_SYNC_PREFERENCES }, 252ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "syncEverything", IDS_SYNC_SYNC_EVERYTHING }, 253ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "useDefaultSettings", IDS_SYNC_USE_DEFAULT_SETTINGS }, 254ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passphraseSectionTitle", IDS_SYNC_PASSPHRASE_SECTION_TITLE }, 255ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "privacyDashboardLink", IDS_SYNC_PRIVACY_DASHBOARD_LINK_LABEL }, 256ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "enterPassphraseTitle", IDS_SYNC_ENTER_PASSPHRASE_TITLE }, 257ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "enterPassphraseBody", IDS_SYNC_ENTER_PASSPHRASE_BODY }, 258ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "enterOtherPassphraseBody", IDS_SYNC_ENTER_OTHER_PASSPHRASE_BODY }, 259ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passphraseLabel", IDS_SYNC_PASSPHRASE_LABEL }, 260ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "incorrectPassphrase", IDS_SYNC_INCORRECT_PASSPHRASE }, 261ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passphraseRecover", IDS_SYNC_PASSPHRASE_RECOVER }, 262ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "passphraseWarning", IDS_SYNC_PASSPHRASE_WARNING }, 263ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cleardatalink", IDS_SYNC_CLEAR_DATA_LINK }, 264ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cancelWarningHeader", IDS_SYNC_PASSPHRASE_CANCEL_WARNING_HEADER }, 265ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "cancelWarning", IDS_SYNC_PASSPHRASE_CANCEL_WARNING }, 266ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "yes", IDS_SYNC_PASSPHRASE_CANCEL_YES }, 267ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "no", IDS_SYNC_PASSPHRASE_CANCEL_NO }, 268ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "sectionExplicitMessagePrefix", IDS_SYNC_PASSPHRASE_MSG_EXPLICIT_PREFIX }, 269ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "sectionExplicitMessagePostfix", 270ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen IDS_SYNC_PASSPHRASE_MSG_EXPLICIT_POSTFIX }, 271ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }; 272ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 273ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen RegisterStrings(localized_strings, resources, arraysize(resources)); 274ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 275ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 276ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::Initialize() { 277ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 278ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 279ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::RegisterMessages() { 280ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("didShowPage", 281ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::OnDidShowPage)); 282ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("didClosePage", 283ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::OnDidClosePage)); 284ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("SubmitAuth", 285ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::HandleSubmitAuth)); 286ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("Configure", 287ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::HandleConfigure)); 288ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("Passphrase", 289ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::HandlePassphraseEntry)); 290ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("PassphraseCancel", 291ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::HandlePassphraseCancel)); 292ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("FirstPassphrase", 293ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::HandleFirstPassphrase)); 294ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->RegisterMessageCallback("GoToDashboard", 295ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewCallback(this, &SyncSetupHandler::HandleGoToDashboard)); 296ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 297ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 298ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Called by SyncSetupFlow::Advance. 299ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowGaiaLogin(const DictionaryValue& args) { 300ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen StringValue page("login"); 301ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 302ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "SyncSetupOverlay.showSyncSetupPage", page, args); 303ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 304ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 305ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowGaiaSuccessAndClose() { 306ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction("SyncSetupOverlay.showSuccessAndClose"); 307ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 308ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 309ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowGaiaSuccessAndSettingUp() { 310ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction("SyncSetupOverlay.showSuccessAndSettingUp"); 311ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 312ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 313ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Called by SyncSetupFlow::Advance. 314ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowConfigure(const DictionaryValue& args) { 315ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen StringValue page("configure"); 316ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 317ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "SyncSetupOverlay.showSyncSetupPage", page, args); 318ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 319ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 320ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowPassphraseEntry(const DictionaryValue& args) { 321ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen StringValue page("passphrase"); 322ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 323ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "SyncSetupOverlay.showSyncSetupPage", page, args); 324ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 325ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 326ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowFirstPassphrase(const DictionaryValue& args) { 327ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(jhawkins): Remove this logic in SyncSetupFlow. It will never be 328ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // reached. 329ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED(); 330ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 331ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 332ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowSettingUp() { 333ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen StringValue page("settingUp"); 334ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 335ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "SyncSetupOverlay.showSyncSetupPage", page); 336ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 337ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 338ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowSetupDone(const std::wstring& user) { 339ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen StringValue page("done"); 340ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 341ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "SyncSetupOverlay.showSyncSetupPage", page); 342ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 343ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 344ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::ShowFirstTimeDone(const std::wstring& user) { 345ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(jhawkins): Remove this from Sync since it's not called anymore. 346ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED(); 347ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 348ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 349ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::OnDidShowPage(const ListValue* args) { 350ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(web_ui_); 351ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 352ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ProfileSyncService* sync_service = 353ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->GetProfile()->GetProfileSyncService(); 354ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!sync_service) 355ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 356ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 357ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_ = sync_service->get_wizard().AttachSyncSetupHandler(this); 358ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 359ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 360ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::OnDidClosePage(const ListValue* args) { 361ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (flow_) { 362ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_->OnDialogClosed(std::string()); 363ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_ = NULL; 364ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 365ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 366ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 367ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::HandleSubmitAuth(const ListValue* args) { 368ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string json; 369ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!args->GetString(0, &json)) { 370ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED() << "Could not read JSON argument"; 371ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 372ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 373ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 374ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (json.empty()) 375ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 376ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 377ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string username, password, captcha, access_code; 378ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!GetAuthData(json, &username, &password, &captcha, &access_code)) { 379ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The page sent us something that we didn't understand. 380ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // This probably indicates a programming error. 381ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED(); 382ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 383ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 384ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 385ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (flow_) 386ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_->OnUserSubmittedAuth(username, password, captcha, access_code); 387ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 388ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 389ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::HandleConfigure(const ListValue* args) { 390ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string json; 391ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!args->GetString(0, &json)) { 392ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED() << "Could not read JSON argument"; 393ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 394ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 395ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (json.empty()) { 396ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED(); 397ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 398ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 399ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 400ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen SyncConfiguration configuration; 401ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!GetConfiguration(json, &configuration)) { 402ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The page sent us something that we didn't understand. 403ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // This probably indicates a programming error. 404ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED(); 405ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 406ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 407ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 408ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(flow_); 409ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_->OnUserConfigured(configuration); 410ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 411ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 412ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::HandlePassphraseEntry(const ListValue* args) { 413ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string json; 414ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!args->GetString(0, &json)) { 415ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED() << "Could not read JSON argument"; 416ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 417ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 418ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 419ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (json.empty()) 420ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 421ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 422ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string passphrase; 423ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!GetPassphrase(json, &passphrase)) { 424ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Couldn't understand what the page sent. Indicates a programming error. 425ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED(); 426ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 427ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 428ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 429ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(flow_); 430ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_->OnPassphraseEntry(passphrase); 431ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 432ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 433ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::HandlePassphraseCancel(const ListValue* args) { 434ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(flow_); 435ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_->OnPassphraseCancel(); 436ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 437ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 438ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::HandleFirstPassphrase(const ListValue* args) { 439ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string json; 440ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!args->GetString(0, &json)) { 441ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED() << "Could not read JSON argument"; 442ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 443ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 444ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (json.empty()) 445ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 446ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 447ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string option; 448ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string passphrase; 449ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!GetFirstPassphrase(json, &option, &passphrase)) { 450ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Page sent result which couldn't be parsed. Programming error. 451ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NOTREACHED(); 452ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 453ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 454ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 455ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(flow_); 456ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_->OnFirstPassphraseEntry(option, passphrase); 457ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 458ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 459ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SyncSetupHandler::HandleGoToDashboard(const ListValue* args) { 460ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(flow_); 461ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen flow_->OnGoToDashboard(); 462ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 463