| Index: chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm
|
| diff --git a/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm b/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm
|
| index 56047a6796546d78c9e4598193eea655a5a10a69..c0a8e422b465fb03858daa3719b2b3494c40fdb3 100644
|
| --- a/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm
|
| +++ b/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm
|
| @@ -70,6 +70,9 @@ const CGFloat kSectionHorizontalPadding = 16;
|
| // align with other text.
|
| const CGFloat kLinkButtonXAdjustment = 1;
|
|
|
| +// Built-in margin for NSButton to take into account.
|
| +const CGFloat kNSButtonBuiltinMargin = 4;
|
| +
|
| // Security Section ------------------------------------------------------------
|
|
|
| // Spacing between security summary, security details, and cert decisions text.
|
| @@ -198,7 +201,6 @@ bool IsInternalURL(const GURL& url) {
|
| DCHECK(parentWindow);
|
|
|
| webContents_ = webContents;
|
| - permissionsPresent_ = NO;
|
| url_ = url;
|
|
|
| // Use an arbitrary height; it will be changed in performLayout.
|
| @@ -376,14 +378,14 @@ bool IsInternalURL(const GURL& url) {
|
|
|
| // Create the link button to view site settings. Its position will be set in
|
| // performLayout.
|
| - NSString* siteSettingsButtonText =
|
| - l10n_util::GetNSString(IDS_PAGE_INFO_SITE_SETTINGS_LINK);
|
| - siteSettingsButton_ = [self addButtonWithText:siteSettingsButtonText
|
| - toView:siteSettingsSectionView];
|
| - [GTMUILocalizerAndLayoutTweaker sizeToFitView:siteSettingsButton_];
|
| + NSString* permissionButtonText =
|
| + l10n_util::GetNSString(IDS_PAGE_INFO_SHOW_ALL_PERMISSIONS_LINK);
|
| + permissionButton_ = [self addButtonWithText:permissionButtonText
|
| + toView:siteSettingsSectionView];
|
| + [GTMUILocalizerAndLayoutTweaker sizeToFitView:permissionButton_];
|
|
|
| - [siteSettingsButton_ setTarget:self];
|
| - [siteSettingsButton_ setAction:@selector(showSiteSettingsData:)];
|
| + [permissionButton_ setTarget:self];
|
| + [permissionButton_ setAction:@selector(showAllPermissions:)];
|
|
|
| return siteSettingsSectionView.get();
|
| }
|
| @@ -398,6 +400,17 @@ bool IsInternalURL(const GURL& url) {
|
| }
|
|
|
| // Handler for the site settings button below the list of permissions.
|
| +- (void)showAllPermissions:(id)sender {
|
| + DCHECK(presenter_);
|
| + // TODO(crbug.com/695670): Place this code in a cross-platform location.
|
| + presenter_->RecordWebsiteSettingsAction(
|
| + WebsiteSettings::WEBSITE_SETTINGS_SHOW_ALL_PERMISSIONS_PRESSED);
|
| + // TODO(crbug.com/695723): Avoid hiding a permission when it is changed to the
|
| + // default.
|
| + presenter_->PresentAllSitePermissions();
|
| +}
|
| +
|
| +// Handler for the site settings button below the list of permissions.
|
| - (void)showSiteSettingsData:(id)sender {
|
| DCHECK(webContents_);
|
| DCHECK(presenter_);
|
| @@ -441,13 +454,13 @@ bool IsInternalURL(const GURL& url) {
|
| - (CGFloat)layoutViewAtRTLStart:(NSView*)view withYPosition:(CGFloat)yPos {
|
| CGFloat xPos;
|
| if (base::i18n::IsRTL()) {
|
| - xPos =
|
| - kDefaultWindowWidth - kSectionHorizontalPadding - NSWidth([view frame]);
|
| + xPos = kDefaultWindowWidth - kSectionHorizontalPadding -
|
| + NSWidth([view frame]) + kNSButtonBuiltinMargin;
|
| } else {
|
| - xPos = kSectionHorizontalPadding;
|
| + xPos = kSectionHorizontalPadding - kNSButtonBuiltinMargin;
|
| }
|
| - [view setFrameOrigin:NSMakePoint(xPos, yPos)];
|
| - return yPos + NSHeight([view frame]);
|
| + [view setFrameOrigin:NSMakePoint(xPos, yPos - kNSButtonBuiltinMargin)];
|
| + return yPos + NSHeight([view frame]) - kNSButtonBuiltinMargin;
|
| }
|
|
|
| // Set the Y position of |view| to the given position, and return the position
|
| @@ -532,15 +545,10 @@ bool IsInternalURL(const GURL& url) {
|
| // Start the layout with the first element. Margins are handled by the caller.
|
| CGFloat yPos = 0;
|
|
|
| - yPos =
|
| - [self setYPositionOfView:cookiesView_ to:yPos + kSectionVerticalPadding];
|
| -
|
| - if (permissionsPresent_) {
|
| - // Put the permission info just below the link button.
|
| - yPos = [self setYPositionOfView:permissionsView_ to:yPos];
|
| - }
|
| -
|
| - yPos = [self layoutViewAtRTLStart:siteSettingsButton_ withYPosition:yPos];
|
| + yPos += kSectionVerticalPadding;
|
| + yPos = [self setYPositionOfView:cookiesView_ to:yPos];
|
| + yPos = [self setYPositionOfView:permissionsView_ to:yPos];
|
| + yPos = [self layoutViewAtRTLStart:permissionButton_ withYPosition:yPos];
|
|
|
| // Resize the height based on contents.
|
| [self setHeightOfView:siteSettingsSectionView_
|
| @@ -1098,36 +1106,39 @@ bool IsInternalURL(const GURL& url) {
|
| [permissionsView_ setSubviews:[NSArray array]];
|
| NSPoint controlOrigin = NSMakePoint(kSectionHorizontalPadding, 0);
|
|
|
| - permissionsPresent_ = YES;
|
| -
|
| - if (permissionInfoList.size() > 0 || chosenObjectInfoList.size() > 0) {
|
| - base::string16 sectionTitle = l10n_util::GetStringUTF16(
|
| - IDS_WEBSITE_SETTINGS_TITLE_SITE_PERMISSIONS);
|
| + for (const auto& permission : permissionInfoList) {
|
| + controlOrigin.y += kPermissionsVerticalSpacing;
|
| + NSPoint rowBottomRight = [self addPermission:permission
|
| + toView:permissionsView_
|
| + atPoint:controlOrigin];
|
| + controlOrigin.y = rowBottomRight.y;
|
| + }
|
|
|
| - for (const auto& permission : permissionInfoList) {
|
| - controlOrigin.y += kPermissionsVerticalSpacing;
|
| - NSPoint rowBottomRight = [self addPermission:permission
|
| + for (auto& object : chosenObjectInfoList) {
|
| + controlOrigin.y += kPermissionsVerticalSpacing;
|
| + NSPoint rowBottomRight = [self addChosenObject:std::move(object)
|
| toView:permissionsView_
|
| atPoint:controlOrigin];
|
| - controlOrigin.y = rowBottomRight.y;
|
| - }
|
| -
|
| - for (auto& object : chosenObjectInfoList) {
|
| - controlOrigin.y += kPermissionsVerticalSpacing;
|
| - NSPoint rowBottomRight = [self addChosenObject:std::move(object)
|
| - toView:permissionsView_
|
| - atPoint:controlOrigin];
|
| - controlOrigin.y = rowBottomRight.y;
|
| - }
|
| -
|
| - controlOrigin.y += kPermissionsVerticalSpacing;
|
| + controlOrigin.y = rowBottomRight.y;
|
| }
|
|
|
| + controlOrigin.y += kPermissionsVerticalSpacing;
|
| [permissionsView_ setFrameSize:
|
| NSMakeSize(NSWidth([permissionsView_ frame]), controlOrigin.y)];
|
| [self performLayout];
|
| }
|
|
|
| +- (void)updatePermissionButton:
|
| + (WebsiteSettingsUI::VisiblePermissions)visiblePermissions {
|
| + base::string16 title = bridge_->GetPermissionButtonString(visiblePermissions);
|
| + [permissionButton_ setTitle:base::SysUTF16ToNSString(title)];
|
| + if (visiblePermissions == WebsiteSettingsUI::VISIBLE_PERMISSIONS_ALL) {
|
| + [permissionButton_ setAction:@selector(showSiteSettingsData:)];
|
| + } else {
|
| + [permissionButton_ setAction:@selector(showAllPermissions:)];
|
| + }
|
| +}
|
| +
|
| @end
|
|
|
| WebsiteSettingsUIBridge::WebsiteSettingsUIBridge(
|
| @@ -1219,5 +1230,5 @@ void WebsiteSettingsUIBridge::SetPermissionInfo(
|
|
|
| void WebsiteSettingsUIBridge::UpdatePermissionButton(
|
| WebsiteSettingsUI::VisiblePermissions visible_permissions) {
|
| - // TODO(crbug.com/657267)
|
| + [bubble_controller_ updatePermissionButton:visible_permissions];
|
| }
|
|
|