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 #ifndef CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_VIEW_CONTROLLER_H_ 6 #define CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_VIEW_CONTROLLER_H_ 7 8 #include <vector> 9 10 #import <Cocoa/Cocoa.h> 11 12 #include "base/mac/scoped_nsobject.h" 13 #include "base/memory/ref_counted.h" 14 #include "base/strings/string16.h" 15 #include "chrome/browser/extensions/extension_install_prompt.h" 16 #include "ui/gfx/image/image_skia.h" 17 18 namespace content { 19 class PageNavigator; 20 } 21 22 // Displays the extension or bundle install prompt, and notifies the 23 // ExtensionInstallPrompt::Delegate of success or failure 24 @interface ExtensionInstallViewController : NSViewController 25 <NSOutlineViewDataSource, 26 NSOutlineViewDelegate> { 27 IBOutlet NSImageView* iconView_; 28 IBOutlet NSTextField* titleField_; 29 IBOutlet NSTextField* itemsField_; 30 IBOutlet NSButton* cancelButton_; 31 IBOutlet NSButton* okButton_; 32 33 // Present only when the dialog has permission warnings issues to display. 34 IBOutlet NSOutlineView* outlineView_; 35 36 // Present only in the install dialogs with webstore data (inline and 37 // external). 38 IBOutlet NSBox* warningsSeparator_; // Only when there are permissions. 39 IBOutlet NSView* ratingStars_; 40 IBOutlet NSTextField* ratingCountField_; 41 IBOutlet NSTextField* userCountField_; 42 IBOutlet NSButton* storeLinkButton_; 43 44 content::PageNavigator* navigator_; // weak 45 ExtensionInstallPrompt::Delegate* delegate_; // weak 46 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_; 47 48 base::scoped_nsobject<NSArray> warnings_; 49 BOOL isComputingRowHeight_; 50 } 51 52 // For unit test use only. 53 @property(nonatomic, readonly) NSImageView* iconView; 54 @property(nonatomic, readonly) NSTextField* titleField; 55 @property(nonatomic, readonly) NSTextField* itemsField; 56 @property(nonatomic, readonly) NSButton* cancelButton; 57 @property(nonatomic, readonly) NSButton* okButton; 58 @property(nonatomic, readonly) NSOutlineView* outlineView; 59 @property(nonatomic, readonly) NSBox* warningsSeparator; 60 @property(nonatomic, readonly) NSView* ratingStars; 61 @property(nonatomic, readonly) NSTextField* ratingCountField; 62 @property(nonatomic, readonly) NSTextField* userCountField; 63 @property(nonatomic, readonly) NSButton* storeLinkButton; 64 65 - (id)initWithNavigator:(content::PageNavigator*)navigator 66 delegate:(ExtensionInstallPrompt::Delegate*)delegate 67 prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt; 68 - (IBAction)storeLinkClicked:(id)sender; // Callback for "View details" link. 69 - (IBAction)cancel:(id)sender; 70 - (IBAction)ok:(id)sender; 71 72 @end 73 74 #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_VIEW_CONTROLLER_H_ 75