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..2a42695b18f0c385c756ed3bf3cf938760b7d8eb 100644 |
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm |
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm |
@@ -191,7 +191,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"; |
@@ -308,8 +309,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; |
@@ -645,25 +646,50 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) { |
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:kBoldText | kAutoExpandCell | kNoExpandMarker |
- children:children]]; |
+ NSString* title = SysUTF16ToNSString(prompt.GetRetainedFilesHeading()); |
+ [warnings addObject:[self buildItemWithTitle:title |
+ cellAttributes:kBoldText | kAutoExpandCell | |
+ kNoExpandMarker |
+ children:children]]; |
// Add a row for the link. |
[warnings addObject: |
[self buildDetailToggleItem:type permissionsDetailIndex:0]]; |
} |
+ if (prompt.GetRetainedDeviceCount() > 0) { |
+ 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:kBoldText | kAutoExpandCell | |
+ kNoExpandMarker |
+ children:children]]; |
+ |
+ // Add a row for the link. |
+ [warnings |
+ addObject:[self buildDetailToggleItem:type permissionsDetailIndex:0]]; |
+ } |
+ |
return warnings; |
} |