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

Unified Diff: chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm

Issue 816223008: Update UI for WebStore bundle installs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bundles_api
Patch Set: asvitkine review 2 Created 5 years, 8 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 835ba3c004dfc3cca482e2ac7f9f142dc79e1ed1..2728c241c648185dccc012113d7158d2748c5fc5 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
@@ -15,6 +15,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#import "chrome/browser/ui/chrome_style.h"
+#include "chrome/browser/ui/cocoa/extensions/bundle_util.h"
#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/grit/generated_resources.h"
@@ -102,6 +103,14 @@ NSString* const kCellAttributesKey = @"cellAttributes";
NSString* const kPermissionsDetailIndex = @"permissionsDetailIndex";
NSString* const kPermissionsDetailType = @"permissionsDetailType";
+// Computes the |control|'s desired height to fit its contents, constrained to
+// be kMaxControlHeight at most.
+CGFloat ComputeDesiredControlHeight(NSControl* control) {
+ NSRect rect = [control frame];
+ rect.size.height = kMaxControlHeight;
+ return [[control cell] cellSizeForBounds:rect].height;
+}
+
// Adjust the |control|'s height so that its content is not clipped.
// This also adds the change in height to the |totalOffset| and shifts the
// control down by that amount.
@@ -109,9 +118,7 @@ void OffsetControlVerticallyToFitContent(NSControl* control,
CGFloat* totalOffset) {
// Adjust the control's height so that its content is not clipped.
NSRect currentRect = [control frame];
- NSRect fitRect = currentRect;
- fitRect.size.height = kMaxControlHeight;
- CGFloat desiredHeight = [[control cell] cellSizeForBounds:fitRect].height;
+ CGFloat desiredHeight = ComputeDesiredControlHeight(control);
CGFloat offset = desiredHeight - NSHeight(currentRect);
[control setFrameSize:NSMakeSize(NSWidth(currentRect),
@@ -125,6 +132,31 @@ void OffsetControlVerticallyToFitContent(NSControl* control,
[control setFrameOrigin:origin];
}
+// Adjust the |view|'s height so that its subviews are not clipped.
+// This also adds the change in height to the |totalOffset| and shifts the
+// control down by that amount.
+void OffsetViewVerticallyToFitContent(NSView* view, CGFloat* totalOffset) {
Alexei Svitkine (slow) 2015/04/23 16:47:39 Nit: Since this is a C++ function, use hacker_styl
Marc Treib 2015/04/24 09:06:05 Done, also for the other functions below.
+ // Adjust the view's height so that its subviews are not clipped.
+ CGFloat desiredHeight = 0;
+ for (NSView* subview in [view subviews]) {
+ int requiredHeight = NSMaxY([subview frame]);
+ if (requiredHeight > desiredHeight)
+ desiredHeight = requiredHeight;
+ }
+ NSRect currentRect = [view frame];
+ CGFloat offset = desiredHeight - NSHeight(currentRect);
+
+ [view setFrameSize:NSMakeSize(NSWidth(currentRect),
+ NSHeight(currentRect) + offset)];
+
+ *totalOffset += offset;
+
+ // Move the view vertically by the new total offset.
+ NSPoint origin = [view frame].origin;
+ origin.y -= *totalOffset;
+ [view setFrameOrigin:origin];
+}
+
// Gets the desired height of |outlineView|. Simply using the view's frame
// doesn't work if an animation is pending.
CGFloat GetDesiredOutlineViewHeight(NSOutlineView* outlineView) {
@@ -270,9 +302,7 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
gfx::SkColorToCalibratedNSColor(chrome_style::GetLinkColor())];
}
- // The bundle install dialog has no icon.
- if (![self isBundleInstall])
- [iconView_ setImage:prompt_->icon().ToNSImage()];
+ [iconView_ setImage:prompt_->icon().ToNSImage()];
// The dialog is laid out in the NIB exactly how we want it assuming that
// each label fits on one line. However, for each label, we want to allow
@@ -309,22 +339,12 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
}
if ([self isBundleInstall]) {
- // We display the list of extension names as a simple text string, seperated
- // by newlines.
BundleInstaller::ItemList items = prompt_->bundle()->GetItemsWithState(
BundleInstaller::Item::STATE_PENDING);
+ PopulateBundleItemsList(items, itemsField_);
- NSMutableString* joinedItems = [NSMutableString string];
- for (size_t i = 0; i < items.size(); ++i) {
- if (i > 0)
- [joinedItems appendString:@"\n"];
- [joinedItems appendString:base::SysUTF16ToNSString(
- items[i].GetNameForDisplay())];
- }
- [itemsField_ setStringValue:joinedItems];
-
- // Adjust the controls to fit the list of extensions.
- OffsetControlVerticallyToFitContent(itemsField_, &totalOffset);
+ // Adjust the view to fit the list of extensions.
+ OffsetViewVerticallyToFitContent(itemsField_, &totalOffset);
}
// If there are any warnings, retained devices or retained files, then we

Powered by Google App Engine
This is Rietveld 408576698