| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 | 7 |
| 8 #import <Cocoa/Cocoa.h> | 8 #import <Cocoa/Cocoa.h> |
| 9 | 9 |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 11 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| 12 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" | 12 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" |
| 13 #include "third_party/skia/include/core/SkBitmap.h" | 13 #include "third_party/skia/include/core/SkBitmap.h" |
| 14 | 14 |
| 15 class Browser; | 15 class Browser; |
| 16 class ExtensionLoadedNotificationObserver; | 16 class ExtensionInstalledBubble; |
| 17 class ExtensionInstalledBubbleBridge; |
| 17 @class HyperlinkTextView; | 18 @class HyperlinkTextView; |
| 18 @class HoverCloseButton; | 19 @class HoverCloseButton; |
| 19 @class InfoBubbleView; | 20 @class InfoBubbleView; |
| 20 | 21 |
| 21 namespace extensions { | 22 namespace extensions { |
| 22 class BundleInstaller; | 23 class BundleInstaller; |
| 23 class Extension; | 24 class Extension; |
| 24 } | 25 } |
| 25 | 26 |
| 26 namespace extension_installed_bubble { | 27 namespace extension_installed_bubble { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 Browser* browser_; // weak | 63 Browser* browser_; // weak |
| 63 base::scoped_nsobject<NSImage> icon_; | 64 base::scoped_nsobject<NSImage> icon_; |
| 64 | 65 |
| 65 extension_installed_bubble::ExtensionType type_; | 66 extension_installed_bubble::ExtensionType type_; |
| 66 | 67 |
| 67 // We need to remove the page action immediately when the browser window | 68 // We need to remove the page action immediately when the browser window |
| 68 // closes while this bubble is still open, so the bubble's closing animation | 69 // closes while this bubble is still open, so the bubble's closing animation |
| 69 // doesn't overlap browser destruction. | 70 // doesn't overlap browser destruction. |
| 70 BOOL pageActionPreviewShowing_; | 71 BOOL pageActionPreviewShowing_; |
| 71 | 72 |
| 72 // Lets us register for EXTENSION_LOADED notifications. The actual | 73 // The bridge to the C++ object that performs shared logic across platforms, |
| 73 // notifications are sent to the observer object, which proxies them | 74 // like listening for the notification that the extension is loaded. This |
| 74 // back to the controller. | 75 // tells us when to show the bubble. |
| 75 scoped_ptr<ExtensionLoadedNotificationObserver> extensionObserver_; | 76 scoped_ptr<ExtensionInstalledBubbleBridge> installedBubbleBridge_; |
| 77 scoped_ptr<ExtensionInstalledBubble> installedBubble_; |
| 76 | 78 |
| 77 // References below are weak, being obtained from the nib. | 79 // References below are weak, being obtained from the nib. |
| 78 IBOutlet HoverCloseButton* closeButton_; | 80 IBOutlet HoverCloseButton* closeButton_; |
| 79 IBOutlet NSImageView* iconImage_; | 81 IBOutlet NSImageView* iconImage_; |
| 80 IBOutlet NSTextField* heading_; | 82 IBOutlet NSTextField* heading_; |
| 81 // Only shown for browser actions, page actions and omnibox keywords. | 83 // Only shown for browser actions, page actions and omnibox keywords. |
| 82 IBOutlet NSTextField* howToUse_; | 84 IBOutlet NSTextField* howToUse_; |
| 83 IBOutlet NSTextField* howToManage_; | 85 IBOutlet NSTextField* howToManage_; |
| 84 // Only shown for app installs. | 86 // Only shown for app installs. |
| 85 IBOutlet NSButton* appShortcutLink_; | 87 IBOutlet NSButton* appShortcutLink_; |
| 86 // Only shown for extensions with commands. | 88 // Only shown for extensions with commands. |
| 87 IBOutlet NSButton* manageShortcutLink_; | 89 IBOutlet NSButton* manageShortcutLink_; |
| 88 // Only shown if the sign-in promo is active. | 90 // Only shown if the sign-in promo is active. |
| 89 IBOutlet NSTextField* promoPlaceholder_; | 91 IBOutlet NSTextField* promoPlaceholder_; |
| 90 // Text fields don't work as well with embedded links as text views, but | 92 // Text fields don't work as well with embedded links as text views, but |
| 91 // text views cannot conveniently be created in IB. The xib file contains | 93 // text views cannot conveniently be created in IB. The xib file contains |
| 92 // a text field |promoPlaceholder_| that's replaced by this text view |promo_| | 94 // a text field |promoPlaceholder_| that's replaced by this text view |promo_| |
| 93 // in -awakeFromNib. | 95 // in -awakeFromNib. |
| 94 base::scoped_nsobject<HyperlinkTextView> promo_; | 96 base::scoped_nsobject<HyperlinkTextView> promo_; |
| 95 // Only shown for bundle installs. | 97 // Only shown for bundle installs. |
| 96 IBOutlet NSTextField* installedHeadingMsg_; | 98 IBOutlet NSTextField* installedHeadingMsg_; |
| 97 IBOutlet NSTextField* installedItemsMsg_; | 99 IBOutlet NSTextField* installedItemsMsg_; |
| 98 IBOutlet NSTextField* failedHeadingMsg_; | 100 IBOutlet NSTextField* failedHeadingMsg_; |
| 99 IBOutlet NSTextField* failedItemsMsg_; | 101 IBOutlet NSTextField* failedItemsMsg_; |
| 100 } | 102 } |
| 101 | 103 |
| 102 @property(nonatomic, readonly) const extensions::Extension* extension; | |
| 103 @property(nonatomic, readonly) const extensions::BundleInstaller* bundle; | 104 @property(nonatomic, readonly) const extensions::BundleInstaller* bundle; |
| 104 @property(nonatomic) BOOL pageActionPreviewShowing; | 105 @property(nonatomic) BOOL pageActionPreviewShowing; |
| 105 | 106 |
| 106 // Initialize the window, and then create observers to wait for the extension | 107 // Initialize the window, and then create observers to wait for the extension |
| 107 // to complete loading, or the browser window to close. | 108 // to complete loading, or the browser window to close. |
| 108 - (id)initWithParentWindow:(NSWindow*)parentWindow | 109 - (id)initWithParentWindow:(NSWindow*)parentWindow |
| 109 extension:(const extensions::Extension*)extension | 110 extension:(const extensions::Extension*)extension |
| 110 bundle:(const extensions::BundleInstaller*)bundle | 111 bundle:(const extensions::BundleInstaller*)bundle |
| 111 browser:(Browser*)browser | 112 browser:(Browser*)browser |
| 112 icon:(SkBitmap)icon; | 113 icon:(SkBitmap)icon; |
| 113 | 114 |
| 114 // Action for close button. | 115 // Action for close button. |
| 115 - (IBAction)closeWindow:(id)sender; | 116 - (IBAction)closeWindow:(id)sender; |
| 116 | 117 |
| 117 // From NSTextViewDelegate: | 118 // From NSTextViewDelegate: |
| 118 - (BOOL)textView:(NSTextView*)aTextView | 119 - (BOOL)textView:(NSTextView*)aTextView |
| 119 clickedOnLink:(id)link | 120 clickedOnLink:(id)link |
| 120 atIndex:(NSUInteger)charIndex; | 121 atIndex:(NSUInteger)charIndex; |
| 121 | 122 |
| 122 // Displays the extension installed bubble. This callback is triggered by | 123 // Displays the extension installed bubble. This callback is triggered by |
| 123 // the extensionObserver when the extension has completed loading. | 124 // the extensionObserver when the extension has completed loading. |
| 124 - (void)showWindow:(id)sender; | 125 - (void)showWindow:(id)sender; |
| 125 | 126 |
| 126 // Clears our weak pointer to the Extension. This callback is triggered by | |
| 127 // the extensionObserver when the extension is unloaded. | |
| 128 - (void)extensionUnloaded:(id)sender; | |
| 129 | |
| 130 // Opens the shortcut configuration UI. | 127 // Opens the shortcut configuration UI. |
| 131 - (IBAction)onManageShortcutClicked:(id)sender; | 128 - (IBAction)onManageShortcutClicked:(id)sender; |
| 132 | 129 |
| 133 // Shows the new app installed animation. | 130 // Shows the new app installed animation. |
| 134 - (IBAction)onAppShortcutClicked:(id)sender; | 131 - (IBAction)onAppShortcutClicked:(id)sender; |
| 135 | 132 |
| 136 @end | 133 @end |
| 137 | 134 |
| 138 @interface ExtensionInstalledBubbleController (ExposedForTesting) | 135 @interface ExtensionInstalledBubbleController (ExposedForTesting) |
| 139 | 136 |
| 140 - (void)removePageActionPreviewIfNecessary; | 137 - (void)removePageActionPreviewIfNecessary; |
| 141 - (NSWindow*)initializeWindow; | 138 - (NSWindow*)initializeWindow; |
| 142 - (int)calculateWindowHeight; | 139 - (int)calculateWindowHeight; |
| 143 - (void)setMessageFrames:(int)newWindowHeight; | 140 - (void)setMessageFrames:(int)newWindowHeight; |
| 144 - (NSRect)headingFrame; | 141 - (NSRect)headingFrame; |
| 145 - (NSRect)frameOfHowToUse; | 142 - (NSRect)frameOfHowToUse; |
| 146 - (NSRect)frameOfHowToManage; | 143 - (NSRect)frameOfHowToManage; |
| 147 - (NSRect)frameOfSigninPromo; | 144 - (NSRect)frameOfSigninPromo; |
| 148 - (BOOL)showSyncPromo; | 145 - (BOOL)showSyncPromo; |
| 149 - (NSButton*)appInstalledShortcutLink; | 146 - (NSButton*)appInstalledShortcutLink; |
| 150 | 147 |
| 151 @end // ExtensionInstalledBubbleController(ExposedForTesting) | 148 @end // ExtensionInstalledBubbleController(ExposedForTesting) |
| 152 | 149 |
| 153 #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROL
LER_H_ | 150 #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_CONTROL
LER_H_ |
| OLD | NEW |