| 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 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h" | 5 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/i18n/rtl.h" | 8 #include "base/i18n/rtl.h" |
| 9 #include "base/mac/bundle_locations.h" | 9 #include "base/mac/bundle_locations.h" |
| 10 #include "base/mac/mac_util.h" | 10 #include "base/mac/mac_util.h" |
| 11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
| 12 #include "base/strings/sys_string_conversions.h" | 12 #include "base/strings/sys_string_conversions.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 14 #include "chrome/browser/extensions/bundle_installer.h" | 14 #include "chrome/browser/extensions/bundle_installer.h" |
| 15 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/browser/ui/browser.h" |
| 15 #import "chrome/browser/ui/chrome_style.h" | 17 #import "chrome/browser/ui/chrome_style.h" |
| 18 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
| 16 #include "chrome/common/extensions/extension_constants.h" | 19 #include "chrome/common/extensions/extension_constants.h" |
| 17 #include "chrome/grit/generated_resources.h" | 20 #include "chrome/grit/generated_resources.h" |
| 18 #include "content/public/browser/page_navigator.h" | 21 #include "content/public/browser/page_navigator.h" |
| 19 #include "extensions/common/extension.h" | 22 #include "extensions/common/extension.h" |
| 20 #include "extensions/common/extension_urls.h" | 23 #include "extensions/common/extension_urls.h" |
| 21 #include "skia/ext/skia_utils_mac.h" | 24 #include "skia/ext/skia_utils_mac.h" |
| 22 #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTw
eaker.h" | 25 #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTw
eaker.h" |
| 23 #import "ui/base/cocoa/controls/hyperlink_button_cell.h" | 26 #import "ui/base/cocoa/controls/hyperlink_button_cell.h" |
| 24 #include "ui/base/l10n/l10n_util.h" | 27 #include "ui/base/l10n/l10n_util.h" |
| 25 #include "ui/base/l10n/l10n_util_mac.h" | 28 #include "ui/base/l10n/l10n_util_mac.h" |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 @synthesize itemsField = itemsField_; | 182 @synthesize itemsField = itemsField_; |
| 180 @synthesize cancelButton = cancelButton_; | 183 @synthesize cancelButton = cancelButton_; |
| 181 @synthesize okButton = okButton_; | 184 @synthesize okButton = okButton_; |
| 182 @synthesize outlineView = outlineView_; | 185 @synthesize outlineView = outlineView_; |
| 183 @synthesize warningsSeparator = warningsSeparator_; | 186 @synthesize warningsSeparator = warningsSeparator_; |
| 184 @synthesize ratingStars = ratingStars_; | 187 @synthesize ratingStars = ratingStars_; |
| 185 @synthesize ratingCountField = ratingCountField_; | 188 @synthesize ratingCountField = ratingCountField_; |
| 186 @synthesize userCountField = userCountField_; | 189 @synthesize userCountField = userCountField_; |
| 187 @synthesize storeLinkButton = storeLinkButton_; | 190 @synthesize storeLinkButton = storeLinkButton_; |
| 188 | 191 |
| 189 - (id)initWithNavigator:(content::PageNavigator*)navigator | 192 - (id)initWithProfile:(Profile*)profile |
| 190 delegate:(ExtensionInstallPrompt::Delegate*)delegate | 193 navigator:(content::PageNavigator*)navigator |
| 191 prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt { | 194 delegate:(ExtensionInstallPrompt::Delegate*)delegate |
| 195 prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt { |
| 192 // We use a different XIB in the case of bundle installs, installs with | 196 // We use a different XIB in the case of bundle installs, installs with |
| 193 // webstore data, or no permission warnings. These are laid out nicely for | 197 // webstore data, or no permission warnings. These are laid out nicely for |
| 194 // the data they display. | 198 // the data they display. |
| 195 NSString* nibName = nil; | 199 NSString* nibName = nil; |
| 196 if (prompt->type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT) { | 200 if (prompt->type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT) { |
| 197 nibName = @"ExtensionInstallPromptBundle"; | 201 nibName = @"ExtensionInstallPromptBundle"; |
| 198 } else if (prompt->has_webstore_data()) { | 202 } else if (prompt->has_webstore_data()) { |
| 199 nibName = @"ExtensionInstallPromptWebstoreData"; | 203 nibName = @"ExtensionInstallPromptWebstoreData"; |
| 200 } else if (!prompt->ShouldShowPermissions() && | 204 } else if (!prompt->ShouldShowPermissions() && |
| 201 prompt->GetRetainedFileCount() == 0 && | 205 prompt->GetRetainedFileCount() == 0 && |
| 202 prompt->GetRetainedDeviceCount() == 0) { | 206 prompt->GetRetainedDeviceCount() == 0) { |
| 203 nibName = @"ExtensionInstallPromptNoWarnings"; | 207 nibName = @"ExtensionInstallPromptNoWarnings"; |
| 204 } else { | 208 } else { |
| 205 nibName = @"ExtensionInstallPrompt"; | 209 nibName = @"ExtensionInstallPrompt"; |
| 206 } | 210 } |
| 207 | 211 |
| 208 if ((self = [super initWithNibName:nibName | 212 if ((self = [super initWithNibName:nibName |
| 209 bundle:base::mac::FrameworkBundle()])) { | 213 bundle:base::mac::FrameworkBundle()])) { |
| 214 profile_ = profile; |
| 210 navigator_ = navigator; | 215 navigator_ = navigator; |
| 211 delegate_ = delegate; | 216 delegate_ = delegate; |
| 212 prompt_ = prompt; | 217 prompt_ = prompt; |
| 213 warnings_.reset([[self buildWarnings:*prompt] retain]); | 218 warnings_.reset([[self buildWarnings:*prompt] retain]); |
| 214 } | 219 } |
| 215 return self; | 220 return self; |
| 216 } | 221 } |
| 217 | 222 |
| 218 - (IBAction)storeLinkClicked:(id)sender { | 223 - (IBAction)storeLinkClicked:(id)sender { |
| 219 GURL store_url(extension_urls::GetWebstoreItemDetailURLPrefix() + | 224 GURL store_url(extension_urls::GetWebstoreItemDetailURLPrefix() + |
| 220 prompt_->extension()->id()); | 225 prompt_->extension()->id()); |
| 221 navigator_->OpenURL(OpenURLParams( | 226 OpenURLParams params(store_url, Referrer(), NEW_FOREGROUND_TAB, |
| 222 store_url, Referrer(), NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_LINK, | 227 ui::PAGE_TRANSITION_LINK, false); |
| 223 false)); | 228 if (navigator_) { |
| 229 navigator_->OpenURL(params); |
| 230 } else { |
| 231 chrome::ScopedTabbedBrowserDisplayer displayer( |
| 232 profile_, chrome::GetActiveDesktop()); |
| 233 displayer.browser()->OpenURL(params); |
| 234 } |
| 224 | 235 |
| 225 delegate_->InstallUIAbort(/*user_initiated=*/true); | 236 delegate_->InstallUIAbort(/*user_initiated=*/true); |
| 226 } | 237 } |
| 227 | 238 |
| 228 - (IBAction)cancel:(id)sender { | 239 - (IBAction)cancel:(id)sender { |
| 229 delegate_->InstallUIAbort(/*user_initiated=*/true); | 240 delegate_->InstallUIAbort(/*user_initiated=*/true); |
| 230 } | 241 } |
| 231 | 242 |
| 232 - (IBAction)ok:(id)sender { | 243 - (IBAction)ok:(id)sender { |
| 233 delegate_->InstallUIProceed(); | 244 delegate_->InstallUIProceed(); |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 803 } | 814 } |
| 804 | 815 |
| 805 - (void)accessibilityPerformAction:(NSString*)action { | 816 - (void)accessibilityPerformAction:(NSString*)action { |
| 806 if ([action isEqualToString:NSAccessibilityPressAction]) | 817 if ([action isEqualToString:NSAccessibilityPressAction]) |
| 807 [self handleLinkClicked]; | 818 [self handleLinkClicked]; |
| 808 else | 819 else |
| 809 [super accessibilityPerformAction:action]; | 820 [super accessibilityPerformAction:action]; |
| 810 } | 821 } |
| 811 | 822 |
| 812 @end | 823 @end |
| OLD | NEW |