Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm

Issue 501273002: Update extension install prompt to reflect withheld permissions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Prompt and Updater changes Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 - (BOOL)isBundleInstall; 49 - (BOOL)isBundleInstall;
50 - (BOOL)hasWebstoreData; 50 - (BOOL)hasWebstoreData;
51 - (void)appendRatingStar:(const gfx::ImageSkia*)skiaImage; 51 - (void)appendRatingStar:(const gfx::ImageSkia*)skiaImage;
52 - (void)onOutlineViewRowCountDidChange; 52 - (void)onOutlineViewRowCountDidChange;
53 - (NSDictionary*)buildItemWithTitle:(NSString*)title 53 - (NSDictionary*)buildItemWithTitle:(NSString*)title
54 cellAttributes:(CellAttributes)cellAttributes 54 cellAttributes:(CellAttributes)cellAttributes
55 children:(NSArray*)children; 55 children:(NSArray*)children;
56 - (NSDictionary*)buildDetailToggleItem:(size_t)type 56 - (NSDictionary*)buildDetailToggleItem:(size_t)type
57 permissionsDetailIndex:(size_t)index; 57 permissionsDetailIndex:(size_t)index;
58 - (NSArray*)buildWarnings:(const ExtensionInstallPrompt::Prompt&)prompt; 58 - (NSArray*)buildWarnings:(const ExtensionInstallPrompt::Prompt&)prompt;
59 - (bool)appendPermissions:(const ExtensionInstallPrompt::Prompt&)prompt
60 type:(ExtensionInstallPrompt::PermissionsType)type
61 heading:(NSString**)heading
62 children:(NSMutableArray*)children;
59 - (void)updateViewFrame:(NSRect)frame; 63 - (void)updateViewFrame:(NSRect)frame;
60 @end 64 @end
61 65
62 @interface DetailToggleHyperlinkButtonCell : HyperlinkButtonCell { 66 @interface DetailToggleHyperlinkButtonCell : HyperlinkButtonCell {
63 NSUInteger permissionsDetailIndex_; 67 NSUInteger permissionsDetailIndex_;
64 ExtensionInstallPrompt::DetailsType permissionsDetailType_; 68 ExtensionInstallPrompt::DetailsType permissionsDetailType_;
65 SEL linkClickedAction_; 69 SEL linkClickedAction_;
66 } 70 }
67 71
68 @property(assign, nonatomic) NSUInteger permissionsDetailIndex; 72 @property(assign, nonatomic) NSUInteger permissionsDetailIndex;
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 kCellAttributesKey : [NSNumber numberWithInt:kUseCustomLinkCell | 589 kCellAttributesKey : [NSNumber numberWithInt:kUseCustomLinkCell |
586 kNoExpandMarker], 590 kNoExpandMarker],
587 kPermissionsDetailIndex : [NSNumber numberWithUnsignedInteger:index], 591 kPermissionsDetailIndex : [NSNumber numberWithUnsignedInteger:index],
588 kPermissionsDetailType : [NSNumber numberWithUnsignedInteger:type], 592 kPermissionsDetailType : [NSNumber numberWithUnsignedInteger:type],
589 }; 593 };
590 } 594 }
591 595
592 - (NSArray*)buildWarnings:(const ExtensionInstallPrompt::Prompt&)prompt { 596 - (NSArray*)buildWarnings:(const ExtensionInstallPrompt::Prompt&)prompt {
593 NSMutableArray* warnings = [NSMutableArray array]; 597 NSMutableArray* warnings = [NSMutableArray array];
594 NSString* heading = nil; 598 NSString* heading = nil;
599 NSString* withheld_heading = nil;
595 600
596 ExtensionInstallPrompt::DetailsType type = 601 ExtensionInstallPrompt::DetailsType type =
597 ExtensionInstallPrompt::PERMISSIONS_DETAILS; 602 ExtensionInstallPrompt::PERMISSIONS_DETAILS;
603 bool has_permissions = prompt.GetPermissionCount(
604 ExtensionInstallPrompt::PermissionsType::ALL_PERMISSIONS);
598 if (prompt.ShouldShowPermissions()) { 605 if (prompt.ShouldShowPermissions()) {
599 NSMutableArray* children = [NSMutableArray array]; 606 NSMutableArray* children = [NSMutableArray array];
600 if (prompt.GetPermissionCount() > 0) { 607 NSMutableArray* withheld_children = [NSMutableArray array];
601 for (size_t i = 0; i < prompt.GetPermissionCount(); ++i) {
602 [children addObject:
603 [self buildItemWithTitle:SysUTF16ToNSString(prompt.GetPermission(i))
604 cellAttributes:kUseBullet
605 children:nil]];
606 608
607 // If there are additional details, add them below this item. 609 [self appendPermissions:prompt
608 if (!prompt.GetPermissionsDetails(i).empty()) { 610 type:ExtensionInstallPrompt::PermissionsType::
609 if (prompt.GetIsShowingDetails( 611 REGULAR_PERMISSIONS
610 ExtensionInstallPrompt::PERMISSIONS_DETAILS, i)) { 612 heading:&heading
611 [children addObject: 613 children:children];
612 [self buildItemWithTitle:SysUTF16ToNSString( 614 [self appendPermissions:prompt
613 prompt.GetPermissionsDetails(i)) 615 type:ExtensionInstallPrompt::PermissionsType::
614 cellAttributes:kNoExpandMarker 616 WITHHELD_PERMISSIONS
615 children:nil]]; 617 heading:&withheld_heading
616 } 618 children:withheld_children];
617 619
618 // Add a row for the link. 620 if (!has_permissions) {
619 [children addObject:
620 [self buildDetailToggleItem:type permissionsDetailIndex:i]];
621 }
622 }
623
624 heading = SysUTF16ToNSString(prompt.GetPermissionsHeading());
625 } else {
626 [children addObject: 621 [children addObject:
627 [self buildItemWithTitle: 622 [self buildItemWithTitle:
628 l10n_util::GetNSString(IDS_EXTENSION_NO_SPECIAL_PERMISSIONS) 623 l10n_util::GetNSString(IDS_EXTENSION_NO_SPECIAL_PERMISSIONS)
629 cellAttributes:kUseBullet 624 cellAttributes:kUseBullet
630 children:nil]]; 625 children:nil]];
631 heading = @""; 626 heading = @"";
632 } 627 }
633 628
634 [warnings addObject:[self 629 [warnings addObject:[self
635 buildItemWithTitle:heading 630 buildItemWithTitle:heading
636 cellAttributes:kBoldText | kAutoExpandCell | kNoExpandMarker 631 cellAttributes:kBoldText | kAutoExpandCell | kNoExpandMarker
637 children:children]]; 632 children:children]];
633
634 // Add withheld permissions to the prompt if they exist.
635 if (withheld_heading) {
636 [warnings addObject:[self buildItemWithTitle:withheld_heading
637 cellAttributes:kBoldText | kAutoExpandCell |
638 kNoExpandMarker
639 children:withheld_children]];
640 }
638 } 641 }
639 642
640 if (prompt.GetRetainedFileCount() > 0) { 643 if (prompt.GetRetainedFileCount() > 0) {
641 type = ExtensionInstallPrompt::RETAINED_FILES_DETAILS; 644 type = ExtensionInstallPrompt::RETAINED_FILES_DETAILS;
642 645
643 NSMutableArray* children = [NSMutableArray array]; 646 NSMutableArray* children = [NSMutableArray array];
644 647
645 if (prompt.GetIsShowingDetails(type, 0)) { 648 if (prompt.GetIsShowingDetails(type, 0)) {
646 for (size_t i = 0; i < prompt.GetRetainedFileCount(); ++i) { 649 for (size_t i = 0; i < prompt.GetRetainedFileCount(); ++i) {
647 [children addObject: 650 [children addObject:
(...skipping 11 matching lines...) Expand all
659 children:children]]; 662 children:children]];
660 663
661 // Add a row for the link. 664 // Add a row for the link.
662 [warnings addObject: 665 [warnings addObject:
663 [self buildDetailToggleItem:type permissionsDetailIndex:0]]; 666 [self buildDetailToggleItem:type permissionsDetailIndex:0]];
664 } 667 }
665 668
666 return warnings; 669 return warnings;
667 } 670 }
668 671
672 - (bool)appendPermissions:(const ExtensionInstallPrompt::Prompt&)prompt
673 type:(ExtensionInstallPrompt::PermissionsType)type
674 heading:(NSString**)heading
675 children:(NSMutableArray*)children {
676 size_t permissions_count = prompt.GetPermissionCount(type);
677 if (permissions_count > 0) {
678 for (size_t i = 0; i < permissions_count; ++i) {
679 [children
680 addObject:[self buildItemWithTitle:SysUTF16ToNSString(
681 prompt.GetPermission(i, type))
682 cellAttributes:kUseBullet
683 children:nil]];
684
685 // If there are additional details, add them below this item.
686 if (!prompt.GetPermissionsDetails(i, type).empty()) {
687 if (prompt.GetIsShowingDetails(
688 ExtensionInstallPrompt::PERMISSIONS_DETAILS, i)) {
689 [children
690 addObject:[self
691 buildItemWithTitle:SysUTF16ToNSString(
692 prompt.GetPermissionsDetails(
693 i, type))
694 cellAttributes:kNoExpandMarker
695 children:nil]];
696 }
697
698 // Add a row for the link.
699 [children addObject:[self buildDetailToggleItem:type
700 permissionsDetailIndex:i]];
701 }
702 }
703
704 *heading = SysUTF16ToNSString(prompt.GetPermissionsHeading(type));
705 return true;
706 }
707 return false;
708 }
709
669 - (void)updateViewFrame:(NSRect)frame { 710 - (void)updateViewFrame:(NSRect)frame {
670 NSWindow* window = [[self view] window]; 711 NSWindow* window = [[self view] window];
671 [window setFrame:[window frameRectForContentRect:frame] display:YES]; 712 [window setFrame:[window frameRectForContentRect:frame] display:YES];
672 [[self view] setFrame:frame]; 713 [[self view] setFrame:frame];
673 } 714 }
674 715
675 @end 716 @end
676 717
677 718
678 @implementation DetailToggleHyperlinkButtonCell 719 @implementation DetailToggleHyperlinkButtonCell
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 } 775 }
735 776
736 - (void)accessibilityPerformAction:(NSString*)action { 777 - (void)accessibilityPerformAction:(NSString*)action {
737 if ([action isEqualToString:NSAccessibilityPressAction]) 778 if ([action isEqualToString:NSAccessibilityPressAction])
738 [self handleLinkClicked]; 779 [self handleLinkClicked];
739 else 780 else
740 [super accessibilityPerformAction:action]; 781 [super accessibilityPerformAction:action];
741 } 782 }
742 783
743 @end 784 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698