| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/autofill/android/personal_data_manager_android.h" | 5 #include "chrome/browser/autofill/android/personal_data_manager_android.h" |
| 6 | 6 |
| 7 #include "base/android/jni_array.h" | 7 #include "base/android/jni_array.h" |
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/format_macros.h" | 10 #include "base/format_macros.h" |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 : weak_java_obj_(env, obj), | 162 : weak_java_obj_(env, obj), |
| 163 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( | 163 personal_data_manager_(PersonalDataManagerFactory::GetForProfile( |
| 164 ProfileManager::GetActiveUserProfile())) { | 164 ProfileManager::GetActiveUserProfile())) { |
| 165 personal_data_manager_->AddObserver(this); | 165 personal_data_manager_->AddObserver(this); |
| 166 } | 166 } |
| 167 | 167 |
| 168 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { | 168 PersonalDataManagerAndroid::~PersonalDataManagerAndroid() { |
| 169 personal_data_manager_->RemoveObserver(this); | 169 personal_data_manager_->RemoveObserver(this); |
| 170 } | 170 } |
| 171 | 171 |
| 172 jint PersonalDataManagerAndroid::GetProfileCount(JNIEnv* unused_env, | 172 jint PersonalDataManagerAndroid::GetProfileCount( |
| 173 jobject unused_obj) { | 173 JNIEnv* unused_env, |
| 174 const JavaParamRef<jobject>& unused_obj) { |
| 174 return personal_data_manager_->GetProfiles().size(); | 175 return personal_data_manager_->GetProfiles().size(); |
| 175 } | 176 } |
| 176 | 177 |
| 177 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( | 178 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByIndex( |
| 178 JNIEnv* env, | 179 JNIEnv* env, |
| 179 jobject unused_obj, | 180 const JavaParamRef<jobject>& unused_obj, |
| 180 jint index) { | 181 jint index) { |
| 181 const std::vector<AutofillProfile*>& profiles = | 182 const std::vector<AutofillProfile*>& profiles = |
| 182 personal_data_manager_->GetProfiles(); | 183 personal_data_manager_->GetProfiles(); |
| 183 size_t index_size_t = static_cast<size_t>(index); | 184 size_t index_size_t = static_cast<size_t>(index); |
| 184 DCHECK_LT(index_size_t, profiles.size()); | 185 DCHECK_LT(index_size_t, profiles.size()); |
| 185 return CreateJavaProfileFromNative(env, *profiles[index_size_t]); | 186 return CreateJavaProfileFromNative(env, *profiles[index_size_t]); |
| 186 } | 187 } |
| 187 | 188 |
| 188 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( | 189 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetProfileByGUID( |
| 189 JNIEnv* env, | 190 JNIEnv* env, |
| 190 jobject unused_obj, | 191 const JavaParamRef<jobject>& unused_obj, |
| 191 jstring jguid) { | 192 const JavaParamRef<jstring>& jguid) { |
| 192 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( | 193 AutofillProfile* profile = personal_data_manager_->GetProfileByGUID( |
| 193 ConvertJavaStringToUTF8(env, jguid)); | 194 ConvertJavaStringToUTF8(env, jguid)); |
| 194 if (!profile) | 195 if (!profile) |
| 195 return ScopedJavaLocalRef<jobject>(); | 196 return ScopedJavaLocalRef<jobject>(); |
| 196 | 197 |
| 197 return CreateJavaProfileFromNative(env, *profile); | 198 return CreateJavaProfileFromNative(env, *profile); |
| 198 } | 199 } |
| 199 | 200 |
| 200 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetProfile( | 201 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetProfile( |
| 201 JNIEnv* env, | 202 JNIEnv* env, |
| 202 jobject unused_obj, | 203 const JavaParamRef<jobject>& unused_obj, |
| 203 jobject jprofile) { | 204 const JavaParamRef<jobject>& jprofile) { |
| 204 std::string guid = ConvertJavaStringToUTF8( | 205 std::string guid = ConvertJavaStringToUTF8( |
| 205 env, | 206 env, |
| 206 Java_AutofillProfile_getGUID(env, jprofile).obj()); | 207 Java_AutofillProfile_getGUID(env, jprofile).obj()); |
| 207 | 208 |
| 208 AutofillProfile profile; | 209 AutofillProfile profile; |
| 209 PopulateNativeProfileFromJava(jprofile, env, &profile); | 210 PopulateNativeProfileFromJava(jprofile, env, &profile); |
| 210 | 211 |
| 211 if (guid.empty()) { | 212 if (guid.empty()) { |
| 212 personal_data_manager_->AddProfile(profile); | 213 personal_data_manager_->AddProfile(profile); |
| 213 } else { | 214 } else { |
| 214 profile.set_guid(guid); | 215 profile.set_guid(guid); |
| 215 personal_data_manager_->UpdateProfile(profile); | 216 personal_data_manager_->UpdateProfile(profile); |
| 216 } | 217 } |
| 217 | 218 |
| 218 return ConvertUTF8ToJavaString(env, profile.guid()); | 219 return ConvertUTF8ToJavaString(env, profile.guid()); |
| 219 } | 220 } |
| 220 | 221 |
| 221 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( | 222 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileLabels( |
| 222 JNIEnv* env, | 223 JNIEnv* env, |
| 223 jobject unused_obj) { | 224 const JavaParamRef<jobject>& unused_obj) { |
| 224 std::vector<base::string16> labels; | 225 std::vector<base::string16> labels; |
| 225 AutofillProfile::CreateInferredLabels( | 226 AutofillProfile::CreateInferredLabels( |
| 226 personal_data_manager_->GetProfiles(), NULL, NAME_FULL, 2, | 227 personal_data_manager_->GetProfiles(), NULL, NAME_FULL, 2, |
| 227 g_browser_process->GetApplicationLocale(), &labels); | 228 g_browser_process->GetApplicationLocale(), &labels); |
| 228 | 229 |
| 229 return base::android::ToJavaArrayOfStrings(env, labels); | 230 return base::android::ToJavaArrayOfStrings(env, labels); |
| 230 } | 231 } |
| 231 | 232 |
| 232 jint PersonalDataManagerAndroid::GetCreditCardCount(JNIEnv* unused_env, | 233 jint PersonalDataManagerAndroid::GetCreditCardCount( |
| 233 jobject unused_obj) { | 234 JNIEnv* unused_env, |
| 235 const JavaParamRef<jobject>& unused_obj) { |
| 234 return personal_data_manager_->GetCreditCards().size(); | 236 return personal_data_manager_->GetCreditCards().size(); |
| 235 } | 237 } |
| 236 | 238 |
| 237 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( | 239 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByIndex( |
| 238 JNIEnv* env, | 240 JNIEnv* env, |
| 239 jobject unused_obj, | 241 const JavaParamRef<jobject>& unused_obj, |
| 240 jint index) { | 242 jint index) { |
| 241 const std::vector<CreditCard*>& credit_cards = | 243 const std::vector<CreditCard*>& credit_cards = |
| 242 personal_data_manager_->GetCreditCards(); | 244 personal_data_manager_->GetCreditCards(); |
| 243 size_t index_size_t = static_cast<size_t>(index); | 245 size_t index_size_t = static_cast<size_t>(index); |
| 244 DCHECK_LT(index_size_t, credit_cards.size()); | 246 DCHECK_LT(index_size_t, credit_cards.size()); |
| 245 return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]); | 247 return CreateJavaCreditCardFromNative(env, *credit_cards[index_size_t]); |
| 246 } | 248 } |
| 247 | 249 |
| 248 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( | 250 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardByGUID( |
| 249 JNIEnv* env, | 251 JNIEnv* env, |
| 250 jobject unused_obj, | 252 const JavaParamRef<jobject>& unused_obj, |
| 251 jstring jguid) { | 253 const JavaParamRef<jstring>& jguid) { |
| 252 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | 254 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
| 253 ConvertJavaStringToUTF8(env, jguid)); | 255 ConvertJavaStringToUTF8(env, jguid)); |
| 254 if (!card) | 256 if (!card) |
| 255 return ScopedJavaLocalRef<jobject>(); | 257 return ScopedJavaLocalRef<jobject>(); |
| 256 | 258 |
| 257 return CreateJavaCreditCardFromNative(env, *card); | 259 return CreateJavaCreditCardFromNative(env, *card); |
| 258 } | 260 } |
| 259 | 261 |
| 260 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard( | 262 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard( |
| 261 JNIEnv* env, | 263 JNIEnv* env, |
| 262 jobject unused_obj, | 264 const JavaParamRef<jobject>& unused_obj, |
| 263 jobject jcard) { | 265 const JavaParamRef<jobject>& jcard) { |
| 264 std::string guid = ConvertJavaStringToUTF8( | 266 std::string guid = ConvertJavaStringToUTF8( |
| 265 env, | 267 env, |
| 266 Java_CreditCard_getGUID(env, jcard).obj()); | 268 Java_CreditCard_getGUID(env, jcard).obj()); |
| 267 | 269 |
| 268 CreditCard card; | 270 CreditCard card; |
| 269 PopulateNativeCreditCardFromJava(jcard, env, &card); | 271 PopulateNativeCreditCardFromJava(jcard, env, &card); |
| 270 | 272 |
| 271 if (guid.empty()) { | 273 if (guid.empty()) { |
| 272 personal_data_manager_->AddCreditCard(card); | 274 personal_data_manager_->AddCreditCard(card); |
| 273 } else { | 275 } else { |
| 274 card.set_guid(guid); | 276 card.set_guid(guid); |
| 275 personal_data_manager_->UpdateCreditCard(card); | 277 personal_data_manager_->UpdateCreditCard(card); |
| 276 } | 278 } |
| 277 return ConvertUTF8ToJavaString(env, card.guid()); | 279 return ConvertUTF8ToJavaString(env, card.guid()); |
| 278 } | 280 } |
| 279 | 281 |
| 280 void PersonalDataManagerAndroid::RemoveByGUID(JNIEnv* env, | 282 void PersonalDataManagerAndroid::RemoveByGUID( |
| 281 jobject unused_obj, | 283 JNIEnv* env, |
| 282 jstring jguid) { | 284 const JavaParamRef<jobject>& unused_obj, |
| 285 const JavaParamRef<jstring>& jguid) { |
| 283 personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid)); | 286 personal_data_manager_->RemoveByGUID(ConvertJavaStringToUTF8(env, jguid)); |
| 284 } | 287 } |
| 285 | 288 |
| 286 void PersonalDataManagerAndroid::ClearUnmaskedCache(JNIEnv* env, | 289 void PersonalDataManagerAndroid::ClearUnmaskedCache( |
| 287 jobject unused_obj, | 290 JNIEnv* env, |
| 288 jstring guid) { | 291 const JavaParamRef<jobject>& unused_obj, |
| 292 const JavaParamRef<jstring>& guid) { |
| 289 personal_data_manager_->ResetFullServerCard( | 293 personal_data_manager_->ResetFullServerCard( |
| 290 ConvertJavaStringToUTF8(env, guid)); | 294 ConvertJavaStringToUTF8(env, guid)); |
| 291 } | 295 } |
| 292 | 296 |
| 293 void PersonalDataManagerAndroid::OnPersonalDataChanged() { | 297 void PersonalDataManagerAndroid::OnPersonalDataChanged() { |
| 294 JNIEnv* env = base::android::AttachCurrentThread(); | 298 JNIEnv* env = base::android::AttachCurrentThread(); |
| 295 if (weak_java_obj_.get(env).is_null()) | 299 if (weak_java_obj_.get(env).is_null()) |
| 296 return; | 300 return; |
| 297 | 301 |
| 298 Java_PersonalDataManager_personalDataChanged(env, | 302 Java_PersonalDataManager_personalDataChanged(env, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 g_browser_process->GetApplicationLocale())); | 359 g_browser_process->GetApplicationLocale())); |
| 356 } | 360 } |
| 357 | 361 |
| 358 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 362 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 359 PersonalDataManagerAndroid* personal_data_manager_android = | 363 PersonalDataManagerAndroid* personal_data_manager_android = |
| 360 new PersonalDataManagerAndroid(env, obj); | 364 new PersonalDataManagerAndroid(env, obj); |
| 361 return reinterpret_cast<intptr_t>(personal_data_manager_android); | 365 return reinterpret_cast<intptr_t>(personal_data_manager_android); |
| 362 } | 366 } |
| 363 | 367 |
| 364 } // namespace autofill | 368 } // namespace autofill |
| OLD | NEW |