Commit f57f0f86 authored by Reda Tawfik's avatar Reda Tawfik Committed by Commit Bot

[Android][Mfill] Add native view for AllPasswordsBottomSheet

This CL adds controller and view native files and Java bridge of
|FillingPasswordsFromAnyOrigin| feature.

1) Initiates |AllPasswordsBottomSheetController| with
   |ContentPasswordManagerDriver| and |PasswordStore| from
   |PasswordAccessoryControllerImpl|.
2) The controller initiates |AllPasswordsBottomSheetView|.
3) The controller gets the credentials from |PasswordStore|
   and send them to the view in |Show| method.

Bug: 1104132
Change-Id: Ic7d7fb504b7f1a2a7438426588f5487877ef0069
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2299350
Commit-Queue: Reda Tawfik <redatawfik@noogler.google.com>
Reviewed-by: default avatarFriedrich [CET] <fhorschig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#795018}
parent 4856b612
......@@ -2787,6 +2787,10 @@ static_library("browser") {
"password_check/android/password_check_bridge.h",
"password_manager/android/account_chooser_dialog_android.cc",
"password_manager/android/account_chooser_dialog_android.h",
"password_manager/android/all_passwords_bottom_sheet_controller.cc",
"password_manager/android/all_passwords_bottom_sheet_controller.h",
"password_manager/android/all_passwords_bottom_sheet_view.cc",
"password_manager/android/all_passwords_bottom_sheet_view.h",
"password_manager/android/auto_signin_first_run_dialog_android.cc",
"password_manager/android/auto_signin_first_run_dialog_android.h",
"password_manager/android/auto_signin_prompt_controller.cc",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h"
#include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_view.h"
#include "components/password_manager/core/browser/password_manager_driver.h"
#include "components/password_manager/core/browser/password_store.h"
AllPasswordsBottomSheetController::AllPasswordsBottomSheetController(
password_manager::PasswordManagerDriver* driver,
password_manager::PasswordStore* store)
: driver_(driver), store_(store) {
DCHECK(driver_);
DCHECK(store_);
}
AllPasswordsBottomSheetController::~AllPasswordsBottomSheetController() =
default;
void AllPasswordsBottomSheetController::Show() {
store_->GetAllLoginsWithAffiliationAndBrandingInformation(this);
view_->Show();
delete view_;
}
AllPasswordsBottomSheetController* AllPasswordsBottomSheetController::Create(
password_manager::PasswordManagerDriver* driver,
password_manager::PasswordStore* store) {
std::unique_ptr<AllPasswordsBottomSheetController> controller =
std::make_unique<AllPasswordsBottomSheetController>(driver, store);
AllPasswordsBottomSheetController* raw_controller = controller.get();
raw_controller->view_ =
AllPasswordsBottomSheetView::Create(std::move(controller));
return raw_controller;
}
void AllPasswordsBottomSheetController::OnGetPasswordStoreResults(
std::vector<std::unique_ptr<autofill::PasswordForm>> results) {
// TODO(crbug.com/1104132): Implement.
}
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_ALL_PASSWORDS_BOTTOM_SHEET_CONTROLLER_H_
#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_ALL_PASSWORDS_BOTTOM_SHEET_CONTROLLER_H_
#include "components/password_manager/core/browser/password_store_consumer.h"
namespace password_manager {
class PasswordManagerDriver;
class PasswordStore;
} // namespace password_manager
class AllPasswordsBottomSheetView;
// This class gets credentials and creates AllPasswordsBottomSheetView.
class AllPasswordsBottomSheetController
: public password_manager::PasswordStoreConsumer {
public:
AllPasswordsBottomSheetController(
password_manager::PasswordManagerDriver* driver,
password_manager::PasswordStore* store);
~AllPasswordsBottomSheetController() override;
AllPasswordsBottomSheetController(const AllPasswordsBottomSheetController&) =
delete;
AllPasswordsBottomSheetController& operator=(
const AllPasswordsBottomSheetController&) = delete;
// PasswordStoreConsumer:
void OnGetPasswordStoreResults(
std::vector<std::unique_ptr<autofill::PasswordForm>> results) override;
// Initializes the view and the controller.
// Doesn't take ownership of |driver|.
// Doesn't take ownership of |store|.
static AllPasswordsBottomSheetController* Create(
password_manager::PasswordManagerDriver* driver,
password_manager::PasswordStore* store);
// Instructs AllPasswordsBottomSheetView to show the credentials to the user.
void Show();
private:
// The controller doesn't take |driver_| ownership.
password_manager::PasswordManagerDriver* driver_ = nullptr;
// The controller doesn't take |store_| ownership.
password_manager::PasswordStore* store_ = nullptr;
// The controller takes |view_| ownership.
AllPasswordsBottomSheetView* view_ = nullptr;
};
#endif // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_ALL_PASSWORDS_BOTTOM_SHEET_CONTROLLER_H_
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_view.h"
#include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h"
#include "components/password_manager/core/browser/password_manager_driver.h"
AllPasswordsBottomSheetView::AllPasswordsBottomSheetView(
std::unique_ptr<AllPasswordsBottomSheetController> controller)
: controller_(std::move(controller)) {}
AllPasswordsBottomSheetView::AllPasswordsBottomSheetView(
AllPasswordsBottomSheetView&&) = default;
AllPasswordsBottomSheetView& AllPasswordsBottomSheetView::operator=(
AllPasswordsBottomSheetView&&) = default;
AllPasswordsBottomSheetView::~AllPasswordsBottomSheetView() = default;
AllPasswordsBottomSheetView* AllPasswordsBottomSheetView::Create(
std::unique_ptr<AllPasswordsBottomSheetController> controller) {
return new AllPasswordsBottomSheetView(std::move(controller));
}
void AllPasswordsBottomSheetView::AllPasswordsBottomSheetView::Show() {
// TODO(crbug.com/1104132): Implement.
}
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_ALL_PASSWORDS_BOTTOM_SHEET_VIEW_H_
#define CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_ALL_PASSWORDS_BOTTOM_SHEET_VIEW_H_
#include <memory>
class AllPasswordsBottomSheetController;
// Bridge AllPasswordsBottomSheet native and java view code by converting user
// credentials data into java-readable formats.
class AllPasswordsBottomSheetView {
public:
AllPasswordsBottomSheetView(
std::unique_ptr<AllPasswordsBottomSheetController> controller);
AllPasswordsBottomSheetView(const AllPasswordsBottomSheetView&) = delete;
AllPasswordsBottomSheetView& operator=(const AllPasswordsBottomSheetView&) =
delete;
AllPasswordsBottomSheetView(AllPasswordsBottomSheetView&&);
AllPasswordsBottomSheetView& operator=(AllPasswordsBottomSheetView&&);
~AllPasswordsBottomSheetView();
// Create an instance of the view with passed controller.
// return a raw pointer for the view.
static AllPasswordsBottomSheetView* Create(
std::unique_ptr<AllPasswordsBottomSheetController> controller);
// Makes call to java bridge to show AllPasswordsBottomSheet view.
void Show();
private:
std::unique_ptr<AllPasswordsBottomSheetController> controller_ = nullptr;
};
#endif // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_ALL_PASSWORDS_BOTTOM_SHEET_VIEW_H_
......@@ -17,6 +17,7 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/autofill/manual_filling_controller.h"
#include "chrome/browser/autofill/manual_filling_utils.h"
#include "chrome/browser/password_manager/android/all_passwords_bottom_sheet_controller.h"
#include "chrome/browser/password_manager/android/password_accessory_controller.h"
#include "chrome/browser/password_manager/android/password_accessory_metrics_util.h"
#include "chrome/browser/password_manager/android/password_generation_controller.h"
......@@ -198,7 +199,15 @@ bool PasswordAccessoryControllerImpl::ShouldAcceptFocusEvent(
void PasswordAccessoryControllerImpl::OnOptionSelected(
autofill::AccessoryAction selected_action) {
if (selected_action == autofill::AccessoryAction::USE_OTHER_PASSWORD) {
// TODO(crbug.com/1104132): Implement.
password_manager::ContentPasswordManagerDriverFactory* factory =
password_manager::ContentPasswordManagerDriverFactory::FromWebContents(
web_contents_);
password_manager::ContentPasswordManagerDriver* driver =
factory->GetDriverForFrame(web_contents_->GetFocusedFrame());
AllPasswordsBottomSheetController* controller =
AllPasswordsBottomSheetController::Create(
driver, password_client_->GetProfilePasswordStore());
controller->Show();
return;
}
if (selected_action == autofill::AccessoryAction::MANAGE_PASSWORDS) {
......
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