Content settings infrastructure: re-added method incorrectly deleted (#1571)

fix getting text for ask settings (#1543 #1438)
Modified desktop ui: permissions line text turns red when modified
This commit is contained in:
Carmelo Messina
2024-10-20 19:04:49 +02:00
parent 3512484e44
commit 44af0492e0
3 changed files with 96 additions and 28 deletions
@@ -30,7 +30,7 @@ Require: bromite-build-utils.patch
.../ui/views/page_info/page_info_main_view.cc | 28 +-
.../views/page_info/page_info_view_factory.cc | 20 +
.../views/page_info/page_info_view_factory.h | 5 +
.../page_info/permission_toggle_row_view.cc | 163 ++++++-
.../page_info/permission_toggle_row_view.cc | 173 +++++++-
.../page_info/permission_toggle_row_view.h | 18 +-
.../settings_localized_strings_provider.cc | 54 +++
.../ui/webui/settings/site_settings_helper.cc | 46 +-
@@ -72,18 +72,18 @@ Require: bromite-build-utils.patch
.../common/content_settings_mojom_traits.cc | 12 +-
.../common/content_settings_mojom_traits.h | 24 +
.../core/common/content_settings_types.mojom | 1 +
.../renderer/content_settings_agent_impl.cc | 43 ++
.../renderer/content_settings_agent_impl.h | 7 +
.../renderer/content_settings_agent_impl.cc | 68 +++
.../renderer/content_settings_agent_impl.h | 9 +
.../PageInfoPermissionsController.java | 9 +
.../PermissionParamsListBuilder.java | 1 +
.../android/page_info_controller_android.cc | 18 +
components/page_info/page_info.cc | 23 +-
components/page_info/page_info_ui.cc | 18 +
components/page_info/page_info_ui.cc | 25 ++
components/site_settings_strings.grdp | 1 +
.../platform/web_content_settings_client.h | 9 +
.../execution_context/execution_context.cc | 16 +
.../execution_context/execution_context.h | 5 +
72 files changed, 1866 insertions(+), 93 deletions(-)
72 files changed, 1910 insertions(+), 93 deletions(-)
create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java
@@ -1050,7 +1050,20 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c
}
}
}
@@ -300,6 +396,33 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() {
@@ -255,6 +351,12 @@ void PermissionToggleRowView::InitForManagedSource(
}
void PermissionToggleRowView::UpdateUiOnPermissionChanged() {
+ choose_button_->SetEnabledTextColors(std::nullopt);
+ if (permission_.setting == CONTENT_SETTING_DEFAULT) {
+ choose_button_->SetTextColorId(views::Button::ButtonState::STATE_NORMAL,
+ ui::kColorLabelForeground);
+ }
+
if (blocked_on_system_level_label_) {
if (permission_.setting == CONTENT_SETTING_DEFAULT) {
permission_blocked_on_system_level_ = false;
@@ -300,6 +402,37 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() {
}
}
}
@@ -1080,6 +1093,10 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c
+ caption = u"Unknown";
+ }
+ choose_button_->SetText(caption);
+ if (permission_.setting == CONTENT_SETTING_DEFAULT) {
+ choose_button_->SetTextColorId(views::Button::ButtonState::STATE_NORMAL,
+ ui::kColorLabelForeground);
+ }
+ }
}
@@ -3139,7 +3156,7 @@ diff --git a/components/content_settings/core/common/content_settings_types.mojo
diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc
--- a/components/content_settings/renderer/content_settings_agent_impl.cc
+++ b/components/content_settings/renderer/content_settings_agent_impl.cc
@@ -200,6 +200,49 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules(
@@ -200,6 +200,74 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules(
std::move(renderer_settings));
}
@@ -3185,6 +3202,31 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
+ }
+ return default_value;
+}
+
+bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const {
+ const WebDocument& document = render_frame()->GetWebFrame()->GetDocument();
+ WebSecurityOrigin origin = document.GetSecurityOrigin();
+ WebURL document_url = document.Url();
+
+ if (origin.IsNull() || origin.IsOpaque())
+ return false; // Uninitialized document?
+
+ blink::WebString protocol = origin.Protocol();
+
+ if (protocol == content::kChromeUIScheme)
+ return true; // Browser UI elements should still work.
+
+ if (protocol == content::kChromeDevToolsScheme)
+ return true; // DevTools UI elements should still work.
+
+ // If the scheme is file:, an empty file name indicates a directory listing,
+ // which requires JavaScript to function properly.
+ if (protocol == url::kFileScheme &&
+ document_url.ProtocolIs(url::kFileScheme)) {
+ return GURL(document_url).ExtractFileName().empty();
+ }
+ return false;
+}
+
void ContentSettingsAgentImpl::OnContentSettingsAgentRequest(
mojo::PendingAssociatedReceiver<mojom::ContentSettingsAgent> receiver) {
@@ -3206,6 +3248,15 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h
// blink::WebContentSettingsClient:
void AllowStorageAccess(StorageType storage_type,
base::OnceCallback<void(bool)> callback) override;
@@ -129,6 +136,8 @@ class ContentSettingsAgentImpl
// Resets the `content_blocked_` array.
void ClearBlockedContentSettings();
+ bool IsAllowlistedForContentSettings() const;
+
// A getter for `content_settings_manager_` that ensures it is bound.
mojom::ContentSettingsManager& GetContentSettingsManager();
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java
@@ -3336,7 +3387,21 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in
#include "components/page_info/core/features.h"
#include "components/page_info/page_info.h"
#include "components/page_info/page_info_ui_delegate.h"
@@ -625,6 +626,12 @@ PageInfoUI::~PageInfoUI() = default;
@@ -331,6 +332,13 @@ void CreateOppositeToDefaultSiteException(
std::u16string GetPermissionAskStateString(ContentSettingsType type) {
int message_id = kInvalidResourceID;
+ const content_settings::WebsiteSettingsInfo* settingInfo =
+ content_settings::WebsiteSettingsRegistry::GetInstance()->Get(type);
+ if (settingInfo && settingInfo->show_into_info_page()) {
+ if (settingInfo->ask_ui() != 0)
+ return l10n_util::GetStringUTF16(settingInfo->ask_ui());
+ }
+
switch (type) {
case ContentSettingsType::GEOLOCATION:
message_id = IDS_PAGE_INFO_STATE_TEXT_LOCATION_ASK;
@@ -625,6 +633,12 @@ PageInfoUI::~PageInfoUI() = default;
// static
std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) {
@@ -3349,7 +3414,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in
for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) {
if (info.type == type)
return l10n_util::GetStringUTF16(info.string_id);
@@ -636,6 +643,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) {
@@ -636,6 +650,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) {
// static
std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence(
ContentSettingsType type) {
@@ -3362,7 +3427,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in
for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) {
if (info.type == type)
return l10n_util::GetStringUTF16(info.string_id_mid_sentence);
@@ -1081,6 +1094,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) {
@@ -1081,6 +1101,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) {
if (info.type == type)
return true;
}
@@ -4,22 +4,22 @@ Subject: Revert remove AllowScript content settings per secondary url
https://chromium-review.googlesource.com/c/chromium/src/+/5307559
---
.../worker_content_settings_client.cc | 35 ++++++++++++++++++
.../renderer/worker_content_settings_client.h | 2 ++
.../renderer/content_settings_agent_impl.cc | 36 ++++++++++++++++++-
.../renderer/content_settings_agent_impl.h | 6 ++++
.../platform/web_content_settings_client.h | 12 +++++++
.../renderer/core/frame/local_dom_window.cc | 6 +++-
.../worker_content_settings_client.cc | 35 +++++++++++++++++
.../renderer/worker_content_settings_client.h | 2 +
.../renderer/content_settings_agent_impl.cc | 38 ++++++++++++++++++-
.../renderer/content_settings_agent_impl.h | 6 +++
.../platform/web_content_settings_client.h | 12 ++++++
.../renderer/core/frame/local_dom_window.cc | 6 ++-
.../blink/renderer/core/frame/local_frame.cc | 13 -------
.../blink/renderer/core/frame/local_frame.h | 6 ----
.../renderer/core/html/html_meta_element.cc | 4 ++-
.../blink/renderer/core/frame/local_frame.h | 6 ---
.../renderer/core/html/html_meta_element.cc | 4 +-
.../core/loader/base_fetch_context.cc | 2 +-
.../renderer/core/loader/base_fetch_context.h | 2 +-
.../core/loader/frame_fetch_context.cc | 30 +++++++++++-----
.../core/loader/frame_fetch_context.cc | 30 ++++++++++-----
.../core/loader/frame_fetch_context.h | 13 ++++++-
.../core/loader/worker_fetch_context.cc | 12 ++++---
.../core/loader/worker_fetch_context.cc | 12 ++++--
.../core/loader/worker_fetch_context.h | 2 +-
15 files changed, 142 insertions(+), 39 deletions(-)
15 files changed, 144 insertions(+), 39 deletions(-)
diff --git a/chrome/renderer/worker_content_settings_client.cc b/chrome/renderer/worker_content_settings_client.cc
--- a/chrome/renderer/worker_content_settings_client.cc
@@ -90,7 +90,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
if (frame->Parent())
@@ -348,6 +348,39 @@ bool ContentSettingsAgentImpl::AllowImage(bool enabled_per_settings,
@@ -374,6 +374,41 @@ bool ContentSettingsAgentImpl::AllowImage(bool enabled_per_settings,
return allow;
}
@@ -109,6 +109,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
+ bool allow = AllowContentSetting(
+ ContentSettingsType::JAVASCRIPT, enabled_per_settings);
+
+ allow = allow || IsAllowlistedForContentSettings();
+ cached_script_permissions_[frame] = allow;
+ return allow;
+}
@@ -124,13 +125,14 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
+ allow = AllowContentSetting(
+ ContentSettingsType::JAVASCRIPT, script_url, enabled_per_settings);
+ }
+ allow = allow || IsAllowlistedForContentSettings();
+ return allow;
+}
+
bool ContentSettingsAgentImpl::AllowReadFromClipboard() {
return delegate_->AllowReadFromClipboard();
}
@@ -406,6 +439,7 @@ void ContentSettingsAgentImpl::DidNotAllowImage() {
@@ -432,6 +467,7 @@ void ContentSettingsAgentImpl::DidNotAllowImage() {
void ContentSettingsAgentImpl::ClearBlockedContentSettings() {
content_blocked_.clear();
cached_storage_permissions_.clear();
@@ -151,7 +153,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h
bool AllowReadFromClipboard() override;
bool AllowWriteToClipboard() override;
bool AllowMutationEvents(bool default_value) override;
@@ -155,6 +158,9 @@ class ContentSettingsAgentImpl
@@ -157,6 +160,9 @@ class ContentSettingsAgentImpl
using StoragePermissionsKey = std::pair<url::Origin, StorageType>;
base::flat_map<StoragePermissionsKey, bool> cached_storage_permissions_;
+5 -4
View File
@@ -15,7 +15,7 @@ Require: Content-settings-infrastructure.patch
.../bromite_content_settings/images.grdp | 23 +++++
.../bromite_content_settings/images.inc | 6 ++
.../core/browser/content_settings_registry.cc | 2 +-
.../renderer/content_settings_agent_impl.cc | 14 +++
.../renderer/content_settings_agent_impl.cc | 15 +++
.../renderer/content_settings_agent_impl.h | 2 +
.../platform/web_content_settings_client.h | 5 +
.../blink/renderer/core/frame/local_frame.cc | 13 ---
@@ -27,7 +27,7 @@ Require: Content-settings-infrastructure.patch
.../platform/loader/fetch/fetch_context.h | 2 +-
.../platform/loader/fetch/resource_fetcher.cc | 17 +++-
.../platform/loader/fetch/resource_fetcher.h | 2 +
21 files changed, 177 insertions(+), 36 deletions(-)
21 files changed, 178 insertions(+), 36 deletions(-)
create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/permission_images.png
create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/permission_images.png
create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/permission_images.png
@@ -271,7 +271,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc
--- a/components/content_settings/renderer/content_settings_agent_impl.cc
+++ b/components/content_settings/renderer/content_settings_agent_impl.cc
@@ -334,6 +334,20 @@ bool ContentSettingsAgentImpl::AllowStorageAccessSync(
@@ -359,6 +359,21 @@ bool ContentSettingsAgentImpl::AllowStorageAccessSync(
return result;
}
@@ -279,6 +279,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
+ const WebURL& image_url) {
+ bool allow = enabled_per_settings;
+ if (enabled_per_settings) {
+ allow = allow || IsAllowlistedForContentSettings();
+ if (content_setting_rules_) {
+ allow = AllowContentSetting(ContentSettingsType::IMAGES,
+ image_url, enabled_per_settings);
@@ -500,7 +501,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
FetchContext& Context() const;
void ClearContext();
@@ -688,6 +689,7 @@ class PLATFORM_EXPORT ResourceFetcher
@@ -690,6 +691,7 @@ class PLATFORM_EXPORT ResourceFetcher
// 27 bits left
bool auto_load_images_ : 1;