[Farbling] Migrate |BraveFarblingService| as a keyed service dependent on the profile.

Behavioral Change: Now, the farbling's session token is isolated to each profile, and
also an incognito session originating from a different profile has a unique session token.
This commit is contained in:
Jagadesh P
2024-07-23 13:32:23 +05:30
parent a32a81e0e0
commit 9ba12e98b7
10 changed files with 31 additions and 20 deletions
-1
View File
@@ -21,7 +21,6 @@
namespace brave {
class BraveReferralsService;
class BraveFarblingService;
class URLSanitizerComponentInstaller;
} // namespace brave
+13 -6
View File
@@ -20,6 +20,7 @@
#include "brave/browser/brave_browser_features.h"
#include "brave/browser/brave_browser_main_extra_parts.h"
#include "brave/browser/brave_browser_process.h"
#include "brave/browser/brave_shields/brave_farbling_service_factory.h"
#include "brave/browser/brave_shields/brave_shields_web_contents_observer.h"
#include "brave/browser/brave_wallet/brave_wallet_context_utils.h"
#include "brave/browser/brave_wallet/brave_wallet_provider_delegate_impl.h"
@@ -895,16 +896,22 @@ void BraveContentBrowserClient::AppendExtraCommandLineSwitches(
Profile* profile =
process ? Profile::FromBrowserContext(process->GetBrowserContext())
: nullptr;
session_token =
g_brave_browser_process->brave_farbling_service()->session_token(
profile && !profile->IsOffTheRecord());
if (profile) {
auto* brave_farbling_service =
brave::BraveFarblingServiceFactory::GetForProfile(
profile->IsOffTheRecord() ? profile->GetOriginalProfile()
: profile);
if (brave_farbling_service) {
session_token =
brave_farbling_service->session_token(!profile->IsOffTheRecord());
}
command_line->AppendSwitchASCII("brave_session_token",
base::NumberToString(session_token));
}
if (command_line->HasSwitch(switches::kEnableIsolatedWebAppsInRenderer)) {
command_line->RemoveSwitch(switches::kEnableIsolatedWebAppsInRenderer);
}
}
command_line->AppendSwitchASCII("brave_session_token",
base::NumberToString(session_token));
// Switches to pass to render processes.
static const char* const kSwitchNames[] = {
@@ -3,7 +3,7 @@
// 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 "brave/components/brave_shields/content/browser/brave_farbling_service_factory.h"
#include "brave/browser/brave_shields/brave_farbling_service_factory.h"
#include "base/no_destructor.h"
#include "brave/components/brave_shields/content/browser/brave_farbling_service.h"
@@ -3,8 +3,8 @@
// 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/.
#ifndef BRAVE_COMPONENTS_BRAVE_SHIELDS_CONTENT_BROWSER_SERVICE_FACTORY_H_
#define BRAVE_COMPONENTS_BRAVE_SHIELDS_CONTENT_BROWSER_SERVICE_FACTORY_H_
#ifndef BRAVE_BROWSER_BRAVE_SHIELDS_BRAVE_FARBLING_SERVICE_FACTORY_H_
#define BRAVE_BROWSER_BRAVE_SHIELDS_BRAVE_FARBLING_SERVICE_FACTORY_H_
#include <memory>
@@ -40,4 +40,4 @@ class BraveFarblingServiceFactory : public BrowserContextKeyedServiceFactory {
};
} // namespace brave
#endif // BRAVE_COMPONENTS_BRAVE_SHIELDS_CONTENT_BROWSER_SERVICE_FACTORY_H_
#endif // BRAVE_BROWSER_BRAVE_SHIELDS_BRAVE_FARBLING_SERVICE_FACTORY_H_
+2
View File
@@ -8,6 +8,8 @@ brave_browser_brave_shields_sources = [
"//brave/browser/brave_shields/ad_block_pref_service_factory.h",
"//brave/browser/brave_shields/ad_block_subscription_download_manager_getter.cc",
"//brave/browser/brave_shields/ad_block_subscription_download_manager_getter.h",
"//brave/browser/brave_shields/brave_farbling_service_factory.cc",
"//brave/browser/brave_shields/brave_farbling_service_factory.h",
"//brave/browser/brave_shields/brave_shields_tab_helper.cc",
"//brave/browser/brave_shields/brave_shields_tab_helper.h",
"//brave/browser/brave_shields/brave_shields_web_contents_observer.cc",
@@ -12,6 +12,7 @@
#include "brave/browser/brave_news/brave_news_controller_factory.h"
#include "brave/browser/brave_rewards/rewards_service_factory.h"
#include "brave/browser/brave_shields/ad_block_pref_service_factory.h"
#include "brave/browser/brave_shields/brave_farbling_service_factory.h"
#include "brave/browser/brave_wallet/asset_ratio_service_factory.h"
#include "brave/browser/brave_wallet/brave_wallet_ipfs_service_factory.h"
#include "brave/browser/brave_wallet/brave_wallet_service_factory.h"
@@ -32,7 +33,6 @@
#include "brave/browser/url_sanitizer/url_sanitizer_service_factory.h"
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
#include "brave/components/brave_perf_predictor/browser/named_third_party_registry_factory.h"
#include "brave/components/brave_shields/content/browser/brave_farbling_service_factory.h"
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
#include "brave/components/brave_wallet/common/common_utils.h"
#include "brave/components/commander/common/buildflags/buildflags.h"
@@ -9,9 +9,10 @@
#include "base/strings/stringprintf.h"
#include "base/test/thread_test_helper.h"
#include "brave/browser/brave_browser_process.h"
#include "brave/browser/brave_shields/brave_farbling_service_factory.h"
#include "brave/browser/extensions/brave_base_local_data_files_browsertest.h"
#include "brave/components/brave_component_updater/browser/local_data_files_service.h"
#include "brave/components/brave_shields/content/browser/brave_farbling_service_factory.h"
#include "brave/components/brave_shields/content/browser/brave_farbling_service.h"
#include "brave/components/brave_shields/content/browser/brave_shields_util.h"
#include "brave/components/brave_shields/core/common/features.h"
#include "brave/components/constants/brave_paths.h"
@@ -73,7 +74,7 @@ class BraveNavigatorLanguagesFarblingBrowserTest : public InProcessBrowserTest {
void SetUpOnMainThread() override {
InProcessBrowserTest::SetUpOnMainThread();
BraveFarblingServiceFactory::GetForProfile(browser()->profile())
brave::BraveFarblingServiceFactory::GetForProfile(browser()->profile())
->set_session_tokens_for_testing(kTestingSessionToken,
kTestingSessionToken);
@@ -13,6 +13,7 @@
#include "base/containers/fixed_flat_set.h"
#include "base/strings/string_split.h"
#include "brave/browser/brave_browser_process.h"
#include "brave/browser/brave_shields/brave_farbling_service_factory.h"
#include "brave/components/brave_shields/content/browser/brave_farbling_service.h"
#include "brave/components/brave_shields/content/browser/brave_shields_util.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
@@ -63,11 +64,15 @@ std::string FarbleAcceptLanguageHeader(
}
// Add a fake q value after the language code.
brave::FarblingPRNG prng;
if (g_brave_browser_process->brave_farbling_service()
->MakePseudoRandomGeneratorForURL(
origin_url, profile && profile->IsOffTheRecord(), &prng)) {
auto* brave_farbling_service = BraveFarblingServiceFactory::GetForProfile(
profile->IsOffTheRecord() ? profile->GetOriginalProfile() : profile);
if (brave_farbling_service &&
brave_farbling_service->MakePseudoRandomGeneratorForURL(
origin_url, profile->IsOffTheRecord(), &prng)) {
accept_language_string += kFakeQValues[prng() % kFakeQValues.size()];
}
return accept_language_string;
}
@@ -32,8 +32,6 @@ static_library("browser") {
"blocked_domain_1pes_lifetime.h",
"brave_farbling_service.cc",
"brave_farbling_service.h",
"brave_farbling_service_factory.cc",
"brave_farbling_service_factory.h",
"brave_shields_p3a.cc",
"brave_shields_p3a.h",
"brave_shields_util.cc",
@@ -82,7 +82,6 @@ class TestingBraveBrowserProcess : public BraveBrowserProcess {
override;
#endif
brave_ads::ResourceComponent* resource_component() override;
brave::BraveFarblingService* brave_farbling_service() override;
#if BUILDFLAG(ENABLE_BRAVE_VPN)
brave_vpn::BraveVPNConnectionManager* brave_vpn_connection_manager() override;
void SetBraveVPNConnectionManagerForTesting(