summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorleng@chromium.org <leng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-08 03:59:26 +0000
committerleng@chromium.org <leng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-08 03:59:26 +0000
commit53bfa860a4ede0a1f85f02b8d9d8a3896b6b0eb2 (patch)
tree06dabacd0fbf9767cff7c7da9001a3d24ff55c67
parentd95843237674c50fd9769d6377769f80f438bbb1 (diff)
downloadchromium_src-53bfa860a4ede0a1f85f02b8d9d8a3896b6b0eb2.zip
chromium_src-53bfa860a4ede0a1f85f02b8d9d8a3896b6b0eb2.tar.gz
chromium_src-53bfa860a4ede0a1f85f02b8d9d8a3896b6b0eb2.tar.bz2
Updates permission bubble's title and layout to better reflect mocks.
Specifically, changes the title to show the host name, and uses a list layout every time, even if there is only a single request. BUG=None Review URL: https://codereview.chromium.org/224113007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262293 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm61
-rw-r--r--chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm8
2 files changed, 33 insertions, 36 deletions
diff --git a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
index 4c7e48c..6ccd3ab 100644
--- a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
+++ b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
@@ -9,6 +9,7 @@
#include "base/mac/foundation_util.h"
#include "base/mac/mac_util.h"
#include "base/strings/sys_string_conversions.h"
+#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
#import "chrome/browser/ui/chrome_style.h"
@@ -33,6 +34,7 @@ namespace {
const CGFloat kHorizontalPadding = 20.0f;
const CGFloat kVerticalPadding = 20.0f;
const CGFloat kButtonPadding = 10.0f;
+const CGFloat kTitlePaddingX = 50.0f;
const CGFloat kCheckboxYAdjustment = 2.0f;
const CGFloat kFontSize = 15.0f;
@@ -43,12 +45,11 @@ const base::char16 kBulletPoint = 0x2022;
@interface PermissionBubbleController ()
// Returns an autoreleased NSView displaying the label for |request|.
-- (NSView*)labelForRequest:(PermissionBubbleRequest*)request
- isSingleRequest:(BOOL)singleRequest;
+- (NSView*)labelForRequest:(PermissionBubbleRequest*)request;
-// Returns an autoreleased NSView displaying the title for the bubble if
-// there are multiple requests.
-- (NSView*)titleForMultipleRequests;
+// Returns an autoreleased NSView displaying the title for the bubble
+// requesting settings for |host|.
+- (NSView*)titleWithHostname:(const std::string&)host;
// Returns an autoreleased NSView displaying a checkbox for |request|. The
// checkbox will be initialized as checked if |checked| is YES.
@@ -121,6 +122,7 @@ const base::char16 kBulletPoint = 0x2022;
forRequests:(const std::vector<PermissionBubbleRequest*>&)requests
acceptStates:(const std::vector<bool>&)acceptStates
customizationMode:(BOOL)customizationMode {
+ DCHECK(!requests.empty());
DCHECK(delegate);
DCHECK(!customizationMode || (requests.size() == acceptStates.size()));
delegate_ = delegate;
@@ -155,8 +157,7 @@ const base::char16 kBulletPoint = 0x2022;
[base::mac::ObjCCastStrict<NSButton>(permissionView) setTag:index];
[checkboxes_ addObject:permissionView];
} else {
- permissionView.reset([[self labelForRequest:(*it)
- isSingleRequest:singlePermission] retain]);
+ permissionView.reset([[self labelForRequest:(*it)] retain]);
}
NSPoint origin = [permissionView frame].origin;
origin.x += kHorizontalPadding;
@@ -176,6 +177,18 @@ const base::char16 kBulletPoint = 0x2022;
bubbleFrame, NSInsetRect([view frame], -kHorizontalPadding, 0));
}
+ base::scoped_nsobject<NSView> titleView(
+ [[self titleWithHostname:requests[0]->GetRequestingHostname().host()]
+ retain]);
+ [contentView addSubview:titleView];
+ [titleView setFrameOrigin:NSMakePoint(kHorizontalPadding,
+ kVerticalPadding + yOffset)];
+ yOffset += NSHeight([titleView frame]) + kVerticalPadding;
+
+ // The title must fit within the bubble.
+ bubbleFrame.size.width = std::max(NSWidth(bubbleFrame),
+ NSWidth([titleView frame]));
+
// 'x' button in the upper-right-hand corner.
base::scoped_nsobject<NSView> closeButton([[self closeButton] retain]);
// Place the close button at the rightmost edge of the bubble.
@@ -217,15 +230,6 @@ const base::char16 kBulletPoint = 0x2022;
[contentView addSubview:customizeButton];
}
- if (!singlePermission) {
- base::scoped_nsobject<NSView> titleView(
- [[self titleForMultipleRequests] retain]);
- [contentView addSubview:titleView];
- [titleView setFrameOrigin:NSMakePoint(kHorizontalPadding,
- kVerticalPadding + yOffset)];
- yOffset += NSHeight([titleView frame]) + kVerticalPadding;
- }
-
bubbleFrame.size.height = yOffset + kVerticalPadding;
bubbleFrame = [[self window] frameRectForContentRect:bubbleFrame];
[[self window] setFrame:bubbleFrame display:NO];
@@ -234,23 +238,14 @@ const base::char16 kBulletPoint = 0x2022;
[self showWindow:nil];
}
-- (NSView*)labelForRequest:(PermissionBubbleRequest*)request
- isSingleRequest:(BOOL)singleRequest {
+- (NSView*)labelForRequest:(PermissionBubbleRequest*)request {
DCHECK(request);
base::scoped_nsobject<NSTextField> permissionLabel(
[[NSTextField alloc] initWithFrame:NSZeroRect]);
base::string16 label;
- if (!singleRequest) {
- label.push_back(kBulletPoint);
- label.push_back(' ');
- }
- if (singleRequest) {
- // TODO(leng): Make the appropriate call when it's working. It should call
- // GetMessageText(), but it's not returning the correct string yet.
- label += request->GetMessageTextFragment();
- } else {
- label += request->GetMessageTextFragment();
- }
+ label.push_back(kBulletPoint);
+ label.push_back(' ');
+ label += request->GetMessageTextFragment();
[permissionLabel setDrawsBackground:NO];
[permissionLabel setBezeled:NO];
[permissionLabel setEditable:NO];
@@ -260,7 +255,7 @@ const base::char16 kBulletPoint = 0x2022;
return permissionLabel.autorelease();
}
-- (NSView*)titleForMultipleRequests {
+- (NSView*)titleWithHostname:(const std::string&)host {
base::scoped_nsobject<NSTextField> titleView(
[[NSTextField alloc] initWithFrame:NSZeroRect]);
[titleView setDrawsBackground:NO];
@@ -268,9 +263,13 @@ const base::char16 kBulletPoint = 0x2022;
[titleView setEditable:NO];
[titleView setSelectable:NO];
[titleView setStringValue:
- l10n_util::GetNSString(IDS_PERMISSIONS_BUBBLE_PROMPT)];
+ l10n_util::GetNSStringF(IDS_PERMISSIONS_BUBBLE_PROMPT,
+ base::UTF8ToUTF16(host))];
[titleView setFont:[NSFont systemFontOfSize:kFontSize]];
[titleView sizeToFit];
+ NSRect titleFrame = [titleView frame];
+ [titleView setFrameSize:NSMakeSize(NSWidth(titleFrame) + kTitlePaddingX,
+ NSHeight(titleFrame))];
return titleView.autorelease();
}
diff --git a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
index 8735415..f7ea307 100644
--- a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
@@ -46,6 +46,7 @@ class PermissionBubbleControllerTest : public CocoaTest,
virtual void SetUp() OVERRIDE {
CocoaTest::SetUp();
bridge_.reset(new PermissionBubbleCocoa(nil));
+ AddRequest(kPermissionA);
controller_ = [[PermissionBubbleController alloc]
initWithParentWindow:test_window()
bridge:bridge_.get()];
@@ -111,8 +112,6 @@ TEST_F(PermissionBubbleControllerTest, ShowAndClose) {
}
TEST_F(PermissionBubbleControllerTest, ShowSinglePermission) {
- AddRequest(kPermissionA);
-
[controller_ showAtAnchor:NSZeroPoint
withDelegate:this
forRequests:requests_
@@ -127,7 +126,6 @@ TEST_F(PermissionBubbleControllerTest, ShowSinglePermission) {
}
TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissions) {
- AddRequest(kPermissionA);
AddRequest(kPermissionB);
AddRequest(kPermissionC);
@@ -148,7 +146,6 @@ TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissions) {
}
TEST_F(PermissionBubbleControllerTest, ShowCustomizationMode) {
- AddRequest(kPermissionA);
AddRequest(kPermissionB);
accept_states_.push_back(true);
@@ -175,6 +172,7 @@ TEST_F(PermissionBubbleControllerTest, ShowCustomizationMode) {
}
TEST_F(PermissionBubbleControllerTest, OK) {
+ accept_states_.push_back(true);
[controller_ showAtAnchor:NSZeroPoint
withDelegate:this
forRequests:requests_
@@ -208,7 +206,6 @@ TEST_F(PermissionBubbleControllerTest, Deny) {
}
TEST_F(PermissionBubbleControllerTest, ToggleCheckbox) {
- AddRequest(kPermissionA);
AddRequest(kPermissionB);
accept_states_.push_back(true);
@@ -227,6 +224,7 @@ TEST_F(PermissionBubbleControllerTest, ToggleCheckbox) {
}
TEST_F(PermissionBubbleControllerTest, ClickCustomize) {
+ AddRequest(kPermissionB);
[controller_ showAtAnchor:NSZeroPoint
withDelegate:this
forRequests:requests_