Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc

Issue 872023002: Use floating labels for preference forms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change repack_locales condition to just enable_autofill_dialog Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/android/preferences/autofill/autofill_profile_bridge.h"
6
7 #include <jni.h>
8
9 #include "base/android/jni_android.h"
10 #include "base/android/jni_array.h"
11 #include "base/android/jni_string.h"
12 #include "base/bind.h"
13 #include "jni/AutofillProfileBridge_jni.h"
14 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_ui .h"
15 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_ui _component.h"
16 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/localizati on.h"
17 #include "ui/base/l10n/l10n_util.h"
18
19 using base::android::ConvertJavaStringToUTF8;
20 using base::android::ToJavaArrayOfStrings;
21 using ::i18n::addressinput::AddressUiComponent;
22 using ::i18n::addressinput::BuildComponents;
23 using ::i18n::addressinput::GetRegionCodes;
newt (away) 2015/01/27 01:45:07 If you're only calling a method once, I'd skip usi
Theresa 2015/01/28 02:05:42 Done.
24 using ::i18n::addressinput::Localization;
25
26 namespace autofill{
27 namespace android{
28
29 static void GetAvailableCountries(JNIEnv* env,
30 jclass clazz,
31 jobject j_country_list) {
32 std::vector<std::string> regionCodes = GetRegionCodes();
33 Java_AutofillProfileBridge_stringArrayToList(env,
34 ToJavaArrayOfStrings(
35 env, regionCodes).obj(),
36 j_country_list);
37 }
38
39 static void GetAddressUiComponents(JNIEnv* env,
40 jclass clazz,
41 jstring country_code,
42 jstring ui_language_tag,
newt (away) 2015/01/27 01:45:06 I'd call this j_language_tag (and j_country_code)
Theresa 2015/01/28 02:05:42 Done.
43 jobject j_id_list,
44 jobject j_name_list) {
45 std::string best_language_tag;
newt (away) 2015/01/27 01:45:06 We never use this value. Should we? / why does it
Theresa 2015/01/28 02:05:42 It's passed in to the ::i18n::addressinput::BuildC
46 std::string language_code;
47 std::vector<std::string> componentIds;
newt (away) 2015/01/27 01:45:07 Use hacker_case not camelCase (it's easy to forge
Theresa 2015/01/28 02:05:42 Done.
48 std::vector<std::string> componentLabels;
49 Localization localization;
50 localization.SetGetter(l10n_util::GetStringUTF8);
51
52 // Format ui_langage_tag by replacing _'s with -'s. The Java strings coming
53 // from Android are in the format en_US and the C++ equivalent is en-US
54 std::string language_tag = ConvertJavaStringToUTF8(env, ui_language_tag);
newt (away) 2015/01/27 01:45:06 language_tag is never used. Did you mean to use it
Theresa 2015/01/28 02:05:42 Yep. Done.
55 std::replace(language_tag.begin(), language_tag.end(), '_', '-');
56
57 std::vector<AddressUiComponent> uiComponents = BuildComponents(
58 ConvertJavaStringToUTF8(env, country_code), localization,
59 ConvertJavaStringToUTF8(env, ui_language_tag), &best_language_tag);
60
61 for (auto uiComponent : uiComponents) {
62 // TODO(twellington): debug localization problem:
newt (away) 2015/01/27 01:45:06 You can remove this comment. I filed a bug to trac
Theresa 2015/01/28 02:05:42 Done.
63 // If the language is changed in the phone's settings menu after Chrome
64 // settings have been launched, when this method gets triggered the strings
65 // returned are still in the original language. E.g. If I open Chrome
66 // settings then switch from English to Spanish, then go to the autofill
67 // address form, the field labels (obtained from this function) are
68 // still in English. If I back out of settings then reopen settings and go
69 // to the autofill address form, the field labels are in Spanish.
70 componentLabels.push_back(uiComponent.name);
71
72 switch (uiComponent.field) {
73 case ::i18n::addressinput::COUNTRY:
74 componentIds.push_back("country");
newt (away) 2015/01/27 01:45:07 Is there not a string constant we could use here i
Theresa 2015/01/28 02:05:42 Done.
75 break;
76 case ::i18n::addressinput::ADMIN_AREA:
77 componentIds.push_back("admin_area");
78 break;
79 case ::i18n::addressinput::LOCALITY:
80 componentIds.push_back("locality");
81 break;
82 case ::i18n::addressinput::DEPENDENT_LOCALITY:
83 componentIds.push_back("dependent_locality");
84 break;
85 case ::i18n::addressinput::SORTING_CODE:
86 componentIds.push_back("sorting_code");
87 break;
88 case ::i18n::addressinput::POSTAL_CODE:
89 componentIds.push_back("postal_code");
90 break;
91 case ::i18n::addressinput::STREET_ADDRESS:
92 componentIds.push_back("street_address");
93 break;
94 case ::i18n::addressinput::ORGANIZATION:
95 componentIds.push_back("organization");
96 break;
97 case ::i18n::addressinput::RECIPIENT:
98 componentIds.push_back("recipient");
99 break;
100 }
newt (away) 2015/01/27 01:45:06 Adding a default case seems like a good idea: d
Theresa 2015/01/28 02:05:42 Done.
101 }
102
103 Java_AutofillProfileBridge_stringArrayToList(env,
104 ToJavaArrayOfStrings(
105 env, componentIds).obj(),
106 j_id_list);
107 Java_AutofillProfileBridge_stringArrayToList(env,
108 ToJavaArrayOfStrings(
109 env, componentLabels).obj(),
110 j_name_list);
111 }
112
113 // static
114 bool RegisterAutofillProfileBridge(JNIEnv* env) {
115 return RegisterNativesImpl(env);
116 }
117
118 } // namespace android
119 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698