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;
12class 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