15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_VIEW_CONTROLLER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_VIEW_CONTROLLER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#import <Cocoa/Cocoa.h>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/mac/scoped_nsobject.h"
13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/memory/ref_counted.h"
14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_install_prompt.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PageNavigator;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Displays the extension or bundle install prompt, and notifies the
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ExtensionInstallPrompt::Delegate of success or failure
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@interface ExtensionInstallViewController : NSViewController
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           <NSOutlineViewDataSource,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            NSOutlineViewDelegate> {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSImageView* iconView_;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSTextField* titleField_;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSTextField* itemsField_;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSButton* cancelButton_;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSButton* okButton_;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Present only when the dialog has permission warnings issues to display.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSOutlineView* outlineView_;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Present only in the install dialogs with webstore data (inline and
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // external).
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSBox* warningsSeparator_; // Only when there are permissions.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSView* ratingStars_;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSTextField* ratingCountField_;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IBOutlet NSTextField* userCountField_;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IBOutlet NSButton* storeLinkButton_;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::PageNavigator* navigator_;  // weak
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExtensionInstallPrompt::Delegate* delegate_;  // weak
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  base::scoped_nsobject<NSArray> warnings_;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BOOL isComputingRowHeight_;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// For unit test use only.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSImageView* iconView;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSTextField* titleField;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSTextField* itemsField;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSButton* cancelButton;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSButton* okButton;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSOutlineView* outlineView;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSBox* warningsSeparator;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSView* ratingStars;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSTextField* ratingCountField;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@property(nonatomic, readonly) NSTextField* userCountField;
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)@property(nonatomic, readonly) NSButton* storeLinkButton;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- (id)initWithNavigator:(content::PageNavigator*)navigator
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               delegate:(ExtensionInstallPrompt::Delegate*)delegate
67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                 prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- (IBAction)storeLinkClicked:(id)sender; // Callback for "View details" link.
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- (IBAction)cancel:(id)sender;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- (IBAction)ok:(id)sender;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@end
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_VIEW_CONTROLLER_H_
75