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

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: 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 | no next file » | 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"
6
7 #include "base/android/jni_string.h" 5 #include "base/android/jni_string.h"
8 #include "base/android/jni_weak_ref.h" 6 #include "base/android/jni_weak_ref.h"
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/memory/ptr_util.h"
9 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
11 #include "base/metrics/user_metrics_action.h"
12 #include "base/strings/string_piece.h"
13 #include "base/strings/string_split.h"
14 #include "base/strings/string_util.h"
15 #include "base/strings/utf_string_conversions.h"
16 #include "chrome/browser/android/password_ui_view_android.h"
vabr (Chromium) 2016/06/08 07:51:33 Please keep this #include where it was (above all
dozsa 2016/06/08 11:22:29 Done.
10 #include "chrome/browser/profiles/profile_manager.h" 17 #include "chrome/browser/profiles/profile_manager.h"
11 #include "chrome/browser/sync/profile_sync_service_factory.h" 18 #include "chrome/browser/sync/profile_sync_service_factory.h"
12 #include "components/autofill/core/common/password_form.h" 19 #include "components/autofill/core/common/password_form.h"
13 #include "components/browser_sync/browser/profile_sync_service.h" 20 #include "components/browser_sync/browser/profile_sync_service.h"
14 #include "components/password_manager/core/browser/affiliation_utils.h" 21 #include "components/password_manager/core/browser/affiliation_utils.h"
15 #include "components/password_manager/core/browser/password_bubble_experiment.h" 22 #include "components/password_manager/core/browser/password_bubble_experiment.h"
16 #include "components/password_manager/core/browser/password_manager_constants.h" 23 #include "components/password_manager/core/browser/password_manager_constants.h"
24 #include "components/password_manager/core/browser/password_ui_utils.h"
17 #include "components/password_manager/core/common/experiments.h" 25 #include "components/password_manager/core/common/experiments.h"
18 #include "jni/PasswordUIView_jni.h" 26 #include "jni/PasswordUIView_jni.h"
19 27
20 using base::android::ConvertUTF16ToJavaString; 28 using base::android::ConvertUTF16ToJavaString;
21 using base::android::ConvertUTF8ToJavaString; 29 using base::android::ConvertUTF8ToJavaString;
22 using base::android::ScopedJavaLocalRef; 30 using base::android::ScopedJavaLocalRef;
31 using base::StringPiece;
32 using password_manager::PasswordStore;
33
34 const int kAndroidAppSchemeAndDelimiterLength = 10; // Length of 'android://'.
vabr (Chromium) 2016/06/08 07:51:34 Please move kAndroidAppSchemeAndDelimiterLength an
dozsa 2016/06/08 11:22:29 Done.
35
36 // Reverse order of subdomains in hostname.
37 std::string SplitByDotAndReverse(StringPiece host) {
38 std::vector<std::string> parts =
39 base::SplitString(host, ".", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
40 std::reverse(parts.begin(), parts.end());
41 return base::JoinString(parts, ".");
42 }
23 43
24 PasswordUIViewAndroid::PasswordUIViewAndroid(JNIEnv* env, jobject obj) 44 PasswordUIViewAndroid::PasswordUIViewAndroid(JNIEnv* env, jobject obj)
25 : password_manager_presenter_(this), weak_java_ui_controller_(env, obj) {} 45 : password_manager_presenter_(this), weak_java_ui_controller_(env, obj) {}
26 46
27 PasswordUIViewAndroid::~PasswordUIViewAndroid() {} 47 PasswordUIViewAndroid::~PasswordUIViewAndroid() {}
28 48
29 void PasswordUIViewAndroid::Destroy(JNIEnv*, const JavaParamRef<jobject>&) { 49 void PasswordUIViewAndroid::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
30 delete this; 50 delete this;
31 } 51 }
32 52
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 const JavaParamRef<jobject>&, 95 const JavaParamRef<jobject>&,
76 int index) { 96 int index) {
77 const autofill::PasswordForm* form = 97 const autofill::PasswordForm* form =
78 password_manager_presenter_.GetPassword(index); 98 password_manager_presenter_.GetPassword(index);
79 if (!form) { 99 if (!form) {
80 return Java_PasswordUIView_createSavedPasswordEntry( 100 return Java_PasswordUIView_createSavedPasswordEntry(
81 env, 101 env,
82 ConvertUTF8ToJavaString(env, std::string()).obj(), 102 ConvertUTF8ToJavaString(env, std::string()).obj(),
83 ConvertUTF16ToJavaString(env, base::string16()).obj()); 103 ConvertUTF16ToJavaString(env, base::string16()).obj());
84 } 104 }
105 bool is_android_uri = false;
106 bool is_clickable = false;
107 GURL link_url;
85 std::string human_readable_origin = 108 std::string human_readable_origin =
86 password_manager::GetHumanReadableOrigin(*form); 109 password_manager::GetShownOriginAndLinkUrl(*form, &is_android_uri,
110 &link_url,
111 &is_clickable);
112 if (!is_clickable) {
113 human_readable_origin = SplitByDotAndReverse(
114 StringPiece(&human_readable_origin[kAndroidAppSchemeAndDelimiterLength],
115 human_readable_origin.length() -
116 kAndroidAppSchemeAndDelimiterLength));
117 human_readable_origin = human_readable_origin + " (Android)";
118 }
87 return Java_PasswordUIView_createSavedPasswordEntry( 119 return Java_PasswordUIView_createSavedPasswordEntry(
88 env, ConvertUTF8ToJavaString(env, human_readable_origin).obj(), 120 env, ConvertUTF8ToJavaString(env, human_readable_origin).obj(),
89 ConvertUTF16ToJavaString(env, form->username_value).obj()); 121 ConvertUTF16ToJavaString(env, form->username_value).obj());
90 } 122 }
91 123
92 ScopedJavaLocalRef<jstring> PasswordUIViewAndroid::GetSavedPasswordException( 124 ScopedJavaLocalRef<jstring> PasswordUIViewAndroid::GetSavedPasswordException(
93 JNIEnv* env, 125 JNIEnv* env,
94 const JavaParamRef<jobject>&, 126 const JavaParamRef<jobject>&,
95 int index) { 127 int index) {
96 const autofill::PasswordForm* form = 128 const autofill::PasswordForm* form =
97 password_manager_presenter_.GetPasswordException(index); 129 password_manager_presenter_.GetPasswordException(index);
98 if (!form) 130 if (!form)
99 return ConvertUTF8ToJavaString(env, std::string()); 131 return ConvertUTF8ToJavaString(env, std::string());
132 bool is_android_uri = false;
133 bool is_clickable = false;
134 GURL link_url;
100 std::string human_readable_origin = 135 std::string human_readable_origin =
101 password_manager::GetHumanReadableOrigin(*form); 136 password_manager::GetShownOriginAndLinkUrl(*form, &is_android_uri,
137 &link_url,
138 &is_clickable);
139 if (!is_clickable) {
140 human_readable_origin = SplitByDotAndReverse(
141 StringPiece
142 (&human_readable_origin[kAndroidAppSchemeAndDelimiterLength],
143 human_readable_origin.length() -
144 kAndroidAppSchemeAndDelimiterLength));
145 human_readable_origin = human_readable_origin + " (Android)";
146 }
102 return ConvertUTF8ToJavaString(env, human_readable_origin); 147 return ConvertUTF8ToJavaString(env, human_readable_origin);
103 } 148 }
104 149
105 void PasswordUIViewAndroid::HandleRemoveSavedPasswordEntry( 150 void PasswordUIViewAndroid::HandleRemoveSavedPasswordEntry(
106 JNIEnv* env, 151 JNIEnv* env,
107 const JavaParamRef<jobject>&, 152 const JavaParamRef<jobject>&,
108 int index) { 153 int index) {
109 password_manager_presenter_.RemoveSavedPassword(index); 154 password_manager_presenter_.RemoveSavedPassword(index);
110 } 155 }
111 156
(...skipping 21 matching lines...) Expand all
133 178
134 // static 179 // static
135 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 180 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
136 PasswordUIViewAndroid* controller = new PasswordUIViewAndroid(env, obj); 181 PasswordUIViewAndroid* controller = new PasswordUIViewAndroid(env, obj);
137 return reinterpret_cast<intptr_t>(controller); 182 return reinterpret_cast<intptr_t>(controller);
138 } 183 }
139 184
140 bool PasswordUIViewAndroid::RegisterPasswordUIViewAndroid(JNIEnv* env) { 185 bool PasswordUIViewAndroid::RegisterPasswordUIViewAndroid(JNIEnv* env) {
141 return RegisterNativesImpl(env); 186 return RegisterNativesImpl(env);
142 } 187 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698