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" |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
183 prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt { | 183 prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt { |
184 // We use a different XIB in the case of bundle installs, installs with | 184 // We use a different XIB in the case of bundle installs, installs with |
185 // webstore data, or no permission warnings. These are laid out nicely for | 185 // webstore data, or no permission warnings. These are laid out nicely for |
186 // the data they display. | 186 // the data they display. |
187 NSString* nibName = nil; | 187 NSString* nibName = nil; |
188 if (prompt->type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT) { | 188 if (prompt->type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT) { |
189 nibName = @"ExtensionInstallPromptBundle"; | 189 nibName = @"ExtensionInstallPromptBundle"; |
190 } else if (prompt->has_webstore_data()) { | 190 } else if (prompt->has_webstore_data()) { |
191 nibName = @"ExtensionInstallPromptWebstoreData"; | 191 nibName = @"ExtensionInstallPromptWebstoreData"; |
192 } else if (!prompt->ShouldShowPermissions() && | 192 } else if (!prompt->ShouldShowPermissions() && |
193 prompt->GetRetainedFileCount() == 0) { | 193 prompt->GetRetainedFileCount() == 0 && |
194 prompt->GetRetainedDeviceCount() == 0) { | |
194 nibName = @"ExtensionInstallPromptNoWarnings"; | 195 nibName = @"ExtensionInstallPromptNoWarnings"; |
195 } else { | 196 } else { |
196 nibName = @"ExtensionInstallPrompt"; | 197 nibName = @"ExtensionInstallPrompt"; |
197 } | 198 } |
198 | 199 |
199 if ((self = [super initWithNibName:nibName | 200 if ((self = [super initWithNibName:nibName |
200 bundle:base::mac::FrameworkBundle()])) { | 201 bundle:base::mac::FrameworkBundle()])) { |
201 navigator_ = navigator; | 202 navigator_ = navigator; |
202 delegate_ = delegate; | 203 delegate_ = delegate; |
203 prompt_ = prompt; | 204 prompt_ = prompt; |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
300 [joinedItems appendString:@"\n"]; | 301 [joinedItems appendString:@"\n"]; |
301 [joinedItems appendString:base::SysUTF16ToNSString( | 302 [joinedItems appendString:base::SysUTF16ToNSString( |
302 items[i].GetNameForDisplay())]; | 303 items[i].GetNameForDisplay())]; |
303 } | 304 } |
304 [itemsField_ setStringValue:joinedItems]; | 305 [itemsField_ setStringValue:joinedItems]; |
305 | 306 |
306 // Adjust the controls to fit the list of extensions. | 307 // Adjust the controls to fit the list of extensions. |
307 OffsetControlVerticallyToFitContent(itemsField_, &totalOffset); | 308 OffsetControlVerticallyToFitContent(itemsField_, &totalOffset); |
308 } | 309 } |
309 | 310 |
310 // If there are any warnings or retained files, then we have to do | 311 // If there are any warnings, retained devices or retained files, then we |
311 // some special layout. | 312 // have to do some special layout. |
312 if (prompt_->ShouldShowPermissions() || prompt_->GetRetainedFileCount() > 0) { | 313 if (prompt_->ShouldShowPermissions() || prompt_->GetRetainedFileCount() > 0) { |
313 NSSize spacing = [outlineView_ intercellSpacing]; | 314 NSSize spacing = [outlineView_ intercellSpacing]; |
314 spacing.width += 2; | 315 spacing.width += 2; |
315 spacing.height += 2; | 316 spacing.height += 2; |
316 [outlineView_ setIntercellSpacing:spacing]; | 317 [outlineView_ setIntercellSpacing:spacing]; |
317 [[[[outlineView_ tableColumns] objectAtIndex:0] dataCell] setWraps:YES]; | 318 [[[[outlineView_ tableColumns] objectAtIndex:0] dataCell] setWraps:YES]; |
318 for (id item in warnings_.get()) | 319 for (id item in warnings_.get()) |
319 [self expandItemAndChildren:item]; | 320 [self expandItemAndChildren:item]; |
320 | 321 |
321 // Adjust the outline view to fit the warnings. | 322 // Adjust the outline view to fit the warnings. |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
656 [self buildItemWithTitle:SysUTF16ToNSString( | 657 [self buildItemWithTitle:SysUTF16ToNSString( |
657 prompt.GetRetainedFilesHeading()) | 658 prompt.GetRetainedFilesHeading()) |
658 cellAttributes:kBoldText | kAutoExpandCell | kNoExpandMarker | 659 cellAttributes:kBoldText | kAutoExpandCell | kNoExpandMarker |
659 children:children]]; | 660 children:children]]; |
660 | 661 |
661 // Add a row for the link. | 662 // Add a row for the link. |
662 [warnings addObject: | 663 [warnings addObject: |
663 [self buildDetailToggleItem:type permissionsDetailIndex:0]]; | 664 [self buildDetailToggleItem:type permissionsDetailIndex:0]]; |
664 } | 665 } |
665 | 666 |
667 if (prompt.GetRetainedDeviceCount() > 0) { | |
668 type = ExtensionInstallPrompt::RETAINED_DEVICES_DETAILS; | |
tapted
2014/09/19 04:09:09
What happens if an extension has both retained dev
Reilly Grant (use Gerrit)
2014/09/19 19:30:09
You get two lists and the button says "Revoke File
tapted
2014/09/22 01:04:36
Ah - cool. On the cocoa side it looked like `type`
| |
669 | |
670 NSMutableArray* children = [NSMutableArray array]; | |
671 | |
672 if (prompt.GetIsShowingDetails(type, 0)) { | |
673 for (size_t i = 0; i < prompt.GetRetainedDeviceCount(); ++i) { | |
674 [children | |
tapted
2014/09/19 04:09:09
nit: a temporary `title` var will probably make th
Reilly Grant (use Gerrit)
2014/09/19 19:30:09
Done.
| |
675 addObject:[self buildItemWithTitle: | |
676 SysUTF16ToNSString( | |
677 prompt.GetRetainedDeviceMessageString(i)) | |
678 cellAttributes:kUseBullet | |
679 children:nil]]; | |
680 } | |
681 } | |
682 | |
683 [warnings | |
tapted
2014/09/19 04:09:09
same here, clang-format will probably do something
| |
684 addObject:[self | |
685 buildItemWithTitle:SysUTF16ToNSString( | |
686 prompt.GetRetainedDevicesHeading()) | |
687 cellAttributes:kBoldText | kAutoExpandCell | | |
688 kNoExpandMarker | |
689 children:children]]; | |
690 | |
691 // Add a row for the link. | |
692 [warnings | |
693 addObject:[self buildDetailToggleItem:type permissionsDetailIndex:0]]; | |
694 } | |
695 | |
666 return warnings; | 696 return warnings; |
667 } | 697 } |
668 | 698 |
669 - (void)updateViewFrame:(NSRect)frame { | 699 - (void)updateViewFrame:(NSRect)frame { |
670 NSWindow* window = [[self view] window]; | 700 NSWindow* window = [[self view] window]; |
671 [window setFrame:[window frameRectForContentRect:frame] display:YES]; | 701 [window setFrame:[window frameRectForContentRect:frame] display:YES]; |
672 [[self view] setFrame:frame]; | 702 [[self view] setFrame:frame]; |
673 } | 703 } |
674 | 704 |
675 @end | 705 @end |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
734 } | 764 } |
735 | 765 |
736 - (void)accessibilityPerformAction:(NSString*)action { | 766 - (void)accessibilityPerformAction:(NSString*)action { |
737 if ([action isEqualToString:NSAccessibilityPressAction]) | 767 if ([action isEqualToString:NSAccessibilityPressAction]) |
738 [self handleLinkClicked]; | 768 [self handleLinkClicked]; |
739 else | 769 else |
740 [super accessibilityPerformAction:action]; | 770 [super accessibilityPerformAction:action]; |
741 } | 771 } |
742 | 772 |
743 @end | 773 @end |
OLD | NEW |