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

Side by Side Diff: chrome/browser/password_manager/account_chooser_dialog_android.cc

Issue 2531863002: Delete all the traces of federation providers in the account chooser. (Closed)
Patch Set: android2 Created 4 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/password_manager/account_chooser_dialog_android.h" 5 #include "chrome/browser/password_manager/account_chooser_dialog_android.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
(...skipping 21 matching lines...) Expand all
32 using base::android::AttachCurrentThread; 32 using base::android::AttachCurrentThread;
33 using base::android::ConvertUTF16ToJavaString; 33 using base::android::ConvertUTF16ToJavaString;
34 using base::android::JavaParamRef; 34 using base::android::JavaParamRef;
35 using base::android::ScopedJavaLocalRef; 35 using base::android::ScopedJavaLocalRef;
36 36
37 namespace { 37 namespace {
38 38
39 void AddElementsToJavaCredentialArray( 39 void AddElementsToJavaCredentialArray(
40 JNIEnv* env, 40 JNIEnv* env,
41 ScopedJavaLocalRef<jobjectArray> java_credentials_array, 41 ScopedJavaLocalRef<jobjectArray> java_credentials_array,
42 const std::vector<std::unique_ptr<autofill::PasswordForm>>& password_forms, 42 const std::vector<std::unique_ptr<autofill::PasswordForm>>& forms) {
43 password_manager::CredentialType type, 43 int index = 0;
44 int indexStart = 0) { 44 for (const auto& password_form : forms) {
45 int index = indexStart;
46 for (const auto& password_form : password_forms) {
47 ScopedJavaLocalRef<jobject> java_credential = CreateNativeCredential( 45 ScopedJavaLocalRef<jobject> java_credential = CreateNativeCredential(
48 env, *password_form, index - indexStart, static_cast<int>(type)); 46 env, *password_form, index);
49 env->SetObjectArrayElement(java_credentials_array.obj(), index, 47 env->SetObjectArrayElement(java_credentials_array.obj(), index,
50 java_credential.obj()); 48 java_credential.obj());
51 index++; 49 index++;
52 } 50 }
53 } 51 }
54 52
55 class AvatarFetcherAndroid : public AccountAvatarFetcher { 53 class AvatarFetcherAndroid : public AccountAvatarFetcher {
56 public: 54 public:
57 AvatarFetcherAndroid( 55 AvatarFetcherAndroid(
58 const GURL& url, 56 const GURL& url,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 auto* fetcher = 98 auto* fetcher =
101 new AvatarFetcherAndroid(password_form->icon_url, index, java_dialog); 99 new AvatarFetcherAndroid(password_form->icon_url, index, java_dialog);
102 fetcher->Start(request_context); 100 fetcher->Start(request_context);
103 } 101 }
104 102
105 }; // namespace 103 }; // namespace
106 104
107 AccountChooserDialogAndroid::AccountChooserDialogAndroid( 105 AccountChooserDialogAndroid::AccountChooserDialogAndroid(
108 content::WebContents* web_contents, 106 content::WebContents* web_contents,
109 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials, 107 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials,
110 std::vector<std::unique_ptr<autofill::PasswordForm>> federated_credentials,
111 const GURL& origin, 108 const GURL& origin,
112 const ManagePasswordsState::CredentialsCallback& callback) 109 const ManagePasswordsState::CredentialsCallback& callback)
113 : content::WebContentsObserver(web_contents), 110 : content::WebContentsObserver(web_contents),
114 web_contents_(web_contents), 111 web_contents_(web_contents),
115 origin_(origin) { 112 origin_(origin) {
116 passwords_data_.set_client( 113 passwords_data_.set_client(
117 ChromePasswordManagerClient::FromWebContents(web_contents_)); 114 ChromePasswordManagerClient::FromWebContents(web_contents_));
118 passwords_data_.OnRequestCredentials( 115 passwords_data_.OnRequestCredentials(std::move(local_credentials), origin);
119 std::move(local_credentials), std::move(federated_credentials), origin);
120 passwords_data_.set_credentials_callback(callback); 116 passwords_data_.set_credentials_callback(callback);
121 } 117 }
122 118
123 AccountChooserDialogAndroid::~AccountChooserDialogAndroid() {} 119 AccountChooserDialogAndroid::~AccountChooserDialogAndroid() {}
124 120
125 void AccountChooserDialogAndroid::ShowDialog() { 121 void AccountChooserDialogAndroid::ShowDialog() {
126 JNIEnv* env = AttachCurrentThread(); 122 JNIEnv* env = AttachCurrentThread();
127 bool is_smartlock_branding_enabled = 123 bool is_smartlock_branding_enabled =
128 password_bubble_experiment::IsSmartLockUser( 124 password_bubble_experiment::IsSmartLockUser(
129 ProfileSyncServiceFactory::GetForProfile( 125 ProfileSyncServiceFactory::GetForProfile(
130 Profile::FromBrowserContext(web_contents_->GetBrowserContext()))); 126 Profile::FromBrowserContext(web_contents_->GetBrowserContext())));
131 base::string16 title; 127 base::string16 title;
132 gfx::Range title_link_range = gfx::Range(); 128 gfx::Range title_link_range = gfx::Range();
133 GetAccountChooserDialogTitleTextAndLinkRange( 129 GetAccountChooserDialogTitleTextAndLinkRange(
134 is_smartlock_branding_enabled, local_credentials_forms().size() > 1, 130 is_smartlock_branding_enabled, local_credentials_forms().size() > 1,
135 &title, &title_link_range); 131 &title, &title_link_range);
136 gfx::NativeWindow native_window = web_contents_->GetTopLevelNativeWindow(); 132 gfx::NativeWindow native_window = web_contents_->GetTopLevelNativeWindow();
137 size_t credential_array_size =
138 local_credentials_forms().size() + federation_providers_forms().size();
139 ScopedJavaLocalRef<jobjectArray> java_credentials_array = 133 ScopedJavaLocalRef<jobjectArray> java_credentials_array =
140 CreateNativeCredentialArray(env, credential_array_size); 134 CreateNativeCredentialArray(env, local_credentials_forms().size());
141 AddElementsToJavaCredentialArray( 135 AddElementsToJavaCredentialArray(
142 env, java_credentials_array, local_credentials_forms(), 136 env, java_credentials_array, local_credentials_forms());
143 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD);
144 AddElementsToJavaCredentialArray(
145 env, java_credentials_array, federation_providers_forms(),
146 password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED,
147 local_credentials_forms().size());
148 base::android::ScopedJavaGlobalRef<jobject> java_dialog_global; 137 base::android::ScopedJavaGlobalRef<jobject> java_dialog_global;
149 const std::string origin = password_manager::GetShownOrigin(origin_); 138 const std::string origin = password_manager::GetShownOrigin(origin_);
150 base::string16 signin_button; 139 base::string16 signin_button;
151 if (local_credentials_forms().size() == 1) { 140 if (local_credentials_forms().size() == 1) {
152 signin_button = 141 signin_button =
153 l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_ACCOUNT_CHOOSER_SIGN_IN); 142 l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_ACCOUNT_CHOOSER_SIGN_IN);
154 } 143 }
155 dialog_jobject_.Reset(Java_AccountChooserDialog_createAndShowAccountChooser( 144 dialog_jobject_.Reset(Java_AccountChooserDialog_createAndShowAccountChooser(
156 env, native_window->GetJavaObject(), reinterpret_cast<intptr_t>(this), 145 env, native_window->GetJavaObject(), reinterpret_cast<intptr_t>(this),
157 java_credentials_array, 146 java_credentials_array,
158 base::android::ConvertUTF16ToJavaString(env, title), 147 base::android::ConvertUTF16ToJavaString(env, title),
159 title_link_range.start(), title_link_range.end(), 148 title_link_range.start(), title_link_range.end(),
160 base::android::ConvertUTF8ToJavaString(env, origin), 149 base::android::ConvertUTF8ToJavaString(env, origin),
161 base::android::ConvertUTF16ToJavaString(env, signin_button))); 150 base::android::ConvertUTF16ToJavaString(env, signin_button)));
162 net::URLRequestContextGetter* request_context = 151 net::URLRequestContextGetter* request_context =
163 Profile::FromBrowserContext(web_contents_->GetBrowserContext()) 152 Profile::FromBrowserContext(web_contents_->GetBrowserContext())
164 ->GetRequestContext(); 153 ->GetRequestContext();
165 int avatar_index = 0; 154 int avatar_index = 0;
166 for (const auto& form : local_credentials_forms()) 155 for (const auto& form : local_credentials_forms())
167 FetchAvatar(dialog_jobject_, form.get(), avatar_index++, request_context); 156 FetchAvatar(dialog_jobject_, form.get(), avatar_index++, request_context);
168 for (const auto& form : federation_providers_forms())
169 FetchAvatar(dialog_jobject_, form.get(), avatar_index++, request_context);
170 } 157 }
171 158
172 void AccountChooserDialogAndroid::OnCredentialClicked( 159 void AccountChooserDialogAndroid::OnCredentialClicked(
173 JNIEnv* env, 160 JNIEnv* env,
174 const JavaParamRef<jobject>& obj, 161 const JavaParamRef<jobject>& obj,
175 jint credential_item, 162 jint credential_item,
176 jint credential_type,
177 jboolean signin_button_clicked) { 163 jboolean signin_button_clicked) {
178 ChooseCredential( 164 ChooseCredential(
179 credential_item, 165 credential_item,
180 static_cast<password_manager::CredentialType>(credential_type), 166 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD,
181 signin_button_clicked); 167 signin_button_clicked);
182 } 168 }
183 169
184 void AccountChooserDialogAndroid::Destroy(JNIEnv* env, 170 void AccountChooserDialogAndroid::Destroy(JNIEnv* env,
185 const JavaParamRef<jobject>& obj) { 171 const JavaParamRef<jobject>& obj) {
186 delete this; 172 delete this;
187 } 173 }
188 174
189 void AccountChooserDialogAndroid::CancelDialog( 175 void AccountChooserDialogAndroid::CancelDialog(
190 JNIEnv* env, 176 JNIEnv* env,
(...skipping 26 matching lines...) Expand all
217 void AccountChooserDialogAndroid::OnDialogCancel() { 203 void AccountChooserDialogAndroid::OnDialogCancel() {
218 ChooseCredential(-1, password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, 204 ChooseCredential(-1, password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY,
219 false /* signin_button_clicked */); 205 false /* signin_button_clicked */);
220 } 206 }
221 207
222 const std::vector<std::unique_ptr<autofill::PasswordForm>>& 208 const std::vector<std::unique_ptr<autofill::PasswordForm>>&
223 AccountChooserDialogAndroid::local_credentials_forms() const { 209 AccountChooserDialogAndroid::local_credentials_forms() const {
224 return passwords_data_.GetCurrentForms(); 210 return passwords_data_.GetCurrentForms();
225 } 211 }
226 212
227 const std::vector<std::unique_ptr<autofill::PasswordForm>>&
228 AccountChooserDialogAndroid::federation_providers_forms() const {
229 return passwords_data_.federation_providers_forms();
230 }
231
232 void AccountChooserDialogAndroid::ChooseCredential( 213 void AccountChooserDialogAndroid::ChooseCredential(
233 size_t index, 214 size_t index,
234 password_manager::CredentialType type, 215 password_manager::CredentialType type,
235 bool signin_button_clicked) { 216 bool signin_button_clicked) {
236 using namespace password_manager; 217 using namespace password_manager;
237 password_manager::metrics_util::AccountChooserUserAction action; 218 password_manager::metrics_util::AccountChooserUserAction action;
238 if (type == CredentialType::CREDENTIAL_TYPE_EMPTY) { 219 if (type == CredentialType::CREDENTIAL_TYPE_EMPTY) {
239 passwords_data_.ChooseCredential(nullptr); 220 passwords_data_.ChooseCredential(nullptr);
240 action = metrics_util::ACCOUNT_CHOOSER_DISMISSED; 221 action = metrics_util::ACCOUNT_CHOOSER_DISMISSED;
241 } else { 222 } else {
242 action = signin_button_clicked 223 action = signin_button_clicked
243 ? metrics_util::ACCOUNT_CHOOSER_SIGN_IN 224 ? metrics_util::ACCOUNT_CHOOSER_SIGN_IN
244 : metrics_util::ACCOUNT_CHOOSER_CREDENTIAL_CHOSEN; 225 : metrics_util::ACCOUNT_CHOOSER_CREDENTIAL_CHOSEN;
245 const auto& credentials_forms = 226 const auto& credentials_forms = local_credentials_forms();
246 (type == CredentialType::CREDENTIAL_TYPE_PASSWORD)
247 ? local_credentials_forms()
248 : federation_providers_forms();
249 if (index < credentials_forms.size()) { 227 if (index < credentials_forms.size()) {
250 passwords_data_.ChooseCredential(credentials_forms[index].get()); 228 passwords_data_.ChooseCredential(credentials_forms[index].get());
251 } 229 }
252 } 230 }
253 231
254 if (local_credentials_forms().size() == 1) { 232 if (local_credentials_forms().size() == 1) {
255 password_manager::metrics_util::LogAccountChooserUserActionOneAccount( 233 password_manager::metrics_util::LogAccountChooserUserActionOneAccount(
256 action); 234 action);
257 } else { 235 } else {
258 password_manager::metrics_util::LogAccountChooserUserActionManyAccounts( 236 password_manager::metrics_util::LogAccountChooserUserActionManyAccounts(
259 action); 237 action);
260 } 238 }
261 } 239 }
262 240
263 bool RegisterAccountChooserDialogAndroid(JNIEnv* env) { 241 bool RegisterAccountChooserDialogAndroid(JNIEnv* env) {
264 return RegisterNativesImpl(env); 242 return RegisterNativesImpl(env);
265 } 243 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698