Skip to content

Commit

Permalink
Do not removed shields settings with empty primary pattern.
Browse files Browse the repository at this point in the history
  • Loading branch information
boocmp committed Feb 27, 2025
1 parent 93d1d4a commit a515ab5
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 15 deletions.
1 change: 1 addition & 0 deletions browser/browsing_data/DEPS
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
include_rules = [
"+brave/components/content_settings/core/browser",
"+brave/components/content_settings/core/common",
]
63 changes: 61 additions & 2 deletions browser/browsing_data/brave_browsing_data_remover_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,83 @@

#include "brave/browser/browsing_data/brave_browsing_data_remover_delegate.h"

#include <memory>
#include <utility>
#include <vector>

#include "brave/browser/ai_chat/ai_chat_service_factory.h"
#include "brave/browser/brave_news/brave_news_controller_factory.h"
#include "brave/components/ai_chat/core/browser/ai_chat_service.h"
#include "brave/components/ai_chat/core/browser/utils.h"
#include "brave/components/ai_chat/core/common/features.h"
#include "brave/components/brave_news/browser/brave_news_controller.h"
#include "brave/components/content_settings/core/browser/brave_content_settings_pref_provider.h"
#include "brave/components/content_settings/core/browser/brave_content_settings_utils.h"
#include "brave/components/content_settings/core/common/content_settings_util.h"
#include "build/build_config.h"
#include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/buildflags.h"
#include "components/browsing_data/content/browsing_data_helper.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/content_settings/core/browser/website_settings_registry.h"
#include "content/public/browser/browsing_data_remover.h"

namespace {

class ContentSettingsDefaultsKeeper {
public:
explicit ContentSettingsDefaultsKeeper(Profile* profile) : profile_(profile) {
auto* map = HostContentSettingsMapFactory::GetForProfile(profile_);

const auto shields_content_types =
content_settings::GetShieldsContentSettingsTypes();
primary_values_.reserve(shields_content_types.size());
first_party_values_.reserve(shields_content_types.size());
for (const auto content_type : shields_content_types) {
primary_values_.push_back(
map->GetContentSetting(GURL(), GURL(), content_type));

if (content_settings::WebsiteSettingsRegistry::GetInstance()
->Get(content_type)
->SupportsSecondaryPattern()) {
first_party_values_.push_back(map->GetContentSetting(
GURL(), GURL("https://firstParty/"), content_type));
} else {
first_party_values_.push_back(CONTENT_SETTING_DEFAULT);
}
}
CHECK_EQ(primary_values_.size(), primary_values_.size());
CHECK_EQ(first_party_values_.size(), shields_content_types.size());
}

~ContentSettingsDefaultsKeeper() {
auto* map = HostContentSettingsMapFactory::GetForProfile(profile_);
const auto shields_content_types =
content_settings::GetShieldsContentSettingsTypes();
for (size_t i = 0; i < shields_content_types.size(); ++i) {
if (primary_values_[i] != CONTENT_SETTING_DEFAULT) {
map->SetContentSettingCustomScope(
content_settings::CreateHostPattern(GURL()),
ContentSettingsPattern::Wildcard(), shields_content_types[i],
primary_values_[i]);
}
if (first_party_values_[i] != CONTENT_SETTING_DEFAULT) {
map->SetContentSettingCustomScope(
content_settings::CreateHostPattern(GURL()),
ContentSettingsPattern::FromString("https://firstParty/*"),
shields_content_types[i], first_party_values_[i]);
}
}
}

private:
raw_ptr<Profile> profile_ = nullptr;
std::vector<ContentSetting> primary_values_;
std::vector<ContentSetting> first_party_values_;
};

} // namespace

BraveBrowsingDataRemoverDelegate::BraveBrowsingDataRemoverDelegate(
content::BrowserContext* browser_context)
: ChromeBrowsingDataRemoverDelegate(browser_context),
Expand All @@ -39,6 +96,8 @@ void BraveBrowsingDataRemoverDelegate::RemoveEmbedderData(
content::BrowsingDataFilterBuilder* filter_builder,
uint64_t origin_type_mask,
base::OnceCallback<void(/*failed_data_types=*/uint64_t)> callback) {
ContentSettingsDefaultsKeeper default_values_keeper(profile_);

ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
delete_begin, delete_end, remove_mask, filter_builder, origin_type_mask,
std::move(callback));
Expand Down
1 change: 1 addition & 0 deletions browser/browsing_data/sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ brave_browser_browsing_data_deps = [
"//base",
"//brave/browser/ai_chat",
"//brave/components/ai_chat/core/browser",
"//brave/components/content_settings/core/common",
"//chrome/browser:browser_process",
"//chrome/browser/browsing_data:constants",
"//chrome/browser/profiles:profile",
Expand Down
3 changes: 3 additions & 0 deletions chromium_src/chrome/browser/browsing_data/counters/DEPS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include_rules = [
"+brave/components/content_settings/core/browser",
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at https://mozilla.org/MPL/2.0/. */

#include "chrome/browser/browsing_data/counters/site_settings_counter.h"

#include "brave/components/content_settings/core/browser/brave_content_settings_utils.h"

namespace {

int GetBraveShieldsDefaultsCount(base::Time period_start,
base::Time period_end,
HostContentSettingsMap* map) {
int empty_host_pattern = 0;
auto iterate_content_settings_list =
[&](ContentSettingsType content_type,
const ContentSettingsForOneType& content_settings_list) {
for (const auto& content_setting : content_settings_list) {
if (content_settings::GetSettingSourceFromProviderType(
content_setting.source) ==
content_settings::SettingSource::kUser &&
content_setting.source !=
content_settings::ProviderType::kDefaultProvider) {
base::Time last_modified = content_setting.metadata.last_modified();
if (last_modified >= period_start && last_modified < period_end) {
if (content_setting.primary_pattern.GetHost().empty()) {
empty_host_pattern++;
}
}
}
}
};

for (const auto type : content_settings::GetShieldsContentSettingsTypes()) {
iterate_content_settings_list(type, map->GetSettingsForOneType(type));
}

return empty_host_pattern;
}

} // namespace

#define ReportResult(...) \
ReportResult(__VA_ARGS__ - GetBraveShieldsDefaultsCount( \
period_start, period_end, map_.get()))

#include "src/chrome/browser/browsing_data/counters/site_settings_counter.cc"

#undef ReportResult

This file was deleted.

0 comments on commit a515ab5

Please sign in to comment.