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

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

Issue 2232453002: Show a custom message in the page info bubble for view-source URLs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: The Created 4 years, 4 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/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 04e00c0bcf7d24cc4eaaaf1bf949b11a2785e5bf..1968d1ecb64a3189e851d3fd0c660e8d6e84e1da 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
@@ -183,16 +183,23 @@ NSPoint AnchorPointForWindow(NSWindow* parent) {
return kDefaultWindowWidth;
}
+bool IsInternalURL(const GURL& url) {
+ return url.SchemeIs(content::kChromeUIScheme) ||
+ url.SchemeIs(extensions::kExtensionScheme) ||
+ url.SchemeIs(content::kViewSourceScheme);
+}
+
- (id)initWithParentWindow:(NSWindow*)parentWindow
websiteSettingsUIBridge:(WebsiteSettingsUIBridge*)bridge
webContents:(content::WebContents*)webContents
- bubbleType:(BubbleType)bubbleType
+ url:(const GURL&)url
isDevToolsDisabled:(BOOL)isDevToolsDisabled {
DCHECK(parentWindow);
webContents_ = webContents;
permissionsPresent_ = NO;
isDevToolsDisabled_ = isDevToolsDisabled;
+ url_ = url;
// Use an arbitrary height; it will be changed in performLayout.
NSRect contentRect = NSMakeRect(0, 0, [self defaultWindowWidth], 1);
@@ -217,12 +224,11 @@ NSPoint AnchorPointForWindow(NSWindow* parent) {
[[[self window] contentView] setSubviews:
[NSArray arrayWithObject:contentView_.get()]];
- if (bubbleType == INTERNAL_PAGE)
- [self initializeContentsForInternalPage:false];
- else if (bubbleType == EXTENSION_PAGE)
- [self initializeContentsForInternalPage:true];
- else
+ if (IsInternalURL(url_)) {
+ [self initializeContentsForInternalPage:url_];
+ } else {
[self initializeContents];
+ }
bridge_.reset(bridge);
bridge_->set_bubble_controller(self);
@@ -242,16 +248,26 @@ NSPoint AnchorPointForWindow(NSWindow* parent) {
}
// Create the subviews for the bubble for internal Chrome pages.
-- (void)initializeContentsForInternalPage:(BOOL)isExtensionPage {
+- (void)initializeContentsForInternalPage:(const GURL&)url {
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- NSPoint controlOrigin = NSMakePoint(
- kInternalPageFramePadding,
- kInternalPageFramePadding + info_bubble::kBubbleArrowHeight);
- NSImage* productLogoImage =
- rb.GetNativeImageNamed(isExtensionPage ? IDR_PLUGINS_FAVICON
- : IDR_PRODUCT_LOGO_16)
- .ToNSImage();
+ int text = IDS_PAGE_INFO_INTERNAL_PAGE;
+ int icon = IDR_PRODUCT_LOGO_16;
+ if (url.SchemeIs(extensions::kExtensionScheme)) {
+ text = IDS_PAGE_INFO_EXTENSION_PAGE;
+ icon = IDR_PLUGINS_FAVICON;
+ } else if (url.SchemeIs(content::kViewSourceScheme)) {
+ text = IDS_PAGE_INFO_VIEW_SOURCE_PAGE;
+ // view-source scheme uses the same icon as chrome:// pages.
+ icon = IDR_PRODUCT_LOGO_16;
+ } else if (!url.SchemeIs(content::kChromeUIScheme)) {
+ NOTREACHED();
+ }
+
+ NSPoint controlOrigin =
+ NSMakePoint(kInternalPageFramePadding,
+ kInternalPageFramePadding + info_bubble::kBubbleArrowHeight);
+ NSImage* productLogoImage = rb.GetNativeImageNamed(icon).ToNSImage();
NSImageView* imageView = [self addImageWithSize:[productLogoImage size]
toView:contentView_
atPoint:controlOrigin];
@@ -259,10 +275,7 @@ NSPoint AnchorPointForWindow(NSWindow* parent) {
NSRect imageFrame = [imageView frame];
controlOrigin.x += NSWidth(imageFrame) + kInternalPageImageSpacing;
- base::string16 text =
- l10n_util::GetStringUTF16(isExtensionPage ? IDS_PAGE_INFO_EXTENSION_PAGE
- : IDS_PAGE_INFO_INTERNAL_PAGE);
- NSTextField* textField = [self addText:text
+ NSTextField* textField = [self addText:l10n_util::GetStringUTF16(text)
withSize:[NSFont smallSystemFontSize]
bold:NO
toView:contentView_
@@ -1134,12 +1147,6 @@ void WebsiteSettingsUIBridge::Show(
if (g_is_popup_showing)
return;
- BubbleType bubble_type = WEB_PAGE;
- if (virtual_url.SchemeIs(content::kChromeUIScheme))
- bubble_type = INTERNAL_PAGE;
- else if (virtual_url.SchemeIs(extensions::kExtensionScheme))
- bubble_type = EXTENSION_PAGE;
-
// Create the bridge. This will be owned by the bubble controller.
WebsiteSettingsUIBridge* bridge = new WebsiteSettingsUIBridge(web_contents);
@@ -1153,10 +1160,10 @@ void WebsiteSettingsUIBridge::Show(
initWithParentWindow:parent
websiteSettingsUIBridge:bridge
webContents:web_contents
- bubbleType:bubble_type
+ url:virtual_url
isDevToolsDisabled:is_devtools_disabled];
- if (bubble_type == WEB_PAGE) {
+ if (!IsInternalURL(virtual_url)) {
// Initialize the presenter, which holds the model and controls the UI.
// This is also owned by the bubble controller.
WebsiteSettings* presenter = new WebsiteSettings(

Powered by Google App Engine
This is Rietveld 408576698