Commit db709f04 authored by Friedrich Horschig's avatar Friedrich Horschig Committed by Commit Bot

[Android][AllPwdsSheet] Remove exceptions shown as chips

Right now, the all passwords show saving exceptions as chips but it
should ignore them entirely. In addition, it should not show the option
if only saving exceptions are stored.

Bug: 1150851
Change-Id: I4a7a707ab1e1dade7655af6e722c802785ad12ac
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2550818
Commit-Queue: Friedrich [CET] <fhorschig@chromium.org>
Reviewed-by: default avatarJan Wilken Dörrie <jdoerrie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#830529}
parent 37447d41
...@@ -4,11 +4,13 @@ ...@@ -4,11 +4,13 @@
#include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h" #include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h"
#include "base/stl_util.h"
#include "chrome/browser/password_manager/chrome_password_manager_client.h" #include "chrome/browser/password_manager/chrome_password_manager_client.h"
#include "chrome/browser/ui/android/passwords/all_passwords_bottom_sheet_view.h" #include "chrome/browser/ui/android/passwords/all_passwords_bottom_sheet_view.h"
#include "chrome/browser/ui/android/passwords/all_passwords_bottom_sheet_view_impl.h" #include "chrome/browser/ui/android/passwords/all_passwords_bottom_sheet_view_impl.h"
#include "components/password_manager/content/browser/content_password_manager_driver.h" #include "components/password_manager/content/browser/content_password_manager_driver.h"
#include "components/password_manager/content/browser/content_password_manager_driver_factory.h" #include "components/password_manager/content/browser/content_password_manager_driver_factory.h"
#include "components/password_manager/core/browser/password_form.h"
#include "components/password_manager/core/browser/password_manager_client.h" #include "components/password_manager/core/browser/password_manager_client.h"
#include "components/password_manager/core/browser/password_manager_driver.h" #include "components/password_manager/core/browser/password_manager_driver.h"
#include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/browser/password_store.h"
...@@ -64,7 +66,8 @@ void AllPasswordsBottomSheetController::Show() { ...@@ -64,7 +66,8 @@ void AllPasswordsBottomSheetController::Show() {
void AllPasswordsBottomSheetController::OnGetPasswordStoreResults( void AllPasswordsBottomSheetController::OnGetPasswordStoreResults(
std::vector<std::unique_ptr<password_manager::PasswordForm>> results) { std::vector<std::unique_ptr<password_manager::PasswordForm>> results) {
// TODO(crbug.com/1104132): Handle empty credentials case. base::EraseIf(results,
[](const auto& form_ptr) { return form_ptr->blocked_by_user; });
view_->Show(std::move(results), focused_field_type_); view_->Show(std::move(results), focused_field_type_);
} }
......
...@@ -39,6 +39,7 @@ using IsAffiliationBasedMatch = UiCredential::IsAffiliationBasedMatch; ...@@ -39,6 +39,7 @@ using IsAffiliationBasedMatch = UiCredential::IsAffiliationBasedMatch;
constexpr char kExampleCom[] = "https://example.com"; constexpr char kExampleCom[] = "https://example.com";
constexpr char kExampleOrg[] = "http://www.example.org"; constexpr char kExampleOrg[] = "http://www.example.org";
constexpr char kExampleDe[] = "https://www.example.de";
constexpr char kUsername1[] = "alice"; constexpr char kUsername1[] = "alice";
constexpr char kUsername2[] = "bob"; constexpr char kUsername2[] = "bob";
...@@ -80,11 +81,19 @@ UiCredential MakeUiCredential(const std::string& username, ...@@ -80,11 +81,19 @@ UiCredential MakeUiCredential(const std::string& username,
PasswordForm MakeSavedPassword(const std::string& signon_realm, PasswordForm MakeSavedPassword(const std::string& signon_realm,
const std::string& username) { const std::string& username) {
PasswordForm form; PasswordForm form;
form.signon_realm = std::string(signon_realm); form.signon_realm = signon_realm;
form.url = GURL(signon_realm); form.url = GURL(signon_realm);
form.username_value = base::ASCIIToUTF16(username); form.username_value = base::ASCIIToUTF16(username);
form.password_value = base::ASCIIToUTF16(kPassword); form.password_value = base::ASCIIToUTF16(kPassword);
form.username_element = base::ASCIIToUTF16(""); form.in_store = PasswordForm::Store::kProfileStore;
return form;
}
PasswordForm MakePasswordException(const std::string& signon_realm) {
PasswordForm form;
form.blocked_by_user = true;
form.signon_realm = signon_realm;
form.url = GURL(signon_realm);
form.in_store = PasswordForm::Store::kProfileStore; form.in_store = PasswordForm::Store::kProfileStore;
return form; return form;
} }
...@@ -149,6 +158,9 @@ TEST_F(AllPasswordsBottomSheetControllerTest, Show) { ...@@ -149,6 +158,9 @@ TEST_F(AllPasswordsBottomSheetControllerTest, Show) {
store().AddLogin(form2); store().AddLogin(form2);
store().AddLogin(form3); store().AddLogin(form3);
store().AddLogin(form4); store().AddLogin(form4);
// Exceptions are not shown. Sites where saving is disabled still show pwds.
store().AddLogin(MakePasswordException(kExampleDe));
store().AddLogin(MakePasswordException(kExampleCom));
EXPECT_CALL(view(), EXPECT_CALL(view(),
Show(UnorderedElementsAre(Pointee(Eq(form1)), Pointee(Eq(form2)), Show(UnorderedElementsAre(Pointee(Eq(form1)), Pointee(Eq(form2)),
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
#include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_helper.h" #include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_helper.h"
#include "base/functional/not_fn.h"
#include "base/ranges/algorithm.h"
#include "components/password_manager/core/browser/password_form.h"
#include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/browser/password_store.h"
AllPasswordsBottomSheetHelper::AllPasswordsBottomSheetHelper( AllPasswordsBottomSheetHelper::AllPasswordsBottomSheetHelper(
...@@ -31,8 +34,9 @@ void AllPasswordsBottomSheetHelper::ClearUpdateCallback() { ...@@ -31,8 +34,9 @@ void AllPasswordsBottomSheetHelper::ClearUpdateCallback() {
void AllPasswordsBottomSheetHelper::OnGetPasswordStoreResults( void AllPasswordsBottomSheetHelper::OnGetPasswordStoreResults(
std::vector<std::unique_ptr<password_manager::PasswordForm>> results) { std::vector<std::unique_ptr<password_manager::PasswordForm>> results) {
available_credentials_ = results.size(); available_credentials_ = base::ranges::count_if(
if (results.empty()) results, base::not_fn(&password_manager::PasswordForm::blocked_by_user));
if (available_credentials_.value() == 0)
return; // Don't update if sheet still wouldn't be available. return; // Don't update if sheet still wouldn't be available.
if (update_callback_.is_null()) if (update_callback_.is_null())
return; // No update if cannot be triggered right now. return; // No update if cannot be triggered right now.
......
...@@ -22,6 +22,7 @@ constexpr char kUsername[] = "alice"; ...@@ -22,6 +22,7 @@ constexpr char kUsername[] = "alice";
constexpr char kPassword[] = "password123"; constexpr char kPassword[] = "password123";
namespace { namespace {
PasswordForm MakeSavedPassword(base::StringPiece signon_realm, PasswordForm MakeSavedPassword(base::StringPiece signon_realm,
base::StringPiece username) { base::StringPiece username) {
PasswordForm form; PasswordForm form;
...@@ -32,6 +33,16 @@ PasswordForm MakeSavedPassword(base::StringPiece signon_realm, ...@@ -32,6 +33,16 @@ PasswordForm MakeSavedPassword(base::StringPiece signon_realm,
form.in_store = PasswordForm::Store::kProfileStore; form.in_store = PasswordForm::Store::kProfileStore;
return form; return form;
} }
PasswordForm MakePasswordException(const std::string& signon_realm) {
PasswordForm form;
form.blocked_by_user = true;
form.signon_realm = signon_realm;
form.url = GURL(signon_realm);
form.in_store = PasswordForm::Store::kProfileStore;
return form;
}
} // namespace } // namespace
class AllPasswordsBottomSheetHelperTest : public testing::Test { class AllPasswordsBottomSheetHelperTest : public testing::Test {
...@@ -62,6 +73,9 @@ TEST_F(AllPasswordsBottomSheetHelperTest, CallbackIsCalledAfterFetch) { ...@@ -62,6 +73,9 @@ TEST_F(AllPasswordsBottomSheetHelperTest, CallbackIsCalledAfterFetch) {
} }
TEST_F(AllPasswordsBottomSheetHelperTest, CallbackIsNotCalledForEmptyStore) { TEST_F(AllPasswordsBottomSheetHelperTest, CallbackIsNotCalledForEmptyStore) {
// Exceptions don't count towards stored passwords!
store().AddLogin(MakePasswordException(kExampleCom));
base::MockOnceClosure callback; base::MockOnceClosure callback;
EXPECT_CALL(callback, Run).Times(0); EXPECT_CALL(callback, Run).Times(0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment