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 #ifndef CHROME_BROWSER_UI_COCOA_PERMISSION_BUBBLE_COCOA_H_ 6 #define CHROME_BROWSER_UI_COCOA_PERMISSION_BUBBLE_COCOA_H_ 7 8 #include "base/mac/scoped_nsobject.h" 9 #include "base/macros.h" 10 #include "base/memory/weak_ptr.h" 11 #include "chrome/browser/ui/website_settings/permission_bubble_view.h" 12 #include "content/public/browser/web_contents.h" 13 14 #ifdef __OBJC__ 15 @class PermissionBubbleController; 16 #else 17 class PermissionBubbleController; 18 #endif 19 20 class PermissionBubbleCocoa : public PermissionBubbleView { 21 public: 22 explicit PermissionBubbleCocoa(NSWindow* parent_window); 23 virtual ~PermissionBubbleCocoa(); 24 25 // PermissionBubbleView interface. 26 virtual void Show(const std::vector<PermissionBubbleRequest*>& requests, 27 const std::vector<bool>& accept_state, 28 bool customization_mode) OVERRIDE; 29 virtual void Hide() OVERRIDE; 30 virtual bool IsVisible() OVERRIDE; 31 virtual void SetDelegate(Delegate* delegate) OVERRIDE; 32 virtual bool CanAcceptRequestUpdate() OVERRIDE; 33 34 // Called when |bubbleController_| is closing. 35 void OnBubbleClosing(); 36 37 // Returns the point, in screen coordinates, to which the bubble's arrow 38 // should point. 39 NSPoint GetAnchorPoint(); 40 41 // Returns the NSWindow containing the bubble. 42 NSWindow* window(); 43 44 private: 45 NSWindow* parent_window_; // Weak. 46 Delegate* delegate_; // Weak. 47 48 // Cocoa-side UI controller for the bubble. Weak, as it will close itself. 49 PermissionBubbleController* bubbleController_; 50 51 DISALLOW_COPY_AND_ASSIGN(PermissionBubbleCocoa); 52 }; 53 54 #endif // CHROME_BROWSER_UI_COCOA_PERMISSION_BUBBLE_COCOA_H_ 55