OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "chrome/browser/ui/webui/options/content_settings_handler.h" | 5 #include "chrome/browser/ui/webui/options/content_settings_handler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 // Here we only subscribe to the HostZoomMap for the default storage partition | 585 // Here we only subscribe to the HostZoomMap for the default storage partition |
586 // since we don't allow the user to manage the zoom levels for apps. | 586 // since we don't allow the user to manage the zoom levels for apps. |
587 // We're only interested in zoom-levels that are persisted, since the user | 587 // We're only interested in zoom-levels that are persisted, since the user |
588 // is given the opportunity to view/delete these in the content-settings page. | 588 // is given the opportunity to view/delete these in the content-settings page. |
589 host_zoom_map_subscription_ = | 589 host_zoom_map_subscription_ = |
590 content::HostZoomMap::GetDefaultForBrowserContext(context) | 590 content::HostZoomMap::GetDefaultForBrowserContext(context) |
591 ->AddZoomLevelChangedCallback( | 591 ->AddZoomLevelChangedCallback( |
592 base::Bind(&ContentSettingsHandler::OnZoomLevelChanged, | 592 base::Bind(&ContentSettingsHandler::OnZoomLevelChanged, |
593 base::Unretained(this))); | 593 base::Unretained(this))); |
594 | 594 |
595 if (!switches::IsEnableWebviewBasedSignin()) { | |
596 // The legacy signin page uses a different storage partition, so we need to | |
597 // add a subscription for its HostZoomMap separately. | |
598 GURL signin_url(chrome::kChromeUIChromeSigninURL); | |
599 content::StoragePartition* signin_partition = | |
600 content::BrowserContext::GetStoragePartitionForSite( | |
601 GetBrowserContext(web_ui()), signin_url); | |
602 content::HostZoomMap* signin_host_zoom_map = | |
603 signin_partition->GetHostZoomMap(); | |
604 signin_host_zoom_map_subscription_ = | |
605 signin_host_zoom_map->AddZoomLevelChangedCallback( | |
606 base::Bind(&ContentSettingsHandler::OnZoomLevelChanged, | |
607 base::Unretained(this))); | |
608 } | |
609 | |
610 flash_settings_manager_.reset(new PepperFlashSettingsManager(this, context)); | 595 flash_settings_manager_.reset(new PepperFlashSettingsManager(this, context)); |
611 | 596 |
612 Profile* profile = Profile::FromWebUI(web_ui()); | 597 Profile* profile = Profile::FromWebUI(web_ui()); |
613 observer_.Add(HostContentSettingsMapFactory::GetForProfile(profile)); | 598 observer_.Add(HostContentSettingsMapFactory::GetForProfile(profile)); |
614 if (profile->HasOffTheRecordProfile()) { | 599 if (profile->HasOffTheRecordProfile()) { |
615 auto map = HostContentSettingsMapFactory::GetForProfile( | 600 auto map = HostContentSettingsMapFactory::GetForProfile( |
616 profile->GetOffTheRecordProfile()); | 601 profile->GetOffTheRecordProfile()); |
617 if (!observer_.IsObserving(map)) | 602 if (!observer_.IsObserving(map)) |
618 observer_.Add(map); | 603 observer_.Add(map); |
619 } | 604 } |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 settings.exceptions_initialized = true; | 941 settings.exceptions_initialized = true; |
957 UpdateFlashMediaLinksVisibility(type); | 942 UpdateFlashMediaLinksVisibility(type); |
958 } | 943 } |
959 | 944 |
960 void ContentSettingsHandler::UpdateMIDISysExExceptionsView() { | 945 void ContentSettingsHandler::UpdateMIDISysExExceptionsView() { |
961 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | 946 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
962 UpdateExceptionsViewFromHostContentSettingsMap( | 947 UpdateExceptionsViewFromHostContentSettingsMap( |
963 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | 948 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
964 } | 949 } |
965 | 950 |
966 void ContentSettingsHandler::AdjustZoomLevelsListForSigninPageIfNecessary( | |
967 content::HostZoomMap::ZoomLevelVector* zoom_levels) { | |
968 if (switches::IsEnableWebviewBasedSignin()) | |
969 return; | |
970 | |
971 GURL signin_url(chrome::kChromeUIChromeSigninURL); | |
972 content::HostZoomMap* signin_host_zoom_map = | |
973 content::BrowserContext::GetStoragePartitionForSite( | |
974 GetBrowserContext(web_ui()), signin_url)->GetHostZoomMap(); | |
975 | |
976 // Since zoom levels set for scheme + host are not persisted, and since the | |
977 // signin page zoom levels need to be persisted, they are stored without | |
978 // a scheme. We use an empty scheme string to indicate this. | |
979 std::string scheme; | |
980 std::string host = signin_url.host(); | |
981 | |
982 // If there's a WebView signin zoom level, remove it. | |
983 content::HostZoomMap::ZoomLevelVector::iterator it = | |
984 std::find_if(zoom_levels->begin(), zoom_levels->end(), | |
985 [&host](content::HostZoomMap::ZoomLevelChange change) { | |
986 return change.host == host; | |
987 }); | |
988 if (it != zoom_levels->end()) | |
989 zoom_levels->erase(it); | |
990 | |
991 // If there's a non-WebView signin zoom level, add it. | |
992 if (signin_host_zoom_map->HasZoomLevel(scheme, host)) { | |
993 content::HostZoomMap::ZoomLevelChange change = { | |
994 content::HostZoomMap::ZOOM_CHANGED_FOR_HOST, | |
995 host, | |
996 scheme, | |
997 signin_host_zoom_map->GetZoomLevelForHostAndScheme(scheme, host)}; | |
998 zoom_levels->push_back(change); | |
999 } | |
1000 } | |
1001 | |
1002 void ContentSettingsHandler::UpdateZoomLevelsExceptionsView() { | 951 void ContentSettingsHandler::UpdateZoomLevelsExceptionsView() { |
1003 base::ListValue zoom_levels_exceptions; | 952 base::ListValue zoom_levels_exceptions; |
1004 | 953 |
1005 content::HostZoomMap* host_zoom_map = | 954 content::HostZoomMap* host_zoom_map = |
1006 content::HostZoomMap::GetDefaultForBrowserContext( | 955 content::HostZoomMap::GetDefaultForBrowserContext( |
1007 GetBrowserContext(web_ui())); | 956 GetBrowserContext(web_ui())); |
1008 content::HostZoomMap::ZoomLevelVector zoom_levels( | 957 content::HostZoomMap::ZoomLevelVector zoom_levels( |
1009 host_zoom_map->GetAllZoomLevels()); | 958 host_zoom_map->GetAllZoomLevels()); |
1010 | 959 |
1011 AdjustZoomLevelsListForSigninPageIfNecessary(&zoom_levels); | |
1012 | |
1013 // Sort ZoomLevelChanges by host and scheme | 960 // Sort ZoomLevelChanges by host and scheme |
1014 // (a.com < http://a.com < https://a.com < b.com). | 961 // (a.com < http://a.com < https://a.com < b.com). |
1015 std::sort(zoom_levels.begin(), zoom_levels.end(), | 962 std::sort(zoom_levels.begin(), zoom_levels.end(), |
1016 [](const content::HostZoomMap::ZoomLevelChange& a, | 963 [](const content::HostZoomMap::ZoomLevelChange& a, |
1017 const content::HostZoomMap::ZoomLevelChange& b) { | 964 const content::HostZoomMap::ZoomLevelChange& b) { |
1018 return a.host == b.host ? a.scheme < b.scheme : a.host < b.host; | 965 return a.host == b.host ? a.scheme < b.scheme : a.host < b.host; |
1019 }); | 966 }); |
1020 | 967 |
1021 for (content::HostZoomMap::ZoomLevelVector::const_iterator i = | 968 for (content::HostZoomMap::ZoomLevelVector::const_iterator i = |
1022 zoom_levels.begin(); | 969 zoom_levels.begin(); |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1305 std::string pattern; | 1252 std::string pattern; |
1306 rv = args->GetString(2, &pattern); | 1253 rv = args->GetString(2, &pattern); |
1307 DCHECK(rv); | 1254 DCHECK(rv); |
1308 | 1255 |
1309 if (pattern == | 1256 if (pattern == |
1310 l10n_util::GetStringUTF8(IDS_ZOOMLEVELS_CHROME_ERROR_PAGES_LABEL)) { | 1257 l10n_util::GetStringUTF8(IDS_ZOOMLEVELS_CHROME_ERROR_PAGES_LABEL)) { |
1311 pattern = content::kUnreachableWebDataURL; | 1258 pattern = content::kUnreachableWebDataURL; |
1312 } | 1259 } |
1313 | 1260 |
1314 content::HostZoomMap* host_zoom_map; | 1261 content::HostZoomMap* host_zoom_map; |
1315 if (switches::IsEnableWebviewBasedSignin() || | 1262 host_zoom_map = |
1316 pattern != chrome::kChromeUIChromeSigninHost) { | 1263 content::HostZoomMap::GetDefaultForBrowserContext( |
1317 host_zoom_map = | 1264 GetBrowserContext(web_ui())); |
1318 content::HostZoomMap::GetDefaultForBrowserContext( | |
1319 GetBrowserContext(web_ui())); | |
1320 } else { | |
1321 host_zoom_map = | |
1322 content::BrowserContext::GetStoragePartitionForSite( | |
1323 GetBrowserContext(web_ui()), GURL(chrome::kChromeUIChromeSigninURL)) | |
1324 ->GetHostZoomMap(); | |
1325 } | |
1326 double default_level = host_zoom_map->GetDefaultZoomLevel(); | 1265 double default_level = host_zoom_map->GetDefaultZoomLevel(); |
1327 host_zoom_map->SetZoomLevelForHost(pattern, default_level); | 1266 host_zoom_map->SetZoomLevelForHost(pattern, default_level); |
1328 } | 1267 } |
1329 | 1268 |
1330 void ContentSettingsHandler::RegisterMessages() { | 1269 void ContentSettingsHandler::RegisterMessages() { |
1331 web_ui()->RegisterMessageCallback("setContentFilter", | 1270 web_ui()->RegisterMessageCallback("setContentFilter", |
1332 base::Bind(&ContentSettingsHandler::SetContentFilter, | 1271 base::Bind(&ContentSettingsHandler::SetContentFilter, |
1333 base::Unretained(this))); | 1272 base::Unretained(this))); |
1334 web_ui()->RegisterMessageCallback("removeException", | 1273 web_ui()->RegisterMessageCallback("removeException", |
1335 base::Bind(&ContentSettingsHandler::RemoveException, | 1274 base::Bind(&ContentSettingsHandler::RemoveException, |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1662 | 1601 |
1663 // Exceptions apply only when the feature is enabled. | 1602 // Exceptions apply only when the feature is enabled. |
1664 PrefService* prefs = user_prefs::UserPrefs::Get(GetBrowserContext(web_ui())); | 1603 PrefService* prefs = user_prefs::UserPrefs::Get(GetBrowserContext(web_ui())); |
1665 bool enable_exceptions = prefs->GetBoolean(prefs::kEnableDRM); | 1604 bool enable_exceptions = prefs->GetBoolean(prefs::kEnableDRM); |
1666 web_ui()->CallJavascriptFunction( | 1605 web_ui()->CallJavascriptFunction( |
1667 "ContentSettings.enableProtectedContentExceptions", | 1606 "ContentSettings.enableProtectedContentExceptions", |
1668 base::FundamentalValue(enable_exceptions)); | 1607 base::FundamentalValue(enable_exceptions)); |
1669 } | 1608 } |
1670 | 1609 |
1671 } // namespace options | 1610 } // namespace options |
OLD | NEW |