• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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 #include "chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h"
9 #include "url/gurl.h"
10 
11 @class BrowserWindowController;
12 class Browser;
13 @class GTMUILocalizerAndLayoutTweaker;
14 
15 // The FullscreenExitBubbleController manages the bubble that tells the user
16 // how to escape fullscreen mode. The bubble only appears when a tab requests
17 // fullscreen mode via webkitRequestFullScreen().
18 @interface FullscreenExitBubbleController :
19     NSWindowController<NSTextViewDelegate, NSAnimationDelegate> {
20  @private
21   BrowserWindowController* owner_;  // weak
22   Browser* browser_; // weak
23   GURL url_;
24   FullscreenExitBubbleType bubbleType_;
25 
26  @protected
27   IBOutlet NSTextField* exitLabelPlaceholder_;
28   IBOutlet NSTextField* messageLabel_;
29   IBOutlet NSButton* allowButton_;
30   IBOutlet NSButton* denyButton_;
31   IBOutlet GTMUILocalizerAndLayoutTweaker* tweaker_;
32 
33   // Text fields don't work as well with embedded links as text views, but
34   // text views cannot conveniently be created in IB. The xib file contains
35   // a text field |exitLabelPlaceholder_| that's replaced by this text view
36   // |exitLabel_| in -awakeFromNib.
37   base::scoped_nsobject<NSTextView> exitLabel_;
38 
39   base::scoped_nsobject<NSTimer> hideTimer_;
40   base::scoped_nsobject<NSAnimation> hideAnimation_;
41 };
42 
43 // Initializes a new InfoBarController.
44 - (id)initWithOwner:(BrowserWindowController*)owner
45             browser:(Browser*)browser
46                 url:(const GURL&)url
47          bubbleType:(FullscreenExitBubbleType)bubbleType;
48 
49 - (void)allow:(id)sender;
50 - (void)deny:(id)sender;
51 
52 - (void)showWindow;
53 - (void)closeImmediately;
54 
55 // Positions the fullscreen exit bubble in the top-center of the window.
56 - (void)positionInWindowAtTop:(CGFloat)maxY width:(CGFloat)maxWidth;
57 
58 @end
59