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

Unified Diff: chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm

Issue 2712863005: Cocoa Page Info: Implement expanding all permissions (Closed)
Patch Set: Rebase. Created 3 years, 10 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
« no previous file with comments | « chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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];
}
« no previous file with comments | « chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698