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/memory/scoped_ptr.h" 8#import "chrome/browser/ui/cocoa/chrome_event_processing_window.h" 9 10class AppNotificationBridge; 11 12namespace info_bubble { 13 14enum AnimationMask { 15 kAnimateNone = 0, 16 kAnimateOrderIn = 1 << 1, 17 kAnimateOrderOut = 1 << 2, 18}; 19typedef NSUInteger AllowedAnimations; 20 21} // namespace info_bubble 22 23// A rounded window with an arrow used for example when you click on the STAR 24// button or that pops up within our first-run UI. 25@interface InfoBubbleWindow : ChromeEventProcessingWindow { 26 @private 27 // Is self in the process of closing. 28 BOOL closing_; 29 30 // Specifies if window order in and order out animations are allowed. By 31 // default both types of animations are allowed. 32 info_bubble::AllowedAnimations allowedAnimations_; 33 34 // If NO the window will never become key. 35 // Default YES. 36 BOOL canBecomeKeyWindow_; 37 38 // If NO the window will not share key state with its parent. Defaults to YES. 39 // Can be set both by external callers, but is also changed internally, in 40 // response to resignKeyWindow and becomeKeyWindow events. 41 BOOL allowShareParentKeyState_; 42 43 // Bridge to proxy Chrome notifications to the window. 44 scoped_ptr<AppNotificationBridge> notificationBridge_; 45} 46 47@property(nonatomic) info_bubble::AllowedAnimations allowedAnimations; 48@property(nonatomic) BOOL canBecomeKeyWindow; 49@property(nonatomic) BOOL allowShareParentKeyState; 50 51// Returns YES if the window is in the process of closing. 52// Can't use "windowWillClose" notification because that will be sent 53// after the closing animation has completed. 54- (BOOL)isClosing; 55 56@end 57