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