Home | History | Annotate | Download | only in location_bar
      1 // Copyright 2013 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_BUBBLE_ICON_VIEW_H_
      6 #define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_BUBBLE_ICON_VIEW_H_
      7 
      8 #include "ui/views/controls/image_view.h"
      9 
     10 class CommandUpdater;
     11 
     12 // Represents an icon on the omnibox that shows a bubble when clicked.
     13 class BubbleIconView : public views::ImageView {
     14  protected:
     15   enum ExecuteSource {
     16     EXECUTE_SOURCE_MOUSE,
     17     EXECUTE_SOURCE_KEYBOARD,
     18     EXECUTE_SOURCE_GESTURE,
     19   };
     20 
     21   explicit BubbleIconView(CommandUpdater* command_updater, int command_id);
     22   virtual ~BubbleIconView();
     23 
     24   // Returns true if a related bubble is showing.
     25   virtual bool IsBubbleShowing() const = 0;
     26 
     27   // Invoked prior to executing the command.
     28   virtual void OnExecuting(ExecuteSource execute_source) = 0;
     29 
     30   // views::ImageView:
     31   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
     32   virtual bool GetTooltipText(const gfx::Point& p, base::string16* tooltip)
     33       const OVERRIDE;
     34   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
     35   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
     36   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
     37 
     38   // ui::EventHandler:
     39   virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
     40 
     41  private:
     42   // The CommandUpdater for the Browser object that owns the location bar.
     43   CommandUpdater* command_updater_;
     44 
     45   // The command ID executed when the user clicks this icon.
     46   const int command_id_;
     47 
     48   // This is used to check if the bookmark bubble was showing during the mouse
     49   // pressed event. If this is true then the mouse released event is ignored to
     50   // prevent the bubble from reshowing.
     51   bool suppress_mouse_released_action_;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(BubbleIconView);
     54 };
     55 
     56 #endif  // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_BUBBLE_ICON_VIEW_H_
     57