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

Unified Diff: chrome/browser/ui/views/autofill/autofill_dialog_views.h

Issue 1931043002: Remove requestAutocomplete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/autofill/autofill_dialog_views.h
diff --git a/chrome/browser/ui/views/autofill/autofill_dialog_views.h b/chrome/browser/ui/views/autofill/autofill_dialog_views.h
deleted file mode 100644
index cd181c3f93d99c967c0a356b0379b44910a8f90e..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/views/autofill/autofill_dialog_views.h
+++ /dev/null
@@ -1,546 +0,0 @@
-// Copyright (c) 2012 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_UI_VIEWS_AUTOFILL_AUTOFILL_DIALOG_VIEWS_H_
-#define CHROME_BROWSER_UI_VIEWS_AUTOFILL_AUTOFILL_DIALOG_VIEWS_H_
-
-#include <map>
-#include <set>
-
-#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
-#include "base/memory/weak_ptr.h"
-#include "base/scoped_observer.h"
-#include "chrome/browser/ui/autofill/autofill_dialog_types.h"
-#include "chrome/browser/ui/autofill/autofill_dialog_view.h"
-#include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h"
-#include "ui/views/controls/button/button.h"
-#include "ui/views/controls/button/menu_button.h"
-#include "ui/views/controls/button/menu_button_listener.h"
-#include "ui/views/controls/combobox/combobox_listener.h"
-#include "ui/views/controls/link_listener.h"
-#include "ui/views/controls/progress_bar.h"
-#include "ui/views/controls/scroll_view.h"
-#include "ui/views/controls/styled_label_listener.h"
-#include "ui/views/controls/textfield/textfield_controller.h"
-#include "ui/views/focus/focus_manager.h"
-#include "ui/views/view_targeter_delegate.h"
-#include "ui/views/widget/widget_observer.h"
-#include "ui/views/window/dialog_delegate.h"
-
-namespace gfx {
-class Image;
-}
-
-namespace views {
-class BubbleBorder;
-class Checkbox;
-class Combobox;
-class FocusManager;
-class ImageView;
-class Label;
-class LabelButton;
-class Link;
-class MenuRunner;
-class StyledLabel;
-class WebView;
-class Widget;
-} // namespace views
-
-namespace ui {
-class ComboboxModel;
-class EventHandler;
-class KeyEvent;
-}
-
-namespace autofill {
-
-class AutofillDialogSignInDelegate;
-class ExpandingTextfield;
-class InfoBubble;
-
-// Views toolkit implementation of the Autofill dialog that handles the
-// imperative autocomplete API call.
-class AutofillDialogViews : public AutofillDialogView,
- public views::DialogDelegateView,
- public views::WidgetObserver,
- public views::TextfieldController,
- public views::FocusChangeListener,
- public views::ComboboxListener,
- public views::MenuButtonListener {
- public:
- explicit AutofillDialogViews(AutofillDialogViewDelegate* delegate);
- ~AutofillDialogViews() override;
-
- // AutofillDialogView implementation:
- void Show() override;
- void Hide() override;
- void UpdatesStarted() override;
- void UpdatesFinished() override;
- void UpdateButtonStrip() override;
- void UpdateDetailArea() override;
- void UpdateForErrors() override;
- void UpdateNotificationArea() override;
- void UpdateSection(DialogSection section) override;
- void UpdateErrorBubble() override;
- void FillSection(DialogSection section,
- ServerFieldType originating_type) override;
- void GetUserInput(DialogSection section, FieldValueMap* output) override;
- base::string16 GetCvc() override;
- bool SaveDetailsLocally() override;
- void ModelChanged() override;
- void ValidateSection(DialogSection section) override;
-
- // views::View implementation.
- gfx::Size GetPreferredSize() const override;
- gfx::Size GetMinimumSize() const override;
- void Layout() override;
-
- // views::DialogDelegate implementation:
- ui::ModalType GetModalType() const override;
- base::string16 GetWindowTitle() const override;
- void WindowClosing() override;
- void DeleteDelegate() override;
- int GetDialogButtons() const override;
- int GetDefaultDialogButton() const override;
- base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
- bool ShouldDefaultButtonBeBlue() const override;
- bool IsDialogButtonEnabled(ui::DialogButton button) const override;
- views::View* GetInitiallyFocusedView() override;
- views::View* CreateExtraView() override;
- bool Cancel() override;
- bool Accept() override;
-
- // views::WidgetObserver implementation:
- void OnWidgetClosing(views::Widget* widget) override;
- void OnWidgetDestroying(views::Widget* widget) override;
- void OnWidgetBoundsChanged(views::Widget* widget,
- const gfx::Rect& new_bounds) override;
-
- // views::TextfieldController implementation:
- void ContentsChanged(views::Textfield* sender,
- const base::string16& new_contents) override;
- bool HandleKeyEvent(views::Textfield* sender,
- const ui::KeyEvent& key_event) override;
- bool HandleMouseEvent(views::Textfield* sender,
- const ui::MouseEvent& key_event) override;
-
- // views::FocusChangeListener implementation.
- void OnWillChangeFocus(views::View* focused_before,
- views::View* focused_now) override;
- void OnDidChangeFocus(views::View* focused_before,
- views::View* focused_now) override;
-
- // views::ComboboxListener implementation:
- void OnPerformAction(views::Combobox* combobox) override;
-
- // views::MenuButtonListener implementation.
- void OnMenuButtonClicked(views::MenuButton* source,
- const gfx::Point& point,
- const ui::Event* event) override;
-
- protected:
- // Exposed for testing.
- views::View* GetNotificationAreaForTesting();
- views::View* GetScrollableAreaForTesting();
-
- private:
- friend class AutofillDialogViewTesterViews;
-
- // An area for notifications. Some notifications point at the account chooser.
- class NotificationArea : public views::View {
- public:
- explicit NotificationArea(AutofillDialogViewDelegate* delegate);
- ~NotificationArea() override;
-
- // Displays the given notifications.
- void SetNotifications(const std::vector<DialogNotification>& notifications);
-
- // views::View implementation.
- gfx::Size GetPreferredSize() const override;
- const char* GetClassName() const override;
- void PaintChildren(const ui::PaintContext& context) override;
-
- void set_arrow_centering_anchor(
- const base::WeakPtr<views::View>& arrow_centering_anchor) {
- arrow_centering_anchor_ = arrow_centering_anchor;
- }
-
- private:
- // Utility function for determining whether an arrow should be drawn
- // pointing at |arrow_centering_anchor_|.
- bool HasArrow();
-
- // A reference to the delegate/controller than owns this view.
- // Used to report when checkboxes change their values.
- AutofillDialogViewDelegate* delegate_; // weak
-
- // If HasArrow() is true, the arrow should point at this.
- base::WeakPtr<views::View> arrow_centering_anchor_;
-
- std::vector<DialogNotification> notifications_;
-
- DISALLOW_COPY_AND_ASSIGN(NotificationArea);
- };
-
- typedef std::map<ServerFieldType, ExpandingTextfield*> TextfieldMap;
- typedef std::map<ServerFieldType, views::Combobox*> ComboboxMap;
-
- // A view that packs a label on the left and some related controls
- // on the right.
- class SectionContainer : public views::View,
- public views::ViewTargeterDelegate {
- public:
- SectionContainer(const base::string16& label,
- views::View* controls,
- views::Button* proxy_button);
- ~SectionContainer() override;
-
- // Sets the visual appearance of the section to active (considered active
- // when showing the menu or hovered by the mouse cursor).
- void SetActive(bool active);
-
- // Sets whether mouse events should be forwarded to |proxy_button_|.
- void SetForwardMouseEvents(bool forward);
-
- // views::View implementation.
- const char* GetClassName() const override;
- void OnMouseMoved(const ui::MouseEvent& event) override;
- void OnMouseEntered(const ui::MouseEvent& event) override;
- void OnMouseExited(const ui::MouseEvent& event) override;
- bool OnMousePressed(const ui::MouseEvent& event) override;
- void OnMouseReleased(const ui::MouseEvent& event) override;
- void OnGestureEvent(ui::GestureEvent* event) override;
-
- private:
- // views::ViewTargeterDelegate:
- views::View* TargetForRect(views::View* root,
- const gfx::Rect& rect) override;
-
- // Converts |event| to one suitable for |proxy_button_|.
- static ui::MouseEvent ProxyEvent(const ui::MouseEvent& event);
-
- // Returns true if the given event should be forwarded to |proxy_button_|.
- bool ShouldForwardEvent(const ui::LocatedEvent& event);
-
- // Mouse events on |this| are sent to this button.
- views::Button* proxy_button_; // Weak reference.
-
- // When true, all mouse events will be forwarded to |proxy_button_|.
- bool forward_mouse_events_;
-
- DISALLOW_COPY_AND_ASSIGN(SectionContainer);
- };
-
- // A button to show address or billing suggestions.
- class SuggestedButton : public views::MenuButton {
- public:
- explicit SuggestedButton(views::MenuButtonListener* listener);
- ~SuggestedButton() override;
-
- // views::MenuButton implementation.
- gfx::Size GetPreferredSize() const override;
- const char* GetClassName() const override;
- void OnPaint(gfx::Canvas* canvas) override;
-
- private:
- // Returns the corred resource ID (i.e. IDR_*) for the current |state()|.
- int ResourceIDForState() const;
-
- DISALLOW_COPY_AND_ASSIGN(SuggestedButton);
- };
-
- // A view that runs a callback whenever its bounds change, and which can
- // optionally suppress layout.
- class DetailsContainerView : public views::View {
- public:
- explicit DetailsContainerView(const base::Closure& callback);
- ~DetailsContainerView() override;
-
- void set_ignore_layouts(bool ignore_layouts) {
- ignore_layouts_ = ignore_layouts;
- }
-
- // views::View implementation.
- void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
- void Layout() override;
-
- private:
- base::Closure bounds_changed_callback_;
-
- // The view ignores Layout() calls when this is true.
- bool ignore_layouts_;
-
- DISALLOW_COPY_AND_ASSIGN(DetailsContainerView);
- };
-
- // A view that contains a suggestion (such as a known address).
- class SuggestionView : public views::View {
- public:
- explicit SuggestionView(AutofillDialogViews* autofill_dialog);
- ~SuggestionView() override;
-
- void SetState(const SuggestionState& state);
-
- // views::View implementation.
- gfx::Size GetPreferredSize() const override;
- int GetHeightForWidth(int width) const override;
- void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
-
- ExpandingTextfield* textfield() { return textfield_; }
-
- private:
- // Returns whether there's room to display |state_.vertically_compact_text|
- // without resorting to an ellipsis for a pixel width of |available_width|.
- // Fills in |resulting_height| with the amount of space required to display
- // |vertically_compact_text| or |horizontally_compact_text| as the case may
- // be.
- bool CanUseVerticallyCompactText(int available_width,
- int* resulting_height) const;
-
- // Sets the display text of the suggestion.
- void SetLabelText(const base::string16& text);
-
- // Sets the icon which should be displayed ahead of the text.
- void SetIcon(const gfx::Image& image);
-
- // Shows an auxiliary textfield to the right of the suggestion icon and
- // text. This is currently only used to show a CVC field for the CC section.
- void SetTextfield(const base::string16& placeholder_text,
- const gfx::Image& icon);
-
- // Calls SetLabelText() with the appropriate text based on current bounds.
- void UpdateLabelText();
-
- // The state of |this|.
- SuggestionState state_;
-
- // This caches preferred heights for given widths. The key is a preferred
- // width, the value is a cached result of CanUseVerticallyCompactText.
- mutable std::map<int, std::pair<bool, int> > calculated_heights_;
-
- // The label that holds the suggestion description text.
- views::Label* label_;
- // The second (and greater) line of text that describes the suggestion.
- views::Label* label_line_2_;
- // The icon that comes just before |label_|.
- views::ImageView* icon_;
- // The input set by ShowTextfield.
- ExpandingTextfield* textfield_;
-
- DISALLOW_COPY_AND_ASSIGN(SuggestionView);
- };
-
- // A convenience struct for holding pointers to views within each detail
- // section. None of the member pointers are owned.
- struct DetailsGroup {
- explicit DetailsGroup(DialogSection section);
- DetailsGroup(const DetailsGroup& other);
- ~DetailsGroup();
-
- // The section this group is associated with.
- const DialogSection section;
- // The view that contains the entire section (label + input).
- SectionContainer* container;
- // The view that allows manual input.
- views::View* manual_input;
- // The textfields in |manual_input|, tracked by their ServerFieldType.
- TextfieldMap textfields;
- // The comboboxes in |manual_input|, tracked by their ServerFieldType.
- ComboboxMap comboboxes;
- // The view that holds the text of the suggested data. This will be
- // visible IFF |manual_input| is not visible.
- SuggestionView* suggested_info;
- // The view that allows selecting other data suggestions.
- SuggestedButton* suggested_button;
- };
-
- typedef std::map<DialogSection, DetailsGroup> DetailGroupMap;
-
- // Returns the preferred size or minimum size (if |get_minimum_size| is true).
- gfx::Size CalculatePreferredSize(bool get_minimum_size) const;
-
- // Returns the minimum size of the sign in view for this dialog.
- gfx::Size GetMinimumSignInViewSize() const;
-
- // Returns the maximum size of the sign in view for this dialog.
- gfx::Size GetMaximumSignInViewSize() const;
-
- // Returns which section should currently be used for credit card info.
- DialogSection GetCreditCardSection() const;
-
- void InitChildViews();
-
- // Creates and returns a view that holds all detail sections.
- views::View* CreateDetailsContainer();
-
- // Creates and returns a view that holds the requesting host and intro text.
- views::View* CreateNotificationArea();
-
- // Creates and returns a view that holds the main controls of this dialog.
- views::View* CreateMainContainer();
-
- // Creates a detail section (Shipping, Email, etc.) with the given label,
- // inputs View, and suggestion model. Relevant pointers are stored in |group|.
- void CreateDetailsSection(DialogSection section);
-
- // Creates the view that holds controls for inputing or selecting data for
- // a given section.
- views::View* CreateInputsContainer(DialogSection section);
-
- // Creates a grid of inputs for the given section.
- void InitInputsView(DialogSection section);
-
- // Updates the given section to match the state provided by |delegate_|. If
- // |clobber_inputs| is true, the current state of the textfields will be
- // ignored, otherwise their contents will be preserved.
- void UpdateSectionImpl(DialogSection section, bool clobber_inputs);
-
- // Updates the visual state of the given group as per the model.
- void UpdateDetailsGroupState(const DetailsGroup& group);
-
- // Gets a pointer to the DetailsGroup that's associated with the given section
- // of the dialog.
- DetailsGroup* GroupForSection(DialogSection section);
-
- // Gets a pointer to the DetailsGroup that's associated with a given |view|.
- // Returns NULL if no DetailsGroup was found.
- DetailsGroup* GroupForView(views::View* view);
-
- // Erases all views in |group| from |validity_map_|.
- void EraseInvalidViewsInGroup(const DetailsGroup* group);
-
- // Explicitly focuses the initially focusable view.
- void FocusInitialView();
-
- // Sets the visual state for an input to be either valid or invalid. This
- // should work on Comboboxes or ExpandingTextfields. If |message| is empty,
- // the input is valid.
- template<class T>
- void SetValidityForInput(T* input, const base::string16& message);
-
- // Shows an error bubble pointing at |view| if |view| has a message in
- // |validity_map_|.
- void ShowErrorBubbleForViewIfNecessary(views::View* view);
-
- // Hides |error_bubble_| (if it exists).
- void HideErrorBubble();
-
- // Updates validity of the inputs in |section| with new |validity_messages|.
- // Fields are only updated with unsure messages if |overwrite_valid| is true.
- void MarkInputsInvalid(DialogSection section,
- const ValidityMessages& validity_messages,
- bool overwrite_invalid);
-
- // Checks all manual inputs in |group| for validity. Decorates the invalid
- // ones and returns true if all were valid.
- bool ValidateGroup(const DetailsGroup& group, ValidationType type);
-
- // Checks all manual inputs in the form for validity. Decorates the invalid
- // ones and returns true if all were valid.
- bool ValidateForm();
-
- // When an input is edited (its contents change) or activated (clicked while
- // focused), this function will inform the delegate to take the appropriate
- // action (textfields may show a suggestion popup, comboboxes may rebuild the
- // section inputs). May also reset the validity state of the input.
- void InputEditedOrActivated(ServerFieldType type,
- const gfx::Rect& bounds,
- bool was_edit);
-
- // Updates the views in the button strip.
- void UpdateButtonStripExtraView();
-
- // Call this when the size of anything in the contents might have changed.
- void ContentsPreferredSizeChanged();
- void DoContentsPreferredSizeChanged();
-
- // Gets the textfield view that is shown for the given |type| or NULL.
- ExpandingTextfield* TextfieldForType(ServerFieldType type);
-
- // Returns the associated ServerFieldType for |textfield|.
- ServerFieldType TypeForTextfield(const views::View* textfield);
-
- // Gets the combobox view that is shown for the given |type|, or NULL.
- views::Combobox* ComboboxForType(ServerFieldType type);
-
- // Returns the associated ServerFieldType for |combobox|.
- ServerFieldType TypeForCombobox(const views::Combobox* combobox) const;
-
- // Called when the details container changes in size or position.
- void DetailsContainerBoundsChanged();
-
- // Sets the icons in |section| according to the field values. For example,
- // sets the credit card and CVC icons according to the credit card number.
- void SetIconsForSection(DialogSection section);
-
- // Handles mouse presses on the non-client view.
- void NonClientMousePressed();
-
- // The delegate that drives this view. Weak pointer, always non-NULL.
- AutofillDialogViewDelegate* const delegate_;
-
- // The preferred size of the view, cached to avoid needless recomputation.
- mutable gfx::Size preferred_size_;
-
- // The current number of unmatched calls to UpdatesStarted.
- int updates_scope_;
-
- // True when there's been a call to ContentsPreferredSizeChanged() suppressed
- // due to an unmatched UpdatesStarted.
- bool needs_update_;
-
- // The window that displays the dialog contents. Weak pointer; may be NULL
- // when the dialog is closing.
- views::Widget* window_;
-
- // A DialogSection-keyed map of the DetailGroup structs.
- DetailGroupMap detail_groups_;
-
- // Somewhere to show notification messages about errors, warnings, or promos.
- NotificationArea* notification_area_;
-
- // Runs the suggestion menu (triggered by each section's |suggested_button|).
- std::unique_ptr<views::MenuRunner> menu_runner_;
-
- // View that wraps |details_container_| and makes it scroll vertically.
- views::ScrollView* scrollable_area_;
-
- // View to host details sections.
- DetailsContainerView* details_container_;
-
- // The "Extra view" is on the same row as the dialog buttons.
- views::View* button_strip_extra_view_;
-
- // This checkbox controls whether new details are saved to the Autofill
- // database. It lives in |extra_view_|.
- views::Checkbox* save_in_chrome_checkbox_;
-
- // Holds the above checkbox and an associated tooltip icon.
- views::View* save_in_chrome_checkbox_container_;
-
- // View that aren't in the hierarchy but are owned by |this|. Currently
- // just holds the (hidden) country comboboxes.
- ScopedVector<views::View> other_owned_views_;
-
- // The focus manager for |window_|.
- views::FocusManager* focus_manager_;
-
- // The object that manages the error bubble widget.
- InfoBubble* error_bubble_; // Weak; owns itself.
-
- // Map from input view (textfield or combobox) to error string.
- std::map<views::View*, base::string16> validity_map_;
-
- ScopedObserver<views::Widget, AutofillDialogViews> observer_;
-
- // Used to tell the delegate when focus moves to hide the Autofill popup.
- std::unique_ptr<ui::EventHandler> event_handler_;
-
- DISALLOW_COPY_AND_ASSIGN(AutofillDialogViews);
-};
-
-} // namespace autofill
-
-#endif // CHROME_BROWSER_UI_VIEWS_AUTOFILL_AUTOFILL_DIALOG_VIEWS_H_

Powered by Google App Engine
This is Rietveld 408576698