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

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 unit test for SplitByDotAndReverse, addressed style issues. 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
« no previous file with comments | « no previous file | chrome/browser/ui/passwords/password_manager_presenter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/android/jni_string.h" 7 #include "base/android/jni_string.h"
8 #include "base/android/jni_weak_ref.h" 8 #include "base/android/jni_weak_ref.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/strings/string_piece.h"
10 #include "chrome/browser/profiles/profile_manager.h" 11 #include "chrome/browser/profiles/profile_manager.h"
11 #include "chrome/browser/sync/profile_sync_service_factory.h" 12 #include "chrome/browser/sync/profile_sync_service_factory.h"
12 #include "components/autofill/core/common/password_form.h" 13 #include "components/autofill/core/common/password_form.h"
13 #include "components/browser_sync/browser/profile_sync_service.h" 14 #include "components/browser_sync/browser/profile_sync_service.h"
14 #include "components/password_manager/core/browser/affiliation_utils.h" 15 #include "components/password_manager/core/browser/affiliation_utils.h"
15 #include "components/password_manager/core/browser/password_bubble_experiment.h" 16 #include "components/password_manager/core/browser/password_bubble_experiment.h"
16 #include "components/password_manager/core/browser/password_manager_constants.h" 17 #include "components/password_manager/core/browser/password_manager_constants.h"
18 #include "components/password_manager/core/browser/password_ui_utils.h"
17 #include "components/password_manager/core/common/experiments.h" 19 #include "components/password_manager/core/common/experiments.h"
18 #include "jni/PasswordUIView_jni.h" 20 #include "jni/PasswordUIView_jni.h"
19 21
20 using base::android::ConvertUTF16ToJavaString; 22 using base::android::ConvertUTF16ToJavaString;
21 using base::android::ConvertUTF8ToJavaString; 23 using base::android::ConvertUTF8ToJavaString;
22 using base::android::ScopedJavaLocalRef; 24 using base::android::ScopedJavaLocalRef;
23 25
26 namespace {
27
28 std::string GetHumanReadableOrigin(autofill::PasswordForm form) {
vabr (Chromium) 2016/06/08 11:46:21 Please do not pass the PasswordForm by value. It i
vabr (Chromium) 2016/06/08 11:46:21 nit: Please document what the function does. Somet
vabr (Chromium) 2016/06/08 11:46:21 There is already a function of this name in affili
dozsa 2016/06/08 12:20:18 Done.
dozsa 2016/06/08 12:20:18 Done.
dozsa 2016/06/08 12:20:18 Done.
29 bool is_android_uri = false;
30 bool is_clickable = false;
31 GURL link_url; // TODO(crbug.com/617094) Also display link_url.
32 std::string human_readable_origin =
33 password_manager::GetShownOriginAndLinkUrl(form, &is_android_uri,
34 &link_url,
35 &is_clickable);
36 if (!is_clickable) {
37 human_readable_origin = password_manager::SplitByDotAndReverse(
vabr (Chromium) 2016/06/08 11:46:21 optional: Insert DCHECK(is_android_uri); between l
dozsa 2016/06/08 12:20:18 Done.
38 base::StringPiece(
39 &human_readable_origin[
40 password_manager::
41 kAndroidAppSchemeAndDelimiterLength],
42 human_readable_origin.length() -
43 password_manager::kAndroidAppSchemeAndDelimiterLength));
44 human_readable_origin = human_readable_origin + " (Android)";
vabr (Chromium) 2016/06/08 11:46:21 Please use the translated string, identified by ID
dozsa 2016/06/08 12:20:18 Done.
45 }
46 return human_readable_origin;
47 }
48
49 } // namespace
50
24 PasswordUIViewAndroid::PasswordUIViewAndroid(JNIEnv* env, jobject obj) 51 PasswordUIViewAndroid::PasswordUIViewAndroid(JNIEnv* env, jobject obj)
25 : password_manager_presenter_(this), weak_java_ui_controller_(env, obj) {} 52 : password_manager_presenter_(this), weak_java_ui_controller_(env, obj) {}
26 53
27 PasswordUIViewAndroid::~PasswordUIViewAndroid() {} 54 PasswordUIViewAndroid::~PasswordUIViewAndroid() {}
28 55
29 void PasswordUIViewAndroid::Destroy(JNIEnv*, const JavaParamRef<jobject>&) { 56 void PasswordUIViewAndroid::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
30 delete this; 57 delete this;
31 } 58 }
32 59
33 Profile* PasswordUIViewAndroid::GetProfile() { 60 Profile* PasswordUIViewAndroid::GetProfile() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 const JavaParamRef<jobject>&, 102 const JavaParamRef<jobject>&,
76 int index) { 103 int index) {
77 const autofill::PasswordForm* form = 104 const autofill::PasswordForm* form =
78 password_manager_presenter_.GetPassword(index); 105 password_manager_presenter_.GetPassword(index);
79 if (!form) { 106 if (!form) {
80 return Java_PasswordUIView_createSavedPasswordEntry( 107 return Java_PasswordUIView_createSavedPasswordEntry(
81 env, 108 env,
82 ConvertUTF8ToJavaString(env, std::string()).obj(), 109 ConvertUTF8ToJavaString(env, std::string()).obj(),
83 ConvertUTF16ToJavaString(env, base::string16()).obj()); 110 ConvertUTF16ToJavaString(env, base::string16()).obj());
84 } 111 }
85 std::string human_readable_origin = 112 std::string human_readable_origin = GetHumanReadableOrigin(*form);
86 password_manager::GetHumanReadableOrigin(*form);
87 return Java_PasswordUIView_createSavedPasswordEntry( 113 return Java_PasswordUIView_createSavedPasswordEntry(
88 env, ConvertUTF8ToJavaString(env, human_readable_origin).obj(), 114 env, ConvertUTF8ToJavaString(env, human_readable_origin).obj(),
89 ConvertUTF16ToJavaString(env, form->username_value).obj()); 115 ConvertUTF16ToJavaString(env, form->username_value).obj());
90 } 116 }
91 117
92 ScopedJavaLocalRef<jstring> PasswordUIViewAndroid::GetSavedPasswordException( 118 ScopedJavaLocalRef<jstring> PasswordUIViewAndroid::GetSavedPasswordException(
93 JNIEnv* env, 119 JNIEnv* env,
94 const JavaParamRef<jobject>&, 120 const JavaParamRef<jobject>&,
95 int index) { 121 int index) {
96 const autofill::PasswordForm* form = 122 const autofill::PasswordForm* form =
97 password_manager_presenter_.GetPasswordException(index); 123 password_manager_presenter_.GetPasswordException(index);
98 if (!form) 124 if (!form)
99 return ConvertUTF8ToJavaString(env, std::string()); 125 return ConvertUTF8ToJavaString(env, std::string());
100 std::string human_readable_origin = 126 std::string human_readable_origin = GetHumanReadableOrigin(*form);
101 password_manager::GetHumanReadableOrigin(*form);
102 return ConvertUTF8ToJavaString(env, human_readable_origin); 127 return ConvertUTF8ToJavaString(env, human_readable_origin);
103 } 128 }
104 129
105 void PasswordUIViewAndroid::HandleRemoveSavedPasswordEntry( 130 void PasswordUIViewAndroid::HandleRemoveSavedPasswordEntry(
106 JNIEnv* env, 131 JNIEnv* env,
107 const JavaParamRef<jobject>&, 132 const JavaParamRef<jobject>&,
108 int index) { 133 int index) {
109 password_manager_presenter_.RemoveSavedPassword(index); 134 password_manager_presenter_.RemoveSavedPassword(index);
110 } 135 }
111 136
(...skipping 21 matching lines...) Expand all
133 158
134 // static 159 // static
135 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 160 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
136 PasswordUIViewAndroid* controller = new PasswordUIViewAndroid(env, obj); 161 PasswordUIViewAndroid* controller = new PasswordUIViewAndroid(env, obj);
137 return reinterpret_cast<intptr_t>(controller); 162 return reinterpret_cast<intptr_t>(controller);
138 } 163 }
139 164
140 bool PasswordUIViewAndroid::RegisterPasswordUIViewAndroid(JNIEnv* env) { 165 bool PasswordUIViewAndroid::RegisterPasswordUIViewAndroid(JNIEnv* env) {
141 return RegisterNativesImpl(env); 166 return RegisterNativesImpl(env);
142 } 167 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/passwords/password_manager_presenter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698