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