1 // Copyright 2014 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 #import <Cocoa/Cocoa.h> 6 7 #include "base/mac/scoped_nsobject.h" 8 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" 9 #include "chrome/browser/ui/website_settings/permission_bubble_view.h" 10 #include "ui/base/models/simple_menu_model.h" 11 12 @class MenuController; 13 class PermissionBubbleCocoa; 14 class PermissionBubbleRequest; 15 16 @interface PermissionBubbleController : 17 BaseBubbleController<NSTextViewDelegate> { 18 @private 19 // Array of views that are the checkboxes for every requested permission. 20 // Only populated if |customizationMode| is YES when the UI is shown. 21 base::scoped_nsobject<NSMutableArray> checkboxes_; 22 23 // Delegate to be informed of user actions. 24 PermissionBubbleView::Delegate* delegate_; // Weak. 25 26 // Delegate that receives menu events on behalf of this. 27 scoped_ptr<ui::SimpleMenuModel::Delegate> menuDelegate_; 28 29 // Bridge to the C++ class that created this object. 30 PermissionBubbleCocoa* bridge_; // Weak. 31 } 32 33 // Designated initializer. |parentWindow| and |bridge| must both be non-nil. 34 - (id)initWithParentWindow:(NSWindow*)parentWindow 35 bridge:(PermissionBubbleCocoa*)bridge; 36 37 // Makes the bubble visible, with an arrow pointing to |anchor|. The bubble 38 // will be populated with text retrieved from |requests|. If 39 // |customizationMode| is YES, each request will have a checkbox, with its state 40 // set to the corresponding element in |acceptStates|. If it is NO, each 41 // request will have a bullet point and |acceptStates| may be empty. |delegate| 42 // will receive callbacks for user actions. 43 - (void)showAtAnchor:(NSPoint)anchor 44 withDelegate:(PermissionBubbleView::Delegate*)delegate 45 forRequests:(const std::vector<PermissionBubbleRequest*>&)requests 46 acceptStates:(const std::vector<bool>&)acceptStates 47 customizationMode:(BOOL)customizationMode; 48 49 // Called when a menu item is selected. 50 - (void)onMenuItemClicked:(int)commandId; 51 52 @end 53