15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/content_settings/content_setting_image_model.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/host_content_settings_map.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/tab_specific_content_settings.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prerender/prerender_manager.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/theme_resources.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingBlockedImageModel : public ContentSettingImageModel { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit ContentSettingBlockedImageModel( 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType content_settings_type); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingGeolocationImageModel : public ContentSettingImageModel { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingGeolocationImageModel(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Image model for displaying media icons in the location bar. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ContentSettingMediaImageModel : public ContentSettingImageModel { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) explicit ContentSettingMediaImageModel(ContentSettingsType type); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingRPHImageModel : public ContentSettingImageModel { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingRPHImageModel(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingNotificationsImageModel : public ContentSettingImageModel { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingNotificationsImageModel(); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass ContentSettingMIDISysExImageModel : public ContentSettingImageModel { 56ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public: 57ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ContentSettingMIDISysExImageModel(); 58ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 59ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 60ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}; 61ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ContentSettingsTypeIdEntry { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType type; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int id; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetIdForContentType(const ContentSettingsTypeIdEntry* entries, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t num_entries, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType type) { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < num_entries; ++i) { 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (entries[i].type == type) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return entries[i].id; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentSettingBlockedImageModel::ContentSettingBlockedImageModel( 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType content_settings_type) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : ContentSettingImageModel(content_settings_type) { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ContentSettingBlockedImageModel::UpdateFromWebContents( 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents) { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_visible(false); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!web_contents) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const ContentSettingsTypeIdEntry kBlockedIconIDs[] = { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_COOKIES, IDR_BLOCKED_COOKIES}, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_IMAGES, IDR_BLOCKED_IMAGES}, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_JAVASCRIPT, IDR_BLOCKED_JAVASCRIPT}, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_PLUGINS, IDR_BLOCKED_PLUGINS}, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_POPUPS, IDR_BLOCKED_POPUPS}, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, IDR_BLOCKED_MIXED_CONTENT}, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, IDR_BLOCKED_PPAPI_BROKER}, 1007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, IDR_BLOCKED_DOWNLOADS}, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const ContentSettingsTypeIdEntry kBlockedTooltipIDs[] = { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_COOKIES, IDS_BLOCKED_COOKIES_TITLE}, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_IMAGES, IDS_BLOCKED_IMAGES_TITLE}, 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_JAVASCRIPT, IDS_BLOCKED_JAVASCRIPT_TITLE}, 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_PLUGINS, IDS_BLOCKED_PLUGINS_MESSAGE}, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_POPUPS, IDS_BLOCKED_POPUPS_TOOLTIP}, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_BLOCKED_DISPLAYING_INSECURE_CONTENT}, 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, IDS_BLOCKED_PPAPI_BROKER_TITLE}, 1117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, IDS_BLOCKED_DOWNLOAD_TITLE}, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const ContentSettingsTypeIdEntry kBlockedExplanatoryTextIDs[] = { 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_POPUPS, IDS_BLOCKED_POPUPS_EXPLANATORY_TEXT}, 1156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_PLUGINS, IDS_BLOCKED_PLUGIN_EXPLANATORY_TEXT}, 1167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, 1177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch IDS_BLOCKED_DOWNLOADS_EXPLANATION}, 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType type = get_content_settings_type(); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int icon_id = GetIdForContentType( 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kBlockedIconIDs, arraysize(kBlockedIconIDs), type); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int tooltip_id = GetIdForContentType( 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kBlockedTooltipIDs, arraysize(kBlockedTooltipIDs), type); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int explanation_id = GetIdForContentType( 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kBlockedExplanatoryTextIDs, arraysize(kBlockedExplanatoryTextIDs), type); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // For plugins, don't show the animated explanation unless the plugin was 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // blocked despite the user's content settings being set to allow it (e.g. 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // due to auto-blocking NPAPI plugins). 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Profile* profile = 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Profile::FromBrowserContext(web_contents->GetBrowserContext()); 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch HostContentSettingsMap* map = profile->GetHostContentSettingsMap(); 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (type == CONTENT_SETTINGS_TYPE_PLUGINS) { 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch GURL url = web_contents->GetURL(); 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (map->GetContentSetting(url, url, type, std::string()) != 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CONTENT_SETTING_ALLOW) 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch explanation_id = 0; 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If a content type is blocked by default and was accessed, display the 142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // content blocked page action. 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabSpecificContentSettings* content_settings = 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabSpecificContentSettings::FromWebContents(web_contents); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!content_settings) 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!content_settings->IsContentBlocked(type)) { 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!content_settings->IsContentAllowed(type)) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // For cookies, only show the cookie blocked page action if cookies are 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // blocked by default. 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (type == CONTENT_SETTINGS_TYPE_COOKIES && 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch (map->GetDefaultContentSetting(type, NULL) != CONTENT_SETTING_BLOCK)) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const ContentSettingsTypeIdEntry kAccessedIconIDs[] = { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_COOKIES, IDR_ACCESSED_COOKIES}, 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, IDR_BLOCKED_PPAPI_BROKER}, 1607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, IDR_ALLOWED_DOWNLOADS}, 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const ContentSettingsTypeIdEntry kAccessedTooltipIDs[] = { 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {CONTENT_SETTINGS_TYPE_COOKIES, IDS_ACCESSED_COOKIES_TITLE}, 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, IDS_ALLOWED_PPAPI_BROKER_TITLE}, 1657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, IDS_ALLOWED_DOWNLOAD_TITLE}, 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) icon_id = GetIdForContentType( 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kAccessedIconIDs, arraysize(kAccessedIconIDs), type); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tooltip_id = GetIdForContentType( 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kAccessedTooltipIDs, arraysize(kAccessedTooltipIDs), type); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explanation_id = 0; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_visible(true); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(icon_id); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_icon(icon_id); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_explanatory_string_id(explanation_id); 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(tooltip_id); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(tooltip_id)); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentSettingGeolocationImageModel::ContentSettingGeolocationImageModel() 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : ContentSettingImageModel(CONTENT_SETTINGS_TYPE_GEOLOCATION) { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ContentSettingGeolocationImageModel::UpdateFromWebContents( 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents) { 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_visible(false); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!web_contents) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabSpecificContentSettings* content_settings = 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabSpecificContentSettings::FromWebContents(web_contents); 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!content_settings) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 194ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const ContentSettingsUsagesState& usages_state = content_settings-> 195ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch geolocation_usages_state(); 196ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch if (usages_state.state_map().empty()) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_visible(true); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If any embedded site has access the allowed icon takes priority over the 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // blocked icon. 202ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch unsigned int state_flags = 0; 203ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch usages_state.GetDetailedInfo(NULL, &state_flags); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool allowed = 205ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch !!(state_flags & ContentSettingsUsagesState::TABSTATE_HAS_ANY_ALLOWED); 2067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) set_icon(allowed ? IDR_ALLOWED_LOCATION : IDR_BLOCKED_LOCATION); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(allowed ? 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_GEOLOCATION_ALLOWED_TOOLTIP : IDS_GEOLOCATION_BLOCKED_TOOLTIP)); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)ContentSettingMediaImageModel::ContentSettingMediaImageModel( 2127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ContentSettingsType type) 2137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : ContentSettingImageModel(type) { 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ContentSettingMediaImageModel::UpdateFromWebContents( 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContents* web_contents) { 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) set_visible(false); 2197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 2207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // As long as a single icon is used to display the status of the camera and 2217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // microphone usage only display an icon for the 2227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // CONTENT_SETTINGS_TYPE_MEDIASTREAM. Don't display anything for 2237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, 2247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA. 2257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // FIXME: Remove this hack and either display a two omnibox icons (one for 2267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // camera and one for microphone), or don't create one image model per 2277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // content type but per icon to display. The later is probably the right 2287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // thing to do, bebacuse this also allows to add more content settings type 2297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // for which no omnibox icon exists. 2307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (get_content_settings_type() == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || 2317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) get_content_settings_type() == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { 2327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return; 2337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 2347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 2357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // The ContentSettingMediaImageModel must not be used with a content type 2367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // other then: CONTENT_SETTINGS_TYPE_MEDIASTREAM, 2377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, 2387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA. 2397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DCHECK_EQ(get_content_settings_type(), CONTENT_SETTINGS_TYPE_MEDIASTREAM); 2407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!web_contents) 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabSpecificContentSettings* content_settings = 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabSpecificContentSettings::FromWebContents(web_contents); 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!content_settings) 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 2487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabSpecificContentSettings::MicrophoneCameraState state = 2497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) content_settings->GetMicrophoneCameraState(); 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 25134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) switch (state) { 25234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) case TabSpecificContentSettings::MICROPHONE_CAMERA_NOT_ACCESSED: 25334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) // If neither the microphone nor the camera stream was accessed then no 25434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) // icon is displayed in the omnibox. 25534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) return; 25634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) case TabSpecificContentSettings::MICROPHONE_ACCESSED: 25734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_icon(IDR_ASK_MEDIA); 25834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(IDS_MICROPHONE_ACCESSED)); 25934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) break; 26034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) case TabSpecificContentSettings::CAMERA_ACCESSED: 26134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_icon(IDR_ASK_MEDIA); 26234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(IDS_CAMERA_ACCESSED)); 26334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) break; 26434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) case TabSpecificContentSettings::MICROPHONE_CAMERA_ACCESSED: 26534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_icon(IDR_ASK_MEDIA); 26634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(IDS_MICROPHONE_CAMERA_ALLOWED)); 26734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) break; 26834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) case TabSpecificContentSettings::MICROPHONE_BLOCKED: 26934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_icon(IDR_BLOCKED_MEDIA); 27034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(IDS_MICROPHONE_BLOCKED)); 27134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) break; 27234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) case TabSpecificContentSettings::CAMERA_BLOCKED: 27334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_icon(IDR_BLOCKED_MEDIA); 27434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(IDS_CAMERA_BLOCKED)); 27534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) break; 27634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) case TabSpecificContentSettings::MICROPHONE_CAMERA_BLOCKED: 27734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_icon(IDR_BLOCKED_MEDIA); 27834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(IDS_MICROPHONE_CAMERA_BLOCKED)); 27934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) break; 2807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) set_visible(true); 2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentSettingRPHImageModel::ContentSettingRPHImageModel() 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : ContentSettingImageModel( 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) { 2877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) set_icon(IDR_REGISTER_PROTOCOL_HANDLER); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_tooltip(l10n_util::GetStringUTF8(IDS_REGISTER_PROTOCOL_HANDLER_TOOLTIP)); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ContentSettingRPHImageModel::UpdateFromWebContents( 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents) { 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_visible(false); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!web_contents) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabSpecificContentSettings* content_settings = 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabSpecificContentSettings::FromWebContents(web_contents); 2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!content_settings) 3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (content_settings->pending_protocol_handler().IsEmpty()) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_visible(true); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentSettingNotificationsImageModel::ContentSettingNotificationsImageModel() 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : ContentSettingImageModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS) { 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ContentSettingNotificationsImageModel::UpdateFromWebContents( 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents) { 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifications do not have a bubble. 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_visible(false); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 317ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochContentSettingMIDISysExImageModel::ContentSettingMIDISysExImageModel() 318ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch : ContentSettingImageModel(CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { 319ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 320ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 321ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid ContentSettingMIDISysExImageModel::UpdateFromWebContents( 322ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch WebContents* web_contents) { 323ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch set_visible(false); 324ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (!web_contents) 325ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return; 326ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch TabSpecificContentSettings* content_settings = 327ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch TabSpecificContentSettings::FromWebContents(web_contents); 328ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (!content_settings) 329ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return; 330ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const ContentSettingsUsagesState& usages_state = 331ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch content_settings->midi_usages_state(); 332ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (usages_state.state_map().empty()) 333ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return; 334ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch set_visible(true); 335ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 336ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // If any embedded site has access the allowed icon takes priority over the 337ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // blocked icon. 338ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch unsigned int state_flags = 0; 339ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch usages_state.GetDetailedInfo(NULL, &state_flags); 340ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool allowed = 341ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch !!(state_flags & ContentSettingsUsagesState::TABSTATE_HAS_ANY_ALLOWED); 342ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch set_icon(allowed ? IDR_ALLOWED_MIDI_SYSEX : IDR_BLOCKED_MIDI_SYSEX); 343ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch set_tooltip(l10n_util::GetStringUTF8(allowed ? 344ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_MIDI_SYSEX_ALLOWED_TOOLTIP : IDS_MIDI_SYSEX_BLOCKED_TOOLTIP)); 345ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 346ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentSettingImageModel::ContentSettingImageModel( 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType content_settings_type) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : content_settings_type_(content_settings_type), 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_visible_(false), 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) icon_(0), 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explanatory_string_id_(0) { 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentSettingImageModel* 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingImageModel::CreateContentSettingImageModel( 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType content_settings_type) { 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (content_settings_type) { 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case CONTENT_SETTINGS_TYPE_GEOLOCATION: 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new ContentSettingGeolocationImageModel(); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new ContentSettingNotificationsImageModel(); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS: 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new ContentSettingRPHImageModel(); 3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case CONTENT_SETTINGS_TYPE_MEDIASTREAM: 3677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: 3687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: 3697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return new ContentSettingMediaImageModel(content_settings_type); 370ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: 371ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return new ContentSettingMIDISysExImageModel(); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new ContentSettingBlockedImageModel(content_settings_type); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 376