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

Side by Side Diff: chrome/browser/android/password_ui_view_android.cc

Issue 2042033003: Displaying human-readable Android credentials on Android OS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added #include <algorithm> to the files it was missing from. Created 4 years, 6 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
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/android/password_ui_view_android.h" 5 #include "chrome/browser/android/password_ui_view_android.h"
6 6
7 #include <algorithm>
8
7 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
8 #include "base/android/jni_weak_ref.h" 10 #include "base/android/jni_weak_ref.h"
9 #include "base/metrics/field_trial.h" 11 #include "base/metrics/field_trial.h"
12 #include "base/strings/string_piece.h"
10 #include "chrome/browser/profiles/profile_manager.h" 13 #include "chrome/browser/profiles/profile_manager.h"
11 #include "chrome/browser/sync/profile_sync_service_factory.h" 14 #include "chrome/browser/sync/profile_sync_service_factory.h"
15 #include "chrome/grit/generated_resources.h"
12 #include "components/autofill/core/common/password_form.h" 16 #include "components/autofill/core/common/password_form.h"
13 #include "components/browser_sync/browser/profile_sync_service.h" 17 #include "components/browser_sync/browser/profile_sync_service.h"
14 #include "components/password_manager/core/browser/affiliation_utils.h" 18 #include "components/password_manager/core/browser/affiliation_utils.h"
15 #include "components/password_manager/core/browser/password_bubble_experiment.h" 19 #include "components/password_manager/core/browser/password_bubble_experiment.h"
16 #include "components/password_manager/core/browser/password_manager_constants.h" 20 #include "components/password_manager/core/browser/password_manager_constants.h"
21 #include "components/password_manager/core/browser/password_ui_utils.h"
17 #include "components/password_manager/core/common/experiments.h" 22 #include "components/password_manager/core/common/experiments.h"
18 #include "jni/PasswordUIView_jni.h" 23 #include "jni/PasswordUIView_jni.h"
24 #include "ui/base/l10n/l10n_util.h"
19 25
20 using base::android::ConvertUTF16ToJavaString; 26 using base::android::ConvertUTF16ToJavaString;
21 using base::android::ConvertUTF8ToJavaString; 27 using base::android::ConvertUTF8ToJavaString;
22 using base::android::ScopedJavaLocalRef; 28 using base::android::ScopedJavaLocalRef;
23 29
30 namespace {
31
32 // Returns the human readable version of the origin string displayed in
33 // Chrome settings for |form|.
34 std::string GetDisplayOriginForSettings(const autofill::PasswordForm& form) {
35 bool is_android_uri = false;
36 bool is_clickable = false;
37 GURL link_url; // TODO(crbug.com/617094) Also display link_url.
38 std::string human_readable_origin =
39 password_manager::GetShownOriginAndLinkUrl(form, &is_android_uri,
40 &link_url,
41 &is_clickable);
42 if (!is_clickable) {
43 DCHECK(is_android_uri);
44 human_readable_origin = password_manager::SplitByDotAndReverse(
45 base::StringPiece(
46 &human_readable_origin[
Bernhard Bauer 2016/06/13 09:34:59 This alignment is kind of weird, but I suspect it
dozsa 2016/06/13 12:36:17 Done.
47 password_manager::
48 kAndroidAppSchemeAndDelimiterLength],
49 human_readable_origin.length() -
50 password_manager::kAndroidAppSchemeAndDelimiterLength));
51 human_readable_origin = human_readable_origin +
52 l10n_util::GetStringUTF8(IDS_PASSWORDS_ANDROID_URI_SUFFIX);
Bernhard Bauer 2016/06/13 09:34:59 Manually composing user-visible localized strings
vabr (Chromium) 2016/06/13 09:45:20 While I agree with this observation, I would sugge
dozsa 2016/06/13 12:36:17 Acknowledged.
53 }
54 return human_readable_origin;
55 }
56
57 } // namespace
58
24 PasswordUIViewAndroid::PasswordUIViewAndroid(JNIEnv* env, jobject obj) 59 PasswordUIViewAndroid::PasswordUIViewAndroid(JNIEnv* env, jobject obj)
25 : password_manager_presenter_(this), weak_java_ui_controller_(env, obj) {} 60 : password_manager_presenter_(this), weak_java_ui_controller_(env, obj) {}
26 61
27 PasswordUIViewAndroid::~PasswordUIViewAndroid() {} 62 PasswordUIViewAndroid::~PasswordUIViewAndroid() {}
28 63
29 void PasswordUIViewAndroid::Destroy(JNIEnv*, const JavaParamRef<jobject>&) { 64 void PasswordUIViewAndroid::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
30 delete this; 65 delete this;
31 } 66 }
32 67
33 Profile* PasswordUIViewAndroid::GetProfile() { 68 Profile* PasswordUIViewAndroid::GetProfile() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 const JavaParamRef<jobject>&, 110 const JavaParamRef<jobject>&,
76 int index) { 111 int index) {
77 const autofill::PasswordForm* form = 112 const autofill::PasswordForm* form =
78 password_manager_presenter_.GetPassword(index); 113 password_manager_presenter_.GetPassword(index);
79 if (!form) { 114 if (!form) {
80 return Java_PasswordUIView_createSavedPasswordEntry( 115 return Java_PasswordUIView_createSavedPasswordEntry(
81 env, 116 env,
82 ConvertUTF8ToJavaString(env, std::string()).obj(), 117 ConvertUTF8ToJavaString(env, std::string()).obj(),
83 ConvertUTF16ToJavaString(env, base::string16()).obj()); 118 ConvertUTF16ToJavaString(env, base::string16()).obj());
84 } 119 }
85 std::string human_readable_origin = 120 std::string human_readable_origin = GetDisplayOriginForSettings(*form);
86 password_manager::GetHumanReadableOrigin(*form);
87 return Java_PasswordUIView_createSavedPasswordEntry( 121 return Java_PasswordUIView_createSavedPasswordEntry(
88 env, ConvertUTF8ToJavaString(env, human_readable_origin).obj(), 122 env, ConvertUTF8ToJavaString(env, human_readable_origin).obj(),
89 ConvertUTF16ToJavaString(env, form->username_value).obj()); 123 ConvertUTF16ToJavaString(env, form->username_value).obj());
90 } 124 }
91 125
92 ScopedJavaLocalRef<jstring> PasswordUIViewAndroid::GetSavedPasswordException( 126 ScopedJavaLocalRef<jstring> PasswordUIViewAndroid::GetSavedPasswordException(
93 JNIEnv* env, 127 JNIEnv* env,
94 const JavaParamRef<jobject>&, 128 const JavaParamRef<jobject>&,
95 int index) { 129 int index) {
96 const autofill::PasswordForm* form = 130 const autofill::PasswordForm* form =
97 password_manager_presenter_.GetPasswordException(index); 131 password_manager_presenter_.GetPasswordException(index);
98 if (!form) 132 if (!form)
99 return ConvertUTF8ToJavaString(env, std::string()); 133 return ConvertUTF8ToJavaString(env, std::string());
100 std::string human_readable_origin = 134 std::string human_readable_origin = GetDisplayOriginForSettings(*form);
101 password_manager::GetHumanReadableOrigin(*form);
102 return ConvertUTF8ToJavaString(env, human_readable_origin); 135 return ConvertUTF8ToJavaString(env, human_readable_origin);
103 } 136 }
104 137
105 void PasswordUIViewAndroid::HandleRemoveSavedPasswordEntry( 138 void PasswordUIViewAndroid::HandleRemoveSavedPasswordEntry(
106 JNIEnv* env, 139 JNIEnv* env,
107 const JavaParamRef<jobject>&, 140 const JavaParamRef<jobject>&,
108 int index) { 141 int index) {
109 password_manager_presenter_.RemoveSavedPassword(index); 142 password_manager_presenter_.RemoveSavedPassword(index);
110 } 143 }
111 144
(...skipping 21 matching lines...) Expand all
133 166
134 // static 167 // static
135 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 168 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
136 PasswordUIViewAndroid* controller = new PasswordUIViewAndroid(env, obj); 169 PasswordUIViewAndroid* controller = new PasswordUIViewAndroid(env, obj);
137 return reinterpret_cast<intptr_t>(controller); 170 return reinterpret_cast<intptr_t>(controller);
138 } 171 }
139 172
140 bool PasswordUIViewAndroid::RegisterPasswordUIViewAndroid(JNIEnv* env) { 173 bool PasswordUIViewAndroid::RegisterPasswordUIViewAndroid(JNIEnv* env) {
141 return RegisterNativesImpl(env); 174 return RegisterNativesImpl(env);
142 } 175 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698