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.
5 #ifndef CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_ICON_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_ICON_VIEW_H_
8 #include "chrome/browser/ui/views/location_bar/page_info_helper.h"
9 #include "ui/views/controls/image_view.h"
11 class LocationBarView
;
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
{
18 explicit LocationIconView(LocationBarView
* location_bar
);
19 ~LocationIconView() override
;
22 bool OnMousePressed(const ui::MouseEvent
& event
) override
;
23 void OnMouseReleased(const ui::MouseEvent
& event
) override
;
24 bool OnMouseDragged(const ui::MouseEvent
& event
) override
;
27 void OnGestureEvent(ui::GestureEvent
* event
) override
;
29 // Whether we should show the tooltip for this icon or not.
30 void ShowTooltip(bool show
);
32 PageInfoHelper
* page_info_helper() { return &page_info_helper_
; }
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
);
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_
;
44 PageInfoHelper page_info_helper_
;
46 DISALLOW_COPY_AND_ASSIGN(LocationIconView
);
49 #endif // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_ICON_VIEW_H_