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_COCOA_LOCATION_BAR_ZOOM_DECORATION_H_ 6 #define CHROME_BROWSER_UI_COCOA_LOCATION_BAR_ZOOM_DECORATION_H_ 7 8 #import <Cocoa/Cocoa.h> 9 10 #include "base/basictypes.h" 11 #import "chrome/browser/ui/cocoa/browser/zoom_bubble_controller.h" 12 #include "chrome/browser/ui/cocoa/location_bar/image_decoration.h" 13 14 class LocationBarViewMac; 15 @class ZoomBubbleController; 16 class ZoomController; 17 class ZoomDecorationTest; 18 19 // Zoom icon at the end of the omnibox (close to page actions) when at a 20 // non-standard zoom level. 21 class ZoomDecoration : public ImageDecoration, 22 public ZoomBubbleControllerDelegate { 23 public: 24 explicit ZoomDecoration(LocationBarViewMac* owner); 25 virtual ~ZoomDecoration(); 26 27 // Called when this decoration should show or hide itself in its most current 28 // state. 29 void Update(ZoomController* zoom_controller); 30 31 // Shows the zoom bubble for this decoration. If |auto_close| is YES, then 32 // the bubble will automatically close after a fixed period of time. 33 void ShowBubble(BOOL auto_close); 34 35 // Closes the zoom bubble. 36 void CloseBubble(); 37 38 private: 39 friend ZoomDecorationTest; 40 41 bool IsAtDefaultZoom() const; 42 bool ShouldShowDecoration() const; 43 44 // LocationBarDecoration implementation. 45 virtual bool AcceptsMousePress() OVERRIDE; 46 virtual bool OnMousePressed(NSRect frame, NSPoint location) OVERRIDE; 47 virtual NSString* GetToolTip() OVERRIDE; 48 virtual NSPoint GetBubblePointInFrame(NSRect frame) OVERRIDE; 49 50 // ZoomBubbleControllerDelegate implementation. 51 virtual content::WebContents* GetWebContents() OVERRIDE; 52 virtual void OnClose() OVERRIDE; 53 54 // The control that owns this. Weak. 55 LocationBarViewMac* owner_; 56 57 // The bubble that this decoration shows. Weak, owns self. 58 ZoomBubbleController* bubble_; 59 60 // The string to show for a tooltip. 61 base::scoped_nsobject<NSString> tooltip_; 62 63 DISALLOW_COPY_AND_ASSIGN(ZoomDecoration); 64 }; 65 66 #endif // CHROME_BROWSER_UI_COCOA_LOCATION_BAR_ZOOM_DECORATION_H_ 67