OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "components/password_manager/content/browser/credential_manager_impl.h" | 5 #include "components/password_manager/content/browser/credential_manager_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
12 #include "components/autofill/core/common/password_form.h" | 12 #include "components/autofill/core/common/password_form.h" |
13 #include "components/password_manager/content/browser/content_password_manager_d
river.h" | 13 #include "components/password_manager/content/browser/content_password_manager_d
river.h" |
14 #include "components/password_manager/content/browser/content_password_manager_d
river_factory.h" | 14 #include "components/password_manager/content/browser/content_password_manager_d
river_factory.h" |
15 #include "components/password_manager/content/public/cpp/type_converters.h" | 15 #include "components/password_manager/content/public/cpp/type_converters.h" |
16 #include "components/password_manager/core/browser/affiliated_match_helper.h" | 16 #include "components/password_manager/core/browser/affiliated_match_helper.h" |
17 #include "components/password_manager/core/browser/password_manager_client.h" | 17 #include "components/password_manager/core/browser/password_manager_client.h" |
18 #include "components/password_manager/core/browser/password_store.h" | 18 #include "components/password_manager/core/browser/password_store.h" |
19 #include "components/password_manager/core/common/credential_manager_types.h" | 19 #include "components/password_manager/core/common/credential_manager_types.h" |
20 #include "components/password_manager/core/common/password_manager_pref_names.h" | 20 #include "components/password_manager/core/common/password_manager_pref_names.h" |
21 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" |
22 #include "mojo/common/url_type_converters.h" | |
23 | 22 |
24 namespace password_manager { | 23 namespace password_manager { |
25 | 24 |
26 namespace { | 25 namespace { |
27 | 26 |
28 void RunMojoGetCallback(const mojom::CredentialManager::GetCallback& callback, | 27 void RunMojoGetCallback(const mojom::CredentialManager::GetCallback& callback, |
29 const CredentialInfo& info) { | 28 const CredentialInfo& info) { |
30 mojom::CredentialInfoPtr credential = mojom::CredentialInfo::From(info); | 29 mojom::CredentialInfoPtr credential = mojom::CredentialInfo::From(info); |
31 callback.Run(mojom::CredentialManagerError::SUCCESS, std::move(credential)); | 30 callback.Run(mojom::CredentialManagerError::SUCCESS, std::move(credential)); |
32 } | 31 } |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 pending_require_user_mediation_->AddOrigin( | 142 pending_require_user_mediation_->AddOrigin( |
144 web_contents()->GetLastCommittedURL().GetOrigin()); | 143 web_contents()->GetLastCommittedURL().GetOrigin()); |
145 } | 144 } |
146 | 145 |
147 // Send acknowledge response back. | 146 // Send acknowledge response back. |
148 callback.Run(); | 147 callback.Run(); |
149 } | 148 } |
150 | 149 |
151 void CredentialManagerImpl::Get(bool zero_click_only, | 150 void CredentialManagerImpl::Get(bool zero_click_only, |
152 bool include_passwords, | 151 bool include_passwords, |
153 mojo::Array<mojo::String> federations, | 152 mojo::Array<GURL> federations, |
154 const GetCallback& callback) { | 153 const GetCallback& callback) { |
155 PasswordStore* store = GetPasswordStore(); | 154 PasswordStore* store = GetPasswordStore(); |
156 if (pending_request_ || !store) { | 155 if (pending_request_ || !store) { |
157 // Callback error. | 156 // Callback error. |
158 callback.Run(pending_request_ | 157 callback.Run(pending_request_ |
159 ? mojom::CredentialManagerError::PENDINGREQUEST | 158 ? mojom::CredentialManagerError::PENDINGREQUEST |
160 : mojom::CredentialManagerError::PASSWORDSTOREUNAVAILABLE, | 159 : mojom::CredentialManagerError::PASSWORDSTOREUNAVAILABLE, |
161 nullptr); | 160 nullptr); |
162 return; | 161 return; |
163 } | 162 } |
164 | 163 |
165 // Return an empty credential if zero-click is required but disabled, or if | 164 // Return an empty credential if zero-click is required but disabled, or if |
166 // the current page has TLS errors. | 165 // the current page has TLS errors. |
167 if ((zero_click_only && !IsZeroClickAllowed()) || | 166 if ((zero_click_only && !IsZeroClickAllowed()) || |
168 client_->DidLastPageLoadEncounterSSLErrors()) { | 167 client_->DidLastPageLoadEncounterSSLErrors()) { |
169 // Callback with empty credential info. | 168 // Callback with empty credential info. |
170 callback.Run(mojom::CredentialManagerError::SUCCESS, | 169 callback.Run(mojom::CredentialManagerError::SUCCESS, |
171 mojom::CredentialInfo::New()); | 170 mojom::CredentialInfo::New()); |
172 return; | 171 return; |
173 } | 172 } |
174 | 173 |
175 if (store->affiliated_match_helper()) { | 174 if (store->affiliated_match_helper()) { |
176 store->affiliated_match_helper()->GetAffiliatedAndroidRealms( | 175 store->affiliated_match_helper()->GetAffiliatedAndroidRealms( |
177 GetSynthesizedFormForOrigin(), | 176 GetSynthesizedFormForOrigin(), |
178 base::Bind(&CredentialManagerImpl::ScheduleRequestTask, | 177 base::Bind(&CredentialManagerImpl::ScheduleRequestTask, |
179 weak_factory_.GetWeakPtr(), callback, zero_click_only, | 178 weak_factory_.GetWeakPtr(), callback, zero_click_only, |
180 include_passwords, federations.To<std::vector<GURL>>())); | 179 include_passwords, federations.PassStorage())); |
181 } else { | 180 } else { |
182 std::vector<std::string> no_affiliated_realms; | 181 std::vector<std::string> no_affiliated_realms; |
183 ScheduleRequestTask(callback, zero_click_only, include_passwords, | 182 ScheduleRequestTask(callback, zero_click_only, include_passwords, |
184 federations.To<std::vector<GURL>>(), | 183 federations.PassStorage(), no_affiliated_realms); |
185 no_affiliated_realms); | |
186 } | 184 } |
187 } | 185 } |
188 | 186 |
189 void CredentialManagerImpl::ScheduleRequestTask( | 187 void CredentialManagerImpl::ScheduleRequestTask( |
190 const GetCallback& callback, | 188 const GetCallback& callback, |
191 bool zero_click_only, | 189 bool zero_click_only, |
192 bool include_passwords, | 190 bool include_passwords, |
193 const std::vector<GURL>& federations, | 191 const std::vector<GURL>& federations, |
194 const std::vector<std::string>& android_realms) { | 192 const std::vector<std::string>& android_realms) { |
195 DCHECK(GetPasswordStore()); | 193 DCHECK(GetPasswordStore()); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 DCHECK(pending_require_user_mediation_); | 273 DCHECK(pending_require_user_mediation_); |
276 pending_require_user_mediation_.reset(); | 274 pending_require_user_mediation_.reset(); |
277 } | 275 } |
278 | 276 |
279 bool CredentialManagerImpl::IsUpdatingCredentialAllowed() const { | 277 bool CredentialManagerImpl::IsUpdatingCredentialAllowed() const { |
280 return !client_->DidLastPageLoadEncounterSSLErrors() && | 278 return !client_->DidLastPageLoadEncounterSSLErrors() && |
281 !client_->IsOffTheRecord(); | 279 !client_->IsOffTheRecord(); |
282 } | 280 } |
283 | 281 |
284 } // namespace password_manager | 282 } // namespace password_manager |
OLD | NEW |