1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_VIEWS_AUTOFILL_EDIT_ADDRESS_PROFILE_VIEW_H_
#define CHROME_BROWSER_UI_VIEWS_AUTOFILL_EDIT_ADDRESS_PROFILE_VIEW_H_
#include "base/memory/raw_ptr.h"
#include "chrome/browser/ui/autofill/autofill_bubble_base.h"
#include "components/autofill/core/browser/foundations/autofill_client.h"
#include "ui/views/widget/widget.h"
#include "ui/views/window/dialog_delegate.h"
namespace content {
class WebContents;
} // namespace content
namespace autofill {
class EditAddressProfileDialogController;
class AddressEditorView;
// This is the dialog used to edit an address profile it. It's part of the
// flow triggered upon submitting a form with an address profile that is not
// already saved. This dialog is opened when the user decides to edit the
// address before saving it.
class EditAddressProfileView : public views::DialogDelegateView {
public:
DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kTopViewId);
explicit EditAddressProfileView(
EditAddressProfileDialogController* controller);
EditAddressProfileView(const EditAddressProfileView&) = delete;
EditAddressProfileView& operator=(const EditAddressProfileView&) = delete;
~EditAddressProfileView() override;
// Fill in the dialog with the information from the given web_content.
void ShowForWebContents(content::WebContents* web_contents);
// views::DialogDelegateView
View* GetInitiallyFocusedView() override;
void ChildPreferredSizeChanged(views::View* child) override;
// Called by implementation of the class after the Widget has been
// synchronously closed.
void WidgetClosed();
AddressEditorView* GetAddressEditorViewForTesting();
private:
void OnUserDecision(AutofillClient::AddressPromptUserDecision decision);
void UpdateActionButtonState(bool is_valid);
bool OnAcceptButtonClicked();
raw_ptr<EditAddressProfileDialogController> controller_;
raw_ptr<AddressEditorView> address_editor_view_ = nullptr;
base::CallbackListSubscription on_is_valid_change_subscription_;
AutofillClient::AddressPromptUserDecision decision_ =
AutofillClient::AddressPromptUserDecision::kIgnored;
};
} // namespace autofill
#endif // CHROME_BROWSER_UI_VIEWS_AUTOFILL_EDIT_ADDRESS_PROFILE_VIEW_H_
|