Chromium Code Reviews| Index: chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.mm |
| diff --git a/chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.mm b/chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.mm |
| index a854f8b8c4ce9c674ee4b8ee8eeea147d1360fa1..4da93fda92e3c793568a11b9cd610049a172485e 100644 |
| --- a/chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.mm |
| +++ b/chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.mm |
| @@ -236,6 +236,28 @@ class ContentSettingBubbleWebContentsObserverBridge |
| anchoredAt:anchor]; |
| } |
| +struct ContentTypeToNibPath { |
| + ContentSettingsType type; |
| + NSString* path; |
| +}; |
| + |
| +const ContentTypeToNibPath kNibPaths[] = { |
| + {CONTENT_SETTINGS_TYPE_COOKIES, @"ContentBlockedCookies"}, |
| + {CONTENT_SETTINGS_TYPE_IMAGES, @"ContentBlockedSimple"}, |
| + {CONTENT_SETTINGS_TYPE_JAVASCRIPT, @"ContentBlockedSimple"}, |
| + {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, @"ContentBlockedSimple"}, |
| + {CONTENT_SETTINGS_TYPE_PLUGINS, @"ContentBlockedPlugins"}, |
| + {CONTENT_SETTINGS_TYPE_POPUPS, @"ContentBlockedPopups"}, |
| + {CONTENT_SETTINGS_TYPE_GEOLOCATION, @"ContentBlockedGeolocation"}, |
| + {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, @"ContentBlockedMixedScript"}, |
| + {CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, @"ContentProtocolHandlers"}, |
| + {CONTENT_SETTINGS_TYPE_MEDIASTREAM, @"ContentBlockedMedia"}, |
| + {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, @"ContentBlockedMedia"}, |
|
tapted
2015/09/03 06:36:38
_MIC and _CAMERA were previously NOTREACHED() - is
raymes
2015/09/07 04:29:27
This is intentional to match the list of bubble ty
|
| + {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, @"ContentBlockedMedia"}, |
| + {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, @"ContentBlockedDownloads"}, |
| + {CONTENT_SETTINGS_TYPE_MIDI_SYSEX, @"ContentBlockedMIDISysEx"}, |
| +}; |
| + |
| - (id)initWithModel:(ContentSettingBubbleModel*)contentSettingBubbleModel |
| webContents:(content::WebContents*)webContents |
| parentWindow:(NSWindow*)parentWindow |
| @@ -247,48 +269,19 @@ class ContentSettingBubbleWebContentsObserverBridge |
| new ContentSettingBubbleWebContentsObserverBridge(webContents, self)); |
| ContentSettingsType settingsType = model->content_type(); |
| + DCHECK(ContainsKey(ContentSettingBubbleModel::GetSupportedBubbleTypes(), |
| + settingsType)); |
| + DCHECK_EQ(ContentSettingBubbleModel::GetSupportedBubbleTypes().size(), |
| + arraysize(kNibPaths)); |
| NSString* nibPath = @""; |
| - switch (settingsType) { |
| - case CONTENT_SETTINGS_TYPE_COOKIES: |
| - nibPath = @"ContentBlockedCookies"; break; |
| - case CONTENT_SETTINGS_TYPE_IMAGES: |
| - case CONTENT_SETTINGS_TYPE_JAVASCRIPT: |
| - case CONTENT_SETTINGS_TYPE_PPAPI_BROKER: |
| - nibPath = @"ContentBlockedSimple"; break; |
| - case CONTENT_SETTINGS_TYPE_PLUGINS: |
| - nibPath = @"ContentBlockedPlugins"; break; |
| - case CONTENT_SETTINGS_TYPE_POPUPS: |
| - nibPath = @"ContentBlockedPopups"; break; |
| - case CONTENT_SETTINGS_TYPE_GEOLOCATION: |
| - nibPath = @"ContentBlockedGeolocation"; break; |
| - case CONTENT_SETTINGS_TYPE_MIXEDSCRIPT: |
| - nibPath = @"ContentBlockedMixedScript"; break; |
| - case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS: |
| - nibPath = @"ContentProtocolHandlers"; break; |
| - case CONTENT_SETTINGS_TYPE_MEDIASTREAM: |
| - nibPath = @"ContentBlockedMedia"; break; |
| - case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS: |
| - nibPath = @"ContentBlockedDownloads"; break; |
| - case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: |
| - nibPath = @"ContentBlockedMIDISysEx"; break; |
| - // These content types have no bubble: |
| - case CONTENT_SETTINGS_TYPE_DEFAULT: |
| - case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: |
| - case CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE: |
| - case CONTENT_SETTINGS_TYPE_FULLSCREEN: |
| - case CONTENT_SETTINGS_TYPE_MOUSELOCK: |
| - case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: |
| - case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: |
| - case CONTENT_SETTINGS_NUM_TYPES: |
| - // TODO(miguelg): Remove this nib content settings support |
| - // is implemented |
| - case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING: |
| - case CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS: |
| - case CONTENT_SETTINGS_TYPE_APP_BANNER: |
| - case CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT: |
| - case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: |
| - NOTREACHED(); |
| + for (const ContentTypeToNibPath& type_to_path : kNibPaths) { |
| + if (settingsType == type_to_path.type) { |
| + nibPath = type_to_path.path; |
| + break; |
| + } |
| } |
| + DCHECK_NE(@"", nibPath); |
|
tapted
2015/09/03 06:36:38
DCHECK_NE(0u, [nibPath length]);
(otherwise it's
raymes
2015/09/07 04:29:27
Done.
|
| + |
| if ((self = [super initWithWindowNibPath:nibPath |
| parentWindow:parentWindow |
| anchoredAt:anchoredAt])) { |