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

Unified Diff: chrome/browser/ui/content_settings/content_setting_image_model.cc

Issue 2561673003: Handle per-tab AUTOMATIC_DOWNLOADS setting in DownloadRequestLimiter. (Closed)
Patch Set: Fix whitespace Created 3 years, 10 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/content_settings/content_setting_image_model.cc
diff --git a/chrome/browser/ui/content_settings/content_setting_image_model.cc b/chrome/browser/ui/content_settings/content_setting_image_model.cc
index 1bef3be8a1f4d1faa43c6f0c1379345e4de734e6..9f888143a46b2dca309cc5530fc6854fa6902e7a 100644
--- a/chrome/browser/ui/content_settings/content_setting_image_model.cc
+++ b/chrome/browser/ui/content_settings/content_setting_image_model.cc
@@ -8,8 +8,10 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "build/build_config.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
+#include "chrome/browser/download/download_request_limiter.h"
#include "chrome/browser/plugins/plugin_utils.h"
#include "chrome/browser/prerender/prerender_manager.h"
#include "chrome/browser/profiles/profile.h"
@@ -36,6 +38,7 @@ using content::WebContents;
// ContentSettingGeolocationImageModel - geolocation
// ContentSettingRPHImageModel - protocol handlers
// ContentSettingMIDISysExImageModel - midi sysex
+// ContentSettingDownloadsImageModel - automatic downloads
// ContentSettingMediaImageModel - media
// ContentSettingSubresourceFilterImageModel - deceptive content
@@ -97,6 +100,17 @@ class ContentSettingMIDISysExImageModel
DISALLOW_COPY_AND_ASSIGN(ContentSettingMIDISysExImageModel);
};
+class ContentSettingDownloadsImageModel
+ : public ContentSettingSimpleImageModel {
+ public:
+ ContentSettingDownloadsImageModel();
+
+ void UpdateFromWebContents(WebContents* web_contents) override;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ContentSettingDownloadsImageModel);
+};
+
namespace {
struct ContentSettingsImageDetails {
@@ -122,9 +136,6 @@ const ContentSettingsImageDetails kImageDetails[] = {
IDS_BLOCKED_DISPLAYING_INSECURE_CONTENT, 0, 0},
{CONTENT_SETTINGS_TYPE_PPAPI_BROKER, gfx::VectorIconId::EXTENSION,
IDS_BLOCKED_PPAPI_BROKER_TITLE, 0, IDS_ALLOWED_PPAPI_BROKER_TITLE},
- {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS,
- gfx::VectorIconId::FILE_DOWNLOAD, IDS_BLOCKED_DOWNLOAD_TITLE,
- IDS_BLOCKED_DOWNLOADS_EXPLANATION, IDS_ALLOWED_DOWNLOAD_TITLE},
};
const ContentSettingsImageDetails* GetImageDetails(ContentSettingsType type) {
@@ -192,6 +203,9 @@ ContentSettingSimpleImageModel::CreateForContentTypeForTesting(
if (content_settings_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX)
return base::MakeUnique<ContentSettingMIDISysExImageModel>();
+ if (content_settings_type == CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS)
+ return base::MakeUnique<ContentSettingDownloadsImageModel>();
+
return base::MakeUnique<ContentSettingBlockedImageModel>(
content_settings_type);
}
@@ -502,6 +516,40 @@ void ContentSettingMIDISysExImageModel::UpdateFromWebContents(
: IDS_MIDI_SYSEX_BLOCKED_TOOLTIP));
}
+// Automatic downloads ---------------------------------------------------------
+
+ContentSettingDownloadsImageModel::ContentSettingDownloadsImageModel()
+ : ContentSettingSimpleImageModel(
+ CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS) {}
+
+void ContentSettingDownloadsImageModel::UpdateFromWebContents(
+ WebContents* web_contents) {
+ set_visible(false);
+ if (!web_contents)
+ return;
+
+ switch (g_browser_process->download_request_limiter()->GetDownloadStatus(
+ web_contents)) {
+ case DownloadRequestLimiter::ALLOW_ALL_DOWNLOADS:
+ set_visible(true);
+ set_icon_by_vector_id(gfx::VectorIconId::FILE_DOWNLOAD,
+ gfx::VectorIconId::VECTOR_ICON_NONE);
+ set_explanatory_string_id(0);
+ set_tooltip(l10n_util::GetStringUTF16(IDS_ALLOWED_DOWNLOAD_TITLE));
+ return;
+ case DownloadRequestLimiter::DOWNLOADS_NOT_ALLOWED:
+ set_visible(true);
+ set_icon_by_vector_id(gfx::VectorIconId::FILE_DOWNLOAD,
+ gfx::VectorIconId::BLOCKED_BADGE);
+ set_explanatory_string_id(IDS_BLOCKED_DOWNLOADS_EXPLANATION);
+ set_tooltip(l10n_util::GetStringUTF16(IDS_BLOCKED_DOWNLOAD_TITLE));
+ return;
+ default:
+ // No need to show icon otherwise.
+ return;
+ }
+}
+
// Base class ------------------------------------------------------------------
gfx::Image ContentSettingImageModel::GetIcon(SkColor nearby_text_color) const {
@@ -547,8 +595,7 @@ ContentSettingImageModel::GenerateContentSettingImageModels() {
result.push_back(base::MakeUnique<ContentSettingMediaImageModel>());
result.push_back(
base::MakeUnique<ContentSettingSubresourceFilterImageModel>());
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>(
- CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS));
+ result.push_back(base::MakeUnique<ContentSettingDownloadsImageModel>());
result.push_back(base::MakeUnique<ContentSettingMIDISysExImageModel>());
return result;

Powered by Google App Engine
This is Rietveld 408576698