Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / location_bar / location_icon_view.h
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_VIEWS_LOCATION_BAR_LOCATION_ICON_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_ICON_VIEW_H_
7
8 #include "chrome/browser/ui/views/location_bar/page_info_helper.h"
9 #include "ui/views/controls/image_view.h"
10
11 class LocationBarView;
12
13 // LocationIconView is used to display an icon to the left of the edit field.
14 // This shows the user's current action while editing, the page security
15 // status on https pages, or a globe for other URLs.
16 class LocationIconView : public views::ImageView {
17  public:
18   explicit LocationIconView(LocationBarView* location_bar);
19   ~LocationIconView() override;
20
21   // views::ImageView:
22   bool OnMousePressed(const ui::MouseEvent& event) override;
23   void OnMouseReleased(const ui::MouseEvent& event) override;
24   bool OnMouseDragged(const ui::MouseEvent& event) override;
25
26   // ui::EventHandler:
27   void OnGestureEvent(ui::GestureEvent* event) override;
28
29   // Whether we should show the tooltip for this icon or not.
30   void ShowTooltip(bool show);
31
32   PageInfoHelper* page_info_helper() { return &page_info_helper_; }
33
34  private:
35   // Handles both click and gesture events by delegating to the page info
36   // helper in the appropriate circumstances.
37   void OnClickOrTap(const ui::LocatedEvent& event);
38
39   // Set to true when the bubble is already showing at the time the icon is
40   // clicked. This suppresses re-showing the bubble on mouse release, so that
41   // clicking the icon repeatedly will appear to toggle the bubble on and off.
42   bool suppress_mouse_released_action_;
43
44   PageInfoHelper page_info_helper_;
45
46   DISALLOW_COPY_AND_ASSIGN(LocationIconView);
47 };
48
49 #endif  // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_ICON_VIEW_H_