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 10 class AppNotificationBridge; 11 12 namespace info_bubble { 13 14 enum AnimationMask { 15 kAnimateNone = 0, 16 kAnimateOrderIn = 1 << 1, 17 kAnimateOrderOut = 1 << 2, 18 }; 19 typedef 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