Home | History | Annotate | Download | only in website_settings
      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