Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / website_settings / permission_bubble_cocoa.h
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   ~PermissionBubbleCocoa() override;
24
25   // PermissionBubbleView interface.
26   void Show(const std::vector<PermissionBubbleRequest*>& requests,
27             const std::vector<bool>& accept_state,
28             bool customization_mode) override;
29   void Hide() override;
30   bool IsVisible() override;
31   void SetDelegate(Delegate* delegate) override;
32   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_