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

Side by Side Diff: chrome/browser/ui/cocoa/page_info/page_info_bubble_controller.mm

Issue 2737413004: Add a Certificate Viewer link to the Page Info dropdown (Closed)
Patch Set: Add subviews Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/page_info/page_info_bubble_controller.h" 5 #import "chrome/browser/ui/cocoa/page_info/page_info_bubble_controller.h"
6 6
7 #import <AppKit/AppKit.h> 7 #import <AppKit/AppKit.h>
8 8
9 #include <cmath> 9 #include <cmath>
10 10
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 if (location_bar) { 127 if (location_bar) {
128 NSPoint bubble_point = location_bar->GetPageInfoBubblePoint(); 128 NSPoint bubble_point = location_bar->GetPageInfoBubblePoint();
129 origin = ui::ConvertPointFromWindowToScreen(parent, bubble_point); 129 origin = ui::ConvertPointFromWindowToScreen(parent, bubble_point);
130 } 130 }
131 } 131 }
132 return origin; 132 return origin;
133 } 133 }
134 134
135 } // namespace 135 } // namespace
136 136
137 @implementation InspectLinkView
138 - (id)initWithFrame:(NSRect)frame {
139 if (self = [super initWithFrame:frame]) {
140 [self setAutoresizingMask:NSViewWidthSizable];
141 [self setSubviews:[NSArray array]];
142 }
143 return self;
144 }
145
146 - (void)setActionLink:(NSButton*)actionLink {
147 actionLink_ = actionLink;
148 }
149
150 - (void)setLinkText:(NSString*)linkText {
151 [actionLink_ setTitle:linkText];
152 [GTMUILocalizerAndLayoutTweaker sizeToFitView:actionLink_];
153 }
154
155 - (void)setLinkToolTip:(NSString*)linkToolTip {
156 [actionLink_ setToolTip:linkToolTip];
157 }
158
159 - (void)setLinkTarget:(NSObject*)target withAction:(SEL)action {
160 [actionLink_ setTarget:target];
161 [actionLink_ setAction:action];
162 }
163 @end
164
137 @interface ChosenObjectDeleteButton : HoverImageButton { 165 @interface ChosenObjectDeleteButton : HoverImageButton {
138 @private 166 @private
139 ChosenObjectInfoPtr objectInfo_; 167 ChosenObjectInfoPtr objectInfo_;
140 ChosenObjectDeleteCallback callback_; 168 ChosenObjectDeleteCallback callback_;
141 } 169 }
142 170
143 // Designated initializer. Takes ownership of |objectInfo|. 171 // Designated initializer. Takes ownership of |objectInfo|.
144 - (instancetype)initWithChosenObject:(ChosenObjectInfoPtr)objectInfo 172 - (instancetype)initWithChosenObject:(ChosenObjectInfoPtr)objectInfo
145 atPoint:(NSPoint)point 173 atPoint:(NSPoint)point
146 withCallback:(ChosenObjectDeleteCallback)callback; 174 withCallback:(ChosenObjectDeleteCallback)callback;
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 385
358 // Create and return a subview for the site settings and add it to the given 386 // Create and return a subview for the site settings and add it to the given
359 // |superview|. |superview| retains the new view. 387 // |superview|. |superview| retains the new view.
360 - (NSView*)addSiteSettingsSectionToView:(NSView*)superview { 388 - (NSView*)addSiteSettingsSectionToView:(NSView*)superview {
361 base::scoped_nsobject<NSView> siteSettingsSectionView( 389 base::scoped_nsobject<NSView> siteSettingsSectionView(
362 [[FlippedView alloc] initWithFrame:[superview frame]]); 390 [[FlippedView alloc] initWithFrame:[superview frame]]);
363 [superview addSubview:siteSettingsSectionView]; 391 [superview addSubview:siteSettingsSectionView];
364 392
365 // Initialize the two containers that hold the controls. The initial frames 393 // Initialize the two containers that hold the controls. The initial frames
366 // are arbitrary, and will be adjusted after the controls are laid out. 394 // are arbitrary, and will be adjusted after the controls are laid out.
367 cookiesView_ = 395 PageInfoUI::PermissionInfo info;
368 [[[FlippedView alloc] initWithFrame:[superview frame]] autorelease]; 396 info.type = CONTENT_SETTINGS_TYPE_COOKIES;
369 [cookiesView_ setAutoresizingMask:NSViewWidthSizable]; 397 info.setting = CONTENT_SETTING_ALLOW;
370 [siteSettingsSectionView addSubview:cookiesView_]; 398 cookiesView_ = [self
399 addInspectLinkToView:siteSettingsSectionView
400 sectionIcon:PageInfoUI::GetPermissionIcon(info).ToNSImage()
401 sectionTitle:l10n_util::GetStringUTF16(IDS_PAGE_INFO_COOKIES)
402 linkText:l10n_util::GetPluralNSStringF(
403 IDS_PAGE_INFO_NUM_COOKIES, 0)];
404 [cookiesView_ setLinkTarget:self
405 withAction:@selector(showCookiesAndSiteData:)];
371 406
372 permissionsView_ = 407 permissionsView_ =
373 [[[FlippedView alloc] initWithFrame:[superview frame]] autorelease]; 408 [[[FlippedView alloc] initWithFrame:[superview frame]] autorelease];
374 [siteSettingsSectionView addSubview:permissionsView_]; 409 [siteSettingsSectionView addSubview:permissionsView_];
375 410
411 // The certificate section is created on demand.
412 certificateView_ = nil;
413
376 // Create the link button to view site settings. Its position will be set in 414 // Create the link button to view site settings. Its position will be set in
377 // performLayout. 415 // performLayout.
378 NSString* siteSettingsButtonText = 416 NSString* siteSettingsButtonText =
379 l10n_util::GetNSString(IDS_PAGE_INFO_SITE_SETTINGS_LINK); 417 l10n_util::GetNSString(IDS_PAGE_INFO_SITE_SETTINGS_LINK);
380 siteSettingsButton_ = [self addButtonWithText:siteSettingsButtonText 418 siteSettingsButton_ = [self addButtonWithText:siteSettingsButtonText
381 toView:siteSettingsSectionView]; 419 toView:siteSettingsSectionView];
382 [GTMUILocalizerAndLayoutTweaker sizeToFitView:siteSettingsButton_]; 420 [GTMUILocalizerAndLayoutTweaker sizeToFitView:siteSettingsButton_];
383 421
384 [siteSettingsButton_ setTarget:self]; 422 [siteSettingsButton_ setTarget:self];
385 [siteSettingsButton_ setAction:@selector(showSiteSettingsData:)]; 423 [siteSettingsButton_ setAction:@selector(showSiteSettingsData:)];
386 424
387 return siteSettingsSectionView.get(); 425 return siteSettingsSectionView.get();
388 } 426 }
389 427
428 - (InspectLinkView*)addInspectLinkToView:(NSView*)superview
429 sectionIcon:(NSImage*)imageIcon
430 sectionTitle:(const base::string16&)titleText
431 linkText:(NSString*)linkText {
432 // Create the subview.
433 base::scoped_nsobject<InspectLinkView> newView(
434 [[InspectLinkView alloc] initWithFrame:[superview frame]]);
435 [superview addSubview:newView];
436
437 bool isRTL = base::i18n::IsRTL();
438 NSPoint controlOrigin = NSMakePoint(kSectionHorizontalPadding, 0);
439
440 CGFloat viewWidth = NSWidth([newView frame]);
441
442 // Reset X for the icon.
443 if (isRTL) {
444 controlOrigin.x =
445 viewWidth - kPermissionImageSize - kSectionHorizontalPadding;
446 }
447
448 NSImageView* imageView = [self addImageWithSize:[imageIcon size]
449 toView:newView
450 atPoint:controlOrigin];
451 [imageView setImage:imageIcon];
452
453 NSButton* actionLink = [self addLinkButtonWithText:linkText toView:newView];
454 [newView setActionLink:actionLink];
455
456 if (isRTL) {
457 controlOrigin.x -= kPermissionImageSpacing;
458 NSTextField* sectionTitle = [self addText:titleText
459 withSize:[NSFont systemFontSize]
460 bold:NO
461 toView:newView
462 atPoint:controlOrigin];
463 [sectionTitle sizeToFit];
464
465 NSPoint sectionTitleOrigin = [sectionTitle frame].origin;
466 sectionTitleOrigin.x -= NSWidth([sectionTitle frame]);
467 [sectionTitle setFrameOrigin:sectionTitleOrigin];
468
469 // Align the icon with the text.
470 [self alignPermissionIcon:imageView withTextField:sectionTitle];
471
472 controlOrigin.y += NSHeight([sectionTitle frame]);
473 controlOrigin.x -= NSWidth([actionLink frame]) - kLinkButtonXAdjustment;
474 [actionLink setFrameOrigin:controlOrigin];
475 } else {
476 controlOrigin.x += kPermissionImageSize + kPermissionImageSpacing;
477 NSTextField* sectionTitle = [self addText:titleText
478 withSize:[NSFont systemFontSize]
479 bold:NO
480 toView:newView
481 atPoint:controlOrigin];
482 [sectionTitle sizeToFit];
483
484 // Align the icon with the text.
485 [self alignPermissionIcon:imageView withTextField:sectionTitle];
486
487 controlOrigin.y += NSHeight([sectionTitle frame]);
488 controlOrigin.x -= kLinkButtonXAdjustment;
489 [actionLink setFrameOrigin:controlOrigin];
490 }
491
492 controlOrigin.y += NSHeight([actionLink frame]);
493 [newView setFrameSize:NSMakeSize(NSWidth([newView frame]), controlOrigin.y)];
494
495 return newView.get();
496 }
497
390 // Handler for the link button below the list of cookies. 498 // Handler for the link button below the list of cookies.
391 - (void)showCookiesAndSiteData:(id)sender { 499 - (void)showCookiesAndSiteData:(id)sender {
392 DCHECK(webContents_); 500 DCHECK(webContents_);
393 DCHECK(presenter_); 501 DCHECK(presenter_);
394 presenter_->RecordPageInfoAction(PageInfo::PAGE_INFO_COOKIES_DIALOG_OPENED); 502 presenter_->RecordPageInfoAction(PageInfo::PAGE_INFO_COOKIES_DIALOG_OPENED);
395 TabDialogs::FromWebContents(webContents_)->ShowCollectedCookies(); 503 TabDialogs::FromWebContents(webContents_)->ShowCollectedCookies();
396 } 504 }
397 505
398 // Handler for the site settings button below the list of permissions. 506 // Handler for the site settings button below the list of permissions.
399 - (void)showSiteSettingsData:(id)sender { 507 - (void)showSiteSettingsData:(id)sender {
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 yPos)]; 626 yPos)];
519 yPos = NSMaxY([resetDecisionsButton_ frame]); 627 yPos = NSMaxY([resetDecisionsButton_ frame]);
520 } 628 }
521 629
522 // Resize the height based on contents. 630 // Resize the height based on contents.
523 [self setHeightOfView:securitySectionView_ to:yPos + kSectionVerticalPadding]; 631 [self setHeightOfView:securitySectionView_ to:yPos + kSectionVerticalPadding];
524 } 632 }
525 633
526 - (void)layoutSiteSettingsSection { 634 - (void)layoutSiteSettingsSection {
527 // Start the layout with the first element. Margins are handled by the caller. 635 // Start the layout with the first element. Margins are handled by the caller.
528 CGFloat yPos = 0; 636 CGFloat yPos = kSectionVerticalPadding;
529 637
530 yPos = 638 if (certificateView_) {
531 [self setYPositionOfView:cookiesView_ to:yPos + kSectionVerticalPadding]; 639 yPos = [self setYPositionOfView:certificateView_ to:yPos] +
640 kPermissionsVerticalSpacing;
641 }
642
643 yPos = [self setYPositionOfView:cookiesView_ to:yPos];
532 644
533 if (permissionsPresent_) { 645 if (permissionsPresent_) {
534 // Put the permission info just below the link button. 646 // Put the permission info just below the link button.
535 yPos = [self setYPositionOfView:permissionsView_ to:yPos]; 647 yPos = [self setYPositionOfView:permissionsView_ to:yPos];
536 } 648 }
537 649
538 yPos = [self layoutViewAtRTLStart:siteSettingsButton_ withYPosition:yPos]; 650 yPos = [self layoutViewAtRTLStart:siteSettingsButton_ withYPosition:yPos];
539 651
540 // Resize the height based on contents. 652 // Resize the height based on contents.
541 [self setHeightOfView:siteSettingsSectionView_ 653 [self setHeightOfView:siteSettingsSectionView_
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 buttonFrame.size.width = maxTitleWidth; 786 buttonFrame.size.width = maxTitleWidth;
675 787
676 [button setFrame:buttonFrame]; 788 [button setFrame:buttonFrame];
677 [button setButtonType:NSMomentaryPushInButton]; 789 [button setButtonType:NSMomentaryPushInButton];
678 [button setBezelStyle:NSRegularSquareBezelStyle]; 790 [button setBezelStyle:NSRegularSquareBezelStyle];
679 [view addSubview:button.get()]; 791 [view addSubview:button.get()];
680 792
681 return button.get(); 793 return button.get();
682 } 794 }
683 795
684 // Set the content of the identity and identity status fields. 796 // Set the content of the identity and identity status fields, and add the
797 // Certificate view if applicable.
685 - (void)setIdentityInfo:(const PageInfoUI::IdentityInfo&)identityInfo { 798 - (void)setIdentityInfo:(const PageInfoUI::IdentityInfo&)identityInfo {
686 std::unique_ptr<PageInfoUI::SecurityDescription> security_description = 799 std::unique_ptr<PageInfoUI::SecurityDescription> security_description =
687 identityInfo.GetSecurityDescription(); 800 identityInfo.GetSecurityDescription();
688 [securitySummaryField_ 801 [securitySummaryField_
689 setStringValue:base::SysUTF16ToNSString(security_description->summary)]; 802 setStringValue:SysUTF16ToNSString(security_description->summary)];
690 803
691 [securityDetailsField_ 804 [securityDetailsField_
692 setStringValue:SysUTF16ToNSString(security_description->details)]; 805 setStringValue:SysUTF16ToNSString(security_description->details)];
693 806
694 certificate_ = identityInfo.certificate; 807 certificate_ = identityInfo.certificate;
695 808
696 if (certificate_ && identityInfo.show_ssl_decision_revoke_button) { 809 if (certificate_) {
697 resetDecisionsField_ = 810 if (identityInfo.show_ssl_decision_revoke_button) {
698 [self addText:base::string16() 811 resetDecisionsField_ =
699 withSize:[NSFont smallSystemFontSize] 812 [self addText:base::string16()
700 bold:NO 813 withSize:[NSFont smallSystemFontSize]
701 toView:securitySectionView_ 814 bold:NO
702 atPoint:NSMakePoint(kSectionHorizontalPadding, 0)]; 815 toView:securitySectionView_
703 [resetDecisionsField_ 816 atPoint:NSMakePoint(kSectionHorizontalPadding, 0)];
704 setStringValue:l10n_util::GetNSString( 817 [resetDecisionsField_
705 IDS_PAGEINFO_INVALID_CERTIFICATE_DESCRIPTION)]; 818 setStringValue:l10n_util::GetNSString(
706 [self sizeTextFieldHeightToFit:resetDecisionsField_]; 819 IDS_PAGEINFO_INVALID_CERTIFICATE_DESCRIPTION)];
820 [self sizeTextFieldHeightToFit:resetDecisionsField_];
707 821
708 resetDecisionsButton_ = 822 resetDecisionsButton_ =
709 [self addLinkButtonWithText: 823 [self addLinkButtonWithText:
710 l10n_util::GetNSString( 824 l10n_util::GetNSString(
711 IDS_PAGEINFO_RESET_INVALID_CERTIFICATE_DECISIONS_BUTTON) 825 IDS_PAGEINFO_RESET_INVALID_CERTIFICATE_DECISIONS_BUTTON)
712 toView:securitySectionView_]; 826 toView:securitySectionView_];
713 [resetDecisionsButton_ setTarget:self]; 827 [resetDecisionsButton_ setTarget:self];
714 [resetDecisionsButton_ setAction:@selector(resetCertificateDecisions:)]; 828 [resetDecisionsButton_ setAction:@selector(resetCertificateDecisions:)];
829 }
830
831 if (PageInfoUI::ShouldShowCertificateLink()) {
832 bool isValid = (identityInfo.identity_status !=
833 PageInfo::SITE_IDENTITY_STATUS_ERROR);
834 NSString* linkText = l10n_util::GetNSString(
835 isValid ? IDS_PAGE_INFO_CERTIFICATE_VALID_LINK
836 : IDS_PAGE_INFO_CERTIFICATE_INVALID_LINK);
837
838 certificateView_ = [self
839 addInspectLinkToView:siteSettingsSectionView_
840 sectionIcon:PageInfoUI::GetCertificateIcon().ToNSImage()
841 sectionTitle:l10n_util::GetStringUTF16(
842 IDS_PAGE_INFO_CERTIFICATE)
843 linkText:linkText];
844 if (isValid)
845 [certificateView_
846 setLinkToolTip:
847 l10n_util::GetNSStringF(
848 IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY_VERIFIED,
849 base::UTF8ToUTF16(
850 certificate_->issuer().GetDisplayName()))];
851
852 [certificateView_ setLinkTarget:self
853 withAction:@selector(showCertificateInfo:)];
854 }
715 } 855 }
716 856
717 [self performLayout]; 857 [self performLayout];
718 } 858 }
719 859
720 // Add a pop-up button for |permissionInfo| to the given view. 860 // Add a pop-up button for |permissionInfo| to the given view.
721 - (NSPopUpButton*)addPopUpButtonForPermission: 861 - (NSPopUpButton*)addPopUpButtonForPermission:
722 (const PageInfoUI::PermissionInfo&)permissionInfo 862 (const PageInfoUI::PermissionInfo&)permissionInfo
723 toView:(NSView*)view 863 toView:(NSView*)view
724 atPoint:(NSPoint)point { 864 atPoint:(NSPoint)point {
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 // Align an image with a text field by vertically centering the image on 1123 // Align an image with a text field by vertically centering the image on
984 // the cap height of the first line of text. 1124 // the cap height of the first line of text.
985 - (void)alignPermissionIcon:(NSImageView*)imageView 1125 - (void)alignPermissionIcon:(NSImageView*)imageView
986 withTextField:(NSTextField*)textField { 1126 withTextField:(NSTextField*)textField {
987 NSRect frame = [imageView frame]; 1127 NSRect frame = [imageView frame];
988 frame.origin.y += kPermissionIconYAdjustment; 1128 frame.origin.y += kPermissionIconYAdjustment;
989 [imageView setFrame:frame]; 1129 [imageView setFrame:frame];
990 } 1130 }
991 1131
992 - (void)setCookieInfo:(const CookieInfoList&)cookieInfoList { 1132 - (void)setCookieInfo:(const CookieInfoList&)cookieInfoList {
993 // A result of re-ordering of the permissions (crbug.com/444244) is
994 // that sometimes permissions may not be displayed at all, so it's
995 // incorrect to check they are set before the cookie info.
996
997 // |cookieInfoList| should only ever have 2 items: first- and third-party 1133 // |cookieInfoList| should only ever have 2 items: first- and third-party
998 // cookies. 1134 // cookies.
999 DCHECK_EQ(cookieInfoList.size(), 2u); 1135 DCHECK_EQ(cookieInfoList.size(), 2u);
1000 1136
1001 int totalAllowed = 0; 1137 int totalAllowed = 0;
1002 for (const auto& i : cookieInfoList) { 1138 for (const auto& i : cookieInfoList) {
1003 totalAllowed += i.allowed; 1139 totalAllowed += i.allowed;
1004 } 1140 }
1005 base::string16 label_text =
1006 l10n_util::GetPluralStringFUTF16(IDS_PAGE_INFO_NUM_COOKIES, totalAllowed);
1007 1141
1008 base::string16 sectionTitle = 1142 [cookiesView_ setLinkText:l10n_util::GetPluralNSStringF(
1009 l10n_util::GetStringUTF16(IDS_PAGE_INFO_TITLE_SITE_DATA); 1143 IDS_PAGE_INFO_NUM_COOKIES, totalAllowed)];
1010 bool isRTL = base::i18n::IsRTL();
1011
1012 [cookiesView_ setSubviews:[NSArray array]];
1013 NSPoint controlOrigin = NSMakePoint(kSectionHorizontalPadding, 0);
1014
1015 CGFloat viewWidth = NSWidth([cookiesView_ frame]);
1016
1017 // Reset X for the cookie image.
1018 if (isRTL) {
1019 controlOrigin.x = viewWidth - kPermissionImageSize -
1020 kPermissionImageSpacing - kSectionHorizontalPadding;
1021 }
1022
1023 PageInfoUI::PermissionInfo info;
1024 info.type = CONTENT_SETTINGS_TYPE_COOKIES;
1025 info.setting = CONTENT_SETTING_ALLOW;
1026 // info.default_setting, info.source, and info.is_incognito have not been set,
1027 // but GetPermissionIcon doesn't use any of those.
1028 NSImage* image = PageInfoUI::GetPermissionIcon(info).ToNSImage();
1029 NSImageView* imageView = [self addImageWithSize:[image size]
1030 toView:cookiesView_
1031 atPoint:controlOrigin];
1032 [imageView setImage:image];
1033
1034 NSButton* cookiesButton =
1035 [self addLinkButtonWithText:base::SysUTF16ToNSString(label_text)
1036 toView:cookiesView_];
1037 [cookiesButton setTarget:self];
1038 [cookiesButton setAction:@selector(showCookiesAndSiteData:)];
1039
1040 if (isRTL) {
1041 controlOrigin.x -= kPermissionImageSpacing;
1042 NSTextField* cookiesLabel =
1043 [self addText:l10n_util::GetStringUTF16(IDS_PAGE_INFO_COOKIES)
1044 withSize:[NSFont systemFontSize]
1045 bold:NO
1046 toView:cookiesView_
1047 atPoint:controlOrigin];
1048 [cookiesLabel sizeToFit];
1049
1050 NSPoint cookiesLabelOrigin = [cookiesLabel frame].origin;
1051 cookiesLabelOrigin.x -= NSWidth([cookiesLabel frame]);
1052 [cookiesLabel setFrameOrigin:cookiesLabelOrigin];
1053
1054 // Align the icon with the text.
1055 [self alignPermissionIcon:imageView withTextField:cookiesLabel];
1056
1057 controlOrigin.y += NSHeight([cookiesLabel frame]);
1058 controlOrigin.x -= NSWidth([cookiesButton frame]) - kLinkButtonXAdjustment;
1059 [cookiesButton setFrameOrigin:controlOrigin];
1060 } else {
1061 controlOrigin.x += kPermissionImageSize + kPermissionImageSpacing;
1062 NSTextField* cookiesLabel =
1063 [self addText:l10n_util::GetStringUTF16(IDS_PAGE_INFO_COOKIES)
1064 withSize:[NSFont systemFontSize]
1065 bold:NO
1066 toView:cookiesView_
1067 atPoint:controlOrigin];
1068 [cookiesLabel sizeToFit];
1069
1070 controlOrigin.y += NSHeight([cookiesLabel frame]);
1071 controlOrigin.x -= kLinkButtonXAdjustment;
1072 [cookiesButton setFrameOrigin:controlOrigin];
1073
1074 // Align the icon with the text.
1075 [self alignPermissionIcon:imageView withTextField:cookiesLabel];
1076 }
1077
1078 controlOrigin.y += NSHeight([cookiesButton frame]);
1079 [cookiesView_
1080 setFrameSize:NSMakeSize(NSWidth([cookiesView_ frame]), controlOrigin.y)];
1081
1082 [self performLayout]; 1144 [self performLayout];
1083 } 1145 }
1084 1146
1085 - (void)setPermissionInfo:(const PermissionInfoList&)permissionInfoList 1147 - (void)setPermissionInfo:(const PermissionInfoList&)permissionInfoList
1086 andChosenObjects:(ChosenObjectInfoList)chosenObjectInfoList { 1148 andChosenObjects:(ChosenObjectInfoList)chosenObjectInfoList {
1087 [permissionsView_ setSubviews:[NSArray array]]; 1149 [permissionsView_ setSubviews:[NSArray array]];
1088 NSPoint controlOrigin = NSMakePoint(kSectionHorizontalPadding, 0); 1150 NSPoint controlOrigin = NSMakePoint(kSectionHorizontalPadding, 0);
1089 1151
1090 permissionsPresent_ = YES; 1152 permissionsPresent_ = YES;
1091 1153
1092 if (permissionInfoList.size() > 0 || chosenObjectInfoList.size() > 0) { 1154 if (permissionInfoList.size() > 0 || chosenObjectInfoList.size() > 0) {
1093 base::string16 sectionTitle =
1094 l10n_util::GetStringUTF16(IDS_PAGE_INFO_TITLE_SITE_PERMISSIONS);
1095
1096 for (const auto& permission : permissionInfoList) { 1155 for (const auto& permission : permissionInfoList) {
1097 controlOrigin.y += kPermissionsVerticalSpacing; 1156 controlOrigin.y += kPermissionsVerticalSpacing;
1098 NSPoint rowBottomRight = [self addPermission:permission 1157 NSPoint rowBottomRight = [self addPermission:permission
1099 toView:permissionsView_ 1158 toView:permissionsView_
1100 atPoint:controlOrigin]; 1159 atPoint:controlOrigin];
1101 controlOrigin.y = rowBottomRight.y; 1160 controlOrigin.y = rowBottomRight.y;
1102 } 1161 }
1103 1162
1104 for (auto& object : chosenObjectInfoList) { 1163 for (auto& object : chosenObjectInfoList) {
1105 controlOrigin.y += kPermissionsVerticalSpacing; 1164 controlOrigin.y += kPermissionsVerticalSpacing;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 void PageInfoUIBridge::SetCookieInfo(const CookieInfoList& cookie_info_list) { 1253 void PageInfoUIBridge::SetCookieInfo(const CookieInfoList& cookie_info_list) {
1195 [bubble_controller_ setCookieInfo:cookie_info_list]; 1254 [bubble_controller_ setCookieInfo:cookie_info_list];
1196 } 1255 }
1197 1256
1198 void PageInfoUIBridge::SetPermissionInfo( 1257 void PageInfoUIBridge::SetPermissionInfo(
1199 const PermissionInfoList& permission_info_list, 1258 const PermissionInfoList& permission_info_list,
1200 ChosenObjectInfoList chosen_object_info_list) { 1259 ChosenObjectInfoList chosen_object_info_list) {
1201 [bubble_controller_ setPermissionInfo:permission_info_list 1260 [bubble_controller_ setPermissionInfo:permission_info_list
1202 andChosenObjects:std::move(chosen_object_info_list)]; 1261 andChosenObjects:std::move(chosen_object_info_list)];
1203 } 1262 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698