Index: chrome/browser/content_settings/tab_specific_content_settings.cc |
diff --git a/chrome/browser/content_settings/tab_specific_content_settings.cc b/chrome/browser/content_settings/tab_specific_content_settings.cc |
index 70c1b17591f3f4b426d1f8fd3fe9ed7440c4a998..fc58c9ae7f8aa416205f6eb6c8f291fb91b4d377 100644 |
--- a/chrome/browser/content_settings/tab_specific_content_settings.cc |
+++ b/chrome/browser/content_settings/tab_specific_content_settings.cc |
@@ -11,6 +11,7 @@ |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/browsing_data/browsing_data_appcache_helper.h" |
#include "chrome/browser/browsing_data/browsing_data_cookie_helper.h" |
#include "chrome/browser/browsing_data/browsing_data_database_helper.h" |
@@ -21,6 +22,7 @@ |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/content_settings/chrome_content_settings_utils.h" |
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
+#include "chrome/browser/download/download_request_limiter.h" |
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" |
#include "chrome/browser/media/webrtc/media_stream_capture_indicator.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -239,6 +241,12 @@ bool TabSpecificContentSettings::IsContentBlocked( |
<< "Notifications settings handled by " |
<< "ContentSettingsNotificationsImageModel"; |
+ // Automatic downloads are handled by DownloadRequestLimiter. |
+ if (content_type == CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS) { |
Bernhard Bauer
2017/01/25 19:01:14
If you are now bypassing TabSpecificContentSetting
alshabalin
2017/02/07 16:16:29
Done.
|
+ return g_browser_process->download_request_limiter()->GetDownloadStatus( |
+ web_contents()) == DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED; |
+ } |
+ |
if (content_type == CONTENT_SETTINGS_TYPE_IMAGES || |
content_type == CONTENT_SETTINGS_TYPE_JAVASCRIPT || |
content_type == CONTENT_SETTINGS_TYPE_PLUGINS || |
@@ -248,7 +256,6 @@ bool TabSpecificContentSettings::IsContentBlocked( |
content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || |
content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA || |
content_type == CONTENT_SETTINGS_TYPE_PPAPI_BROKER || |
- content_type == CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS || |
content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { |
const auto& it = content_settings_status_.find(content_type); |
if (it != content_settings_status_.end()) |
@@ -285,13 +292,18 @@ void TabSpecificContentSettings::SetSubresourceBlockageIndicated() { |
bool TabSpecificContentSettings::IsContentAllowed( |
ContentSettingsType content_type) const { |
+ // Automatic downloads are handled by DownloadRequestLimiter. |
+ if (content_type == CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS) { |
+ return g_browser_process->download_request_limiter()->GetDownloadStatus( |
+ web_contents()) == DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS; |
+ } |
+ |
// This method currently only returns meaningful values for the content type |
// cookies, media, PPAPI broker, downloads, and MIDI sysex. |
if (content_type != CONTENT_SETTINGS_TYPE_COOKIES && |
content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC && |
content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA && |
content_type != CONTENT_SETTINGS_TYPE_PPAPI_BROKER && |
- content_type != CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS && |
content_type != CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { |
return false; |
} |
@@ -696,18 +708,6 @@ void TabSpecificContentSettings::FlashDownloadBlocked() { |
base::UTF8ToUTF16(content::kFlashPluginName)); |
} |
-void TabSpecificContentSettings::SetDownloadsBlocked(bool blocked) { |
- ContentSettingsStatus& status = |
- content_settings_status_[CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS]; |
- status.blocked = blocked; |
- status.allowed = !blocked; |
- status.blockage_indicated_to_user = false; |
- content::NotificationService::current()->Notify( |
- chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED, |
- content::Source<WebContents>(web_contents()), |
- content::NotificationService::NoDetails()); |
-} |
- |
void TabSpecificContentSettings::SetPopupsBlocked(bool blocked) { |
ContentSettingsStatus& status = |
content_settings_status_[CONTENT_SETTINGS_TYPE_POPUPS]; |