Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.h

Issue 9460045: Add Mac interface for installing bundles of extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROLLER _H_ 5 #ifndef CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROLLER _H_
6 #define CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROLLER _H_ 6 #define CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROLLER _H_
7 #pragma once 7 #pragma once
8 8
9 #import <Cocoa/Cocoa.h> 9 #import <Cocoa/Cocoa.h>
10 10
11 #import "base/mac/cocoa_protocols.h" 11 #import "base/mac/cocoa_protocols.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #import "chrome/browser/ui/cocoa/browser_window_controller.h" 13 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
14 #include "third_party/skia/include/core/SkBitmap.h" 14 #include "third_party/skia/include/core/SkBitmap.h"
15 15
16 class Browser; 16 class Browser;
17 class Extension; 17 class Extension;
18 class ExtensionLoadedNotificationObserver; 18 class ExtensionLoadedNotificationObserver;
19 @class HoverCloseButton; 19 @class HoverCloseButton;
20 @class InfoBubbleView; 20 @class InfoBubbleView;
21 21
22 namespace extensions {
23 class BundleInstaller;
24 } // namespace extensions
Robert Sesek 2012/02/27 18:59:20 nit: no end namespace comments for forward declare
jstritar 2012/03/05 18:05:08 Done.
25
22 namespace extension_installed_bubble { 26 namespace extension_installed_bubble {
23 27
24 // Maximum height or width of extension's icon (corresponds to Windows & GTK). 28 // Maximum height or width of extension's icon (corresponds to Windows & GTK).
25 const int kIconSize = 43; 29 const int kIconSize = 43;
26 30
27 // Outer vertical margin for text, icon, and closing x. 31 // Outer vertical margin for text, icon, and closing x.
28 const int kOuterVerticalMargin = 15; 32 const int kOuterVerticalMargin = 15;
29 33
30 // Inner vertical margin for text messages. 34 // Inner vertical margin for text messages.
31 const int kInnerVerticalMargin = 10; 35 const int kInnerVerticalMargin = 10;
32 36
33 // We use a different kind of notification for each of these extension types. 37 // We use a different kind of notification for each of these extension types.
34 typedef enum { 38 typedef enum {
35 kBrowserAction, 39 kBrowserAction,
36 kGeneric, 40 kGeneric,
37 kOmniboxKeyword, 41 kOmniboxKeyword,
38 kPageAction 42 kPageAction,
43 kBundle,
39 } ExtensionType; 44 } ExtensionType;
40 45
41 } 46 }
42 47
43 // Controller for the extension installed bubble. This bubble pops up after 48 // Controller for the extension installed bubble. This bubble pops up after
44 // an extension has been installed to inform the user that the install happened 49 // an extension has been installed to inform the user that the install happened
45 // properly, and to let the user know how to manage this extension in the 50 // properly, and to let the user know how to manage this extension in the
46 // future. 51 // future.
47 @interface ExtensionInstalledBubbleController : 52 @interface ExtensionInstalledBubbleController :
48 NSWindowController<NSWindowDelegate> { 53 NSWindowController<NSWindowDelegate> {
49 @private 54 @private
50 NSWindow* parentWindow_; // weak 55 NSWindow* parentWindow_; // weak
51 const Extension* extension_; // weak 56 const Extension* extension_; // weak
57 const extensions::BundleInstaller* bundle_; // weak
52 Browser* browser_; // weak 58 Browser* browser_; // weak
53 scoped_nsobject<NSImage> icon_; 59 scoped_nsobject<NSImage> icon_;
54 60
55 extension_installed_bubble::ExtensionType type_; 61 extension_installed_bubble::ExtensionType type_;
56 62
57 // We need to remove the page action immediately when the browser window 63 // We need to remove the page action immediately when the browser window
58 // closes while this bubble is still open, so the bubble's closing animation 64 // closes while this bubble is still open, so the bubble's closing animation
59 // doesn't overlap browser destruction. 65 // doesn't overlap browser destruction.
60 BOOL pageActionRemoved_; 66 BOOL pageActionRemoved_;
61 67
62 // Lets us register for EXTENSION_LOADED notifications. The actual 68 // Lets us register for EXTENSION_LOADED notifications. The actual
63 // notifications are sent to the observer object, which proxies them 69 // notifications are sent to the observer object, which proxies them
64 // back to the controller. 70 // back to the controller.
65 scoped_ptr<ExtensionLoadedNotificationObserver> extensionObserver_; 71 scoped_ptr<ExtensionLoadedNotificationObserver> extensionObserver_;
66 72
67 // References below are weak, being obtained from the nib. 73 // References below are weak, being obtained from the nib.
68 IBOutlet InfoBubbleView* infoBubbleView_; 74 IBOutlet InfoBubbleView* infoBubbleView_;
69 IBOutlet HoverCloseButton* closeButton_; 75 IBOutlet HoverCloseButton* closeButton_;
70 IBOutlet NSImageView* iconImage_; 76 IBOutlet NSImageView* iconImage_;
71 IBOutlet NSTextField* extensionInstalledMsg_; 77 IBOutlet NSTextField* extensionInstalledMsg_;
72 // Only shown for page actions and omnibox keywords. 78 // Only shown for page actions and omnibox keywords.
73 IBOutlet NSTextField* extraInfoMsg_; 79 IBOutlet NSTextField* extraInfoMsg_;
74 IBOutlet NSTextField* extensionInstalledInfoMsg_; 80 IBOutlet NSTextField* extensionInstalledInfoMsg_;
81 // Only shown for bundle installs.
82 IBOutlet NSTextField* installedHeadingMsg_;
83 IBOutlet NSTextField* installedItemsMsg_;
84 IBOutlet NSTextField* failedHeadingMsg_;
85 IBOutlet NSTextField* failedItemsMsg_;
75 } 86 }
76 87
77 @property(nonatomic, readonly) const Extension* extension; 88 @property(nonatomic, readonly) const Extension* extension;
89 @property(nonatomic, readonly) const extensions::BundleInstaller* bundle;
78 @property(nonatomic) BOOL pageActionRemoved; 90 @property(nonatomic) BOOL pageActionRemoved;
79 91
80 // Initialize the window, and then create observers to wait for the extension 92 // Initialize the window, and then create observers to wait for the extension
81 // to complete loading, or the browser window to close. 93 // to complete loading, or the browser window to close.
82 - (id)initWithParentWindow:(NSWindow*)parentWindow 94 - (id)initWithParentWindow:(NSWindow*)parentWindow
83 extension:(const Extension*)extension 95 extension:(const Extension*)extension
96 bundle:(const extensions::BundleInstaller*)bundle
84 browser:(Browser*)browser 97 browser:(Browser*)browser
85 icon:(SkBitmap)icon; 98 icon:(SkBitmap)icon;
86 99
87 // Action for close button. 100 // Action for close button.
88 - (IBAction)closeWindow:(id)sender; 101 - (IBAction)closeWindow:(id)sender;
89 102
90 // Displays the extension installed bubble. This callback is triggered by 103 // Displays the extension installed bubble. This callback is triggered by
91 // the extensionObserver when the extension has completed loading. 104 // the extensionObserver when the extension has completed loading.
92 - (void)showWindow:(id)sender; 105 - (void)showWindow:(id)sender;
93 106
94 // Clears our weak pointer to the Extension. This callback is triggered by 107 // Clears our weak pointer to the Extension. This callback is triggered by
95 // the extensionObserver when the extension is unloaded. 108 // the extensionObserver when the extension is unloaded.
96 - (void)extensionUnloaded:(id)sender; 109 - (void)extensionUnloaded:(id)sender;
97 110
98 @end 111 @end
99 112
100 @interface ExtensionInstalledBubbleController(ExposedForTesting) 113 @interface ExtensionInstalledBubbleController(ExposedForTesting)
101 114
102 - (void)removePageActionPreviewIfNecessary; 115 - (void)removePageActionPreviewIfNecessary;
103 - (NSWindow*)initializeWindow; 116 - (NSWindow*)initializeWindow;
104 - (int)calculateWindowHeight; 117 - (int)calculateWindowHeight;
105 - (void)setMessageFrames:(int)newWindowHeight; 118 - (void)setMessageFrames:(int)newWindowHeight;
106 - (NSRect)getExtensionInstalledMsgFrame; 119 - (NSRect)getExtensionInstalledMsgFrame;
107 - (NSRect)getExtraInfoMsgFrame; 120 - (NSRect)getExtraInfoMsgFrame;
108 - (NSRect)getExtensionInstalledInfoMsgFrame; 121 - (NSRect)getExtensionInstalledInfoMsgFrame;
109 122
110 @end // ExtensionInstalledBubbleController(ExposedForTesting) 123 @end // ExtensionInstalledBubbleController(ExposedForTesting)
111 124
112 #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROL LER_H_ 125 #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROL LER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698