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 CONTENT_BROWSER_RENDERER_HOST_WEBMENURUNNER_MAC_H_ 6 #define CONTENT_BROWSER_RENDERER_HOST_WEBMENURUNNER_MAC_H_ 7 8 #import <Cocoa/Cocoa.h> 9 10 #include <vector> 11 12 #include "base/mac/scoped_nsobject.h" 13 #include "content/public/common/menu_item.h" 14 15 16 // WebMenuRunner --------------------------------------------------------------- 17 // A class for determining whether an item was selected from an HTML select 18 // control, or if the menu was dismissed without making a selection. If a menu 19 // item is selected, MenuDelegate is informed and sets a flag which can be 20 // queried after the menu has finished running. 21 22 @interface WebMenuRunner : NSObject { 23 @private 24 // The native menu control. 25 base::scoped_nsobject<NSMenu> menu_; 26 27 // A flag set to YES if a menu item was chosen, or NO if the menu was 28 // dismissed without selecting an item. 29 BOOL menuItemWasChosen_; 30 31 // The index of the selected menu item. 32 int index_; 33 34 // The font size being used for the menu. 35 CGFloat fontSize_; 36 37 // Whether the menu should be displayed right-aligned. 38 BOOL rightAligned_; 39 } 40 41 // Initializes the MenuDelegate with a list of items sent from WebKit. 42 - (id)initWithItems:(const std::vector<content::MenuItem>&)items 43 fontSize:(CGFloat)fontSize 44 rightAligned:(BOOL)rightAligned; 45 46 // Returns YES if an item was selected from the menu, NO if the menu was 47 // dismissed. 48 - (BOOL)menuItemWasChosen; 49 50 // Displays and runs a native popup menu. 51 - (void)runMenuInView:(NSView*)view 52 withBounds:(NSRect)bounds 53 initialIndex:(int)index; 54 55 // Hides a popup menu if it's visible. 56 - (void)hide; 57 58 // Returns the index of selected menu item, or its initial value (-1) if no item 59 // was selected. 60 - (int)indexOfSelectedItem; 61 62 @end // @interface WebMenuRunner 63 64 #endif // CONTENT_BROWSER_RENDERER_HOST_WEBMENURUNNER_MAC_H_ 65