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 cf9918ca4a2449bffc9aadc66dcd6b644fc78d89..d621a69406ca9153afd06fa8829589033cd4ef86 100644 |
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm |
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm |
@@ -198,7 +198,8 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) { |
} else if (prompt->has_webstore_data()) { |
nibName = @"ExtensionInstallPromptWebstoreData"; |
} else if (!prompt->ShouldShowPermissions() && |
- prompt->GetRetainedFileCount() == 0) { |
+ prompt->GetRetainedFileCount() == 0 && |
+ prompt->GetRetainedDeviceCount() == 0) { |
nibName = @"ExtensionInstallPromptNoWarnings"; |
} else { |
nibName = @"ExtensionInstallPrompt"; |
@@ -315,8 +316,8 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) { |
OffsetControlVerticallyToFitContent(itemsField_, &totalOffset); |
} |
- // If there are any warnings or retained files, then we have to do |
- // some special layout. |
+ // If there are any warnings, retained devices or retained files, then we |
+ // have to do some special layout. |
if (prompt_->ShouldShowPermissions() || prompt_->GetRetainedFileCount() > 0) { |
NSSize spacing = [outlineView_ intercellSpacing]; |
spacing.width += 2; |
@@ -602,8 +603,6 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) { |
NSString* heading = nil; |
NSString* withheldHeading = nil; |
- ExtensionInstallPrompt::DetailsType type = |
- ExtensionInstallPrompt::PERMISSIONS_DETAILS; |
bool hasPermissions = prompt.GetPermissionCount( |
ExtensionInstallPrompt::PermissionsType::ALL_PERMISSIONS); |
CellAttributes warningCellAttributes = |
@@ -647,31 +646,56 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) { |
} |
if (prompt.GetRetainedFileCount() > 0) { |
- type = ExtensionInstallPrompt::RETAINED_FILES_DETAILS; |
+ const ExtensionInstallPrompt::DetailsType type = |
+ ExtensionInstallPrompt::RETAINED_FILES_DETAILS; |
NSMutableArray* children = [NSMutableArray array]; |
if (prompt.GetIsShowingDetails(type, 0)) { |
for (size_t i = 0; i < prompt.GetRetainedFileCount(); ++i) { |
- [children addObject: |
- [self buildItemWithTitle:SysUTF16ToNSString( |
- prompt.GetRetainedFile(i)) |
- cellAttributes:kUseBullet |
- children:nil]]; |
+ NSString* title = SysUTF16ToNSString(prompt.GetRetainedFile(i)); |
+ [children addObject:[self buildItemWithTitle:title |
+ cellAttributes:kUseBullet |
+ children:nil]]; |
} |
} |
- [warnings |
- addObject:[self buildItemWithTitle:SysUTF16ToNSString( |
- prompt.GetRetainedFilesHeading()) |
- cellAttributes:warningCellAttributes |
- children:children]]; |
+ NSString* title = SysUTF16ToNSString(prompt.GetRetainedFilesHeading()); |
+ [warnings addObject:[self buildItemWithTitle:title |
+ cellAttributes:warningCellAttributes |
+ children:children]]; |
// Add a row for the link. |
[warnings addObject: |
[self buildDetailToggleItem:type permissionsDetailIndex:0]]; |
} |
+ if (prompt.GetRetainedDeviceCount() > 0) { |
+ const ExtensionInstallPrompt::DetailsType type = |
+ ExtensionInstallPrompt::RETAINED_DEVICES_DETAILS; |
+ |
+ NSMutableArray* children = [NSMutableArray array]; |
+ |
+ if (prompt.GetIsShowingDetails(type, 0)) { |
+ for (size_t i = 0; i < prompt.GetRetainedDeviceCount(); ++i) { |
+ NSString* title = |
+ SysUTF16ToNSString(prompt.GetRetainedDeviceMessageString(i)); |
+ [children addObject:[self buildItemWithTitle:title |
+ cellAttributes:kUseBullet |
+ children:nil]]; |
+ } |
+ } |
+ |
+ NSString* title = SysUTF16ToNSString(prompt.GetRetainedDevicesHeading()); |
+ [warnings addObject:[self buildItemWithTitle:title |
+ cellAttributes:warningCellAttributes |
+ children:children]]; |
+ |
+ // Add a row for the link. |
+ [warnings |
+ addObject:[self buildDetailToggleItem:type permissionsDetailIndex:0]]; |
+ } |
+ |
return warnings; |
} |