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

Unified 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: Update cocoa test, add default cases for compiler 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
index 90cac175c2a86c88dd4df6e8d53484feeaca592a..cf9918ca4a2449bffc9aadc66dcd6b644fc78d89 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
@@ -57,6 +57,13 @@ typedef NSUInteger CellAttributes;
- (NSDictionary*)buildDetailToggleItem:(size_t)type
permissionsDetailIndex:(size_t)index;
- (NSArray*)buildWarnings:(const ExtensionInstallPrompt::Prompt&)prompt;
+// Adds permissions of |type| from |prompt| to |children| and returns the
+// the appropriate permissions header. If no permissions are found, NULL is
+// returned.
+- (NSString*)
+appendPermissionsForPrompt:(const ExtensionInstallPrompt::Prompt&)prompt
+ withType:(ExtensionInstallPrompt::PermissionsType)type
+ children:(NSMutableArray*)children;
- (void)updateViewFrame:(NSRect)frame;
@end
@@ -593,37 +600,30 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
- (NSArray*)buildWarnings:(const ExtensionInstallPrompt::Prompt&)prompt {
NSMutableArray* warnings = [NSMutableArray array];
NSString* heading = nil;
+ NSString* withheldHeading = nil;
ExtensionInstallPrompt::DetailsType type =
ExtensionInstallPrompt::PERMISSIONS_DETAILS;
+ bool hasPermissions = prompt.GetPermissionCount(
+ ExtensionInstallPrompt::PermissionsType::ALL_PERMISSIONS);
+ CellAttributes warningCellAttributes =
+ kBoldText | kAutoExpandCell | kNoExpandMarker;
if (prompt.ShouldShowPermissions()) {
NSMutableArray* children = [NSMutableArray array];
- if (prompt.GetPermissionCount() > 0) {
- for (size_t i = 0; i < prompt.GetPermissionCount(); ++i) {
- [children addObject:
- [self buildItemWithTitle:SysUTF16ToNSString(prompt.GetPermission(i))
- cellAttributes:kUseBullet
- children:nil]];
-
- // If there are additional details, add them below this item.
- if (!prompt.GetPermissionsDetails(i).empty()) {
- if (prompt.GetIsShowingDetails(
- ExtensionInstallPrompt::PERMISSIONS_DETAILS, i)) {
- [children addObject:
- [self buildItemWithTitle:SysUTF16ToNSString(
- prompt.GetPermissionsDetails(i))
- cellAttributes:kNoExpandMarker
- children:nil]];
- }
-
- // Add a row for the link.
- [children addObject:
- [self buildDetailToggleItem:type permissionsDetailIndex:i]];
- }
- }
-
- heading = SysUTF16ToNSString(prompt.GetPermissionsHeading());
- } else {
+ NSMutableArray* withheldChildren = [NSMutableArray array];
+
+ heading =
+ [self appendPermissionsForPrompt:prompt
+ withType:ExtensionInstallPrompt::PermissionsType
+ ::REGULAR_PERMISSIONS
+ children:children];
+ withheldHeading =
+ [self appendPermissionsForPrompt:prompt
+ withType:ExtensionInstallPrompt::PermissionsType
+ ::WITHHELD_PERMISSIONS
+ children:withheldChildren];
+
+ if (!hasPermissions) {
[children addObject:
[self buildItemWithTitle:
l10n_util::GetNSString(IDS_EXTENSION_NO_SPECIAL_PERMISSIONS)
@@ -632,10 +632,18 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
heading = @"";
}
- [warnings addObject:[self
- buildItemWithTitle:heading
- cellAttributes:kBoldText | kAutoExpandCell | kNoExpandMarker
- children:children]];
+ if (heading) {
+ [warnings addObject:[self buildItemWithTitle:heading
+ cellAttributes:warningCellAttributes
+ children:children]];
+ }
+
+ // Add withheld permissions to the prompt if they exist.
+ if (withheldHeading) {
+ [warnings addObject:[self buildItemWithTitle:withheldHeading
+ cellAttributes:warningCellAttributes
+ children:withheldChildren]];
+ }
}
if (prompt.GetRetainedFileCount() > 0) {
@@ -653,11 +661,11 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
}
}
- [warnings addObject:
- [self buildItemWithTitle:SysUTF16ToNSString(
- prompt.GetRetainedFilesHeading())
- cellAttributes:kBoldText | kAutoExpandCell | kNoExpandMarker
- children:children]];
+ [warnings
+ addObject:[self buildItemWithTitle:SysUTF16ToNSString(
+ prompt.GetRetainedFilesHeading())
+ cellAttributes:warningCellAttributes
+ children:children]];
// Add a row for the link.
[warnings addObject:
@@ -667,6 +675,42 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
return warnings;
}
+- (NSString*)
+appendPermissionsForPrompt:(const ExtensionInstallPrompt::Prompt&)prompt
+ withType:(ExtensionInstallPrompt::PermissionsType)type
+ children:(NSMutableArray*)children {
+ size_t permissionsCount = prompt.GetPermissionCount(type);
+ if (permissionsCount == 0)
+ return NULL;
+
+ for (size_t i = 0; i < permissionsCount; ++i) {
+ NSDictionary* item = [self
+ buildItemWithTitle:SysUTF16ToNSString(prompt.GetPermission(i, type))
+ cellAttributes:kUseBullet
+ children:nil];
+ [children addObject:item];
+
+ // If there are additional details, add them below this item.
+ if (!prompt.GetPermissionsDetails(i, type).empty()) {
+ if (prompt.GetIsShowingDetails(
+ ExtensionInstallPrompt::PERMISSIONS_DETAILS, i)) {
+ item =
+ [self buildItemWithTitle:SysUTF16ToNSString(
+ prompt.GetPermissionsDetails(i, type))
+ cellAttributes:kNoExpandMarker
+ children:nil];
+ [children addObject:item];
+ }
+
+ // Add a row for the link.
+ [children addObject:
+ [self buildDetailToggleItem:type permissionsDetailIndex:i]];
+ }
+ }
+
+ return SysUTF16ToNSString(prompt.GetPermissionsHeading(type));
+}
+
- (void)updateViewFrame:(NSRect)frame {
NSWindow* window = [[self view] window];
[window setFrame:[window frameRectForContentRect:frame] display:YES];

Powered by Google App Engine
This is Rietveld 408576698