1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_
6#define CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_
7
8#include "ui/gfx/native_widget_types.h"
9
10namespace gfx {
11class Rect;
12}
13
14namespace ui {
15class KeyEvent;
16}
17
18namespace autofill {
19
20class AutofillPopupController;
21
22// The interface for creating and controlling a platform-dependent
23// AutofillPopupView.
24class AutofillPopupView {
25 public:
26  // The minimum amount of padding between the Autofill name and subtext,
27  // in pixels.
28  static const size_t kNamePadding = 15;
29
30  // The amount of padding between icons in pixels.
31  static const int kIconPadding = 5;
32
33  // The amount of padding at the end of the popup in pixels.
34  static const int kEndPadding = 3;
35
36  // Height of the delete icon in pixels.
37  static const int kDeleteIconHeight = 16;
38
39  // Width of the delete icon in pixels.
40  static const int kDeleteIconWidth = 16;
41
42  // Displays the Autofill popup and fills it in with data from the controller.
43  virtual void Show() = 0;
44
45  // Hides the popup from view. This will cause the popup to be deleted.
46  virtual void Hide() = 0;
47
48  // Invalidates the given row and redraw it.
49  virtual void InvalidateRow(size_t row) = 0;
50
51  // Refreshes the position of the popup.
52  virtual void UpdateBoundsAndRedrawPopup() = 0;
53
54  // Factory function for creating the view.
55  static AutofillPopupView* Create(AutofillPopupController* controller);
56
57 protected:
58  virtual ~AutofillPopupView() {}
59};
60
61}  // namespace autofill
62
63#endif  // CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_
64