diff --git a/BUILD.gn b/BUILD.gn index dd75ffe7728..6281a3a9061 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -285,6 +285,7 @@ process_version("generate_version") { template_file = "version.version" extra_args = [ "-e", "BRAVE_BROWSER_VERSION=\"$brave_version\"" ] output = "$root_out_dir/version" + process_only = true } if (!is_android && !is_ios) { diff --git a/app/app_management_strings.grdp b/app/app_management_strings.grdp index cabba467e41..a174561ebf7 100644 --- a/app/app_management_strings.grdp +++ b/app/app_management_strings.grdp @@ -49,8 +49,8 @@ Permissions - - More permissions + + More settings and permissions This app can: @@ -76,4 +76,13 @@ Version: $14.0 + + Pinned by administrator + + + Contacts + + + Storage + diff --git a/app/brave_main_delegate.cc b/app/brave_main_delegate.cc index 97564b7fabe..6381236e862 100644 --- a/app/brave_main_delegate.cc +++ b/app/brave_main_delegate.cc @@ -29,6 +29,7 @@ #include "components/omnibox/common/omnibox_features.h" #include "components/password_manager/core/common/password_manager_features.h" #include "components/unified_consent/feature.h" +#include "content/public/common/content_features.h" #include "extensions/common/extension_features.h" #include "services/network/public/cpp/features.h" #include "third_party/widevine/cdm/buildflags.h" @@ -149,17 +150,17 @@ bool BraveMainDelegate::BasicStartupComplete(int* exit_code) { #if BUILDFLAG(ENABLE_EXTENSIONS) extensions_features::kNewExtensionUpdaterService.name, #endif -#if defined(OS_LINUX) - // Enable webui dark on linux. + // Enable webui dark theme: @media (prefers-color-scheme: dark) is gated on + // this feature. features::kWebUIDarkMode.name, -#endif omnibox::kSimplifyHttpsIndicator.name, }; // Disabled features. const std::unordered_set disabled_features = { autofill::features::kAutofillServerCommunication.name, - network::features::kNetworkService.name, + features::kAudioServiceOutOfProcess.name, + features::kLookalikeUrlNavigationSuggestionsUI.name, unified_consent::kUnifiedConsent.name, }; command_line.AppendFeatures(enabled_features, disabled_features); diff --git a/app/brave_main_delegate_browsertest.cc b/app/brave_main_delegate_browsertest.cc index 56b7da947ee..a1338af02ab 100644 --- a/app/brave_main_delegate_browsertest.cc +++ b/app/brave_main_delegate_browsertest.cc @@ -45,7 +45,6 @@ IN_PROC_BROWSER_TEST_F(BraveMainDelegateBrowserTest, DisabledFeatures) { &autofill::features::kAutofillServerCommunication, &features::kAudioServiceOutOfProcess, &features::kDefaultEnableOopRasterization, - &network::features::kNetworkService, &unified_consent::kUnifiedConsent, &features::kLookalikeUrlNavigationSuggestionsUI, }; diff --git a/app/brave_strings.grd b/app/brave_strings.grd index fef33a2f2bb..23c8ae4c570 100644 --- a/app/brave_strings.grd +++ b/app/brave_strings.grd @@ -589,7 +589,10 @@ Brave is unable to recover your settings. - + + About &Brave + + About &Brave OS @@ -615,9 +618,6 @@ Brave is unable to recover your settings. - - Sign in to sync and personalize Brave across your devices - Sync and personalize Brave across your devices @@ -737,6 +737,12 @@ Signing in anyway will merge Brave information like bookmarks, history, and othe Brave OS could not sync your data due to an error signing in. + + You clear cookies when you quit Brave. To keep syncing, change this $1settings. + + + settings + @@ -1149,40 +1155,6 @@ Please check your email at $2jane.doe@example.com Welcome to Brave - - Take Brave everywhere - - - Web browsing with Brave smarts - - - Not now - - - Sync and personalize Brave across your devices - - - - - - - Welcome to Brave - - - Get to Brave faster - - - Make Brave your default browser - - - Pin Brave to your taskbar - - - Select <div class="logo-small"></div> <strong>Brave</strong> - - - Click <strong>Switch anyway</strong>, if it appears - @@ -1247,6 +1219,12 @@ Please check your email at $2jane.doe@example.com Share a Brave tab + + + + Help us improve Brave + + diff --git a/app/generated_resources.grd b/app/generated_resources.grd index 8d3e36c365d..6f65b7622fc 100644 --- a/app/generated_resources.grd +++ b/app/generated_resources.grd @@ -901,8 +901,8 @@ are declared in tools/grit/grit_rule.gni. Save page &as... - - Distill page + + Toggle distilled page contents More too&ls @@ -2902,7 +2902,7 @@ are declared in tools/grit/grit_rule.gni. Sharing $1youtube.com to $2meet.google.com - Share this tab + Share this tab instead Stop @@ -3196,7 +3196,6 @@ are declared in tools/grit/grit_rule.gni. No-op Service - Installed theme "$1Snowflake Theme" @@ -3512,6 +3511,9 @@ are declared in tools/grit/grit_rule.gni. Read and change anything you type + + Launch and exit managed guest sessions + Display UI on the login screen @@ -3687,6 +3689,9 @@ are declared in tools/grit/grit_rule.gni. Replace the page you see when opening a new tab + + Run in the background when requested by a cooperating native application + @@ -4403,20 +4408,6 @@ Keep your key file in a safe place. You will need it to create new versions of y Updated just now - - - This page will use a lot of data. - - - Page paused. - - - Continue - - - Stop using data on this page - - Lite mode now makes browsing faster on all pages, including HTTPS. @@ -4830,9 +4821,6 @@ Keep your key file in a safe place. You will need it to create new versions of y Restore default shortcuts - - Customize this page - Brave backgrounds @@ -4932,12 +4920,27 @@ Keep your key file in a safe place. You will need it to create new versions of y Most visited sites - + Shortcuts are suggested based on websites you visit often - + Shortcuts are curated by you + + Current theme you have installed + + + Uninstall + + + Select color + + + Default + + + Hex color value + @@ -5034,8 +5037,8 @@ Keep your key file in a safe place. You will need it to create new versions of y Remember my choice - - Use app + + Open Stay in Brave @@ -5264,7 +5267,7 @@ Keep your key file in a safe place. You will need it to create new versions of y - Nope + No thanks @@ -6253,6 +6256,25 @@ Keep your key file in a safe place. You will need it to create new versions of y + + + + Call from your devices + + + Call from $1Jimmy's Pixel + + + + + + Call from Your Devices + + + Call from $1Jimmy's Pixel + + + @@ -6730,45 +6752,22 @@ Keep your key file in a safe place. You will need it to create new versions of y - - You've signed in and turned on Sync - - + Turn on sync? - + Sync your bookmarks, passwords, history, and more on all your devices - + Brave may use your history to personalize Search, ads, and other Brave services - + You can always choose what to sync in settings. - - - - Brave Sync - - - Your bookmarks, history, passwords, and other settings will be synced to your Brave Account so you can use them on all your devices - - - Personalize Brave services - - - Brave may use your browsing history to personalize Search, ads, and other Brave services - - - Brave may use your browsing history to personalize Search and other Brave services - - - Want to manage sync and personalization before they’re turned on? Visit <a id="settingsLink" href="chrome://settings">Settings</a></a>. - - + Yes, I'm in - + Settings @@ -7137,20 +7136,17 @@ Please help our engineers fix this problem. Tell us what happened right before y Sign in to $1Brave - + Sync is disabled by your administrator. - + Sync has been stopped via the Brave Dashboard. Confirm sync settings to start sync. - - Error signing in. - - - Oops, Sync has stopped working. + + Setup in progress... Sync isn’t working. Try signing in again. @@ -7201,20 +7197,12 @@ Please help our engineers fix this problem. Tell us what happened right before y Advanced settings - - - Setup in progress... - - - - - Please wait... - - - - - Sync everything - + + + + Please wait... + + @@ -7229,16 +7217,18 @@ Please help our engineers fix this problem. Tell us what happened right before y $1Sept 1, 2012. This doesn't include payment methods and addresses from Brave Pay. - - - Not signed in to $1Brave - - - (You're missing out—$1sign in) - - - sign in - + + + + Not signed in to $1Brave + + + (You're missing out—$1sign in) + + + sign in + + @@ -7258,7 +7248,6 @@ Please help our engineers fix this problem. Tell us what happened right before y This page could not be translated - Options @@ -7269,6 +7258,12 @@ Please help our engineers fix this problem. Tell us what happened right before y Change languages + + More languages... + + + Page is not in $1French ? + Translate @@ -7317,6 +7312,12 @@ Please help our engineers fix this problem. Tell us what happened right before y Language settings + + Language to translate into + + + Page language to translate + @@ -7328,6 +7329,12 @@ Please help our engineers fix this problem. Tell us what happened right before y Change Languages + + More Languages... + + + Page Is Not In $1French ? + Translate @@ -7376,10 +7383,19 @@ Please help our engineers fix this problem. Tell us what happened right before y Language Settings + + Language To Translate Into + + + Page Language To Translate + Unknown + + Reset + @@ -7598,6 +7614,22 @@ Please help our engineers fix this problem. Tell us what happened right before y Check Grammar With Spelling + + + Substitutions + + + Show Substitutions + + + Smart Quotes + + + Smart Dashes + + + Text Replacement + Always Show Bookmarks Bar @@ -8466,38 +8498,6 @@ Please help our engineers fix this problem. Tell us what happened right before y - - - Identity API Token Cache - - - Access Token - - - Extension Name - - - Extension Id - - - Token Status - - - Not Found - - - Token Present - - - Expiration Time - - - Scopes - - - Revoke - - A fast, simple, and secure web browser, built for the modern web. @@ -8757,10 +8757,10 @@ Please help our engineers fix this problem. Tell us what happened right before y Entered window overview mode - + Entered full screen - + Exited full screen @@ -8789,6 +8789,12 @@ Please help our engineers fix this problem. Tell us what happened right before y Refresh + + Clear + + + No log entries + Show: @@ -8972,16 +8978,16 @@ Please help our engineers fix this problem. Tell us what happened right before y - + No nearby devices found. - $1www.google.com wants to scan for nearby Bluetooth devices, the following devices have been found: + $1www.google.com wants to scan for nearby Bluetooth devices. The following devices have been found: - + Allow - + Block @@ -9065,6 +9071,17 @@ Please help our engineers fix this problem. Tell us what happened right before y Ads blocked on this site + + + Details + + + Ad removed. + + + This ad uses too many resources for your device, so Brave removed it. + + Windows Utilities @@ -9088,22 +9105,6 @@ Please help our engineers fix this problem. Tell us what happened right before y - - - - The web browser by Brave, for you - - - Sign in to Brave with your Brave Account to get your bookmarks, history, passwords, and other settings on all your devices. - - - Sign in - - - No thanks - - - @@ -9138,31 +9139,6 @@ Please help our engineers fix this problem. Tell us what happened right before y - - - - Open Windows Settings - - - Click <strong>Microsoft Edge</strong> under Web Browser - - - Switch anyway - - - Right click the <div class="logo-small"></div> icon in the taskbar - - - Select <strong>Pin to taskbar</strong> - - - Pin to taskbar - - - Continue - - - @@ -9243,6 +9219,101 @@ Please help our engineers fix this problem. Tell us what happened right before y Upload + + + + Save changes to $1README.md? + + + Save changes to files? + + + $1example.com will be able to save your changes directly to $2README.md. The site can save changes until you close this tab. + + + $1example.com will be able to save your changes directly to the files in $2My Project. The site can save changes until you close this tab. + + + Save changes + + + + + This page is allowed to save to files. + + + This page is allowed to view all the files in a folder on your device. + + + $1example.com can save your changes directly to $2README.md + + + $1example.com can save your changes directly to the following files + + + $1example.com can save your changes directly to the files in $2My Project + + + $1example.com can save your changes directly to the following folders + + + $1example.com can save your changes directly to the following files and folders + + + $1example.com can view all the files in $2My Project + + + $1example.com can view all the files in the following folders + + + $1example.com can view and save your changes directly to the following files and folders + + + Save changes + + + View changes + + + {0, plural, offset:2 + =1 {{1}README.md} + =2 {{1}README.md, {2}Brave.png} + other {{1}README.md, {2}Brave.png, and # more} + } + + + Expand... + + + Collapse... + + + Remove access + + + + + + Can't save to this folder + + + $1example.com can't save your changes to this folder because it contains system files. + + + Choose a different folder + + + + + Let site view files? + + + $1example.com will be able to view all files in $2My Project. The site can see any changes to the folder until you close this tab. + + + View files + + @@ -9505,6 +9576,9 @@ Please help our engineers fix this problem. Tell us what happened right before y Allow + + Try again + @@ -9531,6 +9605,16 @@ Please help our engineers fix this problem. Tell us what happened right before y Exit Private + + + + + Take Survey + + + Your feedback is important to us. + + - + diff --git a/app/media_router_strings.grdp b/app/media_router_strings.grdp index d57bb063745..c2062a6f63c 100644 --- a/app/media_router_strings.grdp +++ b/app/media_router_strings.grdp @@ -3,43 +3,14 @@ - - Media Router - Display on another screen &Cast... - - Cast - - - - - Back - - - Close - - - Search - - - View cast mode list - - - View device list - - - Stop, $1Living Room TV, $2Casting YouTube - - - Cast to - Cast $1google.com @@ -54,15 +25,6 @@ - - Select source - - - Share your screen - - - Stream a video or audio file - Cast $1my_media.mp3 @@ -93,39 +55,7 @@ Optimize fullscreen videos - - - Enable casting to cloud-based services like Brave Hangouts. - - - - Welcome to the Cast experience in Brave! - - - You can use this feature to display content from Brave on your TV or other devices. - - - - - Welcome to the Cast experience in Brave! - - - You can use this feature to display content from Brave on your TV or other devices. - - - - Ok, got it - - - - - Dismiss - - - - Error - Unable to cast $1youtube.com. @@ -135,9 +65,6 @@ Unable to cast tab. - - Only one session can be created at a time. - Unable to cast desktop. @@ -148,59 +75,6 @@ Unable to cast $1my_media.mp3. - - - Casting: $1Video - - - Cast - - - Stop - - - Play - - - Pause - - - Mute - - - Unmute - - - Seek - - - Volume - - - Current time - - - Duration - - - Smooth Motion [beta] - - - Use high bandwidth for best video or animation. Other people with slow connections may not see your content. - - - Always use mirroring - - - Show fullscreen videos on - - - Both screens - - - Remote screen - - Looking for devices @@ -230,14 +104,6 @@ Source not supported - - - Search - - - No matches - - Audio/Video diff --git a/app/onboarding_welcome_strings.grdp b/app/onboarding_welcome_strings.grdp index a06b3485c2e..3793c632f9e 100644 --- a/app/onboarding_welcome_strings.grdp +++ b/app/onboarding_welcome_strings.grdp @@ -2,9 +2,6 @@ - - Get started - Next @@ -91,9 +88,6 @@ Get Brave Search and Brave smarts everytime you browse - - Skip - Set as default diff --git a/app/profiles_strings.grdp b/app/profiles_strings.grdp index 35b079e734e..70171f709ca 100644 --- a/app/profiles_strings.grdp +++ b/app/profiles_strings.grdp @@ -469,6 +469,9 @@ Add profile + + Name + The new user couldn't be created. Please check your hard drive space and permissions and try again. diff --git a/app/settings_brave_strings.grdp b/app/settings_brave_strings.grdp index 979a731e4da..d11075a1a25 100644 --- a/app/settings_brave_strings.grdp +++ b/app/settings_brave_strings.grdp @@ -3,13 +3,13 @@ + + About Brave + + + Get help with Brave + - - About Brave - - - Get help with Brave - Updating Brave @@ -24,14 +24,19 @@ - + About Brave OS - + Get help with Brave OS + + + Clear cookies and site data when you quit Brave + + Brave Pay (copied to Brave) diff --git a/app/settings_strings.grdp b/app/settings_strings.grdp index ff00d631545..815a14425e3 100644 --- a/app/settings_strings.grdp +++ b/app/settings_strings.grdp @@ -12,6 +12,9 @@ + + Continue + More actions @@ -136,9 +139,6 @@ Download update using mobile data - - Continue - @@ -150,6 +150,12 @@ Report an issue + + Internet connection required + + + See what's new + Checking for updates @@ -163,6 +169,78 @@ + + Captions + + + Text size + + + Text font + + + Text color + + + Text opacity + + + Background opacity + + + 0 + + + 100 + + + Text shadow + + + None + + + Raised + + + Depressed + + + Uniform + + + Drop shadow + + + Background color + + + Black + + + White + + + Red + + + Green + + + Blue + + + Yellow + + + Cyan + + + Magenta + + + Default + Accessibility @@ -191,6 +269,42 @@ Select and customize text-to-speech voices + + Switch Access settings + + + Switch action assignment + + + Space + + + Enter + + + None + + + Select + + + Next + + + Previous + + + Auto-scan + + + Enable auto-scan + + + Scanning speed: $11.5s + + + $11.5s + Show large mouse cursor @@ -464,36 +578,6 @@ - - - Kiosk Next Shell (Dev) - - - Kiosk Next Shell - - - Enables the Kiosk Next Shell for the next sign in. - - - Disable the Kiosk Next Shell and return to the normal Brave OS experience. - - - Turn off - - - Turn off the Kiosk Next Shell - - - Turn on the Kiosk Next Shell - - - This will turn off the Kiosk Next Shell, sign you out and return you to the normal Brave OS experience. - - - This will sign you out and turn on the Kiosk Next Shell. - Linux (Beta) @@ -543,6 +627,12 @@ Replace your Linux apps and files with a previous backup + + Confirm Restore + + + Restoring from a backup will delete existing Linux applications and data in your Linux files folder. + USB preferences @@ -564,7 +654,7 @@ Plugin VM - Manage settings for running Plugin VM on your $1Bravebook + Set up permissions Give access to printers @@ -596,7 +686,7 @@ Brave Play Store - Install apps and games from Brave Play on your Bravebook. <a target="_blank" href="$1https://google.com/">Learn more</a> + Install apps and games from Brave Play on your $1Bravebook. <a target="_blank" href="$2https://google.com/">Learn more</a> Manage Android preferences @@ -608,6 +698,8 @@ Remove Android apps? + Apps you’ve downloaded from Brave Play will be deleted from this Bravebook. <br><br> @@ -629,6 +721,9 @@ Manage your apps + + Open App Management + @@ -1027,6 +1122,9 @@ Connected + + Connected, $1100% battery + Not connected @@ -1362,6 +1460,12 @@ Add Printer + + + Saved detected printers to your profile, or add a new printer. + + + Available printers to save Edit @@ -1369,9 +1473,15 @@ Remove + + Configure + Search printers + + Your saved printers + Add a nearby printer @@ -1513,6 +1623,14 @@ End User License Agreement + + Couldn't detect a printer. Please enter printer address again. + + + Unable to set up printer. Please check configuration and try again. + + + @@ -1552,7 +1670,7 @@ Set up or manage network file shares. - Add File Share + Add file share File share URL @@ -1566,6 +1684,9 @@ Password (optional) + + Remember sign-in info + Share mounted successfully. @@ -1591,7 +1712,7 @@ Invalid URL format. Server must be specified as a host name when SSO authentication is used. - Authentication Method + Authentication method Standard @@ -1601,67 +1722,127 @@ - + - - Kerberos Accounts + + Kerberos tickets - - Kerberos Accounts + + Kerberos tickets - - All Kerberos Accounts for single sign-on into certain apps and websites and file shares can be managed here. + + Choose a ticket to use for authentication. <a target="_blank" href="$1https://google.com/">Learn more</a> - - Accounts + + Tickets - - Add account + + Add a ticket - - Remove account from this device + + Refresh now - - Signed in + + Set as active ticket - - Sign in again + + Remove from this device - - Sign in + + Ticket removed - - Add Kerberos Account + + Valid for $17 hours 12 minutes - - Username + + Expired + + + Refresh + + + Active - + + Add a Kerberos ticket + + + Refresh a Kerberos ticket + + + To automatically refresh a ticket, check “Remember password.” Your password will be stored on your device only. + + + Kerberos username + + Password - + + Remember password + + + Refresh + + + Advanced + + + Configure Kerberos + + + Edit the configuration file + + Network problem or bad realm - - Username invalid (should be user@realm.com) + + Username invalid - + Username not known to server - + + A ticket with this username already exists + + Contacting server for realm failed - + Password invalid - + Password expired - + KDC does not support encryption type - - Oops! Something went wrong (error code $1123). + + Couldn't get Kerberos ticket. Try again, or contact your organization's device admin. (Error code $1123). + + + Section nested in group: $1[realms] (inside a block of curly braces '{ ... }) + + + Section syntax error: $1[realms + + + Expected opening curly brace: $1ticket_lifetime = 1d (in the line after 'EXAMPLE.COM = )' + + + Extra curly brace: $1} (without having a corresponding opening curly brace '{') + + + Relation syntax error: $1ticket_lifetime : 1d + + + Configuration option not supported: $1ccache_type = 1 + + + Section not supported: $1[appdefaults] + + + Failed to parse configuration @@ -1828,6 +2009,9 @@ Allow other users of this device to use this network + + Automatically connecting to a hidden network allows others to see your device and some network settings, and is not recommended. + Save identity and password @@ -1897,6 +2081,15 @@ Allow mobile data roaming + + On, not roaming + + + On, roaming + + + Roaming off + Mobile data network @@ -1984,6 +2177,8 @@ Port + + Change PIN @@ -1999,7 +2194,7 @@ Change - + Enter @@ -2032,6 +2227,22 @@ Enter PIN Unlock Key + + Incorrect PIN. Retries left: $13. + + + Incorrect PUK. Retries left: $13. + + + Invalid PIN. Retries left: $13. + + + Invalid PUK. Retries left: $13. + + + PIN values do not match. + + Prefer this network @@ -2499,16 +2710,9 @@ - - - Languages and input - - - - - Languages - - + + Languages + Language @@ -2876,12 +3080,6 @@ Brave Assistant - - Related info - - - Let the Assistant show you info related to what's on your screen - "Ok Brave" @@ -2903,9 +3101,6 @@ Voice match - - Teach your Assistant to recognize your voice - Retrain @@ -2987,8 +3182,8 @@ Do not allow sites to see text and images copied to the clipboard - - Cookies + + Cookies and site data Handlers @@ -3377,9 +3572,6 @@ Prevent third-party websites from saving and reading cookie data - - Keep local data only until you quit your browser - Adobe Flash Player Storage settings @@ -3581,9 +3773,6 @@ PINs do not match - - Continue - Show lock screen when waking from sleep @@ -3639,11 +3828,14 @@ Note: Your fingerprint may be less secure than a strong password or PIN. - delete [$1Fingerprint 1], button + delete [$1Fingerprint 1] Finger $11 + + Enable Brave media playback at lock screen + Add account @@ -3665,12 +3857,21 @@ Not updated yet + + More actions, $1abcd@google.com + Update account Sign in + + Update account, $1abcd@google.com + + + Sign in, $1abcd@google.com + Remove this account @@ -3680,15 +3881,30 @@ Primary account + + $1abcd@google.com was removed from this device + Set up your fingerprint - + + Touch the power button with your finger - + The fingerprint sensor is in the power button. Touch it lightly with any finger. + + + Touch the fingerprint sensor with your finger + + + The fingerprint sensor is the bottom right-hand key on your keyboard. Touch it lightly with any finger. + + + The fingerprint sensor is the top right-hand key on your keyboard. Touch it lightly with any finger. + + Fingerprint added. @@ -4610,8 +4826,14 @@ Use hardware acceleration when available - - Open proxy settings + + Open your computer's proxy settings + + + $1Brave is using proxy settings from an extension + + + $1Brave is using proxy settings from your administrator @@ -4624,7 +4846,7 @@ Android phone - Connect your Bravebook with your phone. <a target="_blank" href="$1https://google.com/">Learn more</a> + Connect your $1Bravebook with your phone. <a target="_blank" href="$2https://google.com/">Learn more</a> No eligible devices. <a target="_blank" href="$1https://google.com/">Learn more</a> @@ -4645,7 +4867,7 @@ Disabled - Unlock your Bravebook with your phone. <a target="_blank" href="$1https://google.com/">Learn more</a> + Unlock your $1Bravebook with your phone. <a target="_blank" href="$2https://google.com/">Learn more</a> Instant Tethering @@ -4657,16 +4879,16 @@ Messages - Send and receive text messages from your Bravebook. <a target="_blank" href="$1https://google.com/">Learn more</a> + Send and receive text messages from your $1Bravebook. <a target="_blank" href="$2https://google.com/">Learn more</a> Forget phone - Disconnect your phone from your Bravebook + Disconnect your phone from your $1Bravebook - Disconnect your phone from your Bravebook. They will no longer connect automatically. + Disconnect your phone from your $1Bravebook. They will no longer connect automatically. @@ -4929,6 +5151,9 @@ PIN must be at least 4 characters + + Too short + PIN must be at most 63 characters @@ -4953,4 +5178,52 @@ The security key is locked because the wrong PIN was entered too many times. To unlock it, remove and reinsert it. + + Show PINs + + + Hide PINs + + + Manage sign-in data + + + View and delete the sign-in data stored on your security key + + + Security key sign-in data + + + Website + + + Username + + + To view sign-in data, insert and touch your security key + + + To view sign-in data, enter the PIN for your security key. If you don’t know the PIN, you’ll need to reset the security key. + + + This security key does not have any sign-in data + + + This security key can't store any sign-in data + + + Your security key was removed. + + + Your security key is not protected with a PIN. To manage sign-in data, first create a PIN. + + + Your security key couldn't be read + + + Your sign-in data was deleted + + + Your sign-in data couldn't be deleted + diff --git a/app/vr_strings.grdp b/app/vr_strings.grdp index fabd938fef6..353e8953e0d 100644 --- a/app/vr_strings.grdp +++ b/app/vr_strings.grdp @@ -7,10 +7,6 @@ Press App button to exit - - XR Isolated Device Service - - Site is tracking your location @@ -150,18 +146,12 @@ New private tab - - New private tab - Settings Close private tabs - - Close private tabs - Tabs diff --git a/browser/autocomplete/brave_autocomplete_provider_client_browsertest.cc b/browser/autocomplete/brave_autocomplete_provider_client_browsertest.cc index ce2b4398f48..293fc07ea2a 100644 --- a/browser/autocomplete/brave_autocomplete_provider_client_browsertest.cc +++ b/browser/autocomplete/brave_autocomplete_provider_client_browsertest.cc @@ -1,4 +1,5 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright 2019 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 http://mozilla.org/MPL/2.0/. */ @@ -36,8 +37,8 @@ IN_PROC_BROWSER_TEST_F(BraveAutocompleteProviderClientTest, incognito_client.GetAutocompleteClassifier()); EXPECT_EQ(normal_client.GetHistoryService(), incognito_client.GetHistoryService()); - EXPECT_EQ(normal_client.GetContextualSuggestionsService(true), - incognito_client.GetContextualSuggestionsService(true)); + EXPECT_EQ(normal_client.GetRemoteSuggestionsService(true), + incognito_client.GetRemoteSuggestionsService(true)); EXPECT_EQ(normal_client.GetDocumentSuggestionsService(true), incognito_client.GetDocumentSuggestionsService(true)); } diff --git a/browser/autocomplete/brave_autocomplete_scheme_classifier.cc b/browser/autocomplete/brave_autocomplete_scheme_classifier.cc index e5f2d3f84dd..178a547c0e9 100644 --- a/browser/autocomplete/brave_autocomplete_scheme_classifier.cc +++ b/browser/autocomplete/brave_autocomplete_scheme_classifier.cc @@ -1,9 +1,12 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright 2019 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 http://mozilla.org/MPL/2.0/. */ #include "brave/browser/autocomplete/brave_autocomplete_scheme_classifier.h" +#include + #include "base/strings/string_util.h" #include "brave/common/url_constants.h" #include "brave/components/brave_webtorrent/browser/buildflags/buildflags.h" @@ -31,7 +34,7 @@ metrics::OmniboxInputType BraveAutocompleteSchemeClassifier::GetInputTypeForScheme( const std::string& scheme) const { if (scheme.empty()) { - return metrics::OmniboxInputType::INVALID; + return metrics::OmniboxInputType::EMPTY; } if (base::IsStringASCII(scheme) && base::LowerCaseEqualsASCII(scheme, kBraveUIScheme)) { diff --git a/browser/brave_browser_main_extra_parts.cc b/browser/brave_browser_main_extra_parts.cc index 62f443d9061..2f02b25a1dc 100644 --- a/browser/brave_browser_main_extra_parts.cc +++ b/browser/brave_browser_main_extra_parts.cc @@ -1,4 +1,5 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright 2019 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 http://mozilla.org/MPL/2.0/. */ @@ -18,6 +19,10 @@ BraveBrowserMainExtraParts::BraveBrowserMainExtraParts() { BraveBrowserMainExtraParts::~BraveBrowserMainExtraParts() { } +void BraveBrowserMainExtraParts::PostBrowserStart() { + g_brave_browser_process->StartBraveServices(); +} + void BraveBrowserMainExtraParts::PreMainMessageLoopRun() { #if !defined(OS_ANDROID) brave::AutoImportMuon(); diff --git a/browser/brave_browser_main_extra_parts.h b/browser/brave_browser_main_extra_parts.h index 00c8558068b..1ac092fc78b 100644 --- a/browser/brave_browser_main_extra_parts.h +++ b/browser/brave_browser_main_extra_parts.h @@ -1,4 +1,5 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright 2019 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 http://mozilla.org/MPL/2.0/. */ @@ -12,10 +13,11 @@ class BraveBrowserMainExtraParts : public ChromeBrowserMainExtraParts { public: - explicit BraveBrowserMainExtraParts(); + BraveBrowserMainExtraParts(); ~BraveBrowserMainExtraParts() override; // ChromeBrowserMainExtraParts overrides. + void PostBrowserStart() override; void PreMainMessageLoopRun() override; private: diff --git a/browser/brave_browser_process_impl.cc b/browser/brave_browser_process_impl.cc index b6db4b9f2a1..16621b48484 100644 --- a/browser/brave_browser_process_impl.cc +++ b/browser/brave_browser_process_impl.cc @@ -24,7 +24,6 @@ #include "brave/components/brave_shields/browser/https_everywhere_service.h" #include "brave/components/brave_shields/browser/referrer_whitelist_service.h" #include "brave/components/brave_shields/browser/tracking_protection_service.h" -#include "chrome/browser/io_thread.h" #include "chrome/common/chrome_paths.h" #include "components/component_updater/component_updater_service.h" #include "components/component_updater/timer_update_scheduler.h" @@ -92,8 +91,14 @@ BraveBrowserProcessImpl::brave_component_updater_delegate() { return brave_component_updater_delegate_.get(); } -void BraveBrowserProcessImpl::ResourceDispatcherHostCreated() { - BrowserProcessImpl::ResourceDispatcherHostCreated(); +ProfileManager* BraveBrowserProcessImpl::profile_manager() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (!created_profile_manager_) + CreateProfileManager(); + return profile_manager_.get(); +} + +void BraveBrowserProcessImpl::StartBraveServices() { ad_block_service()->Start(); ad_block_custom_filters_service()->Start(); ad_block_regional_service_manager()->Start(); @@ -112,13 +117,6 @@ void BraveBrowserProcessImpl::ResourceDispatcherHostCreated() { local_data_files_service()->Start(); } -ProfileManager* BraveBrowserProcessImpl::profile_manager() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (!created_profile_manager_) - CreateProfileManager(); - return profile_manager_.get(); -} - brave_shields::AdBlockService* BraveBrowserProcessImpl::ad_block_service() { if (ad_block_service_) return ad_block_service_.get(); diff --git a/browser/brave_browser_process_impl.h b/browser/brave_browser_process_impl.h index 37350923e87..f8d82c24d1f 100644 --- a/browser/brave_browser_process_impl.h +++ b/browser/brave_browser_process_impl.h @@ -60,10 +60,10 @@ class BraveBrowserProcessImpl : public BrowserProcessImpl { ~BraveBrowserProcessImpl() override; // BrowserProcess implementation. - void ResourceDispatcherHostCreated() override; ProfileManager* profile_manager() override; + void StartBraveServices(); brave_shields::AdBlockService* ad_block_service(); brave_shields::AdBlockCustomFiltersService* ad_block_custom_filters_service(); brave_shields::AdBlockRegionalServiceManager* diff --git a/browser/brave_content_browser_client.cc b/browser/brave_content_browser_client.cc index ae8f4a848c4..5e54bf5bde3 100644 --- a/browser/brave_content_browser_client.cc +++ b/browser/brave_content_browser_client.cc @@ -34,7 +34,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_io_data.h" #include "chrome/common/url_constants.h" -#include "components/content_settings/core/browser/cookie_settings.h" #include "components/prefs/pref_service.h" #include "components/services/heap_profiling/public/mojom/heap_profiling_client.mojom.h" #include "content/browser/frame_host/render_frame_host_impl.h" @@ -138,60 +137,6 @@ void BraveContentBrowserClient::BrowserURLHandlerCreated( ChromeContentBrowserClient::BrowserURLHandlerCreated(handler); } -bool BraveContentBrowserClient::AllowAccessCookie( - const GURL& url, - const GURL& first_party, - content::ResourceContext* context, - int render_process_id, - int render_frame_id) { - GURL tab_origin = first_party; - - if (tab_origin.is_empty()) - tab_origin = BraveShieldsWebContentsObserver::GetTabURLFromRenderFrameInfo( - render_process_id, render_frame_id, -1).GetOrigin(); - - ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); - return - io_data->GetCookieSettings()->IsCookieAccessAllowed(url, tab_origin) && - g_brave_browser_process->tracking_protection_service()->ShouldStoreState( - io_data->GetHostContentSettingsMap(), - render_process_id, - render_frame_id, - url, - tab_origin); -} - -bool BraveContentBrowserClient::AllowGetCookie( - const GURL& url, - const GURL& first_party, - const net::CookieList& cookie_list, - content::ResourceContext* context, - int render_process_id, - int render_frame_id) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - bool allow = AllowAccessCookie(url, first_party, context, render_process_id, - render_frame_id); - OnCookiesRead(render_process_id, render_frame_id, url, first_party, - cookie_list, !allow); - - return allow; -} - -bool BraveContentBrowserClient::AllowSetCookie( - const GURL& url, - const GURL& first_party, - const net::CanonicalCookie& cookie, - content::ResourceContext* context, - int render_process_id, - int render_frame_id) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - bool allow = AllowAccessCookie(url, first_party, context, render_process_id, - render_frame_id); - OnCookieChange(render_process_id, render_frame_id, url, first_party, cookie, - !allow); - return allow; -} - content::ContentBrowserClient::AllowWebBluetoothResult BraveContentBrowserClient::AllowWebBluetooth( content::BrowserContext* browser_context, @@ -208,8 +153,7 @@ bool BraveContentBrowserClient::HandleExternalProtocol( bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture, - network::mojom::URLLoaderFactoryRequest* factory_request, - network::mojom::URLLoaderFactory*& out_factory) { // NOLINT + network::mojom::URLLoaderFactoryPtr* out_factory) { #if BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) if (webtorrent::HandleMagnetProtocol(url, web_contents_getter, page_transition, has_user_gesture)) { @@ -226,7 +170,7 @@ bool BraveContentBrowserClient::HandleExternalProtocol( return ChromeContentBrowserClient::HandleExternalProtocol( url, web_contents_getter, child_id, navigation_data, is_main_frame, - page_transition, has_user_gesture, factory_request, out_factory); + page_transition, has_user_gesture, out_factory); } base::Optional @@ -279,7 +223,7 @@ bool BraveContentBrowserClient::WillCreateURLLoaderFactory( bool is_navigation, bool is_download, const url::Origin& request_initiator, - network::mojom::URLLoaderFactoryRequest* factory_request, + mojo::PendingReceiver* factory_receiver, network::mojom::TrustedURLLoaderHeaderClientPtrInfo* header_client, bool* bypass_redirect_checks) { bool use_proxy = false; @@ -287,25 +231,47 @@ bool BraveContentBrowserClient::WillCreateURLLoaderFactory( use_proxy = ChromeContentBrowserClient::WillCreateURLLoaderFactory( browser_context, frame, render_process_id, is_navigation, is_download, request_initiator, - factory_request, header_client, bypass_redirect_checks); + factory_receiver, header_client, bypass_redirect_checks); // TODO(iefremov): Skip proxying for certain requests? use_proxy |= BraveProxyingURLLoaderFactory::MaybeProxyRequest( browser_context, frame, is_navigation ? -1 : render_process_id, - factory_request); + factory_receiver); return use_proxy; } -void BraveContentBrowserClient::WillCreateWebSocket( +bool BraveContentBrowserClient::WillInterceptWebSocket( + content::RenderFrameHost* frame) { + return (frame != nullptr); +} + +void BraveContentBrowserClient::CreateWebSocket( content::RenderFrameHost* frame, - network::mojom::WebSocketRequest* request, - network::mojom::AuthenticationHandlerPtr* auth_handler, - network::mojom::TrustedHeaderClientPtr* header_client, - uint32_t* options) { - ChromeContentBrowserClient::WillCreateWebSocket(frame, request, auth_handler, - header_client, options); - BraveProxyingWebSocket::ProxyWebSocket(frame, request, auth_handler); + content::ContentBrowserClient::WebSocketFactory factory, + const GURL& url, + const GURL& site_for_cookies, + const base::Optional& user_agent, + network::mojom::WebSocketHandshakeClientPtr handshake_client) { + auto* proxy = BraveProxyingWebSocket::ProxyWebSocket( + frame, + std::move(factory), + url, + site_for_cookies, + user_agent, + std::move(handshake_client)); + + if (ChromeContentBrowserClient::WillInterceptWebSocket(frame)) { + ChromeContentBrowserClient::CreateWebSocket( + frame, + proxy->web_socket_factory(), + url, + site_for_cookies, + user_agent, + network::mojom::WebSocketHandshakeClientPtr(proxy->handshake_client())); + } else { + proxy->Start(); + } } void BraveContentBrowserClient::MaybeHideReferrer( @@ -367,8 +333,7 @@ bool BraveContentBrowserClient::HandleURLOverrideRewrite(GURL* url, } // no special win10 welcome page - if (url->host() == chrome::kChromeUIWelcomeWin10Host || - url->host() == chrome::kChromeUIWelcomeHost) { + if (url->host() == chrome::kChromeUIWelcomeHost) { *url = GURL(chrome::kChromeUIWelcomeURL); return true; } diff --git a/browser/brave_content_browser_client.h b/browser/brave_content_browser_client.h index c9187cb9372..674227c6917 100644 --- a/browser/brave_content_browser_client.h +++ b/browser/brave_content_browser_client.h @@ -29,18 +29,6 @@ class BraveContentBrowserClient : public ChromeContentBrowserClient { std::unique_ptr CreateBrowserMainParts( const content::MainFunctionParams& parameters) override; void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) override; - bool AllowGetCookie(const GURL& url, - const GURL& first_party, - const net::CookieList& cookie_list, - content::ResourceContext* context, - int render_process_id, - int render_frame_id) override; - bool AllowSetCookie(const GURL& url, - const GURL& first_party, - const net::CanonicalCookie& cookie, - content::ResourceContext* context, - int render_process_id, - int render_frame_id) override; bool HandleExternalProtocol( const GURL& url, @@ -50,8 +38,7 @@ class BraveContentBrowserClient : public ChromeContentBrowserClient { bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture, - network::mojom::URLLoaderFactoryRequest* factory_request, - network::mojom::URLLoaderFactory*& out_factory) override; // NOLINT + network::mojom::URLLoaderFactoryPtr* out_factory) override; content::ContentBrowserClient::AllowWebBluetoothResult AllowWebBluetooth( content::BrowserContext* browser_context, @@ -73,16 +60,18 @@ class BraveContentBrowserClient : public ChromeContentBrowserClient { bool is_navigation, bool is_download, const url::Origin& request_initiator, - network::mojom::URLLoaderFactoryRequest* factory_request, + mojo::PendingReceiver* factory_receiver, network::mojom::TrustedURLLoaderHeaderClientPtrInfo* header_client, bool* bypass_redirect_checks) override; - void WillCreateWebSocket( + bool WillInterceptWebSocket(content::RenderFrameHost* frame) override; + void CreateWebSocket( content::RenderFrameHost* frame, - network::mojom::WebSocketRequest* request, - network::mojom::AuthenticationHandlerPtr* auth_handler, - network::mojom::TrustedHeaderClientPtr* header_client, - uint32_t* options) override; + content::ContentBrowserClient::WebSocketFactory factory, + const GURL& url, + const GURL& site_for_cookies, + const base::Optional& user_agent, + network::mojom::WebSocketHandshakeClientPtr handshake_client) override; void MaybeHideReferrer(content::BrowserContext* browser_context, const GURL& request_url, @@ -98,9 +87,6 @@ class BraveContentBrowserClient : public ChromeContentBrowserClient { CreateThrottlesForNavigation(content::NavigationHandle* handle) override; private: - bool AllowAccessCookie(const GURL& url, const GURL& first_party, - content::ResourceContext* context, int render_process_id, - int render_frame_id); void OnAllowGoogleAuthChanged(); std::unique_ptr diff --git a/browser/brave_content_browser_client_browsertest.cc b/browser/brave_content_browser_client_browsertest.cc index fbde5e1fda3..f8b7f1968cd 100644 --- a/browser/brave_content_browser_client_browsertest.cc +++ b/browser/brave_content_browser_client_browsertest.cc @@ -236,58 +236,6 @@ IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, } #endif -IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, - RewriteWelcomeWin10Host) { - std::vector schemes { - "brave://", - "chrome://", - }; - - for (const std::string& scheme : schemes) { - content::WebContents* contents = - browser()->tab_strip_model()->GetActiveWebContents(); - ui_test_utils::NavigateToURL( - browser(), - GURL(scheme + chrome::kChromeUIWelcomeWin10Host)); - ASSERT_TRUE(WaitForLoadStop(contents)); - - EXPECT_STREQ(base::UTF16ToUTF8(browser()->location_bar_model() - ->GetFormattedFullURL()).c_str(), - "brave://welcome"); - EXPECT_STREQ(contents->GetController().GetLastCommittedEntry() - ->GetVirtualURL().spec().c_str(), - "chrome://welcome/"); - EXPECT_STREQ(contents->GetController().GetLastCommittedEntry() - ->GetURL().spec().c_str(), - "chrome://welcome/"); - } -} - -IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, - RewriteChromeWelcomeWin10) { - std::vector schemes { - "brave://", - "chrome://", - }; - - for (const std::string& scheme : schemes) { - content::WebContents* contents = - browser()->tab_strip_model()->GetActiveWebContents(); - ui_test_utils::NavigateToURL(browser(), GURL(scheme + "welcome-win10/")); - ASSERT_TRUE(WaitForLoadStop(contents)); - - EXPECT_STREQ(base::UTF16ToUTF8(browser()->location_bar_model() - ->GetFormattedFullURL()).c_str(), - "brave://welcome"); - EXPECT_STREQ(contents->GetController().GetLastCommittedEntry() - ->GetVirtualURL().spec().c_str(), - "chrome://welcome/"); - EXPECT_STREQ(contents->GetController().GetLastCommittedEntry() - ->GetURL().spec().c_str(), - "chrome://welcome/"); - } -} - IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, RewriteMagnetURLURLBar) { content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); @@ -327,8 +275,7 @@ IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, TypedMagnetURL) { content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); content::TestNavigationObserver observer(web_contents); - LocationBar* location_bar = browser()->window()->GetLocationBar(); - ui_test_utils::SendToOmniboxAndSubmit(location_bar, magnet_url().spec()); + ui_test_utils::SendToOmniboxAndSubmit(browser(), magnet_url().spec()); observer.Wait(); EXPECT_EQ(magnet_url(), web_contents->GetLastCommittedURL().spec()); } diff --git a/browser/brave_content_browser_client_unittest.cc b/browser/brave_content_browser_client_unittest.cc index 7fe11d5d87c..476f86db613 100644 --- a/browser/brave_content_browser_client_unittest.cc +++ b/browser/brave_content_browser_client_unittest.cc @@ -87,14 +87,3 @@ TEST_F(BraveContentBrowserClientTest, ResolvesSync) { ASSERT_TRUE(BraveContentBrowserClient::HandleURLOverrideRewrite( &url2, nullptr)); } - -TEST_F(BraveContentBrowserClientTest, ResolvesWelcomePage) { - GURL url("chrome://welcome-win10/"); - ASSERT_TRUE(BraveContentBrowserClient::HandleURLOverrideRewrite( - &url, nullptr)); - ASSERT_STREQ(url.spec().c_str(), "chrome://welcome/"); - - GURL url2("chrome://welcome/"); - ASSERT_TRUE(BraveContentBrowserClient::HandleURLOverrideRewrite( - &url2, nullptr)); -} diff --git a/browser/brave_profile_prefs.cc b/browser/brave_profile_prefs.cc index 54f98d14648..a087a91621d 100644 --- a/browser/brave_profile_prefs.cc +++ b/browser/brave_profile_prefs.cc @@ -15,7 +15,7 @@ #include "components/content_settings/core/common/pref_names.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/safe_browsing/common/safe_browsing_prefs.h" -#include "components/signin/core/browser/signin_pref_names.h" +#include "components/signin/public/base/signin_pref_names.h" #include "components/sync/base/pref_names.h" #include "extensions/buildflags/buildflags.h" #include "extensions/common/feature_switch.h" diff --git a/browser/brave_scheme_load_browsertest.cc b/browser/brave_scheme_load_browsertest.cc index afd7b00b12a..89f28e9b9df 100644 --- a/browser/brave_scheme_load_browsertest.cc +++ b/browser/brave_scheme_load_browsertest.cc @@ -223,6 +223,7 @@ IN_PROC_BROWSER_TEST_F(BraveSchemeLoadBrowserTest, CrashURLTest) { content::WindowedNotificationObserver observer( content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED, content::NotificationService::AllSources()); + content::ScopedAllowRendererCrashes allow_renderer_crashes(active_contents()); browser()->OpenURL( content::OpenURLParams(GURL("brave://crash/"), content::Referrer(), WindowOpenDisposition::CURRENT_TAB, diff --git a/browser/extensions/api/brave_extensions_api_client.cc b/browser/extensions/api/brave_extensions_api_client.cc index 564b2f8bd25..697332fe136 100644 --- a/browser/extensions/api/brave_extensions_api_client.cc +++ b/browser/extensions/api/brave_extensions_api_client.cc @@ -10,11 +10,13 @@ namespace extensions { bool BraveExtensionsAPIClient::ShouldHideBrowserNetworkRequest( + content::BrowserContext* context, const WebRequestInfo& request) const { if (IsBraveProtectedUrl(request.url)) { return true; } - return ChromeExtensionsAPIClient::ShouldHideBrowserNetworkRequest(request); + return ChromeExtensionsAPIClient::ShouldHideBrowserNetworkRequest(context, + request); } } // namespace extensions diff --git a/browser/extensions/api/brave_extensions_api_client.h b/browser/extensions/api/brave_extensions_api_client.h index 486e784a413..7de70f56d83 100644 --- a/browser/extensions/api/brave_extensions_api_client.h +++ b/browser/extensions/api/brave_extensions_api_client.h @@ -13,6 +13,7 @@ namespace extensions { class BraveExtensionsAPIClient : public ChromeExtensionsAPIClient { bool ShouldHideBrowserNetworkRequest( + content::BrowserContext* context, const WebRequestInfo& request) const override; }; diff --git a/browser/extensions/api/brave_wallet_api_browsertest.cc b/browser/extensions/api/brave_wallet_api_browsertest.cc index a84179b3d9b..e468658757f 100644 --- a/browser/extensions/api/brave_wallet_api_browsertest.cc +++ b/browser/extensions/api/brave_wallet_api_browsertest.cc @@ -11,6 +11,7 @@ #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/common/extension.h" #include "extensions/common/extension_builder.h" #include "extensions/test/extension_test_message_listener.h" #include "net/dns/mock_host_resolver.h" diff --git a/browser/extensions/brave_base_local_data_files_browsertest.cc b/browser/extensions/brave_base_local_data_files_browsertest.cc index fb795510662..ca830a94802 100644 --- a/browser/extensions/brave_base_local_data_files_browsertest.cc +++ b/browser/extensions/brave_base_local_data_files_browsertest.cc @@ -14,7 +14,6 @@ #include "brave/components/brave_component_updater/browser/local_data_files_observer.h" #include "brave/components/brave_component_updater/browser/local_data_files_service.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/net/url_request_mock_util.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/test/browser_test_utils.h" @@ -63,9 +62,6 @@ void BaseLocalDataFilesBrowserTest::MaybeSetUpEmbeddedTestServerOnMainThread() { if (!embedded_test_server_directory()) return; - base::PostTaskWithTraits( - FROM_HERE, {content::BrowserThread::IO}, - base::BindOnce(&chrome_browser_net::SetUrlRequestMocksEnabled, true)); host_resolver()->AddRule("*", "127.0.0.1"); } diff --git a/browser/extensions/brave_component_loader.cc b/browser/extensions/brave_component_loader.cc index aea65dff164..475c5722f18 100644 --- a/browser/extensions/brave_component_loader.cc +++ b/browser/extensions/brave_component_loader.cc @@ -30,13 +30,10 @@ namespace extensions { BraveComponentLoader::BraveComponentLoader( ExtensionServiceInterface* extension_service, - PrefService* profile_prefs, - PrefService* local_state, Profile* profile) - : ComponentLoader(extension_service, profile_prefs, local_state, profile), + : ComponentLoader(extension_service, profile), profile_(profile), - profile_prefs_(profile_prefs) { -} + profile_prefs_(profile->GetPrefs()) {} BraveComponentLoader::~BraveComponentLoader() { } diff --git a/browser/extensions/brave_component_loader.h b/browser/extensions/brave_component_loader.h index e877ad9a1b9..cbf29ac8017 100644 --- a/browser/extensions/brave_component_loader.h +++ b/browser/extensions/brave_component_loader.h @@ -19,9 +19,7 @@ namespace extensions { class BraveComponentLoader : public ComponentLoader { public: BraveComponentLoader(ExtensionServiceInterface* extension_service, - PrefService* prefs, - PrefService* local_state, - Profile* browser_context); + Profile* browser_context); ~BraveComponentLoader() override; // Adds the default component extensions. If |skip_session_components| diff --git a/browser/extensions/brave_extension_provider_browsertest.cc b/browser/extensions/brave_extension_provider_browsertest.cc index 41f3996932f..2b30de88066 100644 --- a/browser/extensions/brave_extension_provider_browsertest.cc +++ b/browser/extensions/brave_extension_provider_browsertest.cc @@ -1,4 +1,5 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright 2019 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 http://mozilla.org/MPL/2.0/. */ @@ -13,7 +14,6 @@ #include "brave/components/brave_shields/browser/https_everywhere_service.h" #include "chrome/browser/extensions/crx_installer.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/net/url_request_mock_util.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/test/browser_test_utils.h" @@ -30,8 +30,8 @@ namespace extensions { IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, BlacklistExtension) { base::FilePath test_data_dir; GetTestDataDir(&test_data_dir); - const extensions::Extension* extension = - InstallExtension(test_data_dir.AppendASCII("should-be-blocked-extension"), 0); + const extensions::Extension* extension = InstallExtension( + test_data_dir.AppendASCII("should-be-blocked-extension"), 0); ASSERT_FALSE(extension); } @@ -46,15 +46,19 @@ IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, WhitelistedExtension) { // Load an extension page with an ad image, and make sure it is NOT blocked. // It would otherwise be blocked though if it wasn't an extension. -IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, AdsNotBlockedByDefaultBlockerInExtension) { +IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, + AdsNotBlockedByDefaultBlockerInExtension) { base::FilePath test_data_dir; GetTestDataDir(&test_data_dir); - const extensions::Extension* extension = InstallExtensionSilently(extension_service(), + const extensions::Extension* extension = InstallExtensionSilently( + extension_service(), test_data_dir.AppendASCII("extension-compat-test-extension.crx")); - GURL url = GURL(std::string(kChromeExtensionScheme) + "://" + extension->id() + "/blocking.html"); + GURL url = GURL(std::string(kChromeExtensionScheme) + "://" + + extension->id() + "/blocking.html"); ui_test_utils::NavigateToURL(browser(), url); - content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); ASSERT_TRUE(content::WaitForLoadStop(contents)); EXPECT_EQ(url, contents->GetURL()); @@ -71,12 +75,15 @@ IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, AdsNotBlockedByDefaultBlocker IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, ExtensionsCanGetCookies) { base::FilePath test_data_dir; GetTestDataDir(&test_data_dir); - const extensions::Extension* extension = InstallExtensionSilently(extension_service(), + const extensions::Extension* extension = InstallExtensionSilently( + extension_service(), test_data_dir.AppendASCII("extension-compat-test-extension.crx")); - GURL url = GURL(std::string(kChromeExtensionScheme) + "://" + extension->id() + "/blocking.html"); + GURL url = GURL(std::string(kChromeExtensionScheme) + "://" + + extension->id() + "/blocking.html"); ui_test_utils::NavigateToURL(browser(), url); - content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); ASSERT_TRUE(content::WaitForLoadStop(contents)); EXPECT_EQ(url, contents->GetURL()); @@ -91,12 +98,15 @@ IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, ExtensionsCanGetCookies) { IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, ExtensionsCanSetCookies) { base::FilePath test_data_dir; GetTestDataDir(&test_data_dir); - const extensions::Extension* extension = InstallExtensionSilently(extension_service(), + const extensions::Extension* extension = InstallExtensionSilently( + extension_service(), test_data_dir.AppendASCII("extension-compat-test-extension.crx")); - GURL url = GURL(std::string(kChromeExtensionScheme) + "://" + extension->id() + "/blocking.html"); + GURL url = GURL(std::string(kChromeExtensionScheme) + "://" + + extension->id() + "/blocking.html"); ui_test_utils::NavigateToURL(browser(), url); - content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); ASSERT_TRUE(content::WaitForLoadStop(contents)); EXPECT_EQ(url, contents->GetURL()); @@ -108,4 +118,4 @@ IN_PROC_BROWSER_TEST_F(BraveExtensionProviderTest, ExtensionsCanSetCookies) { EXPECT_TRUE(as_expected); } -} // namespace extnesions +} // namespace extensions diff --git a/browser/importer/brave_profile_writer.cc b/browser/importer/brave_profile_writer.cc index aef7aa172ff..7bcb9c9a06d 100644 --- a/browser/importer/brave_profile_writer.cc +++ b/browser/importer/brave_profile_writer.cc @@ -25,6 +25,7 @@ #include "brave/browser/search_engines/search_engine_provider_util.h" #include "base/files/file_util.h" +#include "base/optional.h" #include "base/strings/string_number_conversions.h" #include "base/time/time.h" #include "base/task/post_task.h" @@ -404,11 +405,10 @@ void OpenImportedBrowserTabs(Browser* browser, entry.set_is_restored(true); e.push_back(entry); - chrome::AddRestoredTab( - browser, e, browser->tab_strip_model()->count(), 0, - "", false, pinned, true, - base::TimeTicks::UnixEpoch(), nullptr, - "", true /* from_session_restore */); + chrome::AddRestoredTab(browser, e, browser->tab_strip_model()->count(), 0, + "", base::nullopt, false, pinned, true, + base::TimeTicks::UnixEpoch(), nullptr, "", + true /* from_session_restore */); } } diff --git a/browser/net/BUILD.gn b/browser/net/BUILD.gn index ba7da600d84..68a8f39aa2e 100644 --- a/browser/net/BUILD.gn +++ b/browser/net/BUILD.gn @@ -12,10 +12,6 @@ source_set("net") { "brave_common_static_redirect_network_delegate_helper.h", "brave_httpse_network_delegate_helper.cc", "brave_httpse_network_delegate_helper.h", - "brave_network_delegate_base.cc", - "brave_network_delegate_base.h", - "brave_profile_network_delegate.cc", - "brave_profile_network_delegate.h", "brave_proxying_url_loader_factory.cc", "brave_proxying_url_loader_factory.h", "brave_proxying_web_socket.cc", @@ -28,8 +24,6 @@ source_set("net") { "brave_static_redirect_network_delegate_helper.h", "brave_stp_util.cc", "brave_stp_util.h", - "brave_system_network_delegate.cc", - "brave_system_network_delegate.h", "brave_system_request_handler.cc", "brave_system_request_handler.h", "resource_context_data.cc", @@ -42,7 +36,11 @@ source_set("net") { "//base", "//brave/app:brave_generated_resources_grit", "//brave/browser/safebrowsing", + "//brave/browser/translate/buildflags", + "//brave/common", + "//brave/components/brave_referrals/buildflags", "//brave/components/brave_shields/browser", + "//brave/components/brave_webtorrent/browser/buildflags", "//brave/extensions:common", "//components/prefs", "//content/public/browser", @@ -71,6 +69,7 @@ source_set("net") { if (enable_brave_webtorrent) { deps += [ "//brave/components/brave_webtorrent/browser/net", + "//extensions/browser", ] } diff --git a/browser/net/brave_network_delegate_base.cc b/browser/net/brave_network_delegate_base.cc deleted file mode 100644 index 4afe4974a79..00000000000 --- a/browser/net/brave_network_delegate_base.cc +++ /dev/null @@ -1,338 +0,0 @@ -/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ - -#include "brave/browser/net/brave_network_delegate_base.h" - -#include -#include - -#include "base/task/post_task.h" -#include "brave/browser/brave_browser_process_impl.h" -#include "brave/browser/net/brave_stp_util.h" -#include "brave/common/pref_names.h" -#include "brave/components/brave_shields/browser/brave_shields_util.h" -#include "brave/components/brave_shields/browser/brave_shields_web_contents_observer.h" -#include "brave/components/brave_shields/browser/tracking_protection_service.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/content_settings/tab_specific_content_settings.h" -#include "chrome/browser/profiles/profile_io_data.h" -#include "components/content_settings/core/browser/cookie_settings.h" -#include "components/prefs/pref_change_registrar.h" -#include "components/prefs/pref_service.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" -#include "net/url_request/url_request.h" - -using content::BrowserThread; -using content::ResourceRequestInfo; -using net::HttpResponseHeaders; -using net::URLRequest; - -namespace { - -bool OnAllowAccessCookies( - const URLRequest& request, - std::shared_ptr ctx) { - ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(&request); - if (info) { - ProfileIOData* io_data = - ProfileIOData::FromResourceContext(info->GetContext()); - - GURL url = request.url(); - GURL tab_origin = request.site_for_cookies(); - if (tab_origin.is_empty()) - tab_origin = GURL(request.network_isolation_key().ToString()); - if (tab_origin.is_empty() && request.top_frame_origin().has_value()) - tab_origin = request.top_frame_origin()->GetURL(); - - return - io_data->GetCookieSettings()->IsCookieAccessAllowed(url, tab_origin) && - g_brave_browser_process->tracking_protection_service() - ->ShouldStoreState(io_data->GetHostContentSettingsMap(), - ctx->render_process_id, - ctx->render_frame_id, - url, - tab_origin); - } - - return true; -} - -} // namespace - - -BraveNetworkDelegateBase::BraveNetworkDelegateBase( - extensions::EventRouterForwarder* event_router) - : ChromeNetworkDelegate(event_router), - referral_headers_list_(nullptr) { - // Initialize the preference change registrar. - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, - base::Bind(&BraveNetworkDelegateBase::InitPrefChangeRegistrarOnUI, - base::Unretained(this))); -} - -BraveNetworkDelegateBase::~BraveNetworkDelegateBase() {} - -void BraveNetworkDelegateBase::InitPrefChangeRegistrarOnUI() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - -#if BUILDFLAG(ENABLE_BRAVE_REFERRALS) - PrefService* prefs = g_browser_process->local_state(); - pref_change_registrar_.reset(new PrefChangeRegistrar()); - pref_change_registrar_->Init(prefs); - pref_change_registrar_->Add( - kReferralHeaders, - base::Bind(&BraveNetworkDelegateBase::OnReferralHeadersChanged, - base::Unretained(this))); - // Retrieve current referral headers, if any. - OnReferralHeadersChanged(); -#endif -} - -void BraveNetworkDelegateBase::OnReferralHeadersChanged() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - if (const base::ListValue* referral_headers = - g_browser_process->local_state()->GetList(kReferralHeaders)) { - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::Bind(&BraveNetworkDelegateBase::SetReferralHeaders, - base::Unretained(this), referral_headers->DeepCopy())); - } -} - -void BraveNetworkDelegateBase::SetReferralHeaders( - base::ListValue* referral_headers) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - referral_headers_list_.reset(referral_headers); -} - -int BraveNetworkDelegateBase::OnBeforeURLRequest( - URLRequest* request, - net::CompletionOnceCallback callback, - GURL* new_url) { - if (before_url_request_callbacks_.empty() || !request) { - return ChromeNetworkDelegate::OnBeforeURLRequest( - request, std::move(callback), new_url); - } - std::shared_ptr ctx(new brave::BraveRequestInfo()); - brave::BraveRequestInfo::FillCTXFromRequest(request, ctx); - ctx->new_url = new_url; - ctx->event_type = brave::kOnBeforeRequest; - callbacks_[request->identifier()] = std::move(callback); - RunNextCallback(request, ctx); - return net::ERR_IO_PENDING; -} - -int BraveNetworkDelegateBase::OnBeforeStartTransaction( - URLRequest* request, - net::CompletionOnceCallback callback, - net::HttpRequestHeaders* headers) { - if (before_start_transaction_callbacks_.empty() || !request) { - return ChromeNetworkDelegate::OnBeforeStartTransaction( - request, std::move(callback), headers); - } - std::shared_ptr ctx(new brave::BraveRequestInfo()); - brave::BraveRequestInfo::FillCTXFromRequest(request, ctx); - ctx->event_type = brave::kOnBeforeStartTransaction; - ctx->headers = headers; - ctx->referral_headers_list = referral_headers_list_.get(); - callbacks_[request->identifier()] = std::move(callback); - RunNextCallback(request, ctx); - return net::ERR_IO_PENDING; -} - -int BraveNetworkDelegateBase::OnHeadersReceived( - URLRequest* request, - net::CompletionOnceCallback callback, - const net::HttpResponseHeaders* original_response_headers, - scoped_refptr* override_response_headers, - GURL* allowed_unsafe_redirect_url) { - if (request->top_frame_origin().has_value()) { - brave::RemoveTrackableSecurityHeadersForThirdParty( - request->url(), request->top_frame_origin().value(), - original_response_headers, override_response_headers); - } - - if (headers_received_callbacks_.empty() || !request) { - return ChromeNetworkDelegate::OnHeadersReceived( - request, std::move(callback), original_response_headers, - override_response_headers, allowed_unsafe_redirect_url); - } - - std::shared_ptr ctx(new brave::BraveRequestInfo()); - callbacks_[request->identifier()] = std::move(callback); - brave::BraveRequestInfo::FillCTXFromRequest(request, ctx); - ctx->event_type = brave::kOnHeadersReceived; - ctx->original_response_headers = original_response_headers; - ctx->override_response_headers = override_response_headers; - ctx->allowed_unsafe_redirect_url = allowed_unsafe_redirect_url; - - // Return ERR_IO_PENDING and run callbacks later by posting a task. - // URLRequestHttpJob::awaiting_callback_ will be set to true after we - // return net::ERR_IO_PENDING here, callbacks need to be run later than this - // to set awaiting_callback_ back to false. - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::Bind(&BraveNetworkDelegateBase::RunNextCallback, - base::Unretained(this), request, ctx)); - return net::ERR_IO_PENDING; -} - -bool BraveNetworkDelegateBase::OnCanGetCookies( - const URLRequest& request, - const net::CookieList& cookie_list, - bool allowed_from_caller) { - std::shared_ptr ctx(new brave::BraveRequestInfo()); - brave::BraveRequestInfo::FillCTXFromRequest(&request, ctx); - ctx->event_type = brave::kOnCanGetCookies; - - return OnAllowAccessCookies(request, ctx); -} - -bool BraveNetworkDelegateBase::OnCanSetCookie( - const URLRequest& request, - const net::CanonicalCookie& cookie, - net::CookieOptions* options, - bool allowed_from_caller) { - std::shared_ptr ctx(new brave::BraveRequestInfo()); - brave::BraveRequestInfo::FillCTXFromRequest(&request, ctx); - ctx->event_type = brave::kOnCanSetCookies; - - return OnAllowAccessCookies(request, ctx); -} - -void BraveNetworkDelegateBase::RunCallbackForRequestIdentifier( - uint64_t request_identifier, - int rv) { - std::map::iterator it = - callbacks_.find(request_identifier); - std::move(it->second).Run(rv); -} - -void BraveNetworkDelegateBase::RunNextCallback( - URLRequest* request, - std::shared_ptr ctx) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - if (!ContainsKey(callbacks_, ctx->request_identifier)) { - return; - } - - if (request->status().status() == net::URLRequestStatus::CANCELED) { - return; - } - - // Continue processing callbacks until we hit one that returns PENDING - int rv = net::OK; - - if (ctx->event_type == brave::kOnBeforeRequest) { - while (before_url_request_callbacks_.size() != - ctx->next_url_request_index) { - brave::OnBeforeURLRequestCallback callback = - before_url_request_callbacks_[ctx->next_url_request_index++]; - brave::ResponseCallback next_callback = - base::Bind(&BraveNetworkDelegateBase::RunNextCallback, - base::Unretained(this), request, ctx); - rv = callback.Run(next_callback, ctx); - if (rv == net::ERR_IO_PENDING) { - return; - } - if (rv != net::OK) { - break; - } - } - } else if (ctx->event_type == brave::kOnBeforeStartTransaction) { - while (before_start_transaction_callbacks_.size() != - ctx->next_url_request_index) { - brave::OnBeforeStartTransactionCallback callback = - before_start_transaction_callbacks_[ctx->next_url_request_index++]; - brave::ResponseCallback next_callback = - base::Bind(&BraveNetworkDelegateBase::RunNextCallback, - base::Unretained(this), request, ctx); - rv = callback.Run(ctx->headers, next_callback, ctx); - if (rv == net::ERR_IO_PENDING) { - return; - } - if (rv != net::OK) { - break; - } - } - } else if (ctx->event_type == brave::kOnHeadersReceived) { - while (headers_received_callbacks_.size() != ctx->next_url_request_index) { - brave::OnHeadersReceivedCallback callback = - headers_received_callbacks_[ctx->next_url_request_index++]; - brave::ResponseCallback next_callback = - base::Bind(&BraveNetworkDelegateBase::RunNextCallback, - base::Unretained(this), request, ctx); - rv = callback.Run(ctx->original_response_headers, - ctx->override_response_headers, - ctx->allowed_unsafe_redirect_url, next_callback, ctx); - if (rv == net::ERR_IO_PENDING) { - return; - } - if (rv != net::OK) { - break; - } - } - } - - if (rv != net::OK) { - RunCallbackForRequestIdentifier(ctx->request_identifier, rv); - return; - } - - net::CompletionOnceCallback wrapped_callback = - base::BindOnce(&BraveNetworkDelegateBase::RunCallbackForRequestIdentifier, - base::Unretained(this), ctx->request_identifier); - - if (ctx->event_type == brave::kOnBeforeRequest) { - if (!ctx->new_url_spec.empty() && - (ctx->new_url_spec != ctx->request_url.spec()) && - IsRequestIdentifierValid(ctx->request_identifier)) { - *ctx->new_url = GURL(ctx->new_url_spec); - } - if (ctx->blocked_by == brave::kAdBlocked) { - // We are going to intercept this request and block it later in the - // network stack. - if (ctx->cancel_request_explicitly) { - RunCallbackForRequestIdentifier(ctx->request_identifier, - net::ERR_ABORTED); - return; - } - request->SetExtraRequestHeaderByName("X-Brave-Block", "", true); - } - if (!ctx->new_referrer.is_empty()) { - request->SetReferrer(ctx->new_referrer.spec()); - } - rv = ChromeNetworkDelegate::OnBeforeURLRequest( - request, std::move(wrapped_callback), ctx->new_url); - } else if (ctx->event_type == brave::kOnBeforeStartTransaction) { - rv = ChromeNetworkDelegate::OnBeforeStartTransaction( - request, std::move(wrapped_callback), ctx->headers); - } else if (ctx->event_type == brave::kOnHeadersReceived) { - rv = ChromeNetworkDelegate::OnHeadersReceived( - request, std::move(wrapped_callback), ctx->original_response_headers, - ctx->override_response_headers, ctx->allowed_unsafe_redirect_url); - } - - // ChromeNetworkDelegate returns net::ERR_IO_PENDING if an extension is - // intercepting the request and OK if the request should proceed normally. - if (rv != net::ERR_IO_PENDING) { - RunCallbackForRequestIdentifier(ctx->request_identifier, rv); - } -} - -void BraveNetworkDelegateBase::OnURLRequestDestroyed(URLRequest* request) { - if (ContainsKey(callbacks_, request->identifier())) { - callbacks_.erase(request->identifier()); - } - ChromeNetworkDelegate::OnURLRequestDestroyed(request); -} - -bool BraveNetworkDelegateBase::IsRequestIdentifierValid( - uint64_t request_identifier) { - return ContainsKey(callbacks_, request_identifier); -} diff --git a/browser/net/brave_network_delegate_base.h b/browser/net/brave_network_delegate_base.h deleted file mode 100644 index c2fdecec4b2..00000000000 --- a/browser/net/brave_network_delegate_base.h +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ - -#ifndef BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_BASE_H_ -#define BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_BASE_H_ - -#include -#include -#include -#include - -#include "brave/browser/net/url_context.h" -#include "chrome/browser/net/chrome_network_delegate.h" -#include "content/public/browser/browser_thread.h" -#include "net/base/completion_once_callback.h" - -class PrefChangeRegistrar; - -namespace extensions { -class EventRouterForwarder; -} - -namespace net { -class URLRequest; -} - -// BraveNetworkDelegateBase is the central point from within the Brave code to -// add hooks into the network stack. -class BraveNetworkDelegateBase : public ChromeNetworkDelegate { - public: - using ResponseCallback = base::Callback; - using ResponseListener = base::Callback; - - explicit BraveNetworkDelegateBase( - extensions::EventRouterForwarder* event_router); - ~BraveNetworkDelegateBase() override; - - bool IsRequestIdentifierValid(uint64_t request_identifier); - - // NetworkDelegate implementation. - int OnBeforeURLRequest(net::URLRequest* request, - net::CompletionOnceCallback callback, - GURL* new_url) override; - int OnBeforeStartTransaction(net::URLRequest* request, - net::CompletionOnceCallback callback, - net::HttpRequestHeaders* headers) override; - int OnHeadersReceived( - net::URLRequest* request, - net::CompletionOnceCallback callback, - const net::HttpResponseHeaders* original_response_headers, - scoped_refptr* override_response_headers, - GURL* allowed_unsafe_redirect_url) override; - - bool OnCanGetCookies(const net::URLRequest& request, - const net::CookieList& cookie_list, - bool allowed_from_caller) override; - - bool OnCanSetCookie(const net::URLRequest& request, - const net::CanonicalCookie& cookie, - net::CookieOptions* options, - bool allowed_from_caller) override; - - void OnURLRequestDestroyed(net::URLRequest* request) override; - void RunCallbackForRequestIdentifier(uint64_t request_identifier, int rv); - - protected: - void RunNextCallback(net::URLRequest* request, - std::shared_ptr ctx); - const base::FilePath& profile_path() { return profile_path_; } - - std::vector before_url_request_callbacks_; - std::vector - before_start_transaction_callbacks_; - std::vector headers_received_callbacks_; - - private: - void InitPrefChangeRegistrarOnUI(); - void SetReferralHeaders(base::ListValue* referral_headers); - void OnReferralHeadersChanged(); - - // TODO(iefremov): actually, we don't have to keep the list here, since - // it is global for the whole browser and could live a singletonce in the - // rewards service. Eliminating this will also help to avoid using - // PrefChangeRegistrar and corresponding |base::Unretained| usages, that are - // illegal. - std::unique_ptr referral_headers_list_; - std::map callbacks_; - std::unique_ptr - pref_change_registrar_; - - DISALLOW_COPY_AND_ASSIGN(BraveNetworkDelegateBase); -}; - -#endif // BRAVE_BROWSER_NET_BRAVE_NETWORK_DELEGATE_BASE_H_ diff --git a/browser/net/brave_network_delegate_base_unittest.cc b/browser/net/brave_network_delegate_base_unittest.cc index ba7559f34a1..97210ca2092 100644 --- a/browser/net/brave_network_delegate_base_unittest.cc +++ b/browser/net/brave_network_delegate_base_unittest.cc @@ -3,8 +3,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "brave/browser/net/brave_network_delegate_base.h" - #include #include "brave/browser/net/url_context.h" diff --git a/browser/net/brave_profile_network_delegate.cc b/browser/net/brave_profile_network_delegate.cc deleted file mode 100644 index 23910f4d40a..00000000000 --- a/browser/net/brave_profile_network_delegate.cc +++ /dev/null @@ -1,191 +0,0 @@ -/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ - -#include "brave/browser/net/brave_profile_network_delegate.h" - -#include - -#include "base/task/post_task.h" -#include "brave/browser/brave_browser_process_impl.h" -#include "brave/browser/net/brave_ad_block_tp_network_delegate_helper.h" -#include "brave/browser/net/brave_common_static_redirect_network_delegate_helper.h" -#include "brave/browser/net/brave_httpse_network_delegate_helper.h" -#include "brave/browser/net/brave_site_hacks_network_delegate_helper.h" -#include "brave/browser/translate/buildflags/buildflags.h" -#include "brave/common/pref_names.h" -#include "brave/components/brave_referrals/buildflags/buildflags.h" -#include "brave/components/brave_rewards/browser/buildflags/buildflags.h" -#include "brave/components/brave_shields/browser/ad_block_custom_filters_service.h" -#include "brave/components/brave_shields/browser/ad_block_regional_service_manager.h" -#include "brave/components/brave_shields/browser/ad_block_service.h" -#include "brave/components/brave_shields/common/brave_shield_constants.h" -#include "brave/components/brave_webtorrent/browser/buildflags/buildflags.h" -#include "chrome/browser/profiles/profile_manager.h" -#include "components/prefs/pref_change_registrar.h" -#include "components/prefs/pref_service.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" - -#if BUILDFLAG(ENABLE_BRAVE_REFERRALS) -#include "brave/browser/net/brave_referrals_network_delegate_helper.h" -#endif - -#if BUILDFLAG(BRAVE_REWARDS_ENABLED) -#include "brave/components/brave_rewards/browser/net/network_delegate_helper.h" -#endif - -#if BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) -#include "brave/components/brave_webtorrent/browser/net/brave_torrent_redirect_network_delegate_helper.h" -#endif - -#if BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO) -#include "brave/browser/net/brave_translate_redirect_network_delegate_helper.h" -#endif - -using content::BrowserThread; - -namespace { - -std::string GetTagFromPrefName(const std::string& pref_name) { - if (pref_name == kFBEmbedControlType) { - return brave_shields::kFacebookEmbeds; - } - if (pref_name == kTwitterEmbedControlType) { - return brave_shields::kTwitterEmbeds; - } - if (pref_name == kLinkedInEmbedControlType) { - return brave_shields::kLinkedInEmbeds; - } - return ""; -} - -} // namespace - -BraveProfileNetworkDelegate::BraveProfileNetworkDelegate( - extensions::EventRouterForwarder* event_router) : - BraveNetworkDelegateBase(event_router) { - brave::OnBeforeURLRequestCallback - callback = - base::Bind(brave::OnBeforeURLRequest_SiteHacksWork); - before_url_request_callbacks_.push_back(callback); - - callback = - base::Bind(brave::OnBeforeURLRequest_AdBlockTPPreWork); - before_url_request_callbacks_.push_back(callback); - - callback = - base::Bind(brave::OnBeforeURLRequest_HttpsePreFileWork); - before_url_request_callbacks_.push_back(callback); - - callback = - base::Bind(brave::OnBeforeURLRequest_CommonStaticRedirectWork); - before_url_request_callbacks_.push_back(callback); - -#if BUILDFLAG(BRAVE_REWARDS_ENABLED) - callback = base::Bind(brave_rewards::OnBeforeURLRequest); - before_url_request_callbacks_.push_back(callback); -#endif - -#if BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO) - callback = base::BindRepeating( - brave::OnBeforeURLRequest_TranslateRedirectWork); - before_url_request_callbacks_.push_back(callback); -#endif - - brave::OnBeforeStartTransactionCallback start_transaction_callback = - base::Bind(brave::OnBeforeStartTransaction_SiteHacksWork); - before_start_transaction_callbacks_.push_back(start_transaction_callback); - -#if BUILDFLAG(ENABLE_BRAVE_REFERRALS) - start_transaction_callback = - base::Bind(brave::OnBeforeStartTransaction_ReferralsWork); - before_start_transaction_callbacks_.push_back(start_transaction_callback); -#endif - -#if BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) - brave::OnHeadersReceivedCallback headers_received_callback = - base::Bind( - webtorrent::OnHeadersReceived_TorrentRedirectWork); - headers_received_callbacks_.push_back(headers_received_callback); -#endif - - // Initialize the preference change registrar. - // call PostTask because we need to wait for profile_path to be set - // on the OI thread after BraveProfileNetworkDelegate is created - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::Bind(&BraveProfileNetworkDelegate::InitPrefChangeRegistrar, - base::Unretained(this))); -} - -BraveProfileNetworkDelegate::~BraveProfileNetworkDelegate() { -} - -void BraveProfileNetworkDelegate::InitPrefChangeRegistrar() { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - DCHECK(!profile_path().empty()); - - // profile path is set on the IO thread so we need to read it here and - // then pass the value to the UI thread - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, - base::Bind(&BraveProfileNetworkDelegate::InitPrefChangeRegistrarOnUI, - base::Unretained(this), profile_path())); -} - -void BraveProfileNetworkDelegate::InitPrefChangeRegistrarOnUI( - const base::FilePath& profile_path) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - auto* profile = - g_browser_process->profile_manager()->GetProfile(profile_path); - - PrefService* user_prefs = profile->GetPrefs(); - user_pref_change_registrar_.reset(new PrefChangeRegistrar()); - user_pref_change_registrar_->Init(user_prefs); - user_pref_change_registrar_->Add( - kFBEmbedControlType, - base::BindRepeating(&BraveProfileNetworkDelegate::OnPreferenceChanged, - base::Unretained(this), - user_prefs, kFBEmbedControlType)); - user_pref_change_registrar_->Add( - kTwitterEmbedControlType, - base::BindRepeating(&BraveProfileNetworkDelegate::OnPreferenceChanged, - base::Unretained(this), - user_prefs, - kTwitterEmbedControlType)); - user_pref_change_registrar_->Add( - kLinkedInEmbedControlType, - base::BindRepeating(&BraveProfileNetworkDelegate::OnPreferenceChanged, - base::Unretained(this), - user_prefs, - kLinkedInEmbedControlType)); - UpdateAdBlockFromPref(user_prefs, kFBEmbedControlType); - UpdateAdBlockFromPref(user_prefs, kTwitterEmbedControlType); - UpdateAdBlockFromPref(user_prefs, kLinkedInEmbedControlType); -} - -void BraveProfileNetworkDelegate::OnPreferenceChanged( - PrefService* user_prefs, - const std::string& pref_name) { - UpdateAdBlockFromPref(user_prefs, pref_name); -} - -void BraveProfileNetworkDelegate::UpdateAdBlockFromPref( - PrefService* user_prefs, - const std::string& pref_name) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - std::string tag = GetTagFromPrefName(pref_name); - if (tag.length() == 0) { - return; - } - // TODO(bridiver) - user pref can't update global values - bool enabled = user_prefs->GetBoolean(pref_name); - g_brave_browser_process->ad_block_service()->EnableTag(tag, enabled); - g_brave_browser_process->ad_block_regional_service_manager()->EnableTag( - tag, enabled); - g_brave_browser_process->ad_block_custom_filters_service()->EnableTag( - tag, enabled); -} diff --git a/browser/net/brave_profile_network_delegate.h b/browser/net/brave_profile_network_delegate.h deleted file mode 100644 index 7974ce262c9..00000000000 --- a/browser/net/brave_profile_network_delegate.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ - -#ifndef BRAVE_BROWSER_NET_BRAVE_PROFILE_NETWORK_DELEGATE_H_ -#define BRAVE_BROWSER_NET_BRAVE_PROFILE_NETWORK_DELEGATE_H_ - -#include -#include - -#include "base/files/file_path.h" -#include "brave/browser/net/brave_network_delegate_base.h" - -class PrefService; - -class BraveProfileNetworkDelegate : public BraveNetworkDelegateBase { - public: - explicit BraveProfileNetworkDelegate( - extensions::EventRouterForwarder* event_router); - ~BraveProfileNetworkDelegate() override; - - private: - void InitPrefChangeRegistrar(); - void InitPrefChangeRegistrarOnUI(const base::FilePath& profile_path); - void OnPreferenceChanged(PrefService* user_prefs, - const std::string& pref_name); - void UpdateAdBlockFromPref(PrefService* user_prefs, - const std::string& pref_name); - - std::unique_ptr - user_pref_change_registrar_; - - DISALLOW_COPY_AND_ASSIGN(BraveProfileNetworkDelegate); -}; - -#endif // BRAVE_BROWSER_NET_BRAVE_PROFILE_NETWORK_DELEGATE_H_ diff --git a/browser/net/brave_proxying_url_loader_factory.cc b/browser/net/brave_proxying_url_loader_factory.cc index 8cce7fa0784..b80aa5369e8 100644 --- a/browser/net/brave_proxying_url_loader_factory.cc +++ b/browser/net/brave_proxying_url_loader_factory.cc @@ -17,9 +17,9 @@ #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" -#include "content/public/browser/resource_context.h" #include "content/public/common/url_utils.h" -#include "mojo/public/cpp/system/string_data_pipe_producer.h" +#include "mojo/public/cpp/system/data_pipe_producer.h" +#include "mojo/public/cpp/system/string_data_source.h" #include "net/base/completion_repeating_callback.h" #include "net/http/http_util.h" #include "services/network/public/cpp/features.h" @@ -32,7 +32,7 @@ struct WriteData { // Wek ref. |client| destroys itself in |OnComplete()|. network::mojom::URLLoaderClient* client; std::string data; - std::unique_ptr producer; + std::unique_ptr producer; }; void OnWrite(std::unique_ptr write_data, MojoResult result) { @@ -65,7 +65,7 @@ BraveProxyingURLLoaderFactory::InProgressRequest::InProgressRequest( int frame_tree_node_id, uint32_t options, const network::ResourceRequest& request, - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, network::mojom::URLLoaderRequest loader_request, network::mojom::URLLoaderClientPtr client) @@ -77,7 +77,7 @@ BraveProxyingURLLoaderFactory::InProgressRequest::InProgressRequest( frame_tree_node_id_(frame_tree_node_id), routing_id_(routing_id), options_(options), - resource_context_(resource_context), + browser_context_(browser_context), traffic_annotation_(traffic_annotation), proxied_loader_binding_(this, std::move(loader_request)), target_client_(std::move(client)), @@ -116,7 +116,7 @@ void BraveProxyingURLLoaderFactory::InProgressRequest::RestartInternal() { ctx_ = std::make_shared(); brave::BraveRequestInfo::FillCTX(request_, render_process_id_, frame_tree_node_id_, request_id_, - resource_context_, ctx_); + browser_context_, ctx_); int result = factory_->request_handler_->OnBeforeURLRequest( ctx_, continuation, &redirect_url_); @@ -360,13 +360,14 @@ void BraveProxyingURLLoaderFactory::InProgressRequest:: write_data->client = this; write_data->data = response_data; write_data->producer = - std::make_unique(std::move(producer)); + std::make_unique(std::move(producer)); base::StringPiece string_piece(write_data->data); - write_data->producer->Write(string_piece, - mojo::StringDataPipeProducer::AsyncWritingMode:: - STRING_STAYS_VALID_UNTIL_COMPLETION, - base::BindOnce(OnWrite, std::move(write_data))); + write_data->producer->Write( + std::make_unique( + string_piece, mojo::StringDataSource::AsyncWritingMode:: + STRING_STAYS_VALID_UNTIL_COMPLETION), + base::BindOnce(OnWrite, std::move(write_data))); return; } @@ -377,7 +378,7 @@ void BraveProxyingURLLoaderFactory::InProgressRequest:: ctx_ = std::make_shared(); brave::BraveRequestInfo::FillCTX(request_, render_process_id_, frame_tree_node_id_, request_id_, - resource_context_, ctx_); + browser_context_, ctx_); int result = factory_->request_handler_->OnBeforeStartTransaction( ctx_, continuation, &request_.headers); @@ -547,7 +548,7 @@ void BraveProxyingURLLoaderFactory::InProgressRequest:: ctx_ = std::make_shared(); brave::BraveRequestInfo::FillCTX(request_, render_process_id_, frame_tree_node_id_, request_id_, - resource_context_, ctx_); + browser_context_, ctx_); int result = factory_->request_handler_->OnHeadersReceived( ctx_, copyable_callback, current_response_.headers.get(), &override_headers_, &redirect_url_); @@ -572,6 +573,7 @@ void BraveProxyingURLLoaderFactory::InProgressRequest:: copyable_callback.Run(net::OK); } + void BraveProxyingURLLoaderFactory::InProgressRequest::OnRequestError( const network::URLLoaderCompletionStatus& status) { if (!request_completed_) { @@ -584,7 +586,7 @@ void BraveProxyingURLLoaderFactory::InProgressRequest::OnRequestError( BraveProxyingURLLoaderFactory::BraveProxyingURLLoaderFactory( BraveRequestHandler* request_handler, - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, int render_process_id, int frame_tree_node_id, network::mojom::URLLoaderFactoryRequest loader_request, @@ -592,13 +594,13 @@ BraveProxyingURLLoaderFactory::BraveProxyingURLLoaderFactory( scoped_refptr request_id_generator, DisconnectCallback on_disconnect) : request_handler_(request_handler), - resource_context_(resource_context), + browser_context_(browser_context), render_process_id_(render_process_id), frame_tree_node_id_(frame_tree_node_id), request_id_generator_(request_id_generator), disconnect_callback_(std::move(on_disconnect)), weak_factory_(this) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK(proxy_bindings_.empty()); DCHECK(!target_factory_.is_bound()); @@ -620,19 +622,17 @@ bool BraveProxyingURLLoaderFactory::MaybeProxyRequest( content::BrowserContext* browser_context, content::RenderFrameHost* render_frame_host, int render_process_id, - network::mojom::URLLoaderFactoryRequest* factory_request) { + mojo::PendingReceiver* factory_receiver) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - auto proxied_request = std::move(*factory_request); + auto proxied_receiver = std::move(*factory_receiver); network::mojom::URLLoaderFactoryPtrInfo target_factory_info; - *factory_request = mojo::MakeRequest(&target_factory_info); - - base::PostTaskWithTraits( - FROM_HERE, {content::BrowserThread::IO}, - base::BindOnce( - &ResourceContextData::StartProxying, - browser_context->GetResourceContext(), render_process_id, - render_frame_host ? render_frame_host->GetFrameTreeNodeId() : 0, - std::move(proxied_request), std::move(target_factory_info))); + *factory_receiver = mojo::MakeRequest(&target_factory_info); + + + ResourceContextData::StartProxying(browser_context, + render_process_id, + render_frame_host ? render_frame_host->GetFrameTreeNodeId() : 0, + std::move(proxied_receiver), std::move(target_factory_info)); return true; } @@ -644,7 +644,7 @@ void BraveProxyingURLLoaderFactory::CreateLoaderAndStart( const network::ResourceRequest& request, network::mojom::URLLoaderClientPtr client, const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); // The request ID doesn't really matter in the Network Service path. It just // needs to be unique per-BrowserContext so request handlers can make sense of @@ -655,7 +655,7 @@ void BraveProxyingURLLoaderFactory::CreateLoaderAndStart( auto result = requests_.emplace( std::make_unique( this, brave_request_id, request_id, routing_id, render_process_id_, - frame_tree_node_id_, options, request, resource_context_, + frame_tree_node_id_, options, request, browser_context_, traffic_annotation, std::move(loader_request), std::move(client))); (*result.first)->Restart(); } diff --git a/browser/net/brave_proxying_url_loader_factory.h b/browser/net/brave_proxying_url_loader_factory.h index edb0e4a60e3..2abe404cc73 100644 --- a/browser/net/brave_proxying_url_loader_factory.h +++ b/browser/net/brave_proxying_url_loader_factory.h @@ -36,7 +36,6 @@ namespace content { class BrowserContext; class RenderFrameHost; -class ResourceContext; } // namespace content // Cargoculted from WebRequestProxyingURLLoaderFactory and @@ -59,7 +58,7 @@ class BraveProxyingURLLoaderFactory int32_t routing_id, uint32_t options, const network::ResourceRequest& request, - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, network::mojom::URLLoaderRequest loader_request, network::mojom::URLLoaderClientPtr client); @@ -118,7 +117,7 @@ class BraveProxyingURLLoaderFactory const int32_t routing_id_; const uint32_t options_; - content::ResourceContext* resource_context_; + content::BrowserContext* browser_context_; const net::MutableNetworkTrafficAnnotationTag traffic_annotation_; mojo::Binding proxied_loader_binding_; network::mojom::URLLoaderClientPtr target_client_; @@ -162,7 +161,7 @@ class BraveProxyingURLLoaderFactory // by calling MaybeProxyRequest(). BraveProxyingURLLoaderFactory( BraveRequestHandler* request_handler, - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, int render_process_id, int frame_tree_node_id, network::mojom::URLLoaderFactoryRequest request, @@ -176,7 +175,8 @@ class BraveProxyingURLLoaderFactory content::BrowserContext* browser_context, content::RenderFrameHost* render_frame_host, int render_process_id, - network::mojom::URLLoaderFactoryRequest* factory_request); + mojo::PendingReceiver* + factory_receiver); // network::mojom::URLLoaderFactory: void CreateLoaderAndStart(network::mojom::URLLoaderRequest loader_request, @@ -200,7 +200,7 @@ class BraveProxyingURLLoaderFactory void MaybeRemoveProxy(); BraveRequestHandler* const request_handler_; - content::ResourceContext* resource_context_; + content::BrowserContext* browser_context_; const int render_process_id_; const int frame_tree_node_id_; diff --git a/browser/net/brave_proxying_web_socket.cc b/browser/net/brave_proxying_web_socket.cc index 770e930043a..26f02750aaf 100644 --- a/browser/net/brave_proxying_web_socket.cc +++ b/browser/net/brave_proxying_web_socket.cc @@ -13,6 +13,7 @@ #include "base/strings/stringprintf.h" #include "base/task/post_task.h" #include "brave/browser/net/brave_request_handler.h" +#include "brave/common/network_constants.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -20,31 +21,27 @@ #include "content/public/browser/render_process_host.h" BraveProxyingWebSocket::BraveProxyingWebSocket( - BraveRequestHandler* handler, - content::ResourceContext* resource_context, + WebSocketFactory factory, + const network::ResourceRequest& request, + network::mojom::WebSocketHandshakeClientPtr handshake_client, int process_id, - int frame_id, int frame_tree_node_id, - const url::Origin& origin, + content::BrowserContext* browser_context, scoped_refptr request_id_generator, - network::mojom::WebSocketPtr proxied_socket, - network::mojom::WebSocketRequest proxied_request, + BraveRequestHandler* handler, DisconnectCallback on_disconnect) : request_handler_(handler), process_id_(process_id), - frame_id_(frame_id), frame_tree_node_id_(frame_tree_node_id), - origin_(origin), - resource_context_(resource_context), + factory_(std::move(factory)), + browser_context_(browser_context), request_id_generator_(std::move(request_id_generator)), - proxied_socket_(std::move(proxied_socket)), - on_disconnect_(std::move(on_disconnect)) { - binding_as_websocket_.Bind(std::move(proxied_request)); - - binding_as_websocket_.set_connection_error_handler( - base::BindRepeating(&BraveProxyingWebSocket::OnError, - base::Unretained(this), net::ERR_FAILED)); -} + forwarding_handshake_client_(std::move(handshake_client)), + binding_as_handshake_client_(this), + binding_as_auth_handler_(this), + binding_as_header_client_(this), + request_(request), + on_disconnect_(std::move(on_disconnect)) {} BraveProxyingWebSocket::~BraveProxyingWebSocket() { if (ctx_) { @@ -53,77 +50,50 @@ BraveProxyingWebSocket::~BraveProxyingWebSocket() { } // static -bool BraveProxyingWebSocket::ProxyWebSocket( +BraveProxyingWebSocket* BraveProxyingWebSocket::ProxyWebSocket( content::RenderFrameHost* frame, - network::mojom::WebSocketRequest* request, - network::mojom::AuthenticationHandlerPtr* auth_handler) { + content::ContentBrowserClient::WebSocketFactory factory, + const GURL& url, + const GURL& site_for_cookies, + const base::Optional& user_agent, + network::mojom::WebSocketHandshakeClientPtr handshake_client) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - network::mojom::WebSocketPtrInfo proxied_socket_ptr_info; - auto proxied_request = std::move(*request); - *request = mojo::MakeRequest(&proxied_socket_ptr_info); - - base::PostTaskWithTraits( - FROM_HERE, {content::BrowserThread::IO}, - base::BindOnce(&ResourceContextData::StartProxyingWebSocket, - frame->GetProcess()->GetBrowserContext() - ->GetResourceContext(), - frame->GetProcess()->GetID(), - frame->GetRoutingID(), - frame->GetFrameTreeNodeId(), - frame->GetLastCommittedOrigin(), - std::move(proxied_socket_ptr_info), - std::move(proxied_request))); - return true; + return ResourceContextData::StartProxyingWebSocket( + std::move(factory), url, site_for_cookies, user_agent, + handshake_client.PassInterface(), + frame->GetProcess()->GetBrowserContext(), + frame->GetProcess()->GetID(), frame->GetRoutingID(), + frame->GetFrameTreeNodeId(), frame->GetLastCommittedOrigin()); } -void BraveProxyingWebSocket::AddChannelRequest( - const GURL& url, - const std::vector& requested_protocols, - const GURL& site_for_cookies, - std::vector additional_headers, - network::mojom::WebSocketClientPtr client) { - if (binding_as_client_.is_bound() || !client || forwarding_client_) { - // Illegal request. - proxied_socket_ = nullptr; - return; - } - - request_.url = url; - // TODO(iefremov): site_for_cookies is not enough, we should find a way - // to initialize NetworkIsolationKey. - request_.site_for_cookies = site_for_cookies; - request_.request_initiator = origin_; - request_.render_frame_id = frame_id_; - websocket_protocols_ = requested_protocols; +void BraveProxyingWebSocket::Start() { request_id_ = request_id_generator_->Generate(); - - forwarding_client_ = std::move(client); - additional_headers_ = std::move(additional_headers); - // If the header client will be used, we start the request immediately, and // OnBeforeSendHeaders and OnSendHeaders will be handled there. Otherwise, // send these events before the request starts. base::RepeatingCallback continuation; - continuation = base::BindRepeating( - &BraveProxyingWebSocket::OnBeforeRequestComplete, - weak_factory_.GetWeakPtr()); + if (proxy_has_extra_headers()) { + continuation = base::BindRepeating( + &BraveProxyingWebSocket::ContinueToStartRequest, + weak_factory_.GetWeakPtr()); + } else { + continuation = base::BindRepeating( + &BraveProxyingWebSocket::OnBeforeRequestComplete, + weak_factory_.GetWeakPtr()); + } - // TODO(yhirano): Consider having throttling here (probably with aligned with - // WebRequestProxyingURLLoaderFactory). - bool should_collapse_initiator = false; ctx_ = std::make_shared(); brave::BraveRequestInfo::FillCTX(request_, process_id_, frame_tree_node_id_, request_id_, - resource_context_, ctx_); + browser_context_, ctx_); int result = request_handler_->OnBeforeURLRequest( ctx_, continuation, &redirect_url_); + // TODO(bridiver) - need to handle general case for redirect_url - // It doesn't make sense to collapse WebSocket requests since they won't be - // associated with a DOM element. - DCHECK(!should_collapse_initiator); - - if (result == net::ERR_BLOCKED_BY_CLIENT) { + if (result == net::ERR_BLOCKED_BY_CLIENT || + // handle adblock kEmptyDataURI + redirect_url_ == kEmptyDataURI) { OnError(result); return; } @@ -136,66 +106,74 @@ void BraveProxyingWebSocket::AddChannelRequest( continuation.Run(net::OK); } -void BraveProxyingWebSocket::SendFrame( - bool fin, - network::mojom::WebSocketMessageType type, - const std::vector& data) { - proxied_socket_->SendFrame(fin, type, data); +content::ContentBrowserClient::WebSocketFactory +BraveProxyingWebSocket::web_socket_factory() { + return base::BindOnce(&BraveProxyingWebSocket::WebSocketFactoryRun, + base::Unretained(this)); } -void BraveProxyingWebSocket::AddReceiveFlowControlQuota(int64_t quota) { - proxied_socket_->AddReceiveFlowControlQuota(quota); +network::mojom::WebSocketHandshakeClientPtrInfo +BraveProxyingWebSocket::handshake_client() { + return forwarding_handshake_client_.PassInterface(); } -void BraveProxyingWebSocket::StartClosingHandshake( - uint16_t code, - const std::string& reason) { - proxied_socket_->StartClosingHandshake(code, reason); +bool BraveProxyingWebSocket::proxy_has_extra_headers() { + return proxy_trusted_header_client_.is_bound(); } -void BraveProxyingWebSocket::OnFailChannel(const std::string& reason) { - DCHECK(forwarding_client_); - forwarding_client_->OnFailChannel(reason); - - forwarding_client_ = nullptr; - int rv = net::ERR_FAILED; - if (reason == "HTTP Authentication failed; no valid credentials available" || - reason == "Proxy authentication failed") { - // This is needed to make some tests pass. - // TODO(yhirano): Remove this hack. - rv = net::ERR_ABORTED; +void BraveProxyingWebSocket::WebSocketFactoryRun(const GURL& url, + std::vector additional_headers, + network::mojom::WebSocketHandshakeClientPtr handshake_client, + network::mojom::AuthenticationHandlerPtr auth_handler, + network::mojom::TrustedHeaderClientPtr trusted_header_client) { + DCHECK(!forwarding_handshake_client_); + proxy_url_ = url; + forwarding_handshake_client_ = std::move(handshake_client); + proxy_auth_handler_ = std::move(auth_handler); + proxy_trusted_header_client_ = std::move(trusted_header_client); + + if (!proxy_has_extra_headers()) { + for (const auto& header : additional_headers) { + request_.headers.SetHeader(header->name, header->value); + } } - OnError(rv); + Start(); } -void BraveProxyingWebSocket::OnStartOpeningHandshake( +void BraveProxyingWebSocket::OnOpeningHandshakeStarted( network::mojom::WebSocketHandshakeRequestPtr request) { - DCHECK(forwarding_client_); - forwarding_client_->OnStartOpeningHandshake(std::move(request)); + DCHECK(forwarding_handshake_client_); + forwarding_handshake_client_->OnOpeningHandshakeStarted(std::move(request)); } -void BraveProxyingWebSocket::OnFinishOpeningHandshake( +void BraveProxyingWebSocket::OnResponseReceived( network::mojom::WebSocketHandshakeResponsePtr response) { - DCHECK(forwarding_client_); - - response_.headers = - base::MakeRefCounted(base::StringPrintf( - "HTTP/%d.%d %d %s", response->http_version.major_value(), - response->http_version.minor_value(), response->status_code, - response->status_text.c_str())); - for (const auto& header : response->headers) - response_.headers->AddHeader(header->name + ": " + header->value); + // response_.headers will be set in OnBeforeSendHeaders if + // proxy_has_extra_headers() is set. + if (!proxy_has_extra_headers()) { + response_.headers = + base::MakeRefCounted(base::StringPrintf( + "HTTP/%d.%d %d %s", response->http_version.major_value(), + response->http_version.minor_value(), response->status_code, + response->status_text.c_str())); + for (const auto& header : response->headers) + response_.headers->AddHeader(header->name + ": " + header->value); + } response_.remote_endpoint = response->remote_endpoint; - // TODO(yhirano): with both network service enabled or disabled, - // OnFinishOpeningHandshake is called with the original response headers. - // That means if OnHeadersReceived modified them the renderer won't see that - // modification. This is the opposite of http(s) requests. - forwarding_client_->OnFinishOpeningHandshake(std::move(response)); + // TODO(yhirano): OnResponseReceived is called with the original + // response headers. That means if OnHeadersReceived modified them the + // renderer won't see that modification. This is the opposite of http(s) + // requests. + forwarding_handshake_client_->OnResponseReceived(std::move(response)); - ContinueToHeadersReceived(); + if (!proxy_has_extra_headers() || response_.headers) { + ContinueToHeadersReceived(); + } else { + waiting_for_header_client_headers_received_ = true; + } } void BraveProxyingWebSocket::ContinueToHeadersReceived() { @@ -205,12 +183,14 @@ void BraveProxyingWebSocket::ContinueToHeadersReceived() { ctx_ = std::make_shared(); brave::BraveRequestInfo::FillCTX(request_, process_id_, frame_tree_node_id_, request_id_, - resource_context_, ctx_); + browser_context_, ctx_); int result = request_handler_->OnHeadersReceived( ctx_, continuation, response_.headers.get(), &override_headers_, &redirect_url_); - if (result == net::ERR_BLOCKED_BY_CLIENT) { + if (result == net::ERR_BLOCKED_BY_CLIENT || + // handle adblock kEmptyDataURI + redirect_url_ == kEmptyDataURI) { OnError(result); return; } @@ -223,59 +203,100 @@ void BraveProxyingWebSocket::ContinueToHeadersReceived() { OnHeadersReceivedComplete(net::OK); } -void BraveProxyingWebSocket::OnAddChannelResponse( +void BraveProxyingWebSocket::OnConnectionEstablished( + network::mojom::WebSocketPtr websocket, const std::string& selected_protocol, - const std::string& extensions) { - DCHECK(forwarding_client_); + const std::string& extensions, + uint64_t receive_quota_threshold) { + DCHECK(forwarding_handshake_client_); DCHECK(!is_done_); - is_done_ = true; + forwarding_handshake_client_->OnConnectionEstablished( + std::move(websocket), selected_protocol, extensions, + receive_quota_threshold); - forwarding_client_->OnAddChannelResponse(selected_protocol, extensions); + OnError(net::ERR_FAILED); } -void BraveProxyingWebSocket::OnDataFrame( - bool fin, - network::mojom::WebSocketMessageType type, - const std::vector& data) { - DCHECK(forwarding_client_); - forwarding_client_->OnDataFrame(fin, type, data); +void BraveProxyingWebSocket::OnAuthRequired( + const net::AuthChallengeInfo& auth_info, + const scoped_refptr& headers, + const net::IPEndPoint& remote_endpoint, + OnAuthRequiredCallback callback) { + proxy_auth_handler_->OnAuthRequired( + auth_info, headers, remote_endpoint, std::move(callback)); } -void BraveProxyingWebSocket::OnFlowControl(int64_t quota) { - DCHECK(forwarding_client_); - forwarding_client_->OnFlowControl(quota); -} +void BraveProxyingWebSocket::OnBeforeSendHeaders( + const net::HttpRequestHeaders& headers, + OnBeforeSendHeadersCallback callback) { + DCHECK(proxy_has_extra_headers()); -void BraveProxyingWebSocket::OnDropChannel(bool was_clean, - uint16_t code, - const std::string& reason) { - DCHECK(forwarding_client_); - forwarding_client_->OnDropChannel(was_clean, code, reason); - forwarding_client_ = nullptr; - OnError(net::ERR_FAILED); + request_.headers = headers; + on_before_send_headers_callback_ = std::move(callback); + OnBeforeRequestComplete(net::OK); } -void BraveProxyingWebSocket::OnClosingHandshake() { - DCHECK(forwarding_client_); - forwarding_client_->OnClosingHandshake(); +void BraveProxyingWebSocket::OnHeadersReceived( + const std::string& headers, + OnHeadersReceivedCallback callback) { + DCHECK(proxy_has_extra_headers()); + + // Note: since there are different pipes used for WebSocketClient and + // TrustedHeaderClient, there are no guarantees whether this or + // OnResponseReceived are called first. + on_headers_received_callback_ = std::move(callback); + response_.headers = base::MakeRefCounted(headers); + + if (!waiting_for_header_client_headers_received_) + return; + + waiting_for_header_client_headers_received_ = false; + ContinueToHeadersReceived(); } void BraveProxyingWebSocket::OnBeforeRequestComplete(int error_code) { - DCHECK(!binding_as_client_.is_bound()); + DCHECK(proxy_has_extra_headers() || !binding_as_handshake_client_.is_bound()); DCHECK(request_.url.SchemeIsWSOrWSS()); if (error_code != net::OK) { OnError(error_code); return; } + if (proxy_has_extra_headers()) { + proxy_trusted_header_client_->OnBeforeSendHeaders( + request_.headers, + base::BindOnce( + &BraveProxyingWebSocket::OnBeforeSendHeadersCompleteFromProxy, + weak_factory_.GetWeakPtr())); + } else { + OnBeforeSendHeadersCompleteFromProxy( + net::OK, request_.headers); + } +} + +void BraveProxyingWebSocket::OnBeforeSendHeadersCompleteFromProxy( + int error_code, + const base::Optional& headers) { + DCHECK(proxy_has_extra_headers() || !binding_as_handshake_client_.is_bound()); + if (error_code != net::OK) { + OnError(error_code); + return; + } + + // update the headers from the proxy + if (headers) + request_.headers = *headers; + else + request_.headers.Clear(); + auto continuation = base::BindRepeating( - &BraveProxyingWebSocket::ContinueToStartRequest, + &BraveProxyingWebSocket::OnBeforeSendHeadersComplete, weak_factory_.GetWeakPtr()); ctx_ = std::make_shared(); brave::BraveRequestInfo::FillCTX(request_, process_id_, frame_tree_node_id_, request_id_, - resource_context_, ctx_); + browser_context_, ctx_); int result = request_handler_->OnBeforeStartTransaction( ctx_, continuation, &request_.headers); @@ -288,46 +309,62 @@ void BraveProxyingWebSocket::OnBeforeRequestComplete(int error_code) { return; DCHECK_EQ(net::OK, result); - ContinueToStartRequest(net::OK); + continuation.Run(net::OK); } -void BraveProxyingWebSocket::ContinueToStartRequest(int error_code) { - DCHECK(!binding_as_client_.is_bound()); +void BraveProxyingWebSocket::OnBeforeSendHeadersComplete(int error_code) { + DCHECK(proxy_has_extra_headers() || !binding_as_handshake_client_.is_bound()); + if (error_code != net::OK) { OnError(error_code); return; } - network::mojom::WebSocketClientPtr proxy; + if (on_before_send_headers_callback_) + std::move(on_before_send_headers_callback_).Run( + error_code, base::Optional(request_.headers)); + + if (!proxy_has_extra_headers()) + ContinueToStartRequest(error_code); +} - base::flat_set used_header_names; +void BraveProxyingWebSocket::ContinueToStartRequest(int error_code) { std::vector additional_headers; - for (net::HttpRequestHeaders::Iterator it(request_.headers); it.GetNext();) { - additional_headers.push_back( - network::mojom::HttpHeader::New(it.name(), it.value())); - used_header_names.insert(base::ToLowerASCII(it.name())); - } - for (const auto& header : additional_headers_) { - if (!used_header_names.contains(base::ToLowerASCII(header->name))) { + if (!proxy_has_extra_headers()) { + for (net::HttpRequestHeaders::Iterator it(request_.headers); + it.GetNext();) { additional_headers.push_back( - network::mojom::HttpHeader::New(header->name, header->value)); + network::mojom::HttpHeader::New(it.name(), it.value())); } } - binding_as_client_.Bind(mojo::MakeRequest(&proxy)); - binding_as_client_.set_connection_error_handler( - base::BindOnce(&BraveProxyingWebSocket::OnError, - base::Unretained(this), net::ERR_FAILED)); - proxied_socket_->AddChannelRequest( - request_.url, websocket_protocols_, request_.site_for_cookies, - std::move(additional_headers), std::move(proxy)); + network::mojom::WebSocketHandshakeClientPtr handshake_client; + binding_as_handshake_client_.Bind(mojo::MakeRequest(&handshake_client)); + binding_as_handshake_client_.set_connection_error_with_reason_handler( + base::BindOnce(&BraveProxyingWebSocket::OnMojoConnectionError, + base::Unretained(this))); + + network::mojom::AuthenticationHandlerPtr auth_handler; + if (proxy_auth_handler_.is_bound()) + binding_as_auth_handler_.Bind(mojo::MakeRequest(&auth_handler)); + + network::mojom::TrustedHeaderClientPtr trusted_header_client; + if (proxy_has_extra_headers()) + binding_as_header_client_.Bind(mojo::MakeRequest(&trusted_header_client)); + + std::move(factory_).Run(request_.url, + std::move(additional_headers), + std::move(handshake_client), + std::move(auth_handler), + std::move(trusted_header_client)); } -void BraveProxyingWebSocket::OnHeadersReceivedComplete(int error_code) { - if (error_code != net::OK) { - OnError(error_code); - return; - } +void BraveProxyingWebSocket::OnHeadersReceivedCompleteFromProxy( + int error_code, + const base::Optional& headers, + const GURL& url) { + if (on_headers_received_callback_) + std::move(on_headers_received_callback_).Run(net::OK, headers, GURL()); if (override_headers_) { response_.headers = override_headers_; @@ -337,21 +374,54 @@ void BraveProxyingWebSocket::OnHeadersReceivedComplete(int error_code) { ResumeIncomingMethodCallProcessing(); } +void BraveProxyingWebSocket::OnHeadersReceivedComplete(int error_code) { + if (error_code != net::OK) { + OnError(error_code); + return; + } + + std::string headers; + if (override_headers_) + headers = override_headers_->raw_headers(); + + if (proxy_has_extra_headers()) { + proxy_trusted_header_client_->OnHeadersReceived( + headers, + base::BindOnce( + &BraveProxyingWebSocket::OnHeadersReceivedCompleteFromProxy, + weak_factory_.GetWeakPtr())); + } else { + OnHeadersReceivedCompleteFromProxy( + error_code, base::Optional(headers), GURL()); + } +} + void BraveProxyingWebSocket::PauseIncomingMethodCallProcessing() { - binding_as_client_.PauseIncomingMethodCallProcessing(); + binding_as_handshake_client_.PauseIncomingMethodCallProcessing(); + if (proxy_has_extra_headers()) + binding_as_header_client_.PauseIncomingMethodCallProcessing(); } void BraveProxyingWebSocket::ResumeIncomingMethodCallProcessing() { - binding_as_client_.ResumeIncomingMethodCallProcessing(); + binding_as_handshake_client_.ResumeIncomingMethodCallProcessing(); + if (proxy_has_extra_headers()) + binding_as_header_client_.ResumeIncomingMethodCallProcessing(); } void BraveProxyingWebSocket::OnError(int error_code) { if (!is_done_) { is_done_ = true; } - if (forwarding_client_) - forwarding_client_->OnFailChannel(net::ErrorToString(error_code)); // Deletes |this|. std::move(on_disconnect_).Run(this); } + +// ResetWithReason +void BraveProxyingWebSocket::OnMojoConnectionError( + uint32_t custom_reason, + const std::string& description) { + forwarding_handshake_client_.ResetWithReason(custom_reason, description); + OnError(net::ERR_FAILED); + // Deletes |this|. +} diff --git a/browser/net/brave_proxying_web_socket.h b/browser/net/brave_proxying_web_socket.h index faf02db8526..d81125a474a 100644 --- a/browser/net/brave_proxying_web_socket.h +++ b/browser/net/brave_proxying_web_socket.h @@ -17,6 +17,7 @@ #include "base/optional.h" #include "brave/browser/net/resource_context_data.h" #include "brave/browser/net/url_context.h" +#include "content/public/browser/content_browser_client.h" #include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/binding_set.h" #include "services/network/public/cpp/resource_request.h" @@ -29,75 +30,92 @@ namespace content { class BrowserContext; class RenderFrameHost; -class ResourceContext; } // Ensures that all web socket requests go through Brave network request // handling framework. Cargoculted from |WebRequestProxyingWebSocket|. -class BraveProxyingWebSocket - : public network::mojom::WebSocket, - public network::mojom::WebSocketClient { +class BraveProxyingWebSocket : public network::mojom::WebSocketHandshakeClient, + public network::mojom::AuthenticationHandler, + public network::mojom::TrustedHeaderClient { public: + using WebSocketFactory = content::ContentBrowserClient::WebSocketFactory; using DisconnectCallback = base::OnceCallback; BraveProxyingWebSocket( - BraveRequestHandler* handler, - content::ResourceContext* resource_context, + WebSocketFactory factory, + const network::ResourceRequest& request, + network::mojom::WebSocketHandshakeClientPtr handshake_client, int process_id, - int frame_id, int frame_tree_node_id, - const url::Origin& origin, + content::BrowserContext* browser_context, scoped_refptr request_id_generator, - network::mojom::WebSocketPtr proxied_socket, - network::mojom::WebSocketRequest proxied_request, + BraveRequestHandler* handler, DisconnectCallback on_disconnect); ~BraveProxyingWebSocket() override; - static bool ProxyWebSocket( + static BraveProxyingWebSocket* ProxyWebSocket( content::RenderFrameHost* frame, - network::mojom::WebSocketRequest* request, - network::mojom::AuthenticationHandlerPtr* auth_handler); - - // mojom::WebSocket methods: - void AddChannelRequest( + content::ContentBrowserClient::WebSocketFactory factory, const GURL& url, - const std::vector& requested_protocols, const GURL& site_for_cookies, - std::vector additional_headers, - network::mojom::WebSocketClientPtr client) override; - void SendFrame(bool fin, - network::mojom::WebSocketMessageType type, - const std::vector& data) override; - void AddReceiveFlowControlQuota(int64_t quota) override; - void StartClosingHandshake(uint16_t code, const std::string& reason) override; - - // mojom::WebSocketClient methods: - void OnFailChannel(const std::string& reason) override; - void OnStartOpeningHandshake( + const base::Optional& user_agent, + network::mojom::WebSocketHandshakeClientPtr handshake_client); + + void Start(); + + content::ContentBrowserClient::WebSocketFactory web_socket_factory(); + network::mojom::WebSocketHandshakeClientPtrInfo handshake_client(); + bool proxy_has_extra_headers(); + + // network::mojom::WebSocketHandshakeClient methods: + void OnOpeningHandshakeStarted( network::mojom::WebSocketHandshakeRequestPtr request) override; - void OnFinishOpeningHandshake( + void OnResponseReceived( network::mojom::WebSocketHandshakeResponsePtr response) override; - void OnAddChannelResponse(const std::string& selected_protocol, - const std::string& extensions) override; - void OnDataFrame(bool fin, - network::mojom::WebSocketMessageType type, - const std::vector& data) override; - void OnFlowControl(int64_t quota) override; - void OnDropChannel(bool was_clean, - uint16_t code, - const std::string& reason) override; - void OnClosingHandshake() override; + void OnConnectionEstablished(network::mojom::WebSocketPtr websocket, + const std::string& selected_protocol, + const std::string& extensions, + uint64_t receive_quota_threshold) override; + + // network::mojom::AuthenticationHandler method: + void OnAuthRequired(const net::AuthChallengeInfo& auth_info, + const scoped_refptr& headers, + const net::IPEndPoint& remote_endpoint, + OnAuthRequiredCallback callback) override; + + // network::mojom::TrustedHeaderClient methods: + void OnBeforeSendHeaders(const net::HttpRequestHeaders& headers, + OnBeforeSendHeadersCallback callback) override; + void OnHeadersReceived(const std::string& headers, + OnHeadersReceivedCallback callback) override; private: + void WebSocketFactoryRun( + const GURL& url, + std::vector additional_headers, + network::mojom::WebSocketHandshakeClientPtr handshake_client, + network::mojom::AuthenticationHandlerPtr auth_handler, + network::mojom::TrustedHeaderClientPtr trusted_header_client); + + void OnBeforeSendHeadersComplete(int error_code); void OnBeforeRequestComplete(int error_code); void ContinueToStartRequest(int error_code); void OnHeadersReceivedComplete(int error_code); void ContinueToHeadersReceived(); + void OnBeforeSendHeadersCompleteFromProxy( + int error_code, + const base::Optional& headers); + void OnHeadersReceivedCompleteFromProxy( + int error_code, + const base::Optional& headers, + const GURL& url); void PauseIncomingMethodCallProcessing(); void ResumeIncomingMethodCallProcessing(); void OnError(int result); + void OnMojoConnectionError(uint32_t custom_reason, + const std::string& description); BraveRequestHandler* const request_handler_; // TODO(iefremov): Get rid of shared_ptr, we should clearly own the pointer. @@ -105,26 +123,32 @@ class BraveProxyingWebSocket std::shared_ptr ctx_; const int process_id_; - const int frame_id_; const int frame_tree_node_id_; - const url::Origin origin_; - content::ResourceContext* const resource_context_; + content::ContentBrowserClient::WebSocketFactory factory_; + content::BrowserContext* const browser_context_; scoped_refptr request_id_generator_; - network::mojom::WebSocketPtr proxied_socket_; - network::mojom::WebSocketClientPtr forwarding_client_; - mojo::Binding binding_as_websocket_{this}; - mojo::Binding binding_as_client_{this}; + network::mojom::WebSocketHandshakeClientPtr forwarding_handshake_client_; + mojo::Binding + binding_as_handshake_client_; + mojo::Binding binding_as_auth_handler_; + mojo::Binding binding_as_header_client_; network::ResourceRequest request_; network::ResourceResponseHead response_; scoped_refptr override_headers_; - std::vector websocket_protocols_; - std::vector additional_headers_; GURL redirect_url_; bool is_done_ = false; + bool waiting_for_header_client_headers_received_ = false; uint64_t request_id_ = 0; + // chrome websocket proxy + GURL proxy_url_; + network::mojom::AuthenticationHandlerPtr proxy_auth_handler_; + network::mojom::TrustedHeaderClientPtr proxy_trusted_header_client_; + + OnHeadersReceivedCallback on_headers_received_callback_; + OnBeforeSendHeadersCallback on_before_send_headers_callback_; DisconnectCallback on_disconnect_; base::WeakPtrFactory weak_factory_{this}; diff --git a/browser/net/brave_request_handler.cc b/browser/net/brave_request_handler.cc index b39e096b512..b2358b646e9 100644 --- a/browser/net/brave_request_handler.cc +++ b/browser/net/brave_request_handler.cc @@ -41,19 +41,20 @@ #include "brave/browser/net/brave_translate_redirect_network_delegate_helper.h" #endif -BraveRequestHandler::BraveRequestHandler() { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); +BraveRequestHandler::BraveRequestHandler() + : task_runner_(base::ThreadTaskRunnerHandle::Get()) { SetupCallbacks(); // Initialize the preference change registrar. base::PostTaskWithTraits( FROM_HERE, {content::BrowserThread::UI}, base::Bind(&BraveRequestHandler::InitPrefChangeRegistrarOnUI, - base::Unretained(this))); + weak_factory_.GetWeakPtr())); } BraveRequestHandler::~BraveRequestHandler() = default; void BraveRequestHandler::SetupCallbacks() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); brave::OnBeforeURLRequestCallback callback = base::Bind(brave::OnBeforeURLRequest_SiteHacksWork); before_url_request_callbacks_.push_back(callback); @@ -104,7 +105,7 @@ void BraveRequestHandler::InitPrefChangeRegistrarOnUI() { pref_change_registrar_->Add( kReferralHeaders, base::Bind(&BraveRequestHandler::OnReferralHeadersChanged, - base::Unretained(this))); + weak_factory_ui_.GetWeakPtr())); // Retrieve current referral headers, if any. OnReferralHeadersChanged(); #endif @@ -114,36 +115,34 @@ void BraveRequestHandler::OnReferralHeadersChanged() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (const base::ListValue* referral_headers = g_browser_process->local_state()->GetList(kReferralHeaders)) { - base::PostTaskWithTraits( - FROM_HERE, {content::BrowserThread::IO}, + task_runner_->PostTask(FROM_HERE, base::Bind(&BraveRequestHandler::SetReferralHeaders, - base::Unretained(this), referral_headers->DeepCopy())); + weak_factory_ui_.GetWeakPtr(), + referral_headers->DeepCopy())); } } void BraveRequestHandler::SetReferralHeaders( base::ListValue* referral_headers) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); referral_headers_list_.reset(referral_headers); } -bool BraveRequestHandler::IsRequestIdentifierValid( - uint64_t request_identifier) { - return ContainsKey(callbacks_, request_identifier); - return true; -} - int BraveRequestHandler::OnBeforeURLRequest( std::shared_ptr ctx, net::CompletionOnceCallback callback, GURL* new_url) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (before_url_request_callbacks_.empty()) { return net::OK; } ctx->new_url = new_url; ctx->event_type = brave::kOnBeforeRequest; callbacks_[ctx->request_identifier] = std::move(callback); - RunNextCallback(ctx); + base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::IO}, + base::Bind(&BraveRequestHandler::RunNextCallback, + weak_factory_.GetWeakPtr(), + ctx)); return net::ERR_IO_PENDING; } @@ -151,6 +150,7 @@ int BraveRequestHandler::OnBeforeStartTransaction( std::shared_ptr ctx, net::CompletionOnceCallback callback, net::HttpRequestHeaders* headers) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (before_start_transaction_callbacks_.empty()) { return net::OK; } @@ -158,7 +158,10 @@ int BraveRequestHandler::OnBeforeStartTransaction( ctx->headers = headers; ctx->referral_headers_list = referral_headers_list_.get(); callbacks_[ctx->request_identifier] = std::move(callback); - RunNextCallback(ctx); + base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::IO}, + base::Bind(&BraveRequestHandler::RunNextCallback, + weak_factory_.GetWeakPtr(), + ctx)); return net::ERR_IO_PENDING; } @@ -168,6 +171,7 @@ int BraveRequestHandler::OnHeadersReceived( const net::HttpResponseHeaders* original_response_headers, scoped_refptr* override_response_headers, GURL* allowed_unsafe_redirect_url) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!ctx->tab_origin.is_empty()) { brave::RemoveTrackableSecurityHeadersForThirdParty( ctx->request_url, url::Origin::Create(ctx->tab_origin), @@ -193,7 +197,8 @@ int BraveRequestHandler::OnHeadersReceived( void BraveRequestHandler::OnURLRequestDestroyed( std::shared_ptr ctx) { - if (ContainsKey(callbacks_, ctx->request_identifier)) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (base::Contains(callbacks_, ctx->request_identifier)) { callbacks_.erase(ctx->request_identifier); } } @@ -201,12 +206,24 @@ void BraveRequestHandler::OnURLRequestDestroyed( void BraveRequestHandler::RunCallbackForRequestIdentifier( uint64_t request_identifier, int rv) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + task_runner_->PostTask(FROM_HERE, base::BindOnce( + &BraveRequestHandler::RunCallbackForRequestIdentifierInTaskRunner, + weak_factory_io_.GetWeakPtr(), request_identifier, rv)); +} + +void BraveRequestHandler::RunCallbackForRequestIdentifierInTaskRunner( + uint64_t request_identifier, + int rv) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (!base::Contains(callbacks_, request_identifier)) + return; + std::map::iterator it = callbacks_.find(request_identifier); // We intentionally do the async call to maintain the proper flow // of URLLoader callbacks. - base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::IO}, - base::BindOnce(std::move(it->second), rv)); + task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(it->second), rv)); } // TODO(iefremov): Merge all callback containers into one and run only one loop @@ -215,10 +232,6 @@ void BraveRequestHandler::RunNextCallback( std::shared_ptr ctx) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); - if (!ContainsKey(callbacks_, ctx->request_identifier)) { - return; - } - // Continue processing callbacks until we hit one that returns PENDING int rv = net::OK; @@ -228,7 +241,9 @@ void BraveRequestHandler::RunNextCallback( brave::OnBeforeURLRequestCallback callback = before_url_request_callbacks_[ctx->next_url_request_index++]; brave::ResponseCallback next_callback = base::Bind( - &BraveRequestHandler::RunNextCallback, base::Unretained(this), ctx); + &BraveRequestHandler::RunNextCallback, + weak_factory_.GetWeakPtr(), + ctx); rv = callback.Run(next_callback, ctx); if (rv == net::ERR_IO_PENDING) { return; @@ -243,7 +258,9 @@ void BraveRequestHandler::RunNextCallback( brave::OnBeforeStartTransactionCallback callback = before_start_transaction_callbacks_[ctx->next_url_request_index++]; brave::ResponseCallback next_callback = base::Bind( - &BraveRequestHandler::RunNextCallback, base::Unretained(this), ctx); + &BraveRequestHandler::RunNextCallback, + weak_factory_.GetWeakPtr(), + ctx); rv = callback.Run(ctx->headers, next_callback, ctx); if (rv == net::ERR_IO_PENDING) { return; @@ -257,7 +274,9 @@ void BraveRequestHandler::RunNextCallback( brave::OnHeadersReceivedCallback callback = headers_received_callbacks_[ctx->next_url_request_index++]; brave::ResponseCallback next_callback = base::Bind( - &BraveRequestHandler::RunNextCallback, base::Unretained(this), ctx); + &BraveRequestHandler::RunNextCallback, + weak_factory_.GetWeakPtr(), + ctx); rv = callback.Run(ctx->original_response_headers, ctx->override_response_headers, ctx->allowed_unsafe_redirect_url, next_callback, ctx); @@ -277,8 +296,7 @@ void BraveRequestHandler::RunNextCallback( if (ctx->event_type == brave::kOnBeforeRequest) { if (!ctx->new_url_spec.empty() && - (ctx->new_url_spec != ctx->request_url.spec()) && - IsRequestIdentifierValid(ctx->request_identifier)) { + ctx->new_url_spec != ctx->request_url.spec()) { *ctx->new_url = GURL(ctx->new_url_spec); } if (ctx->blocked_by == brave::kAdBlocked) { diff --git a/browser/net/brave_request_handler.h b/browser/net/brave_request_handler.h index c3a93ec015b..5d3daa52a2b 100644 --- a/browser/net/brave_request_handler.h +++ b/browser/net/brave_request_handler.h @@ -11,6 +11,8 @@ #include #include +#include "base/sequence_checker.h" +#include "base/threading/thread_task_runner_handle.h" #include "brave/browser/net/url_context.h" #include "content/public/browser/browser_thread.h" #include "net/base/completion_once_callback.h" @@ -26,8 +28,6 @@ class BraveRequestHandler { BraveRequestHandler(); ~BraveRequestHandler(); - bool IsRequestIdentifierValid(uint64_t request_identifier); - int OnBeforeURLRequest(std::shared_ptr ctx, net::CompletionOnceCallback callback, GURL* new_url); @@ -46,6 +46,8 @@ class BraveRequestHandler { void RunCallbackForRequestIdentifier(uint64_t request_identifier, int rv); private: + void RunCallbackForRequestIdentifierInTaskRunner(uint64_t request_identifier, + int rv); void SetupCallbacks(); void InitPrefChangeRegistrarOnUI(); void SetReferralHeaders(base::ListValue* referral_headers); @@ -70,6 +72,12 @@ class BraveRequestHandler { std::unique_ptr pref_change_registrar_; + scoped_refptr task_runner_; + + SEQUENCE_CHECKER(sequence_checker_); + + base::WeakPtrFactory weak_factory_io_{this}; + base::WeakPtrFactory weak_factory_ui_{this}; base::WeakPtrFactory weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(BraveRequestHandler); }; diff --git a/browser/net/brave_system_network_delegate.cc b/browser/net/brave_system_network_delegate.cc deleted file mode 100644 index d8027cc55e9..00000000000 --- a/browser/net/brave_system_network_delegate.cc +++ /dev/null @@ -1,23 +0,0 @@ -/* 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 http://mozilla.org/MPL/2.0/. */ - -#include "brave/browser/net/brave_system_network_delegate.h" - -#include "brave/browser/net/brave_common_static_redirect_network_delegate_helper.h" -#include "brave/browser/net/brave_static_redirect_network_delegate_helper.h" - -BraveSystemNetworkDelegate::BraveSystemNetworkDelegate( - extensions::EventRouterForwarder* event_router) : - BraveNetworkDelegateBase(event_router) { - brave::OnBeforeURLRequestCallback callback = - base::Bind( - brave::OnBeforeURLRequest_StaticRedirectWork); - before_url_request_callbacks_.push_back(callback); - callback = base::Bind( - brave::OnBeforeURLRequest_CommonStaticRedirectWork); - before_url_request_callbacks_.push_back(callback); -} - -BraveSystemNetworkDelegate::~BraveSystemNetworkDelegate() { -} diff --git a/browser/net/brave_system_network_delegate.h b/browser/net/brave_system_network_delegate.h deleted file mode 100644 index 8c021f406c5..00000000000 --- a/browser/net/brave_system_network_delegate.h +++ /dev/null @@ -1,18 +0,0 @@ -/* 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 http://mozilla.org/MPL/2.0/. */ - -#ifndef BRAVE_BROWSER_NET_BRAVE_SYSTEM_NETWORK_DELEGATE_H_ -#define BRAVE_BROWSER_NET_BRAVE_SYSTEM_NETWORK_DELEGATE_H_ - -#include "brave/browser/net/brave_network_delegate_base.h" - -class BraveSystemNetworkDelegate : public BraveNetworkDelegateBase { - public: - BraveSystemNetworkDelegate(extensions::EventRouterForwarder* event_router); - ~BraveSystemNetworkDelegate() override; - - DISALLOW_COPY_AND_ASSIGN(BraveSystemNetworkDelegate); -}; - -#endif // BRAVE_BROWSER_NET_BRAVE_SYSTEM_NETWORK_DELEGATE_H_ diff --git a/browser/net/resource_context_data.cc b/browser/net/resource_context_data.cc index 16b577f884f..766a47366fe 100644 --- a/browser/net/resource_context_data.cc +++ b/browser/net/resource_context_data.cc @@ -5,36 +5,39 @@ #include "brave/browser/net/resource_context_data.h" +#include #include #include "brave/browser/net/brave_proxying_url_loader_factory.h" #include "brave/browser/net/brave_proxying_web_socket.h" #include "brave/browser/net/brave_request_handler.h" -#include "content/public/browser/resource_context.h" +#include "content/public/browser/browser_context.h" // User data key for ResourceContextData. const void* const kResourceContextUserDataKey = &kResourceContextUserDataKey; ResourceContextData::ResourceContextData() : request_id_generator_(base::MakeRefCounted()), - weak_factory_(this) {} + weak_factory_(this) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); +} ResourceContextData::~ResourceContextData() = default; // static void ResourceContextData::StartProxying( - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, int render_process_id, int frame_tree_node_id, network::mojom::URLLoaderFactoryRequest request, network::mojom::URLLoaderFactoryPtrInfo target_factory) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); auto* self = static_cast( - resource_context->GetUserData(kResourceContextUserDataKey)); + browser_context->GetUserData(kResourceContextUserDataKey)); if (!self) { self = new ResourceContextData(); - resource_context->SetUserData(kResourceContextUserDataKey, + browser_context->SetUserData(kResourceContextUserDataKey, base::WrapUnique(self)); } @@ -43,7 +46,7 @@ void ResourceContextData::StartProxying( } auto proxy = std::make_unique( - self->request_handler_.get(), resource_context, render_process_id, + self->request_handler_.get(), browser_context, render_process_id, frame_tree_node_id, std::move(request), std::move(target_factory), self->request_id_generator_, base::BindOnce(&ResourceContextData::RemoveProxy, @@ -53,21 +56,24 @@ void ResourceContextData::StartProxying( } // static -void ResourceContextData::StartProxyingWebSocket( - content::ResourceContext* resource_context, +BraveProxyingWebSocket* ResourceContextData::StartProxyingWebSocket( + content::ContentBrowserClient::WebSocketFactory factory, + const GURL& url, + const GURL& site_for_cookies, + const base::Optional& user_agent, + network::mojom::WebSocketHandshakeClientPtrInfo handshake_client, + content::BrowserContext* browser_context, int render_process_id, int frame_id, int frame_tree_node_id, - const url::Origin& origin, - network::mojom::WebSocketPtrInfo proxied_socket_ptr_info, - network::mojom::WebSocketRequest proxied_request) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + const url::Origin& origin) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); auto* self = static_cast( - resource_context->GetUserData(kResourceContextUserDataKey)); + browser_context->GetUserData(kResourceContextUserDataKey)); if (!self) { self = new ResourceContextData(); - resource_context->SetUserData(kResourceContextUserDataKey, + browser_context->SetUserData(kResourceContextUserDataKey, base::WrapUnique(self)); } @@ -75,16 +81,28 @@ void ResourceContextData::StartProxyingWebSocket( self->request_handler_.reset(new BraveRequestHandler); } + network::ResourceRequest request; + request.url = url; + // TODO(iefremov): site_for_cookies is not enough, we should find a way + // to initialize NetworkIsolationKey. + request.site_for_cookies = site_for_cookies; + if (user_agent) { + request.headers.SetHeader(net::HttpRequestHeaders::kUserAgent, *user_agent); + } + request.request_initiator = origin; + request.render_frame_id = frame_id; + auto proxy = std::make_unique( - self->request_handler_.get(), resource_context, render_process_id, - frame_id, frame_tree_node_id, origin, - self->request_id_generator_, - network::mojom::WebSocketPtr(std::move(proxied_socket_ptr_info)), - std::move(proxied_request), + std::move(factory), request, + network::mojom::WebSocketHandshakeClientPtr(std::move(handshake_client)), + render_process_id, frame_tree_node_id, browser_context, + self->request_id_generator_, self->request_handler_.get(), base::BindOnce(&ResourceContextData::RemoveProxyWebSocket, - self->weak_factory_.GetWeakPtr())); + self->weak_factory_.GetWeakPtr())); + auto* raw_proxy = proxy.get(); self->websocket_proxies_.emplace(std::move(proxy)); + return raw_proxy; } diff --git a/browser/net/resource_context_data.h b/browser/net/resource_context_data.h index 8028a74e25b..a478f4b56c8 100644 --- a/browser/net/resource_context_data.h +++ b/browser/net/resource_context_data.h @@ -9,12 +9,14 @@ #include #include #include +#include #include "base/containers/unique_ptr_adapters.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/supports_user_data.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/content_browser_client.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" #include "services/network/public/mojom/websocket.mojom.h" @@ -23,7 +25,7 @@ class BraveProxyingWebSocket; class BraveRequestHandler; namespace content { -class ResourceContext; +class BrowserContext; } // Used for both URLLoaders and WebSocket proxies. @@ -32,7 +34,7 @@ class RequestIDGenerator public: RequestIDGenerator() = default; int64_t Generate() { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); return ++id_; } @@ -54,20 +56,23 @@ class ResourceContextData : public base::SupportsUserData::Data { ~ResourceContextData() override; static void StartProxying( - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, int render_process_id, int frame_tree_node_id, network::mojom::URLLoaderFactoryRequest request, network::mojom::URLLoaderFactoryPtrInfo target_factory); - static void StartProxyingWebSocket( - content::ResourceContext* resource_context, + static BraveProxyingWebSocket* StartProxyingWebSocket( + content::ContentBrowserClient::WebSocketFactory factory, + const GURL& url, + const GURL& site_for_cookies, + const base::Optional& user_agent, + network::mojom::WebSocketHandshakeClientPtrInfo handshake_client, + content::BrowserContext* browser_context, int render_process_id, int frame_id, int frame_tree_node_id, - const url::Origin& origin, - network::mojom::WebSocketPtrInfo proxied_socket_ptr_info, - network::mojom::WebSocketRequest proxied_request); + const url::Origin& origin); void RemoveProxy(BraveProxyingURLLoaderFactory* proxy); void RemoveProxyWebSocket(BraveProxyingWebSocket* proxy); diff --git a/browser/net/url_context.cc b/browser/net/url_context.cc index f9a98dd0c17..926f80b6bdd 100644 --- a/browser/net/url_context.cc +++ b/browser/net/url_context.cc @@ -16,6 +16,7 @@ #include "brave/components/brave_shields/browser/brave_shields_web_contents_observer.h" #include "brave/components/brave_shields/common/brave_shield_constants.h" #include "brave/components/brave_webtorrent/browser/buildflags/buildflags.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_io_data.h" #include "chrome/browser/profiles/profile_manager.h" #include "components/prefs/testing_pref_service.h" @@ -24,6 +25,7 @@ #include "net/base/upload_data_stream.h" #if BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) +#include "extensions/browser/extension_registry.h" #include "extensions/browser/info_map.h" #endif @@ -31,8 +33,27 @@ namespace brave { namespace { +bool IsWebTorrentDisabled(content::BrowserContext* browser_context) { +#if BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + DCHECK(browser_context); + auto* extension_registry = + extensions::ExtensionRegistry::Get(browser_context); + + if (!extension_registry) + return true; + + if (extension_registry->enabled_extensions().Contains( + brave_webtorrent_extension_id)) + return false; +#endif // BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) + + return true; +} + bool IsWebTorrentDisabled(content::ResourceContext* resource_context) { #if BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK(resource_context); const ProfileIOData* io_data = @@ -101,6 +122,7 @@ BraveRequestInfo::~BraveRequestInfo() = default; void BraveRequestInfo::FillCTXFromRequest(const net::URLRequest* request, std::shared_ptr ctx) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); ctx->request_identifier = request->identifier(); ctx->request_url = request->url(); if (request->initiator().has_value()) { @@ -160,8 +182,9 @@ void BraveRequestInfo::FillCTX( int render_process_id, int frame_tree_node_id, uint64_t request_identifier, - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, std::shared_ptr ctx) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); ctx->request_identifier = request_identifier; ctx->request_url = request.url; // TODO(iefremov): Replace GURL with Origin @@ -174,7 +197,7 @@ void BraveRequestInfo::FillCTX( ctx->resource_type = static_cast(request.resource_type); - ctx->is_webtorrent_disabled = IsWebTorrentDisabled(resource_context); + ctx->is_webtorrent_disabled = IsWebTorrentDisabled(browser_context); ctx->render_frame_id = request.render_frame_id; ctx->render_process_id = render_process_id; @@ -184,7 +207,17 @@ void BraveRequestInfo::FillCTX( // ctx->tab_url = request.top_frame_origin; // TODO(iefremov): Replace with NetworkIsolationKey when it is available // in ResourceRequest - ctx->tab_origin = request.top_frame_origin.value_or(url::Origin()).GetURL(); + // TODO(iefremov): c77 - navigation doesn't populate top_frame_origin any more + // and uses NetworkIsolationKey instead. According to + // services/network/public/mojom/url_loader.mojom, this field "will most + // likely be removed at some point". + if (base::nullopt != request.top_frame_origin) { + ctx->tab_origin = request.top_frame_origin->GetURL(); + } else { + ctx->tab_origin = request.trusted_network_isolation_key.GetTopFrameOrigin() + .value_or(url::Origin()) + .GetURL(); + } // TODO(iefremov): We still need this for WebSockets, currently // |AddChannelRequest| provides only old-fashioned |site_for_cookies|. // (See |BraveProxyingWebSocket|). @@ -195,24 +228,16 @@ void BraveRequestInfo::FillCTX( ctx->frame_tree_node_id).GetOrigin(); } - ProfileIOData* io_data = - ProfileIOData::FromResourceContext(resource_context); - - ctx->allow_brave_shields = brave_shields::IsAllowContentSettingWithIOData( - io_data, ctx->tab_origin, ctx->tab_origin, CONTENT_SETTINGS_TYPE_PLUGINS, - brave_shields::kBraveShields) && - !ctx->tab_origin.SchemeIs(kChromeExtensionScheme); - ctx->allow_ads = brave_shields::IsAllowContentSettingWithIOData( - io_data, ctx->tab_origin, ctx->tab_origin, CONTENT_SETTINGS_TYPE_PLUGINS, - brave_shields::kAds); + Profile* profile = Profile::FromBrowserContext(browser_context); + ctx->allow_brave_shields = + brave_shields::GetBraveShieldsEnabled(profile, ctx->tab_origin); + ctx->allow_ads = + brave_shields::GetAdControlType(profile, ctx->tab_origin) == + brave_shields::ControlType::ALLOW; ctx->allow_http_upgradable_resource = - brave_shields::IsAllowContentSettingWithIOData(io_data, ctx->tab_origin, - ctx->tab_origin, CONTENT_SETTINGS_TYPE_PLUGINS, - brave_shields::kHTTPUpgradableResources); - ctx->allow_referrers = brave_shields::IsAllowContentSettingWithIOData( - io_data, ctx->tab_origin, ctx->tab_origin, CONTENT_SETTINGS_TYPE_PLUGINS, - brave_shields::kReferrers); - + !brave_shields::GetHTTPSEverywhereEnabled(profile, ctx->tab_origin); + ctx->allow_referrers = + brave_shields::AllowReferrers(profile, ctx->tab_origin); ctx->upload_data = GetUploadData(request); } diff --git a/browser/net/url_context.h b/browser/net/url_context.h index 265af128d7d..3a39bd09d67 100644 --- a/browser/net/url_context.h +++ b/browser/net/url_context.h @@ -16,13 +16,12 @@ #include "url/gurl.h" namespace content { -class ResourceContext; +class BrowserContext; } namespace network { struct ResourceRequest; } -class BraveNetworkDelegateBase; class BraveRequestHandler; namespace brave { @@ -110,13 +109,12 @@ struct BraveRequestInfo { int render_process_id, int frame_tree_node_id, uint64_t request_identifier, - content::ResourceContext* resource_context, + content::BrowserContext* browser_context, std::shared_ptr ctx); private: // Please don't add any more friends here if it can be avoided. - // We should also remove the ones below. - friend class ::BraveNetworkDelegateBase; + // We should also remove the one below. friend class ::BraveRequestHandler; GURL* new_url = nullptr; diff --git a/browser/profiles/brave_profile_manager.cc b/browser/profiles/brave_profile_manager.cc index 84be7452e3b..7c692e81aa2 100644 --- a/browser/profiles/brave_profile_manager.cc +++ b/browser/profiles/brave_profile_manager.cc @@ -34,7 +34,7 @@ #include "components/bookmarks/common/bookmark_pref_names.h" #include "components/prefs/pref_service.h" #include "components/safe_browsing/common/safe_browsing_prefs.h" -#include "components/signin/core/browser/signin_pref_names.h" +#include "components/signin/public/base/signin_pref_names.h" #include "components/translate/core/browser/translate_pref_names.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/url_data_source.h" diff --git a/browser/profiles/tor_unittest_profile_manager.cc b/browser/profiles/tor_unittest_profile_manager.cc index e9405cfb234..037312d6c59 100644 --- a/browser/profiles/tor_unittest_profile_manager.cc +++ b/browser/profiles/tor_unittest_profile_manager.cc @@ -24,11 +24,12 @@ Profile* TorUnittestProfileManager::CreateProfileHelper( if (!base::CreateDirectory(path)) return nullptr; } - return CreateProfile(path, nullptr); + return CreateProfile(path, nullptr).release(); } -Profile* TorUnittestProfileManager::CreateProfileAsyncHelper( - const base::FilePath& path, Delegate* delegate) { +std::unique_ptr TorUnittestProfileManager::CreateProfileAsyncHelper( + const base::FilePath& path, + Delegate* delegate) { // ThreadTaskRunnerHandle::Get() is TestingProfile's "async" IOTaskRunner // (ref. TestingProfile::GetIOTaskRunner()). base::ThreadTaskRunnerHandle::Get()->PostTask( @@ -46,7 +47,7 @@ void TorUnittestProfileManager::InitProfileUserPrefs(Profile* profile) { } } -Profile* TorUnittestProfileManager::CreateProfile( +std::unique_ptr TorUnittestProfileManager::CreateProfile( const base::FilePath& path, Delegate* delegate) { TestingProfile::Builder profile_builder; sync_preferences::PrefServiceMockFactory factory; @@ -58,6 +59,5 @@ Profile* TorUnittestProfileManager::CreateProfile( profile_builder.SetPrefService(std::move(prefs)); profile_builder.SetPath(path); profile_builder.SetDelegate(delegate); - std::unique_ptr profile = profile_builder.Build(); - return profile.release(); + return profile_builder.Build(); } diff --git a/browser/profiles/tor_unittest_profile_manager.h b/browser/profiles/tor_unittest_profile_manager.h index dfe3a1792af..bd13a8500e1 100644 --- a/browser/profiles/tor_unittest_profile_manager.h +++ b/browser/profiles/tor_unittest_profile_manager.h @@ -6,6 +6,8 @@ #ifndef BRAVE_BROWSER_PROFILES_TOR_UNITTEST_PROFILE_MANAGER_H_ #define BRAVE_BROWSER_PROFILES_TOR_UNITTEST_PROFILE_MANAGER_H_ +#include + #include "chrome/browser/profiles/profile_manager.h" class TorUnittestProfileManager : public ProfileManagerWithoutInit { @@ -17,13 +19,15 @@ class TorUnittestProfileManager : public ProfileManagerWithoutInit { protected: Profile* CreateProfileHelper(const base::FilePath& path) override; - Profile* CreateProfileAsyncHelper(const base::FilePath& path, - Delegate* delegate) override; + std::unique_ptr CreateProfileAsyncHelper( + const base::FilePath& path, + Delegate* delegate) override; void InitProfileUserPrefs(Profile* profile) override; private: - Profile* CreateProfile(const base::FilePath& path, Delegate* delegate); + std::unique_ptr CreateProfile(const base::FilePath& path, + Delegate* delegate); }; #endif // BRAVE_BROWSER_PROFILES_TOR_UNITTEST_PROFILE_MANAGER_H_ diff --git a/browser/renderer_context_menu/brave_mock_render_view_context_menu.cc b/browser/renderer_context_menu/brave_mock_render_view_context_menu.cc index fdc9b237213..12c25aeb942 100644 --- a/browser/renderer_context_menu/brave_mock_render_view_context_menu.cc +++ b/browser/renderer_context_menu/brave_mock_render_view_context_menu.cc @@ -7,6 +7,7 @@ #include +#include "base/strings/string_number_conversions.h" #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/renderer_context_menu/render_view_context_menu.h" @@ -95,6 +96,13 @@ void BraveMockRenderViewContextMenu::AddMenuItem(int command_id, items_.push_back(item); } +void BraveMockRenderViewContextMenu::AddMenuItemWithIcon( + int command_id, + const base::string16& title, + const gfx::ImageSkia& image) { + AddMenuItem(command_id, title); +} + void BraveMockRenderViewContextMenu::AddCheckItem(int command_id, const base::string16& title) { MockMenuItem item; @@ -147,6 +155,14 @@ void BraveMockRenderViewContextMenu::AddSubMenu(int command_id, } } +void BraveMockRenderViewContextMenu::AddSubMenuWithStringIdAndIcon( + int command_id, + int message_id, + ui::MenuModel* model, + const gfx::ImageSkia& image) { + AddSubMenu(command_id, base::NumberToString16(message_id), model); +} + void BraveMockRenderViewContextMenu::UpdateMenuItem( int command_id, bool enabled, @@ -203,8 +219,7 @@ void BraveMockRenderViewContextMenu::AddSpellCheckServiceItem(bool is_checked) { } void BraveMockRenderViewContextMenu::AddAccessibilityLabelsServiceItem( - bool is_checked) { -} + bool is_checked) {} content::RenderViewHost* BraveMockRenderViewContextMenu::GetRenderViewHost() const { diff --git a/browser/renderer_context_menu/brave_mock_render_view_context_menu.h b/browser/renderer_context_menu/brave_mock_render_view_context_menu.h index bb2035f6fb3..f47f69e76c6 100644 --- a/browser/renderer_context_menu/brave_mock_render_view_context_menu.h +++ b/browser/renderer_context_menu/brave_mock_render_view_context_menu.h @@ -57,11 +57,18 @@ class BraveMockRenderViewContextMenu : public ui::SimpleMenuModel::Delegate, // RenderViewContextMenuProxy implementation. void AddMenuItem(int command_id, const base::string16& title) override; + void AddMenuItemWithIcon(int command_id, + const base::string16& title, + const gfx::ImageSkia& image) override; void AddCheckItem(int command_id, const base::string16& title) override; void AddSeparator() override; void AddSubMenu(int command_id, const base::string16& label, ui::MenuModel* model) override; + void AddSubMenuWithStringIdAndIcon(int command_id, + int message_id, + ui::MenuModel* model, + const gfx::ImageSkia& image) override; void UpdateMenuItem(int command_id, bool enabled, bool hidden, @@ -72,8 +79,8 @@ class BraveMockRenderViewContextMenu : public ui::SimpleMenuModel::Delegate, void AddSpellCheckServiceItem(bool is_checked) override; void AddAccessibilityLabelsServiceItem(bool is_checked) override; content::RenderViewHost* GetRenderViewHost() const override; - content::BrowserContext* GetBrowserContext() const override; content::WebContents* GetWebContents() const override; + content::BrowserContext* GetBrowserContext() const override; // Attaches a RenderViewContextMenuObserver to be tested. void SetObserver(RenderViewContextMenuObserver* observer); diff --git a/browser/resources/settings/brave_appearance_page/brave_appearance_page.html b/browser/resources/settings/brave_appearance_page/brave_appearance_page.html index fa4942d74d2..0b9eac554ee 100644 --- a/browser/resources/settings/brave_appearance_page/brave_appearance_page.html +++ b/browser/resources/settings/brave_appearance_page/brave_appearance_page.html @@ -1,11 +1,10 @@ - + - @@ -96,10 +97,12 @@ padding: 30px !important; } - :host-context([dark]) { - --settings-nav-item-color: #F4F4F4 !important; - border-color: transparent !important; - background-color: #161719; + @media (prefers-color-scheme: dark) { + :host { + --settings-nav-item-color: #F4F4F4 !important; + border-color: transparent !important; + background-color: #161719; + } } a[href] { @@ -124,8 +127,10 @@ height: 20px; } - :host-context([dark]) a[href].iron-selected iron-icon { - color: var(--settings-nav-item-color) !important; + @media (prefers-color-scheme: dark) { + a[href].iron-selected iron-icon { + color: var(--settings-nav-item-color) !important; + } } a[href], diff --git a/browser/resources/settings/brave_settings_overrides.js b/browser/resources/settings/brave_settings_overrides.js index cf7cabe4c46..1b9ca7920bf 100644 --- a/browser/resources/settings/brave_settings_overrides.js +++ b/browser/resources/settings/brave_settings_overrides.js @@ -307,7 +307,7 @@ BravePatching.RegisterPolymerTemplateModifications({ if (!advancedToggleTemplate) { console.error('[Brave Settings Overrides] Could not find advanced toggle template') } - const advancedToggleText = advancedToggleTemplate.content.querySelector('paper-button span') + const advancedToggleText = advancedToggleTemplate.content.querySelector('cr-button span') if (!advancedToggleText) { console.error('[Brave Settings Overrides] Could not find advanced toggle text') } diff --git a/browser/resources/settings/brave_sync_page/brave_sync_page.html b/browser/resources/settings/brave_sync_page/brave_sync_page.html index c9c0c180579..cd55d4fa1be 100644 --- a/browser/resources/settings/brave_sync_page/brave_sync_page.html +++ b/browser/resources/settings/brave_sync_page/brave_sync_page.html @@ -1,7 +1,7 @@ - + diff --git a/browser/resources/settings/default_brave_shields_page/default_brave_shields_page.html b/browser/resources/settings/default_brave_shields_page/default_brave_shields_page.html index 23da2707303..35ce0c6e9b8 100644 --- a/browser/resources/settings/default_brave_shields_page/default_brave_shields_page.html +++ b/browser/resources/settings/default_brave_shields_page/default_brave_shields_page.html @@ -1,7 +1,7 @@ - + @@ -53,7 +53,8 @@
$i18n{defaultView}
- +
@@ -65,7 +66,8 @@
- +
diff --git a/browser/resources/settings/social_blocking_page/social_blocking_page.html b/browser/resources/settings/social_blocking_page/social_blocking_page.html index 7c34a7657ba..d122586ad6b 100644 --- a/browser/resources/settings/social_blocking_page/social_blocking_page.html +++ b/browser/resources/settings/social_blocking_page/social_blocking_page.html @@ -1,7 +1,7 @@ - + diff --git a/browser/themes/BUILD.gn b/browser/themes/BUILD.gn index 0b4289799e2..6034e5ddd3f 100644 --- a/browser/themes/BUILD.gn +++ b/browser/themes/BUILD.gn @@ -7,8 +7,9 @@ source_set("themes") { "brave_theme_service_win.h", "brave_theme_utils.cc", "brave_theme_utils.h", + "brave_theme_utils_internal.cc", + "brave_theme_utils_internal.h", "brave_theme_utils_mac.mm", - "brave_theme_utils_win.cc", "theme_properties.cc", "theme_properties.h", ] diff --git a/browser/themes/brave_theme_service.cc b/browser/themes/brave_theme_service.cc index 96da4412099..cfec15a0665 100644 --- a/browser/themes/brave_theme_service.cc +++ b/browser/themes/brave_theme_service.cc @@ -180,6 +180,11 @@ void BraveThemeService::Init(Profile* profile) { if (brave::IsTorProfile(profile) || brave::IsGuestProfile(profile)) return; +#if defined(OS_WIN) + ui::IgnoreSystemDarkModeChange( + profile->GetPrefs()->GetInteger(kBraveThemeType) != + BraveThemeType::BRAVE_THEME_TYPE_DEFAULT); +#endif // Start with proper system theme to make brave theme and // base ui components theme use same theme. SetSystemTheme(static_cast( @@ -224,6 +229,12 @@ void BraveThemeService::OnPreferenceChanged(const std::string& pref_name) { // Changing theme type means default theme is not overridden anymore. profile()->GetPrefs()->SetBoolean(kUseOverriddenBraveThemeType, false); +#if defined(OS_WIN) + ui::IgnoreSystemDarkModeChange( + profile()->GetPrefs()->GetInteger(kBraveThemeType) != + BraveThemeType::BRAVE_THEME_TYPE_DEFAULT); +#endif + SetSystemTheme(static_cast( profile()->GetPrefs()->GetInteger(kBraveThemeType))); } @@ -266,5 +277,5 @@ bool BraveThemeService::SystemThemeModeEnabled() { switches::kForceDarkMode)) return true; - return SystemThemeSupportDarkMode(); + return ui::NativeTheme::GetInstanceForNativeUi()->SystemDarkModeSupported(); } diff --git a/browser/themes/brave_theme_service_browsertest.cc b/browser/themes/brave_theme_service_browsertest.cc index a7be35e92d6..ea5dab8928b 100644 --- a/browser/themes/brave_theme_service_browsertest.cc +++ b/browser/themes/brave_theme_service_browsertest.cc @@ -18,6 +18,12 @@ #include "ui/native_theme/native_theme_dark_aura.h" #include "ui/native_theme/native_theme_observer.h" +#if defined(OS_WIN) +#include "base/run_loop.h" +#include "base/time/time.h" +#include "base/win/registry.h" +#endif + using BraveThemeServiceTest = InProcessBrowserTest; using BTS = BraveThemeService; @@ -94,9 +100,9 @@ IN_PROC_BROWSER_TEST_F(BraveThemeServiceTestWithoutSystemTheme, tp_private.GetColor(test_theme_property)); } -// Test whether appropriate native theme observer is called when brave theme is -// changed. -IN_PROC_BROWSER_TEST_F(BraveThemeServiceTest, NativeThemeObserverTest) { +// Test whether appropriate native/web theme observer is called when brave theme +// is changed. +IN_PROC_BROWSER_TEST_F(BraveThemeServiceTest, ThemeObserverTest) { Profile* profile = browser()->profile(); // Initially set to light. SetBraveThemeType(profile, BraveThemeType::BRAVE_THEME_TYPE_LIGHT); @@ -107,10 +113,17 @@ IN_PROC_BROWSER_TEST_F(BraveThemeServiceTest, NativeThemeObserverTest) { EXPECT_CALL( native_theme_observer, OnNativeThemeUpdated(ui::NativeTheme::GetInstanceForNativeUi())).Times(2); - ui::NativeTheme::GetInstanceForNativeUi()->AddObserver( &native_theme_observer); + TestNativeThemeObserver web_theme_observer; + EXPECT_CALL( + web_theme_observer, + OnNativeThemeUpdated(ui::NativeTheme::GetInstanceForWeb())).Times(2); + + ui::NativeTheme::GetInstanceForWeb()->AddObserver( + &web_theme_observer); + SetBraveThemeType(profile, BraveThemeType::BRAVE_THEME_TYPE_DARK); SetBraveThemeType(profile, BraveThemeType::BRAVE_THEME_TYPE_LIGHT); } @@ -140,3 +153,60 @@ IN_PROC_BROWSER_TEST_F(BraveThemeServiceTest, SystemThemeChangeTest) { ui::NativeTheme::GetInstanceForNativeUi()->SystemDarkModeEnabled()); } } + +#if defined(OS_WIN) +// Test native theme notification is called properly by changing reg value. +// This simulates dark mode setting from Windows settings. +// And Toggle it twice from initial value to go back to initial value because +// reg value changes system value. Otherwise, dark mode config could be changed +// after running this test. +IN_PROC_BROWSER_TEST_F(BraveThemeServiceTest, DarkModeChangeByRegTest) { + if (!ui::NativeTheme::GetInstanceForNativeUi()->SystemDarkModeSupported()) + return; + + base::win::RegKey hkcu_themes_regkey; + bool key_open_succeeded = hkcu_themes_regkey.Open( + HKEY_CURRENT_USER, + L"Software\\Microsoft\\Windows\\CurrentVersion\\" + L"Themes\\Personalize", + KEY_WRITE) == ERROR_SUCCESS; + DCHECK(key_open_succeeded); + + DWORD apps_use_light_theme = 1; + hkcu_themes_regkey.ReadValueDW(L"AppsUseLightTheme", + &apps_use_light_theme); + const bool initial_dark_mode = apps_use_light_theme == 0; + + // Toggle dark mode and check get notification for default type (same as...). + auto* profile = browser()->profile(); + SetBraveThemeType(profile, BraveThemeType::BRAVE_THEME_TYPE_DEFAULT); + + apps_use_light_theme = !initial_dark_mode ? 0 : 1; + hkcu_themes_regkey.WriteValue(L"AppsUseLightTheme", apps_use_light_theme); + + TestNativeThemeObserver native_theme_observer_for_default; + EXPECT_CALL( + native_theme_observer_for_default, + OnNativeThemeUpdated(ui::NativeTheme::GetInstanceForNativeUi())).Times(1); + ui::NativeTheme::GetInstanceForNativeUi()->AddObserver( + &native_theme_observer_for_default); + + // Toggle dark mode and |native_theme_observer_for_light| will not get + // notification for light type. + SetBraveThemeType(profile, BraveThemeType::BRAVE_THEME_TYPE_LIGHT); + + TestNativeThemeObserver native_theme_observer_for_light; + EXPECT_CALL( + native_theme_observer_for_light, + OnNativeThemeUpdated(ui::NativeTheme::GetInstanceForNativeUi())).Times(0); + ui::NativeTheme::GetInstanceForNativeUi()->AddObserver( + &native_theme_observer_for_light); + + apps_use_light_theme = initial_dark_mode ? 0 : 1; + hkcu_themes_regkey.WriteValue(L"AppsUseLightTheme", apps_use_light_theme); + + // Timeout is used because we can't get notifiication with light theme. + base::RunLoop run_loop; + run_loop.RunWithTimeout(base::TimeDelta::FromMilliseconds(500));; +} +#endif diff --git a/browser/themes/brave_theme_utils.cc b/browser/themes/brave_theme_utils.cc index dd6b57623dc..585e2cf602f 100644 --- a/browser/themes/brave_theme_utils.cc +++ b/browser/themes/brave_theme_utils.cc @@ -5,6 +5,7 @@ #include "brave/browser/themes/brave_theme_utils.h" +#include "brave/browser/themes/brave_theme_utils_internal.h" #include "ui/native_theme/native_theme.h" #if defined(OS_WIN) @@ -12,9 +13,19 @@ #endif namespace ui { -void SetDarkMode(bool dark_mode) { - ui::NativeTheme::GetInstanceForNativeUi()->set_dark_mode(dark_mode); -} // namespace ui +// static +void BraveThemeUtils::SetDarkMode(bool dark_mode) { + NativeTheme::GetInstanceForNativeUi()->set_dark_mode(dark_mode); + NativeTheme::GetInstanceForWeb()->set_dark_mode(dark_mode); +} + +// static +void BraveThemeUtils::ReCalcAndSetPreferredColorScheme() { + auto scheme = + NativeTheme::GetInstanceForNativeUi()->CalculatePreferredColorScheme(); + NativeTheme::GetInstanceForNativeUi()->set_preferred_color_scheme(scheme); + NativeTheme::GetInstanceForWeb()->set_preferred_color_scheme(scheme); +} #if defined(OS_WIN) // This resets dark mode to os theme when user changes brave theme from @@ -33,7 +44,9 @@ void SetSystemTheme(BraveThemeType type) { // Follow os theme type for default type. if (type == BraveThemeType::BRAVE_THEME_TYPE_DEFAULT) { #if defined(OS_WIN) - DCHECK(SystemThemeSupportDarkMode()); + DCHECK( + ui::NativeTheme::GetInstanceForNativeUi()->SystemDarkModeSupported()); + // This sets preferred color scheme on its own. ui::UpdateDarkModeStatus(); return; #else @@ -42,17 +55,6 @@ void SetSystemTheme(BraveThemeType type) { NOTREACHED(); #endif } - - ui::SetDarkMode(type == BraveThemeType::BRAVE_THEME_TYPE_DARK); - // Have to notify to observer explicitly because |ui::SetDarkMode()| just - // set ui::NativeTheme:dark_mode_ value. - ui::NativeTheme::GetInstanceForNativeUi()->NotifyObservers(); -} -#endif - -#if defined(OS_LINUX) -bool SystemThemeSupportDarkMode() { - // Linux doesn't support dark mode yet. - return false; + internal::SetSystemThemeForNonDarkModePlatform(type); } #endif diff --git a/browser/themes/brave_theme_utils.h b/browser/themes/brave_theme_utils.h index ee2ee1e08cb..28f29c82ec8 100644 --- a/browser/themes/brave_theme_utils.h +++ b/browser/themes/brave_theme_utils.h @@ -8,8 +8,6 @@ #include "brave/browser/themes/brave_theme_service.h" -bool SystemThemeSupportDarkMode(); - // When system supports system per-application system theme changing, set it. // Currently, only MacOS support it. // Otherewise, we need to overrides from native theme level and explicitly @@ -18,13 +16,18 @@ bool SystemThemeSupportDarkMode(); void SetSystemTheme(BraveThemeType type); // Inserted in the ui namespace to add into ui::NativeTheme/NativeThemeWin as a -// friend function. This function calls protected/private method of -// ui::NativeTheme::set_dark_mode(). It's a protected method that called by -// platform specific subclasses whenever system os theme is changed. -// But we want to change it for using brave theme also for webui/base ui -// modules like context menu. +// friend class. These methods call protected methods of ui::NativeTheme. They +// are protected methods that called by platform specific subclasses whenever +// system os theme is changed. But we want to change it for using brave theme +// also for webui/base ui modules like context menu. namespace ui { -void SetDarkMode(bool dark_mode); +class BraveThemeUtils { + public: + static void SetDarkMode(bool dark_mode); + // Recalculate preferred color scheme based on current dark mode that set by + // SetDarkMode() and set it to NativeTheme. + static void ReCalcAndSetPreferredColorScheme(); +}; } // namespace ui #endif // BRAVE_BROWSER_THEMES_BRAVE_THEME_UTILS_H_ diff --git a/browser/themes/brave_theme_utils_internal.cc b/browser/themes/brave_theme_utils_internal.cc new file mode 100644 index 00000000000..b9c80fa1c1c --- /dev/null +++ b/browser/themes/brave_theme_utils_internal.cc @@ -0,0 +1,29 @@ +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ + +#include "brave/browser/themes/brave_theme_utils_internal.h" + +#include "brave/browser/themes/brave_theme_utils.h" +#include "ui/native_theme/native_theme.h" + +namespace internal { + +void SetSystemThemeForNonDarkModePlatform(BraveThemeType type) { + // Call SetDarkMode() first then call ReCalcPreferredColorScheme() because + // ReCalcPreferredColorScheme() calculates preferred color scheme based on + // dark mode. + ui::BraveThemeUtils::SetDarkMode(type == + BraveThemeType::BRAVE_THEME_TYPE_DARK); + ui::BraveThemeUtils::ReCalcAndSetPreferredColorScheme(); + // Have to notify observers explicitly because + // |ui::BraveThemeUtils::SetDarkMode()| and + // |ui::BraveThemeUtils::ReCalcPreferredColorScheme| just set + // ui::NativeTheme:dark_mode_ and ui::NativeTheme:preferred_color_scheme_ + // values. + ui::NativeTheme::GetInstanceForNativeUi()->NotifyObservers(); + ui::NativeTheme::GetInstanceForWeb()->NotifyObservers(); +} + +} // namespace internal diff --git a/browser/themes/brave_theme_utils_internal.h b/browser/themes/brave_theme_utils_internal.h new file mode 100644 index 00000000000..4319102f242 --- /dev/null +++ b/browser/themes/brave_theme_utils_internal.h @@ -0,0 +1,18 @@ +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_BROWSER_THEMES_BRAVE_THEME_UTILS_INTERNAL_H_ +#define BRAVE_BROWSER_THEMES_BRAVE_THEME_UTILS_INTERNAL_H_ + +#include "brave/browser/themes/brave_theme_service.h" + +namespace internal { + +// Reset dark mode and preferred color scheme and notify. +void SetSystemThemeForNonDarkModePlatform(BraveThemeType type); + +} // namespace internal + +#endif // BRAVE_BROWSER_THEMES_BRAVE_THEME_UTILS_INTERNAL_H_ diff --git a/browser/themes/brave_theme_utils_mac.mm b/browser/themes/brave_theme_utils_mac.mm index 1f905dcd9a8..82f8f7a96cf 100644 --- a/browser/themes/brave_theme_utils_mac.mm +++ b/browser/themes/brave_theme_utils_mac.mm @@ -8,18 +8,13 @@ #import #include "base/mac/sdk_forward_declarations.h" +#include "brave/browser/themes/brave_theme_utils_internal.h" #include "ui/native_theme/native_theme.h" -bool SystemThemeSupportDarkMode() { - // Dark mode is supported since Mojave. - if (@available(macOS 10.14, *)) - return true; - return false; -} - void SetSystemTheme(BraveThemeType type) { if (type == BRAVE_THEME_TYPE_DEFAULT) { - DCHECK(SystemThemeSupportDarkMode()); + DCHECK( + ui::NativeTheme::GetInstanceForNativeUi()->SystemDarkModeSupported()); [NSApp setAppearance:nil]; return; } @@ -30,7 +25,6 @@ void SetSystemTheme(BraveThemeType type) { : NSAppearanceNameAqua; [NSApp setAppearance:[NSAppearance appearanceNamed:new_appearance_name]]; } else { - ui::SetDarkMode(type == BraveThemeType::BRAVE_THEME_TYPE_DARK); - ui::NativeTheme::GetInstanceForNativeUi()->NotifyObservers(); + internal::SetSystemThemeForNonDarkModePlatform(type); } } diff --git a/browser/themes/brave_theme_utils_win.cc b/browser/themes/brave_theme_utils_win.cc deleted file mode 100644 index 37cda8d51b0..00000000000 --- a/browser/themes/brave_theme_utils_win.cc +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ - -#include "brave/browser/themes/brave_theme_utils.h" - -#include - -#include "base/win/registry.h" - -// Copied from ctor of NativeThemeWin. -bool SystemThemeSupportDarkMode() { - // Dark Mode currently targets UWP apps, which means Win32 apps need to use - // alternate, less reliable means of detecting the state. The following - // can break in future Windows versions. - base::win::RegKey hkcu_themes_regkey; - bool key_open_succeeded = - hkcu_themes_regkey.Open( - HKEY_CURRENT_USER, - L"Software\\Microsoft\\Windows\\CurrentVersion\\" - L"Themes\\Personalize", - KEY_READ | KEY_NOTIFY) == ERROR_SUCCESS; - return key_open_succeeded; -} diff --git a/browser/ui/views/brave_actions/brave_actions_container.cc b/browser/ui/views/brave_actions/brave_actions_container.cc index fdcb6e60957..55fb64b20ed 100644 --- a/browser/ui/views/brave_actions/brave_actions_container.cc +++ b/browser/ui/views/brave_actions/brave_actions_container.cc @@ -67,7 +67,7 @@ BraveActionsContainer::~BraveActionsContainer() { void BraveActionsContainer::Init() { // automatic layout auto vertical_container_layout = std::make_unique( - views::BoxLayout::kHorizontal); + views::BoxLayout::Orientation::kHorizontal); vertical_container_layout->set_main_axis_alignment( views::BoxLayout::MainAxisAlignment::kCenter); vertical_container_layout->set_cross_axis_alignment( diff --git a/browser/ui/views/brave_actions/brave_actions_container.h b/browser/ui/views/brave_actions/brave_actions_container.h index 3e8b8605f8c..ad606ecbcf2 100644 --- a/browser/ui/views/brave_actions/brave_actions_container.h +++ b/browser/ui/views/brave_actions/brave_actions_container.h @@ -15,6 +15,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "components/prefs/pref_member.h" +#include "extensions/browser/extension_registry_observer.h" #include "extensions/common/extension.h" #include "ui/views/view.h" @@ -24,16 +25,15 @@ class BraveRewardsBrowserTest; namespace extensions { class ExtensionActionManager; class ExtensionRegistry; -class ExtensionRegistryObserver; } // This View contains all the built-in BraveActions such as Shields and Payments // TODO(petemill): consider splitting to separate model, like // ToolbarActionsModel and ToolbarActionsBar class BraveActionsContainer : public views::View, - public extensions::ExtensionActionAPI::Observer, - public extensions::ExtensionRegistryObserver, - public ToolbarActionView::Delegate { + public extensions::ExtensionActionAPI::Observer, + public extensions::ExtensionRegistryObserver, + public ToolbarActionView::Delegate { public: BraveActionsContainer(Browser* browser, Profile* profile); ~BraveActionsContainer() override; @@ -135,7 +135,8 @@ class BraveActionsContainer : public views::View, extensions::ExtensionActionManager* extension_action_manager_; // Listen to extension load, unloaded notifications. - ScopedObserver + ScopedObserver extension_registry_observer_; // Listen to when the action is updated diff --git a/browser/ui/views/translate/brave_translate_bubble_view.cc b/browser/ui/views/translate/brave_translate_bubble_view.cc index 96627166a5f..728f1c293b5 100644 --- a/browser/ui/views/translate/brave_translate_bubble_view.cc +++ b/browser/ui/views/translate/brave_translate_bubble_view.cc @@ -37,7 +37,7 @@ BraveTranslateBubbleView::~BraveTranslateBubbleView() { views::View* BraveTranslateBubbleView::BraveCreateViewBeforeTranslate() { views::View* view = new views::View(); views::GridLayout* layout = - view->SetLayoutManager(std::make_unique(view)); + view->SetLayoutManager(std::make_unique()); ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); constexpr int kButtonColumnSetId = 0; @@ -68,11 +68,11 @@ views::View* BraveTranslateBubbleView::BraveCreateViewBeforeTranslate() { provider->GetDistanceMetric(views::DISTANCE_UNRELATED_CONTROL_VERTICAL)); if (views::PlatformStyle::kIsOkButtonLeading) { - layout->AddView(accept_button.release()); - layout->AddView(cancel_button.release()); + layout->AddView(std::move(accept_button)); + layout->AddView(std::move(cancel_button)); } else { - layout->AddView(cancel_button.release()); - layout->AddView(accept_button.release()); + layout->AddView(std::move(cancel_button)); + layout->AddView(std::move(accept_button)); } return view; diff --git a/browser/ui/webui/brave_rewards_source.cc b/browser/ui/webui/brave_rewards_source.cc index e89e50572fb..16e41a1317c 100644 --- a/browser/ui/webui/brave_rewards_source.cc +++ b/browser/ui/webui/brave_rewards_source.cc @@ -1,4 +1,5 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ @@ -57,7 +58,7 @@ BraveRewardsSource::BraveRewardsSource(Profile* profile) BraveRewardsSource::~BraveRewardsSource() { } -std::string BraveRewardsSource::GetSource() const { +std::string BraveRewardsSource::GetSource() { return "rewards-image"; } @@ -112,17 +113,17 @@ void BraveRewardsSource::StartDataRequest( } } -std::string BraveRewardsSource::GetMimeType(const std::string&) const { +std::string BraveRewardsSource::GetMimeType(const std::string&) { // We need to explicitly return a mime type, otherwise if the user tries to // drag the image they get no extension. return "image/png"; } -bool BraveRewardsSource::AllowCaching() const { +bool BraveRewardsSource::AllowCaching() { return false; } -bool BraveRewardsSource::ShouldReplaceExistingSource() const { +bool BraveRewardsSource::ShouldReplaceExistingSource() { // Leave the existing DataSource in place, otherwise we'll drop any pending // requests on the floor. return false; @@ -131,7 +132,7 @@ bool BraveRewardsSource::ShouldReplaceExistingSource() const { bool BraveRewardsSource::ShouldServiceRequest( const GURL& url, content::ResourceContext* resource_context, - int render_process_id) const { + int render_process_id) { return URLDataSource::ShouldServiceRequest(url, resource_context, render_process_id); } diff --git a/browser/ui/webui/brave_rewards_source.h b/browser/ui/webui/brave_rewards_source.h index fce550f58d9..c04b0f88834 100644 --- a/browser/ui/webui/brave_rewards_source.h +++ b/browser/ui/webui/brave_rewards_source.h @@ -1,4 +1,5 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ @@ -23,18 +24,18 @@ class BraveRewardsSource : public content::URLDataSource { ~BraveRewardsSource() override; // content::URLDataSource implementation. - std::string GetSource() const override; + std::string GetSource() override; void StartDataRequest( const std::string& path, const content::ResourceRequestInfo::WebContentsGetter& wc_getter, const content::URLDataSource::GotDataCallback& got_data_callback) override; - std::string GetMimeType(const std::string&) const override; - bool AllowCaching() const override; - bool ShouldReplaceExistingSource() const override; + std::string GetMimeType(const std::string&) override; + bool AllowCaching() override; + bool ShouldReplaceExistingSource() override; bool ShouldServiceRequest(const GURL& url, content::ResourceContext* resource_context, - int render_process_id) const override; + int render_process_id) override; private: void OnBitmapFetched( diff --git a/browser/ui/webui/brave_web_ui_controller_factory.cc b/browser/ui/webui/brave_web_ui_controller_factory.cc index 66e2d8bae54..82587e16ed3 100644 --- a/browser/ui/webui/brave_web_ui_controller_factory.cc +++ b/browser/ui/webui/brave_web_ui_controller_factory.cc @@ -121,7 +121,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, } // namespace WebUI::TypeID BraveWebUIControllerFactory::GetWebUIType( - content::BrowserContext* browser_context, const GURL& url) const { + content::BrowserContext* browser_context, const GURL& url) { WebUIFactoryFunction function = GetWebUIFactoryFunction(NULL, url); if (function) { return reinterpret_cast(function); @@ -130,10 +130,8 @@ WebUI::TypeID BraveWebUIControllerFactory::GetWebUIType( } std::unique_ptr -BraveWebUIControllerFactory::CreateWebUIControllerForURL( - WebUI* web_ui, - const GURL& url) const { - +BraveWebUIControllerFactory::CreateWebUIControllerForURL(WebUI* web_ui, + const GURL& url) { WebUIFactoryFunction function = GetWebUIFactoryFunction(web_ui, url); if (!function) { return ChromeWebUIControllerFactory::CreateWebUIControllerForURL( diff --git a/browser/ui/webui/brave_web_ui_controller_factory.h b/browser/ui/webui/brave_web_ui_controller_factory.h index f6646c6b7bc..05c4d3b3bd2 100644 --- a/browser/ui/webui/brave_web_ui_controller_factory.h +++ b/browser/ui/webui/brave_web_ui_controller_factory.h @@ -1,9 +1,12 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ -#ifndef BRAVE_BROWSER_UI_WEBUI_CHROME_WEB_UI_CONTROLLER_FACTORY_H_ -#define BRAVE_BROWSER_UI_WEBUI_CHROME_WEB_UI_CONTROLLER_FACTORY_H_ +#ifndef BRAVE_BROWSER_UI_WEBUI_BRAVE_WEB_UI_CONTROLLER_FACTORY_H_ +#define BRAVE_BROWSER_UI_WEBUI_BRAVE_WEB_UI_CONTROLLER_FACTORY_H_ + +#include #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" @@ -14,10 +17,10 @@ class RefCountedMemory; class BraveWebUIControllerFactory : public ChromeWebUIControllerFactory { public: content::WebUI::TypeID GetWebUIType(content::BrowserContext* browser_context, - const GURL& url) const override; + const GURL& url) override; std::unique_ptr CreateWebUIControllerForURL( content::WebUI* web_ui, - const GURL& url) const override; + const GURL& url) override; static BraveWebUIControllerFactory* GetInstance(); @@ -31,4 +34,4 @@ class BraveWebUIControllerFactory : public ChromeWebUIControllerFactory { DISALLOW_COPY_AND_ASSIGN(BraveWebUIControllerFactory); }; -#endif // BRAVE_BROWSER_UI_WEBUI_CHROME_WEB_UI_CONTROLLER_FACTORY_H_ +#endif // BRAVE_BROWSER_UI_WEBUI_BRAVE_WEB_UI_CONTROLLER_FACTORY_H_ diff --git a/browser/ui/webui/brave_welcome_ui.cc b/browser/ui/webui/brave_welcome_ui.cc index d0d56afac6f..21929226baf 100644 --- a/browser/ui/webui/brave_welcome_ui.cc +++ b/browser/ui/webui/brave_welcome_ui.cc @@ -75,11 +75,6 @@ BraveWelcomeUI::BraveWelcomeUI(content::WebUI* web_ui, const std::string& name) std::make_unique(profile)); profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, true); -#if defined(OS_WIN) - g_brave_browser_process->local_state()->SetBoolean( - prefs::kHasSeenWin10PromoPage, - true); -#endif } BraveWelcomeUI::~BraveWelcomeUI() { diff --git a/build/android/BUILD.gn b/build/android/BUILD.gn index 4e22d1d2180..4a37987ffc8 100755 --- a/build/android/BUILD.gn +++ b/build/android/BUILD.gn @@ -95,6 +95,4 @@ generate_jni("jni_headers") { "//brave/android/java/org/chromium/chrome/browser/preferences/website/BraveShieldsContentSettings.java", "//brave/android/java/org/chromium/chrome/browser/BraveActivity.java", ] - - jni_package = "brave" } diff --git a/chromium_src/BUILD.gn b/chromium_src/BUILD.gn index 84a657d4e62..c37ed630504 100644 --- a/chromium_src/BUILD.gn +++ b/chromium_src/BUILD.gn @@ -1,11 +1,7 @@ -if (is_win) { - source_set("google_update") { - # This idl file is generated by Omaha. - sources = [ - "google_update/google_update_idl.idl", - ] - } -} +# Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. source_set("browser") { sources = [] diff --git a/chromium_src/chrome/browser/browser_about_handler.cc b/chromium_src/chrome/browser/browser_about_handler.cc index 307415b97ab..054f10cf986 100644 --- a/chromium_src/chrome/browser/browser_about_handler.cc +++ b/chromium_src/chrome/browser/browser_about_handler.cc @@ -14,10 +14,6 @@ bool FixupBrowserAboutURL(GURL* url, content::BrowserContext* browser_context) { bool result = FixupBrowserAboutURL_ChromiumImpl(url, browser_context); - // no special win10 welcome page - if (url->host() == chrome::kChromeUIWelcomeWin10Host) - *url = GURL(chrome::kChromeUIWelcomeURL); - // redirect sync-internals if (url->host() == chrome::kChromeUISyncInternalsHost) { GURL::Replacements replacements; diff --git a/chromium_src/chrome/browser/chrome_content_browser_client.cc b/chromium_src/chrome/browser/chrome_content_browser_client.cc index 8cc6efca11b..8a7ec7c4d8a 100644 --- a/chromium_src/chrome/browser/chrome_content_browser_client.cc +++ b/chromium_src/chrome/browser/chrome_content_browser_client.cc @@ -22,19 +22,20 @@ #if defined(OS_LINUX) #include "brave/browser/ui/views/brave_browser_main_extra_parts_views_linux.h" -#define ChromeBrowserMainExtraPartsViewsLinux BraveBrowserMainExtraPartsViewsLinux // NOLINT +#define ChromeBrowserMainExtraPartsViewsLinux \ + BraveBrowserMainExtraPartsViewsLinux // NOLINT #endif #define HandleNewTabURLRewrite HandleNewTabURLRewrite_ChromiumImpl #define HandleNewTabURLReverseRewrite HandleNewTabURLReverseRewrite_ChromiumImpl namespace search { - bool HandleNewTabURLRewrite(GURL * url, content::BrowserContext * bc) { - return false; - } - bool HandleNewTabURLReverseRewrite(GURL * url, content::BrowserContext * bc) { - return false; - } +bool HandleNewTabURLRewrite(GURL* url, content::BrowserContext* bc) { + return false; +} +bool HandleNewTabURLReverseRewrite(GURL* url, content::BrowserContext* bc) { + return false; +} } // namespace search #include "../../../../chrome/browser/chrome_content_browser_client.cc" // NOLINT diff --git a/chromium_src/chrome/browser/io_thread.cc b/chromium_src/chrome/browser/io_thread.cc deleted file mode 100644 index c6a5eee13ee..00000000000 --- a/chromium_src/chrome/browser/io_thread.cc +++ /dev/null @@ -1,9 +0,0 @@ -/* 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 http://mozilla.org/MPL/2.0/. */ - -#include "brave/browser/net/brave_system_network_delegate.h" - -#define ChromeNetworkDelegate BraveSystemNetworkDelegate -#include "../../../../chrome/browser/io_thread.cc" -#undef ChromeNetworkDelegate diff --git a/chromium_src/chrome/browser/profiles/profile_io_data.cc b/chromium_src/chrome/browser/profiles/profile_io_data.cc index d6a9acf0dfd..d35b58b749a 100644 --- a/chromium_src/chrome/browser/profiles/profile_io_data.cc +++ b/chromium_src/chrome/browser/profiles/profile_io_data.cc @@ -1,8 +1,8 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ -#include "brave/browser/net/brave_profile_network_delegate.h" #include "brave/common/url_constants.h" #include "../../../../../../chrome/browser/profiles/profile_io_data.cc" diff --git a/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc index 2de819ef082..68767cf5682 100644 --- a/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc @@ -7,26 +7,19 @@ #include "brave/browser/profiles/profile_util.h" #include "brave/browser/tor/buildflags.h" #include "brave/browser/translate/buildflags/buildflags.h" -#include "components/spellcheck/spellcheck_buildflags.h" -#if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) #include "brave/browser/renderer_context_menu/brave_spelling_options_submenu_observer.h" -#endif // Our .h file creates a masquerade for RenderViewContextMenu. Switch // back to the Chromium one for the Chromium implementation. #undef RenderViewContextMenu #define RenderViewContextMenu RenderViewContextMenu_Chromium -#if !defined(OS_MACOSX) // Use our subclass to initialize SpellingOptionsSubMenuObserver. #define SpellingOptionsSubMenuObserver BraveSpellingOptionsSubMenuObserver -#endif #include "../../../../chrome/browser/renderer_context_menu/render_view_context_menu.cc" // NOLINT -#if !defined(OS_MACOSX) #undef SpellingOptionsSubMenuObserver -#endif // Make it clear which class we mean here. #undef RenderViewContextMenu diff --git a/chromium_src/chrome/browser/signin/account_consistency_disabled_unittest.cc b/chromium_src/chrome/browser/signin/account_consistency_disabled_unittest.cc index ca8567722ca..d1ee3c02b80 100644 --- a/chromium_src/chrome/browser/signin/account_consistency_disabled_unittest.cc +++ b/chromium_src/chrome/browser/signin/account_consistency_disabled_unittest.cc @@ -15,9 +15,9 @@ #include "chrome/test/base/testing_profile.h" #include "components/prefs/pref_notifier_impl.h" #include "components/prefs/testing_pref_store.h" -#include "components/signin/core/browser/account_consistency_method.h" -#include "components/signin/core/browser/signin_buildflags.h" -#include "components/signin/core/browser/signin_pref_names.h" +#include "components/signin/public/base/account_consistency_method.h" +#include "components/signin/public/base/signin_buildflags.h" +#include "components/signin/public/base/signin_pref_names.h" #include "components/sync_preferences/testing_pref_service_syncable.h" #include "content/public/common/content_features.h" #include "content/public/test/test_browser_thread_bundle.h" diff --git a/chromium_src/chrome/common/chrome_constants.cc b/chromium_src/chrome/common/chrome_constants.cc index 137832d3cfa..c4f879e251a 100644 --- a/chromium_src/chrome/common/chrome_constants.cc +++ b/chromium_src/chrome/common/chrome_constants.cc @@ -127,7 +127,6 @@ const base::FilePath::CharType kSystemProfileDir[] = FPL("System Profile"); // filenames const base::FilePath::CharType kCacheDirname[] = FPL("Cache"); -const base::FilePath::CharType kChannelIDFilename[] = FPL("Origin Bound Certs"); const base::FilePath::CharType kCookieFilename[] = FPL("Cookies"); const base::FilePath::CharType kCRLSetFilename[] = FPL("Certificate Revocation Lists"); @@ -147,6 +146,8 @@ const base::FilePath::CharType kLocalStateFilename[] = FPL("Local State"); const base::FilePath::CharType kMediaCacheDirname[] = FPL("Media Cache"); const base::FilePath::CharType kNetworkPersistentStateFilename[] = FPL("Network Persistent State"); +const base::FilePath::CharType kNotificationSchedulerStorageDirname[] = + FPL("Notification Scheduler"); const base::FilePath::CharType kOfflinePageArchivesDirname[] = FPL("Offline Pages/archives"); const base::FilePath::CharType kOfflinePageMetadataDirname[] = diff --git a/chromium_src/components/content_settings/core/common/cookie_settings_base.cc b/chromium_src/components/content_settings/core/common/cookie_settings_base.cc new file mode 100644 index 00000000000..074e04c8953 --- /dev/null +++ b/chromium_src/components/content_settings/core/common/cookie_settings_base.cc @@ -0,0 +1,20 @@ +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ + +#include "components/content_settings/core/common/cookie_settings_base.h" + +#define BRAVE_IS_COOKIE_ACCESS_ALLOWED \ + GURL first_party_url = site_for_cookies; \ + if (first_party_url.is_empty() && top_frame_origin) { \ + first_party_url = top_frame_origin->GetURL(); \ + } \ + ContentSetting content_setting; \ + GetCookieSettingInternal( \ + url, first_party_url, \ + IsThirdPartyRequest(url, site_for_cookies), nullptr, &content_setting); \ + return IsAllowed(content_setting); + +#include "../../../../../components/content_settings/core/common/cookie_settings_base.cc" // NOLINT +#undef BRAVE_IS_COOKIE_ACCESS_ALLOWED diff --git a/chromium_src/components/omnibox/browser/location_bar_model_impl.cc b/chromium_src/components/omnibox/browser/location_bar_model_impl.cc deleted file mode 100644 index 88a869a0a7c..00000000000 --- a/chromium_src/components/omnibox/browser/location_bar_model_impl.cc +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ - -#include "components/omnibox/browser/location_bar_model_impl.h" - -#include "components/omnibox/browser/omnibox_field_trial.h" - -#define GetFieldTrialParamValueByFeature \ - GetFieldTrialParamValueByFeature_ChromiumImpl - -namespace base { -std::string GetFieldTrialParamValueByFeature(const base::Feature& feature, - const std::string& param_name) { - return OmniboxFieldTrial::kSimplifyHttpsIndicatorParameterBothToLock; -} -} // namespace base - -#include "../../../../../../../components/omnibox/browser/location_bar_model_impl.cc" // NOLINT - -#undef GetFieldTrialParamValueByFeature diff --git a/chromium_src/components/sync/engine_impl/get_updates_processor.cc b/chromium_src/components/sync/engine_impl/get_updates_processor.cc index 77d6097e44c..ce657079377 100644 --- a/chromium_src/components/sync/engine_impl/get_updates_processor.cc +++ b/chromium_src/components/sync/engine_impl/get_updates_processor.cc @@ -224,8 +224,7 @@ void ConstructUpdateResponse(sync_pb::GetUpdatesResponse* gu_response, sync_pb::NigoriSpecifics* nigori = specifics.mutable_nigori(); nigori->set_encrypt_everything(false); nigori->set_encrypt_bookmarks(false); - syncer::SystemEncryptor encryptor; - syncer::Cryptographer cryptographer(&encryptor); + syncer::Cryptographer cryptographer; KeyParams params = {KeyDerivationParams::CreateForPbkdf2(), "foobar"}; syncer::KeyDerivationMethod method = params.derivation_params.method(); bool add_key_result = cryptographer.AddKey(params); diff --git a/chromium_src/content/browser/frame_host/navigation_request.cc b/chromium_src/content/browser/frame_host/navigation_request.cc new file mode 100644 index 00000000000..076b8f07700 --- /dev/null +++ b/chromium_src/content/browser/frame_host/navigation_request.cc @@ -0,0 +1,43 @@ +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ + +#include "content/browser/frame_host/frame_tree.h" +#include "content/browser/frame_host/frame_tree_node.h" +#include "url/gurl.h" + +#if defined(OS_ANDROID) +#include "content/browser/frame_host/navigator.h" +#include "content/public/browser/navigation_controller.h" +#include "content/public/browser/navigation_entry.h" +#endif + +namespace { + +GURL GetTopDocumentGURL(content::FrameTreeNode* frame_tree_node) { + GURL gurl; +#if defined(OS_ANDROID) + // On Android, a base URL can be set for the frame. If this the case, it is + // the URL to use for cookies. + content::NavigationEntry* last_committed_entry = + frame_tree_node->navigator()->GetController()->GetLastCommittedEntry(); + if (last_committed_entry) + gurl = last_committed_entry->GetBaseURLForDataURL(); +#endif + if (gurl.is_empty()) + gurl = frame_tree_node->frame_tree()->root()->current_url(); + return gurl; +} + +} // namespace + +#define BRAVE_ONSTARTCHECKSCOMPLETE_MAYBEHIDEREFERRER \ + GetContentClient()->browser()->MaybeHideReferrer( \ + browser_context, common_params_.url, \ + GetTopDocumentGURL(frame_tree_node_), frame_tree_node_->IsMainFrame(), \ + &common_params_.referrer); + +#include "../../../../../content/browser/frame_host/navigation_request.cc" + +#undef BRAVE_ONSTARTCHECKSCOMPLETE_MAYBEHIDEREFERRER diff --git a/chromium_src/services/network/network_context.cc b/chromium_src/services/network/network_context.cc deleted file mode 100644 index b378956e3bc..00000000000 --- a/chromium_src/services/network/network_context.cc +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ - -#include "services/network/network_context.h" - -#include -#include - -#include "url/gurl.h" -#include "components/content_settings/core/common/content_settings_pattern.h" - -bool IsWhitelistedCookieException(const GURL& request_url, - const GURL& first_party_url) { - // Check with the security team before adding exceptions. - - // 1st-party-dependent whitelist - std::map> whitelist_patterns = { - { - GURL("https://www.sliver.tv/"), - std::vector({ - ContentSettingsPattern::FromString("https://*.thetatoken.org:8700/*"), - }), - } - }; - - std::map>::iterator i = - whitelist_patterns.find(first_party_url.GetOrigin()); - if (i == whitelist_patterns.end()) { - return false; - } - std::vector &exceptions = i->second; - return std::any_of(exceptions.begin(), exceptions.end(), - [&request_url](const ContentSettingsPattern& pattern) { - return pattern.Matches(request_url); - }); -} - -GURL GetURLForCookieAccess(const net::URLRequest& request) { - if (!request.site_for_cookies().is_empty()) - return request.site_for_cookies(); - - if (request.network_isolation_key().IsFullyPopulated()) { - GURL origin(request.network_isolation_key().ToString()); - if (origin.is_valid()) - return origin; - } - - if (request.top_frame_origin().has_value()) - return request.top_frame_origin()->GetURL(); - - return GURL(); -} - -#define BRAVE_ON_CAN_GET_COOKIES_INTERNAL \ -return allowed_from_caller && \ - (network_context_->cookie_manager() \ - ->cookie_settings() \ - .IsCookieAccessAllowed( \ - request.url(), \ - GetURLForCookieAccess(request)) || \ - IsWhitelistedCookieException(request.url(), \ - GetURLForCookieAccess(request))); - -#define BRAVE_ON_CAN_SET_COOKIES_INTERNAL BRAVE_ON_CAN_GET_COOKIES_INTERNAL - -#include "../../../../services/network/network_context.cc" // NOLINT -#undef BRAVE_ON_CAN_GET_COOKIES_INTERNAL -#undef BRAVE_ON_CAN_SET_COOKIES_INTERNAL diff --git a/chromium_src/third_party/blink/public/platform/disable_client_hints_browsertest.cc b/chromium_src/third_party/blink/public/platform/disable_client_hints_browsertest.cc index 55735109e2e..6146a7b7030 100644 --- a/chromium_src/third_party/blink/public/platform/disable_client_hints_browsertest.cc +++ b/chromium_src/third_party/blink/public/platform/disable_client_hints_browsertest.cc @@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/path_service.h" #include "base/run_loop.h" +#include "base/stl_util.h" #include "brave/common/brave_paths.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" @@ -56,8 +57,8 @@ class ClientHintsBrowserTest : public InProcessBrowserTest { private: void MonitorResourceRequest(const net::test_server::HttpRequest& request) { for (size_t i = 0; i < blink::kClientHintsMappingsCount; ++i) { - if (base::ContainsKey(request.headers, - blink::kClientHintsHeaderMapping[i])) { + if (base::Contains(request.headers, + blink::kClientHintsHeaderMapping[i])) { count_client_hints_headers_seen_++; } } diff --git a/chromium_src/ui/native_theme/native_theme.h b/chromium_src/ui/native_theme/native_theme.h new file mode 100644 index 00000000000..b77c1694327 --- /dev/null +++ b/chromium_src/ui/native_theme/native_theme.h @@ -0,0 +1,17 @@ +// Copyright (c) 2019 The Brave Authors +// 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 http://mozilla.org/MPL/2.0/. + +#ifndef BRAVE_CHROMIUM_SRC_UI_NATIVE_THEME_NATIVE_THEME_H_ +#define BRAVE_CHROMIUM_SRC_UI_NATIVE_THEME_NATIVE_THEME_H_ + +namespace ui { +class BraveThemeUtils; +} // namespace ui + +#define BRAVE_UI_NATIVE_THEME_NATIVE_THEME_H_ friend class ui::BraveThemeUtils; +#include "../../../../ui/native_theme/native_theme.h" +#undef BRAVE_UI_NATIVE_THEME_NATIVE_THEME_H_ + +#endif // BRAVE_CHROMIUM_SRC_UI_NATIVE_THEME_NATIVE_THEME_H_ diff --git a/chromium_src/ui/native_theme/native_theme_win.cc b/chromium_src/ui/native_theme/native_theme_win.cc new file mode 100644 index 00000000000..70479b6972c --- /dev/null +++ b/chromium_src/ui/native_theme/native_theme_win.cc @@ -0,0 +1,23 @@ +// Copyright (c) 2019 The Brave Authors +// 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 http://mozilla.org/MPL/2.0/. + +namespace { +bool s_ignore_system_dark_mode_change = false; +} // namespace + +#define BRAVE_NATIVETHEMEWIN_UPDATEDARKMODESTATUS \ + if (s_ignore_system_dark_mode_change) { \ + return; \ + } + +#include "../../../../ui/native_theme/native_theme_win.cc" // NOLINT + +namespace ui { + +void NATIVE_THEME_EXPORT IgnoreSystemDarkModeChange(bool ignore) { + s_ignore_system_dark_mode_change = ignore; +} + +} // namespace ui diff --git a/chromium_src/ui/native_theme/native_theme_win.h b/chromium_src/ui/native_theme/native_theme_win.h new file mode 100644 index 00000000000..a2f4c20e348 --- /dev/null +++ b/chromium_src/ui/native_theme/native_theme_win.h @@ -0,0 +1,25 @@ +// Copyright (c) 2019 The Brave Authors +// 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 http://mozilla.org/MPL/2.0/. + +#ifndef BRAVE_CHROMIUM_SRC_UI_NATIVE_THEME_NATIVE_THEME_WIN_H_ +#define BRAVE_CHROMIUM_SRC_UI_NATIVE_THEME_NATIVE_THEME_WIN_H_ + +#define BRAVE_UI_NATIVE_THEME_NATIVE_THEME_WIN_H_ \ + private: \ + friend void UpdateDarkModeStatus(); + +#include "../../../../ui/native_theme/native_theme_win.h" // NOLINT +#undef BRAVE_UI_NATIVE_THEME_NATIVE_THEME_WIN_H_ + +namespace ui { + +// Set true when browser should not response to system theme change. +// If user set dark or light explicitly, browser should ignore system dark mode +// setting. +void NATIVE_THEME_EXPORT IgnoreSystemDarkModeChange(bool ignore); + +} // namespace ui + +#endif // BRAVE_CHROMIUM_SRC_UI_NATIVE_THEME_NATIVE_THEME_WIN_H_ diff --git a/components/brave_shields/browser/brave_shields_util.cc b/components/brave_shields/browser/brave_shields_util.cc index 5af0943aed6..5aed04425e7 100644 --- a/components/brave_shields/browser/brave_shields_util.cc +++ b/components/brave_shields/browser/brave_shields_util.cc @@ -238,6 +238,18 @@ ControlType GetCookieControlType(HostContentSettingsMap* map, const GURL& url) { } } +bool AllowReferrers(Profile* profile, const GURL& url) { + return AllowReferrers( + HostContentSettingsMapFactory::GetForProfile(profile), url); +} + +bool AllowReferrers(HostContentSettingsMap* map, const GURL& url) { + ContentSetting setting = map->GetContentSetting( + url, GURL(), CONTENT_SETTINGS_TYPE_PLUGINS, kReferrers); + + return setting != CONTENT_SETTING_BLOCK; +} + void SetFingerprintingControlType(Profile* profile, ControlType type, const GURL& url) { diff --git a/components/brave_shields/browser/brave_shields_util.h b/components/brave_shields/browser/brave_shields_util.h index fa4f1e1ac1a..d5b0e2c2045 100644 --- a/components/brave_shields/browser/brave_shields_util.h +++ b/components/brave_shields/browser/brave_shields_util.h @@ -51,6 +51,10 @@ void SetCookieControlType(HostContentSettingsMap* map, const GURL& url); ControlType GetCookieControlType(Profile* profile, const GURL& url); ControlType GetCookieControlType(HostContentSettingsMap* map, const GURL& url); +// referrers is always set along with cookies so there is no setter and +// these is just included for backwards compat +bool AllowReferrers(Profile* profile, const GURL& url); +bool AllowReferrers(HostContentSettingsMap* map, const GURL& url); void SetFingerprintingControlType(Profile* profile, ControlType type, diff --git a/components/brave_shields/browser/https_everywhere_service_browsertest.cc b/components/brave_shields/browser/https_everywhere_service_browsertest.cc index 863815fbcff..e5172e6be10 100644 --- a/components/brave_shields/browser/https_everywhere_service_browsertest.cc +++ b/components/brave_shields/browser/https_everywhere_service_browsertest.cc @@ -1,4 +1,5 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ @@ -9,7 +10,6 @@ #include "brave/common/brave_paths.h" #include "brave/components/brave_shields/browser/https_everywhere_service.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/net/url_request_mock_util.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/browser_task_traits.h" @@ -18,9 +18,10 @@ using extensions::ExtensionBrowserTest; -const std::string kHTTPSEverywhereComponentTestId("bhlmpjhncoojbkemjkeppfahkglffilp"); +const char kHTTPSEverywhereComponentTestId[] = + "bhlmpjhncoojbkemjkeppfahkglffilp"; -const std::string kHTTPSEverywhereComponentTestBase64PublicKey = +const char kHTTPSEverywhereComponentTestBase64PublicKey[] = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3tAm7HooTNVGQ9cm7Yuc" "M9sLM/V38JOXzdj7z9dyDIfO64N69Gr5dn3XRzLuD+Pyzpl8MzfY/tIbWNSw3I2a" "8YcEPmyHl2L4HByKTm+eJ02ArhtkgtZKjiTDc84KQcsTBHqINkMUQYeUN3VW1lz2" @@ -30,7 +31,7 @@ const std::string kHTTPSEverywhereComponentTestBase64PublicKey = "3wIDAQAB"; class HTTPSEverywhereServiceTest : public ExtensionBrowserTest { -public: + public: HTTPSEverywhereServiceTest() {} void SetUp() override { @@ -41,8 +42,6 @@ class HTTPSEverywhereServiceTest : public ExtensionBrowserTest { void SetUpOnMainThread() override { ExtensionBrowserTest::SetUpOnMainThread(); - base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::IO}, - base::BindOnce(&chrome_browser_net::SetUrlRequestMocksEnabled, true)); host_resolver()->AddRule("*", "127.0.0.1"); } @@ -90,9 +89,8 @@ class HTTPSEverywhereServiceTest : public ExtensionBrowserTest { } void WaitForHTTPSEverywhereServiceThread() { - scoped_refptr io_helper( - new base::ThreadTestHelper( - g_brave_browser_process->https_everywhere_service()->GetTaskRunner())); + scoped_refptr io_helper(new base::ThreadTestHelper( + g_brave_browser_process->https_everywhere_service()->GetTaskRunner())); ASSERT_TRUE(io_helper->Run()); } }; @@ -103,7 +101,8 @@ IN_PROC_BROWSER_TEST_F(HTTPSEverywhereServiceTest, RedirectsKnownSite) { GURL url = embedded_test_server()->GetURL("www.digg.com", "/"); ui_test_utils::NavigateToURL(browser(), url); - content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); EXPECT_EQ(GURL("https://www.digg.com/"), contents->GetLastCommittedURL()); } @@ -113,7 +112,8 @@ IN_PROC_BROWSER_TEST_F(HTTPSEverywhereServiceTest, NoRedirectsNotKnownSite) { GURL url = embedded_test_server()->GetURL("www.brianbondy.com", "/"); ui_test_utils::NavigateToURL(browser(), url); - content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); GURL::Replacements clear_port; clear_port.ClearPort(); @@ -131,9 +131,12 @@ IN_PROC_BROWSER_TEST_F(HTTPSEverywhereServiceTest, RedirectsKnownSiteInIframe) { GURL iframe_url = embedded_test_server()->GetURL("www.digg.com", "/"); const char kIframeID[] = "test"; - content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); EXPECT_TRUE(NavigateIframeToURL(contents, kIframeID, iframe_url)); - content::RenderFrameHost* iframe_contents = ChildFrameAt(contents->GetMainFrame(), 0); + content::RenderFrameHost* iframe_contents = + ChildFrameAt(contents->GetMainFrame(), 0); WaitForLoadStop(contents); - EXPECT_EQ(GURL("https://www.digg.com/"), iframe_contents->GetLastCommittedURL()); + EXPECT_EQ(GURL("https://www.digg.com/"), + iframe_contents->GetLastCommittedURL()); } diff --git a/components/brave_shields/browser/tracking_protection_service_browsertest.cc b/components/brave_shields/browser/tracking_protection_service_browsertest.cc index 213702e54fa..f6eeaf562da 100644 --- a/components/brave_shields/browser/tracking_protection_service_browsertest.cc +++ b/components/brave_shields/browser/tracking_protection_service_browsertest.cc @@ -15,7 +15,6 @@ #include "brave/components/brave_shields/browser/buildflags/buildflags.h" // For STP #include "brave/components/brave_shields/browser/tracking_protection_service.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/net/url_request_mock_util.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/ui_test_utils.h" #include "components/prefs/pref_service.h" diff --git a/components/brave_sync/BUILD.gn b/components/brave_sync/BUILD.gn index f35a55fe641..b526a86be1b 100644 --- a/components/brave_sync/BUILD.gn +++ b/components/brave_sync/BUILD.gn @@ -28,6 +28,7 @@ if (enable_brave_sync) { "//components/pref_registry", "//components/prefs", "//components/prefs", + "//components/signin/public/identity_manager", "//content/public/browser", "//extensions/browser", "//net", diff --git a/components/brave_sync/brave_profile_sync_service_impl.cc b/components/brave_sync/brave_profile_sync_service_impl.cc index c67c377f964..bcc437aeabe 100644 --- a/components/brave_sync/brave_profile_sync_service_impl.cc +++ b/components/brave_sync/brave_profile_sync_service_impl.cc @@ -23,7 +23,7 @@ #include "brave/components/brave_sync/values_conv.h" #include "chrome/browser/sync/chrome_sync_client.h" #include "components/bookmarks/browser/bookmark_model.h" -#include "components/signin/core/browser/account_info.h" +#include "components/signin/public/identity_manager/account_info.h" #include "components/sync/engine_impl/syncer.h" #include "content/public/browser/browser_thread.h" #include "net/base/network_interfaces.h" diff --git a/components/brave_sync/brave_profile_sync_service_impl.h b/components/brave_sync/brave_profile_sync_service_impl.h index 3c4657a7f2b..cf370718119 100644 --- a/components/brave_sync/brave_profile_sync_service_impl.h +++ b/components/brave_sync/brave_profile_sync_service_impl.h @@ -15,6 +15,7 @@ #include "brave/components/brave_sync/jslib_messages_fwd.h" #include "brave/components/brave_sync/public/brave_profile_sync_service.h" #include "components/bookmarks/browser/bookmark_model.h" +#include "components/prefs/pref_change_registrar.h" #include "components/sync/driver/profile_sync_service.h" #include "services/network/public/cpp/network_connection_tracker.h" diff --git a/components/brave_sync/brave_sync_service_unittest.cc b/components/brave_sync/brave_sync_service_unittest.cc index 8ed5ebcb93d..f58204dd154 100644 --- a/components/brave_sync/brave_sync_service_unittest.cc +++ b/components/brave_sync/brave_sync_service_unittest.cc @@ -729,10 +729,12 @@ TEST_F(BraveSyncServiceTest, GetPreferredDataTypes) { TEST_F(BraveSyncServiceTest, GetDisableReasons) { sync_prefs()->SetManagedForTest(true); EXPECT_EQ(sync_service()->GetDisableReasons(), - syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY); + syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY | + syncer::SyncService::DISABLE_REASON_USER_CHOICE); sync_service()->OnSetSyncEnabled(true); EXPECT_EQ(sync_service()->GetDisableReasons(), - syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY); + syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY | + syncer::SyncService::DISABLE_REASON_USER_CHOICE); brave_sync_prefs()->SetMigratedBookmarksVersion(2); EXPECT_EQ(sync_service()->GetDisableReasons(), syncer::SyncService::DISABLE_REASON_NONE); diff --git a/components/brave_sync/syncer_helper.cc b/components/brave_sync/syncer_helper.cc index fd3450c12b7..b38a2fe4e07 100644 --- a/components/brave_sync/syncer_helper.cc +++ b/components/brave_sync/syncer_helper.cc @@ -22,10 +22,10 @@ void SetOrder(bookmarks::BookmarkModel* model, bookmarks::BookmarkNode* parent = const_cast(node->parent()); - auto* prev_node = index == 0 ? nullptr : parent->GetChild(index - 1); - auto* next_node = index == parent->child_count() - 1 + auto* prev_node = index == 0 ? nullptr : parent->children()[index - 1].get(); + auto* next_node = static_cast(index) == parent->children().size() - 1 ? nullptr - : parent->GetChild(index + 1); + : parent->children()[index + 1].get(); std::string prev_order; std::string next_order; @@ -40,31 +40,30 @@ void SetOrder(bookmarks::BookmarkModel* model, model->SetNodeMetaInfo(node, "order", order); } -uint64_t GetIndexByOrder(const std::string& record_order) { - uint64_t index = 0; +size_t GetIndexByOrder(const std::string& record_order) { + size_t index = 0; size_t last_dot_index = record_order.rfind("."); DCHECK(last_dot_index != std::string::npos); std::string last_digit = record_order.substr(last_dot_index + 1); - bool result = base::StringToUint64(last_digit, &index); - --index; - DCHECK_GE(index, 0u); + bool result = base::StringToSizeT(last_digit, &index); DCHECK(result); + DCHECK_GE(index, 1u); + --index; return index; } } // namespace -uint64_t GetIndexByCompareOrderStartFrom(const bookmarks::BookmarkNode* parent, - const bookmarks::BookmarkNode* src, - int index) { +size_t GetIndexByCompareOrderStartFrom(const bookmarks::BookmarkNode* parent, + const bookmarks::BookmarkNode* src, + size_t index) { std::string src_order; src->GetMetaInfo("order", &src_order); DCHECK(!src_order.empty()); - DCHECK_GE(index, 0); bool use_order = true; // If false use object_id std::string src_object_id; - while (index < parent->child_count()) { - const bookmarks::BookmarkNode* node = parent->GetChild(index); + while (index < parent->children().size()) { + const bookmarks::BookmarkNode* node = parent->children()[index].get(); if (src->id() == node->id()) { // We reached ourselves, no sense to go further, because we know all // unsorted elements are in the end @@ -128,17 +127,17 @@ void AddBraveMetaInfo(const bookmarks::BookmarkNode* node, DCHECK(!sync_timestamp.empty()); } -uint64_t GetIndex(const bookmarks::BookmarkNode* parent, - const bookmarks::BookmarkNode* src) { +size_t GetIndex(const bookmarks::BookmarkNode* parent, + const bookmarks::BookmarkNode* src) { DCHECK(parent); DCHECK(src); - int index = 0; + size_t index = 0; std::string src_order; src->GetMetaInfo("order", &src_order); DCHECK(!src_order.empty()); index = GetIndexByOrder(src_order); - if (index < parent->child_count()) { - const bookmarks::BookmarkNode* node = parent->GetChild(index); + if (index < parent->children().size()) { + const bookmarks::BookmarkNode* node = parent->children()[index].get(); if (node) { std::string node_order; node->GetMetaInfo("order", &node_order); diff --git a/components/brave_sync/syncer_helper.h b/components/brave_sync/syncer_helper.h index 24a288dff0b..2e787bd8b5f 100644 --- a/components/brave_sync/syncer_helper.h +++ b/components/brave_sync/syncer_helper.h @@ -20,12 +20,12 @@ void AddBraveMetaInfo(const bookmarks::BookmarkNode* node, bookmarks::BookmarkModel* bookmark_model); // |src| is the node which is about to be inserted into |parent| -uint64_t GetIndex(const bookmarks::BookmarkNode* parent, - const bookmarks::BookmarkNode* src); +size_t GetIndex(const bookmarks::BookmarkNode* parent, + const bookmarks::BookmarkNode* src); -uint64_t GetIndexByCompareOrderStartFrom(const bookmarks::BookmarkNode* parent, - const bookmarks::BookmarkNode* src, - int index); +size_t GetIndexByCompareOrderStartFrom(const bookmarks::BookmarkNode* parent, + const bookmarks::BookmarkNode* src, + size_t index); } // namespace brave_sync diff --git a/components/brave_sync/syncer_helper_unittest.cc b/components/brave_sync/syncer_helper_unittest.cc index edeb4d2e1d1..49fd607603f 100644 --- a/components/brave_sync/syncer_helper_unittest.cc +++ b/components/brave_sync/syncer_helper_unittest.cc @@ -406,22 +406,22 @@ TEST_F(SyncerHelperTest, SameOrderBookmarksSordetByObjectIdFull3) { // 0 1 2 3 4 5 6 // A1 A2 B1 B2 A3(1,2,3) B3(@@@) C3(...) - auto title_at_4 = model()->bookmark_bar_node()->GetChild(4)->GetTitle(); + auto title_at_4 = model()->bookmark_bar_node()->children()[4]->GetTitle(); EXPECT_EQ(title_at_4, base::ASCIIToUTF16("A3.com")); - auto title_at_5 = model()->bookmark_bar_node()->GetChild(5)->GetTitle(); + auto title_at_5 = model()->bookmark_bar_node()->children()[5]->GetTitle(); EXPECT_EQ(title_at_5, base::ASCIIToUTF16("B3.com")); - auto title_at_6 = model()->bookmark_bar_node()->GetChild(6)->GetTitle(); + auto title_at_6 = model()->bookmark_bar_node()->children()[6]->GetTitle(); EXPECT_EQ(title_at_6, base::ASCIIToUTF16("C3.com")); RepositionRespectOrder(model(), node_b3); // 0 1 2 3 4 5 6 // A1 A2 B1 B2 A3(1,2,3) B3(@@@) C3(...) // node B3 hadn't moved because it reached itself - title_at_4 = model()->bookmark_bar_node()->GetChild(4)->GetTitle(); + title_at_4 = model()->bookmark_bar_node()->children()[4]->GetTitle(); EXPECT_EQ(title_at_4, base::ASCIIToUTF16("A3.com")); - title_at_5 = model()->bookmark_bar_node()->GetChild(5)->GetTitle(); + title_at_5 = model()->bookmark_bar_node()->children()[5]->GetTitle(); EXPECT_EQ(title_at_5, base::ASCIIToUTF16("B3.com")); - title_at_6 = model()->bookmark_bar_node()->GetChild(6)->GetTitle(); + title_at_6 = model()->bookmark_bar_node()->children()[6]->GetTitle(); EXPECT_EQ(title_at_6, base::ASCIIToUTF16("C3.com")); RepositionRespectOrder(model(), node_c3); @@ -429,11 +429,11 @@ TEST_F(SyncerHelperTest, SameOrderBookmarksSordetByObjectIdFull3) { // A1 A2 B1 B2 C3(...) A3(1,2,3) B3(@@@) // node C3 moved to the correct position, so B3 is on the right place now - title_at_4 = model()->bookmark_bar_node()->GetChild(4)->GetTitle(); + title_at_4 = model()->bookmark_bar_node()->children()[4]->GetTitle(); EXPECT_EQ(title_at_4, base::ASCIIToUTF16("C3.com")); - title_at_5 = model()->bookmark_bar_node()->GetChild(5)->GetTitle(); + title_at_5 = model()->bookmark_bar_node()->children()[5]->GetTitle(); EXPECT_EQ(title_at_5, base::ASCIIToUTF16("A3.com")); - title_at_6 = model()->bookmark_bar_node()->GetChild(6)->GetTitle(); + title_at_6 = model()->bookmark_bar_node()->children()[6]->GetTitle(); EXPECT_EQ(title_at_6, base::ASCIIToUTF16("B3.com")); } diff --git a/components/content_settings/core/browser/brave_content_settings_pref_provider.cc b/components/content_settings/core/browser/brave_content_settings_pref_provider.cc index fb199e50c38..8ea7625a0d1 100644 --- a/components/content_settings/core/browser/brave_content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/brave_content_settings_pref_provider.cc @@ -100,9 +100,9 @@ bool IsActive(const Rule& cookie_rule, } // namespace BravePrefProvider::BravePrefProvider(PrefService* prefs, - bool incognito, + bool off_the_record, bool store_last_modified) - : PrefProvider(prefs, incognito, store_last_modified), + : PrefProvider(prefs, off_the_record, store_last_modified), weak_factory_(this) { brave_pref_change_registrar_.Init(prefs_); @@ -115,8 +115,7 @@ BravePrefProvider::BravePrefProvider(PrefService* prefs, info->type(), std::make_unique( info->type(), prefs_, &brave_pref_change_registrar_, - info->pref_name(), - is_incognito_, + info->pref_name(), off_the_record_, base::Bind(&PrefProvider::Notify, base::Unretained(this))))); break; } @@ -153,14 +152,14 @@ bool BravePrefProvider::SetWebsiteSetting( if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) { auto* value = in_value.get(); auto match = std::find_if( - brave_cookie_rules_[is_incognito_].begin(), - brave_cookie_rules_[is_incognito_].end(), + brave_cookie_rules_[off_the_record_].begin(), + brave_cookie_rules_[off_the_record_].end(), [primary_pattern, secondary_pattern, value](const auto& rule) { return rule.primary_pattern == primary_pattern && rule.secondary_pattern == secondary_pattern && ValueToContentSetting(&rule.value) != ValueToContentSetting(value); }); - if (match != brave_cookie_rules_[is_incognito_].end()) { + if (match != brave_cookie_rules_[off_the_record_].end()) { // swap primary/secondary pattern - see CloneRule auto plugin_primary_pattern = secondary_pattern; auto plugin_secondary_pattern = primary_pattern; diff --git a/components/content_settings/core/browser/brave_content_settings_pref_provider.h b/components/content_settings/core/browser/brave_content_settings_pref_provider.h index 7f7ff25ec6a..d66b8907b4b 100644 --- a/components/content_settings/core/browser/brave_content_settings_pref_provider.h +++ b/components/content_settings/core/browser/brave_content_settings_pref_provider.h @@ -29,7 +29,7 @@ class BravePrefProvider : public PrefProvider, public Observer { public: BravePrefProvider(PrefService* prefs, - bool incognito, + bool off_the_record, bool store_last_modified); ~BravePrefProvider() override; diff --git a/components/gcm_driver/gcm_unittest.cc b/components/gcm_driver/gcm_unittest.cc index 1de1c636e7a..a57231c3458 100644 --- a/components/gcm_driver/gcm_unittest.cc +++ b/components/gcm_driver/gcm_unittest.cc @@ -73,6 +73,7 @@ class FakeMCSClient : public MCSClient { FakeMCSClient(base::Clock* clock, ConnectionFactory* connection_factory, GCMStore* gcm_store, + scoped_refptr io_task_runner, GCMStatsRecorder* recorder); ~FakeMCSClient() override; void Login(uint64_t android_id, uint64_t security_token) override; @@ -92,11 +93,18 @@ class FakeMCSClient : public MCSClient { mcs_proto::DataMessageStanza last_data_message_stanza_; }; -FakeMCSClient::FakeMCSClient(base::Clock* clock, - ConnectionFactory* connection_factory, - GCMStore* gcm_store, - GCMStatsRecorder* recorder) - : MCSClient("", clock, connection_factory, gcm_store, recorder), +FakeMCSClient::FakeMCSClient( + base::Clock* clock, + ConnectionFactory* connection_factory, + GCMStore* gcm_store, + scoped_refptr io_task_runner, + GCMStatsRecorder* recorder) + : MCSClient("", + clock, + connection_factory, + gcm_store, + io_task_runner, + recorder), last_android_id_(0u), last_security_token_(0u), last_message_tag_(kNumProtoTypes) { @@ -165,6 +173,7 @@ class FakeGCMInternalsBuilder : public GCMInternalsBuilder { base::Clock* clock, ConnectionFactory* connection_factory, GCMStore* gcm_store, + scoped_refptr io_task_runner, GCMStatsRecorder* recorder) override; std::unique_ptr BuildConnectionFactory( const std::vector& endpoints, @@ -172,6 +181,7 @@ class FakeGCMInternalsBuilder : public GCMInternalsBuilder { base::RepeatingCallback< void(network::mojom::ProxyResolvingSocketFactoryRequest)> get_socket_factory_callback, + scoped_refptr io_task_runner, GCMStatsRecorder* recorder, network::NetworkConnectionTracker* network_connection_tracker) override; @@ -193,9 +203,10 @@ std::unique_ptr FakeGCMInternalsBuilder::BuildMCSClient( base::Clock* clock, ConnectionFactory* connection_factory, GCMStore* gcm_store, + scoped_refptr io_task_runner, GCMStatsRecorder* recorder) { - return base::WrapUnique( - new FakeMCSClient(clock, connection_factory, gcm_store, recorder)); + return base::WrapUnique(new FakeMCSClient( + clock, connection_factory, gcm_store, io_task_runner, recorder)); } std::unique_ptr @@ -205,6 +216,7 @@ FakeGCMInternalsBuilder::BuildConnectionFactory( base::RepeatingCallback< void(network::mojom::ProxyResolvingSocketFactoryRequest)> get_socket_factory_callback, + scoped_refptr io_task_runner, GCMStatsRecorder* recorder, network::NetworkConnectionTracker* network_connection_tracker) { return base::WrapUnique(new FakeConnectionFactory()); @@ -430,7 +442,8 @@ void GCMClientImplTest::InitializeGCMClient() { chrome_build_info.version = kChromeVersion; chrome_build_info.product_category_for_subtypes = kProductCategoryForSubtypes; gcm_client_->Initialize( - chrome_build_info, gcm_store_path(), task_runner_, base::DoNothing(), + chrome_build_info, gcm_store_path(), task_runner_, + base::ThreadTaskRunnerHandle::Get(), base::DoNothing(), base::MakeRefCounted( &test_url_loader_factory_), network::TestNetworkConnectionTracker::GetInstance(), diff --git a/components/invalidation/fcm_unittest.cc b/components/invalidation/fcm_unittest.cc index aeed3d918c8..4f92b000006 100644 --- a/components/invalidation/fcm_unittest.cc +++ b/components/invalidation/fcm_unittest.cc @@ -20,6 +20,8 @@ #include "components/gcm_driver/instance_id/instance_id_driver.h" #include "components/invalidation/impl/status.h" #include "google_apis/gcm/engine/account_mapping.h" +#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" +#include "services/network/test/test_url_loader_factory.h" #include "testing/gmock/include/gmock/gmock.h" using base::TestMockTimeTaskRunner; @@ -73,8 +75,11 @@ class MockInstanceID : public InstanceID { class MockGCMDriver : public gcm::GCMDriver { public: MockGCMDriver() - : GCMDriver(/*store_path=*/base::FilePath(), - /*blocking_task_runner=*/nullptr) {} + : GCMDriver( + /*store_path=*/base::FilePath(), + /*blocking_task_runner=*/nullptr, + base::MakeRefCounted( + &test_url_loader_factory_)) {} ~MockGCMDriver() override = default; MOCK_METHOD4(ValidateRegistration, @@ -128,6 +133,7 @@ class MockGCMDriver : public gcm::GCMDriver { gcm::GCMDecryptionResult result)); private: + network::TestURLLoaderFactory test_url_loader_factory_; DISALLOW_COPY_AND_ASSIGN(MockGCMDriver); }; diff --git a/components/omnibox/browser/topsites_provider.cc b/components/omnibox/browser/topsites_provider.cc index b72028abc01..23e389b34c5 100644 --- a/components/omnibox/browser/topsites_provider.cc +++ b/components/omnibox/browser/topsites_provider.cc @@ -28,7 +28,7 @@ void TopSitesProvider::Start(const AutocompleteInput& input, bool minimal_changes) { matches_.clear(); if (input.from_omnibox_focus() || - (input.type() == metrics::OmniboxInputType::INVALID) || + (input.type() == metrics::OmniboxInputType::EMPTY) || (input.type() == metrics::OmniboxInputType::QUERY)) return; diff --git a/content/browser/webui/brave_shared_resources_data_source.cc b/content/browser/webui/brave_shared_resources_data_source.cc index 047277a773c..28a68e2fd13 100644 --- a/content/browser/webui/brave_shared_resources_data_source.cc +++ b/content/browser/webui/brave_shared_resources_data_source.cc @@ -103,14 +103,14 @@ BraveSharedResourcesDataSource::BraveSharedResourcesDataSource() { BraveSharedResourcesDataSource::~BraveSharedResourcesDataSource() { } -std::string BraveSharedResourcesDataSource::GetSource() const { +std::string BraveSharedResourcesDataSource::GetSource() { return "brave-resources"; } void BraveSharedResourcesDataSource::StartDataRequest( const std::string& path, - const ResourceRequestInfo::WebContentsGetter& wc_getter, - const URLDataSource::GotDataCallback& callback) { + const content::ResourceRequestInfo::WebContentsGetter& wc_getter, + const content::URLDataSource::GotDataCallback& callback) { int idr = GetIdrForPath(path); DCHECK_NE(-1, idr) << " path: " << path; scoped_refptr bytes; @@ -123,14 +123,14 @@ void BraveSharedResourcesDataSource::StartDataRequest( callback.Run(bytes.get()); } -bool BraveSharedResourcesDataSource::AllowCaching() const { +bool BraveSharedResourcesDataSource::AllowCaching() { // Should not be cached to reflect dynamically-generated contents that may // depend on the current locale. return true; } std::string BraveSharedResourcesDataSource::GetMimeType( - const std::string& path) const { + const std::string& path) { if (path.empty()) return "text/html"; @@ -170,20 +170,19 @@ std::string BraveSharedResourcesDataSource::GetMimeType( return "text/plain"; } -bool BraveSharedResourcesDataSource::ShouldServeMimeTypeAsContentTypeHeader() - const { +bool BraveSharedResourcesDataSource::ShouldServeMimeTypeAsContentTypeHeader() { return true; } scoped_refptr BraveSharedResourcesDataSource::TaskRunnerForRequestPath( - const std::string& path) const { + const std::string& path) { return nullptr; } std::string BraveSharedResourcesDataSource::GetAccessControlAllowOriginForOrigin( - const std::string& origin) const { + const std::string& origin) { // For now we give access only for "chrome://*" origins. // According to CORS spec, Access-Control-Allow-Origin header doesn't support // wildcards, so we need to set its value explicitly by passing the |origin| @@ -197,7 +196,7 @@ BraveSharedResourcesDataSource::GetAccessControlAllowOriginForOrigin( return origin; } -bool BraveSharedResourcesDataSource::IsGzipped(const std::string& path) const { +bool BraveSharedResourcesDataSource::IsGzipped(const std::string& path) { // Cannot access GetContentClient() from here as that is //content/public // only. Therefore cannot access ContentClient::IsDataResourceGzipped, so go // to the bundle directly. diff --git a/content/browser/webui/brave_shared_resources_data_source.h b/content/browser/webui/brave_shared_resources_data_source.h index 584e95217fc..03fe8b78d93 100644 --- a/content/browser/webui/brave_shared_resources_data_source.h +++ b/content/browser/webui/brave_shared_resources_data_source.h @@ -1,6 +1,13 @@ +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ + #ifndef BRAVE_CONTENT_BROWSER_WEBUI_BRAVE_SHARED_RESOURCES_DATA_SOURCE_H_ #define BRAVE_CONTENT_BROWSER_WEBUI_BRAVE_SHARED_RESOURCES_DATA_SOURCE_H_ +#include + #include "base/compiler_specific.h" #include "base/macros.h" #include "base/single_thread_task_runner.h" @@ -8,28 +15,26 @@ namespace brave_content { -using namespace content; - // A DataSource for chrome://brave-resources/ URLs. -class BraveSharedResourcesDataSource : public URLDataSource { +class BraveSharedResourcesDataSource : public content::URLDataSource { public: BraveSharedResourcesDataSource(); ~BraveSharedResourcesDataSource() override; // URLDataSource implementation. - std::string GetSource() const override; + std::string GetSource() override; void StartDataRequest( const std::string& path, - const ResourceRequestInfo::WebContentsGetter& wc_getter, - const URLDataSource::GotDataCallback& callback) override; - bool AllowCaching() const override; - std::string GetMimeType(const std::string& path) const override; - bool ShouldServeMimeTypeAsContentTypeHeader() const override; + const content::ResourceRequestInfo::WebContentsGetter& wc_getter, + const content::URLDataSource::GotDataCallback& callback) override; + bool AllowCaching() override; + std::string GetMimeType(const std::string& path) override; + bool ShouldServeMimeTypeAsContentTypeHeader() override; scoped_refptr TaskRunnerForRequestPath( - const std::string& path) const override; + const std::string& path) override; std::string GetAccessControlAllowOriginForOrigin( - const std::string& origin) const override; - bool IsGzipped(const std::string& path) const override; + const std::string& origin) override; + bool IsGzipped(const std::string& path) override; private: DISALLOW_COPY_AND_ASSIGN(BraveSharedResourcesDataSource); @@ -37,4 +42,4 @@ class BraveSharedResourcesDataSource : public URLDataSource { } // namespace brave_content -#endif +#endif // BRAVE_CONTENT_BROWSER_WEBUI_BRAVE_SHARED_RESOURCES_DATA_SOURCE_H_ diff --git a/extensions/renderer/brave_shields_content_setting.cc b/extensions/renderer/brave_shields_content_setting.cc index 1118f30aef4..39b768c4b00 100644 --- a/extensions/renderer/brave_shields_content_setting.cc +++ b/extensions/renderer/brave_shields_content_setting.cc @@ -1,9 +1,14 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ #include "brave/extensions/renderer/brave_shields_content_setting.h" +#include +#include +#include + #include "base/strings/stringprintf.h" #include "base/values.h" #include "content/public/common/console_message_level.h" @@ -38,16 +43,18 @@ v8::Local BraveShieldsContentSetting::Create( CHECK(property_values->GetDictionary(1u, &value_spec)); gin::Handle handle = gin::CreateHandle( - isolate, new BraveShieldsContentSetting(request_handler, type_refs, access_checker, - pref_name, *value_spec)); + isolate, + new BraveShieldsContentSetting(request_handler, type_refs, access_checker, + pref_name, *value_spec)); return handle.ToV8().As(); } -BraveShieldsContentSetting::BraveShieldsContentSetting(APIRequestHandler* request_handler, - const APITypeReferenceMap* type_refs, - const BindingAccessChecker* access_checker, - const std::string& pref_name, - const base::DictionaryValue& set_value_spec) +BraveShieldsContentSetting::BraveShieldsContentSetting( + APIRequestHandler* request_handler, + const APITypeReferenceMap* type_refs, + const BindingAccessChecker* access_checker, + const std::string& pref_name, + const base::DictionaryValue& set_value_spec) : request_handler_(request_handler), type_refs_(type_refs), access_checker_(access_checker), @@ -83,11 +90,13 @@ BraveShieldsContentSetting::BraveShieldsContentSetting(APIRequestHandler* reques BraveShieldsContentSetting::~BraveShieldsContentSetting() = default; -gin::WrapperInfo BraveShieldsContentSetting::kWrapperInfo = {gin::kEmbedderNativeGin}; +gin::WrapperInfo BraveShieldsContentSetting::kWrapperInfo = { + gin::kEmbedderNativeGin}; gin::ObjectTemplateBuilder BraveShieldsContentSetting::GetObjectTemplateBuilder( v8::Isolate* isolate) { - return Wrappable::GetObjectTemplateBuilder(isolate) + return Wrappable::GetObjectTemplateBuilder( + isolate) .SetMethod("get", &BraveShieldsContentSetting::Get) .SetMethod("set", &BraveShieldsContentSetting::Set); } @@ -120,15 +129,12 @@ void BraveShieldsContentSetting::HandleFunction(const std::string& method_name, if (!access_checker_->HasAccessOrThrowError(context, full_name)) return; - std::unique_ptr converted_arguments; - v8::Local callback; - std::string error; const APISignature* signature = type_refs_->GetTypeMethodSignature(full_name); - if (!signature->ParseArgumentsToJSON(context, argument_list, *type_refs_, - &converted_arguments, &callback, - &error)) { + APISignature::JSONParseResult parse_result = + signature->ParseArgumentsToJSON(context, argument_list, *type_refs_); + if (!parse_result.succeeded()) { arguments->ThrowTypeError(api_errors::InvocationError( - full_name, signature->GetExpectedSignature(), error)); + full_name, signature->GetExpectedSignature(), *parse_result.error)); return; } @@ -148,10 +154,11 @@ void BraveShieldsContentSetting::HandleFunction(const std::string& method_name, } } - converted_arguments->Insert(0u, std::make_unique(pref_name_)); + parse_result.arguments->Insert(0u, std::make_unique(pref_name_)); request_handler_->StartRequest( - context, "braveShields." + method_name, std::move(converted_arguments), - callback, v8::Local(), binding::RequestThread::UI); + context, "braveShields." + method_name, std::move(parse_result.arguments), + parse_result.callback, v8::Local(), + binding::RequestThread::UI); } } // namespace extensions diff --git a/patches/android_webview-browser-network_service-aw_proxying_restricted_cookie_manager.cc.patch b/patches/android_webview-browser-network_service-aw_proxying_restricted_cookie_manager.cc.patch new file mode 100644 index 00000000000..92e0b57a026 --- /dev/null +++ b/patches/android_webview-browser-network_service-aw_proxying_restricted_cookie_manager.cc.patch @@ -0,0 +1,91 @@ +diff --git a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc +index b1d84a8a3f6f16ac53206d0e30632ec2d736838b..611aa02030e3908caa9504f670c9708f6ed14d80 100644 +--- a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc ++++ b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc +@@ -66,13 +66,15 @@ AwProxyingRestrictedCookieManager::~AwProxyingRestrictedCookieManager() { + void AwProxyingRestrictedCookieManager::GetAllForUrl( + const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + network::mojom::CookieManagerGetOptionsPtr options, + GetAllForUrlCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + + if (AllowCookies(url, site_for_cookies)) { + underlying_restricted_cookie_manager_->GetAllForUrl( +- url, site_for_cookies, std::move(options), std::move(callback)); ++ url, site_for_cookies, top_frame_origin, std::move(options), ++ std::move(callback)); + } else { + std::move(callback).Run(std::vector()); + } +@@ -82,12 +84,13 @@ void AwProxyingRestrictedCookieManager::SetCanonicalCookie( + const net::CanonicalCookie& cookie, + const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + SetCanonicalCookieCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + + if (AllowCookies(url, site_for_cookies)) { + underlying_restricted_cookie_manager_->SetCanonicalCookie( +- cookie, url, site_for_cookies, std::move(callback)); ++ cookie, url, site_for_cookies, top_frame_origin, std::move(callback)); + } else { + std::move(callback).Run(false); + } +@@ -96,6 +99,7 @@ void AwProxyingRestrictedCookieManager::SetCanonicalCookie( + void AwProxyingRestrictedCookieManager::AddChangeListener( + const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + network::mojom::CookieChangeListenerPtr listener, + AddChangeListenerCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); +@@ -110,20 +114,21 @@ void AwProxyingRestrictedCookieManager::AddChangeListener( + mojo::MakeRequest(&proxy_listener_ptr)); + + underlying_restricted_cookie_manager_->AddChangeListener( +- url, site_for_cookies, std::move(proxy_listener_ptr), ++ url, site_for_cookies, top_frame_origin, std::move(proxy_listener_ptr), + std::move(callback)); + } + + void AwProxyingRestrictedCookieManager::SetCookieFromString( + const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + const std::string& cookie, + SetCookieFromStringCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + + if (AllowCookies(url, site_for_cookies)) { + underlying_restricted_cookie_manager_->SetCookieFromString( +- url, site_for_cookies, cookie, std::move(callback)); ++ url, site_for_cookies, top_frame_origin, cookie, std::move(callback)); + } else { + std::move(callback).Run(); + } +@@ -132,12 +137,13 @@ void AwProxyingRestrictedCookieManager::SetCookieFromString( + void AwProxyingRestrictedCookieManager::GetCookiesString( + const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + GetCookiesStringCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + + if (AllowCookies(url, site_for_cookies)) { + underlying_restricted_cookie_manager_->GetCookiesString( +- url, site_for_cookies, std::move(callback)); ++ url, site_for_cookies, top_frame_origin, std::move(callback)); + } else { + std::move(callback).Run(""); + } +@@ -146,6 +152,7 @@ void AwProxyingRestrictedCookieManager::GetCookiesString( + void AwProxyingRestrictedCookieManager::CookiesEnabledFor( + const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + CookiesEnabledForCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + std::move(callback).Run(AllowCookies(url, site_for_cookies)); diff --git a/patches/android_webview-browser-network_service-aw_proxying_restricted_cookie_manager.h.patch b/patches/android_webview-browser-network_service-aw_proxying_restricted_cookie_manager.h.patch new file mode 100644 index 00000000000..e4c6ac84b86 --- /dev/null +++ b/patches/android_webview-browser-network_service-aw_proxying_restricted_cookie_manager.h.patch @@ -0,0 +1,39 @@ +diff --git a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h +index cd7bcb39d9580c5c26a5b65c2abee3f8cc40ed28..3c0523497853c77ce3391f4636d02935d5504590 100644 +--- a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h ++++ b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.h +@@ -35,28 +35,34 @@ class AwProxyingRestrictedCookieManager + // network::mojom::RestrictedCookieManager interface: + void GetAllForUrl(const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + network::mojom::CookieManagerGetOptionsPtr options, + GetAllForUrlCallback callback) override; + void SetCanonicalCookie(const net::CanonicalCookie& cookie, + const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + SetCanonicalCookieCallback callback) override; + void AddChangeListener(const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + network::mojom::CookieChangeListenerPtr listener, + AddChangeListenerCallback callback) override; + + void SetCookieFromString(const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + const std::string& cookie, + SetCookieFromStringCallback callback) override; + + void GetCookiesString(const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + GetCookiesStringCallback callback) override; + + void CookiesEnabledFor(const GURL& url, + const GURL& site_for_cookies, ++ const url::Origin& top_frame_origin, + CookiesEnabledForCallback callback) override; + + // This one is internal. diff --git a/patches/build-config-BUILDCONFIG.gn.patch b/patches/build-config-BUILDCONFIG.gn.patch index 3dc90e750b6..abdda3f3564 100644 --- a/patches/build-config-BUILDCONFIG.gn.patch +++ b/patches/build-config-BUILDCONFIG.gn.patch @@ -1,5 +1,5 @@ diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn -index 7063da0f26c5691f01214c2dc014128d7c8c5e09..3e18855c2a74036033999cd060a7f577925d0ee4 100644 +index db7ab0255b482d4e1fd20a31cfec86a24546602a..1cc44592d0d854f17cf3d2f5a5e0c2ed76b2d025 100644 --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn @@ -419,6 +419,7 @@ set_sources_assignment_filter(sources_assignment_filter) diff --git a/patches/build-config-android-config.gni.patch b/patches/build-config-android-config.gni.patch index c2f7ac19d1c..5c4bffb9cc2 100644 --- a/patches/build-config-android-config.gni.patch +++ b/patches/build-config-android-config.gni.patch @@ -1,5 +1,5 @@ diff --git a/build/config/android/config.gni b/build/config/android/config.gni -index 58838421c8a3cb995d3b41c59fac24523c57dafa..fb3715e80a24f7de149e7d7301e209a148c30d0f 100644 +index bed796ebe45e47af39bb3f27383cf23bc028adb3..7c0707454b7e3c435d793c1e300755f3d8bcb9c2 100644 --- a/build/config/android/config.gni +++ b/build/config/android/config.gni @@ -3,6 +3,7 @@ diff --git a/patches/chrome-BUILD.gn.patch b/patches/chrome-BUILD.gn.patch index 3b6aa634725..06def7ce625 100644 --- a/patches/chrome-BUILD.gn.patch +++ b/patches/chrome-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn -index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace21f4991c 100644 +index 0c52ff3c73580e38b2828fabdeb0e9c340428ca3..c99d78bb59960edf586b9079677dcbf0b7ea6f92 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -190,6 +190,10 @@ if (!is_android && !is_mac) { @@ -13,7 +13,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace deps += [ ":chrome_dll", -@@ -289,6 +293,7 @@ if (!is_android && !is_mac) { +@@ -297,6 +301,7 @@ if (!is_android && !is_mac) { "//headless:headless_shell_lib", "//services/service_manager/embedder", ] @@ -21,7 +21,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace public_deps = [ ":xdg_mime", # Needs to be public for installer to consume files. -@@ -435,6 +440,7 @@ if (is_win) { +@@ -431,6 +436,7 @@ if (is_win) { "//third_party/wtl", "//ui/views", ] @@ -29,7 +29,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace ldflags = [ "/DELAYLOAD:advapi32.dll", -@@ -569,6 +575,7 @@ if (is_win) { +@@ -566,6 +572,7 @@ if (is_win) { "//headless:headless_shell_child_lib", "//services/service_manager/embedder", ] @@ -37,7 +37,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace ldflags = [ "/DELAYLOAD:comctl32.dll", -@@ -680,6 +687,11 @@ if (is_win) { +@@ -677,6 +684,11 @@ if (is_win) { ] } @@ -49,7 +49,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace mac_app_bundle("chrome_app") { output_name = chrome_product_full_name -@@ -713,6 +725,7 @@ if (is_win) { +@@ -710,6 +722,7 @@ if (is_win) { rebase_path("app/app.exports", root_build_dir) ] } } @@ -57,7 +57,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace compiled_action("chrome_app_strings") { tool = "//chrome/tools/build/mac:infoplist_strings_tool" -@@ -742,7 +755,7 @@ if (is_win) { +@@ -739,7 +752,7 @@ if (is_win) { args = [ "-b", @@ -66,7 +66,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace "-v", rebase_path(chrome_version_file, root_build_dir), "-g", -@@ -823,7 +836,7 @@ if (is_win) { +@@ -820,7 +833,7 @@ if (is_win) { # framework itself, that would cause a cyclical dependency. Instead, # this dependency directly copies the file into the framework's # resources directory. @@ -75,7 +75,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace } } -@@ -1249,6 +1262,7 @@ if (is_win) { +@@ -1247,6 +1260,7 @@ if (is_win) { "//services/service_manager/embedder", "//third_party/cld_3/src/src:cld_3", ] @@ -83,7 +83,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace if (is_component_build) { libs = [ "Carbon.framework" ] -@@ -1313,6 +1327,10 @@ if (is_win) { +@@ -1311,6 +1325,10 @@ if (is_win) { if (is_chrome_branded) { deps += [ ":default_apps" ] } @@ -94,7 +94,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace ldflags = [ "-Wl,-install_name,@executable_path/../Frameworks/$chrome_framework_name.framework/Versions/$chrome_version_full/$chrome_framework_name" ] -@@ -1483,6 +1501,7 @@ if (is_win) { +@@ -1475,6 +1493,7 @@ if (is_win) { group("browser_dependencies") { public_deps = [ @@ -102,7 +102,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace "//chrome/browser", "//chrome/common", "//components/gwp_asan/buildflags", -@@ -1556,13 +1575,14 @@ group("child_dependencies") { +@@ -1547,13 +1566,14 @@ group("child_dependencies") { # this is OK because all of content is linked into one library. "//content/browser", ] @@ -118,7 +118,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace ] output = "$target_gen_dir/chrome_exe_version.rc" } -@@ -1635,6 +1655,7 @@ group("resources") { +@@ -1626,6 +1646,7 @@ group("resources") { "//chrome/browser:resources", "//chrome/common:resources", "//chrome/renderer:resources", @@ -126,7 +126,7 @@ index e06ba8ee8bcf4cc240029fc66a7c2681786217a0..a77998f9bd28b8a9965a7e10611c2ace ] } -@@ -1886,6 +1907,7 @@ if (is_android) { +@@ -1882,6 +1903,7 @@ if (is_android) { "//content/public/common:service_names", "//services/service_manager/embedder", ] diff --git a/patches/chrome-VERSION.patch b/patches/chrome-VERSION.patch index 283afe0de8f..8cc79acbf8d 100644 --- a/patches/chrome-VERSION.patch +++ b/patches/chrome-VERSION.patch @@ -1,11 +1,11 @@ diff --git a/chrome/VERSION b/chrome/VERSION -index 36f2781c0fca0d01ba636fc8b1f1dfa3a55f500e..34a721bdf884f3773a67db1efe07d02389ffae15 100644 +index 4fc319c61a279d59aabd6cd3f0ff30f230c1f27b..0779f0789b193c7116e9568ff401b7caafcc7118 100644 --- a/chrome/VERSION +++ b/chrome/VERSION @@ -1,4 +1,4 @@ - MAJOR=76 + MAJOR=77 MINOR=0 --BUILD=3809 --PATCH=132 +-BUILD=3865 +-PATCH=56 +BUILD=72 +PATCH=0 diff --git a/patches/chrome-android-BUILD.gn.patch b/patches/chrome-android-BUILD.gn.patch index 5d5a5d860e0..350daf5b093 100644 --- a/patches/chrome-android-BUILD.gn.patch +++ b/patches/chrome-android-BUILD.gn.patch @@ -1,17 +1,17 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn -index 17311184c47823594b49ad07d41bd870efa7af17..8f11dbdaa0491f676a867f5e0ce134d7e32b5a1d 100644 +index 0c5467af2bce341e0b3f0835899c820f60adbc87..fa406bae2b98570995ba1331d2145723e13a9866 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -42,7 +42,7 @@ if (dfmify_devtools) { - import("//chrome/android/features/devtools/devtools_module_tmpl.gni") - } +@@ -31,7 +31,7 @@ import("java_sources.gni") + import("static_initializers.gni") + import("trichrome.gni") --manifest_package = "org.chromium.chrome" -+declare_args() { manifest_package = "org.chromium.chrome" } - test_manifest_package = "org.chromium.chrome.tests" +-chrome_public_manifest_package = "org.chromium.chrome" ++declare_args() { chrome_public_manifest_package = "org.chromium.chrome" } + chrome_public_test_manifest_package = "org.chromium.chrome.tests" - chrome_public_jinja_variables = default_chrome_public_jinja_variables + -@@ -110,6 +110,7 @@ android_resources("chrome_app_java_resources") { + chrome_public_jinja_variables = +@@ -100,6 +100,7 @@ android_resources("chrome_app_java_resources") { deps = [ ":chrome_strings_grd", ":ui_locale_string_resources", @@ -19,7 +19,7 @@ index 17311184c47823594b49ad07d41bd870efa7af17..8f11dbdaa0491f676a867f5e0ce134d7 "//chrome/android/webapk/libs/common:splash_resources", "//chrome/app:java_strings_grd", "//components/autofill/android:autofill_java_resources", -@@ -496,6 +497,7 @@ java_group("chrome_all_java") { +@@ -524,6 +525,7 @@ java_group("chrome_all_java") { group("jni_headers") { public_deps = [ ":chrome_jni_headers", diff --git a/patches/chrome-android-java-res-layout-toolbar_phone.xml.patch b/patches/chrome-android-java-res-layout-toolbar_phone.xml.patch index fbbfb107a7b..68d2ba6213f 100644 --- a/patches/chrome-android-java-res-layout-toolbar_phone.xml.patch +++ b/patches/chrome-android-java-res-layout-toolbar_phone.xml.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/res/layout/toolbar_phone.xml b/chrome/android/java/res/layout/toolbar_phone.xml -index 62a3a3f3dc36d6417519832e987466ff26a18ea2..3c8c8cf4d83efae421571f57a5cc978dad4dab53 100644 +index fe66549d3ac660c12186e0c9c78c7ed525f2015d..9f2fad8590812ececbf1b9d04ec493c2ed7da425 100644 --- a/chrome/android/java/res/layout/toolbar_phone.xml +++ b/chrome/android/java/res/layout/toolbar_phone.xml @@ -31,6 +31,7 @@ @@ -12,7 +12,7 @@ index 62a3a3f3dc36d6417519832e987466ff26a18ea2..3c8c8cf4d83efae421571f57a5cc978d + diff --git a/patches/chrome-android-java-res-layout-toolbar_tablet.xml.patch b/patches/chrome-android-java-res-layout-toolbar_tablet.xml.patch index 4b7cd9f991a..aeeef6e3a5a 100644 --- a/patches/chrome-android-java-res-layout-toolbar_tablet.xml.patch +++ b/patches/chrome-android-java-res-layout-toolbar_tablet.xml.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/res/layout/toolbar_tablet.xml b/chrome/android/java/res/layout/toolbar_tablet.xml -index 4ead17fd19f45a22d4c13877726b58658ac82e89..1a1d924eabe7f45f3f0c4b406bbac096a2375a2d 100644 +index 12630f4cd02676d1676eaea5617bf20689192697..b7a56a2411f439d3ac476bcf33f5996d5ef047ac 100644 --- a/chrome/android/java/res/layout/toolbar_tablet.xml +++ b/chrome/android/java/res/layout/toolbar_tablet.xml @@ -75,6 +75,7 @@ diff --git a/patches/chrome-android-java-res-values-dimens.xml.patch b/patches/chrome-android-java-res-values-dimens.xml.patch index ef98172f380..81f16f0db9f 100644 --- a/patches/chrome-android-java-res-values-dimens.xml.patch +++ b/patches/chrome-android-java-res-values-dimens.xml.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml -index 2d3a1ddc2d73e0a76b7115d6e0fa1bedd0ab659c..b803e7ed86d9632dd4f97d0d5bc7356ed6656ee9 100644 +index e0a078063054229131277ff3878e6ef3ebeee61f..d93f0de960c134608342ba21c80151b9b6f80515 100644 --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml -@@ -285,7 +285,7 @@ +@@ -287,7 +287,7 @@ 40dp diff --git a/patches/chrome-android-java-res-values-v17-styles.xml.patch b/patches/chrome-android-java-res-values-v17-styles.xml.patch index 0390119101c..95f0f5ee1bc 100644 --- a/patches/chrome-android-java-res-values-v17-styles.xml.patch +++ b/patches/chrome-android-java-res-values-v17-styles.xml.patch @@ -1,10 +1,10 @@ diff --git a/chrome/android/java/res/values-v17/styles.xml b/chrome/android/java/res/values-v17/styles.xml -index c851e676d0dffd3e5a53641e3cb4f2f434d3a984..fbb0802b0f13383131fce4a19ebc74cbce1d91b4 100644 +index 5b41c992fb2b17c1b8a8a06ecc09460c4190fa86..b4a36c8d48dcc89a1dd0e9c661f4d3eedc757ed8 100644 --- a/chrome/android/java/res/values-v17/styles.xml +++ b/chrome/android/java/res/values-v17/styles.xml -@@ -930,4 +930,5 @@ - @dimen/omnibox_suggestion_edit_url_min_height - @color/default_icon_color +@@ -995,4 +995,5 @@ + viewStart + @style/TextAppearance.BlackTitle1 + diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch index 919d232c5fe..139aae27375 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -index 6bdd439f89a68e8b53bf077547ad04bc35414674..366524b92af5979ed4be1bac159cae6da8896a09 100644 +index a168b085348c218c2951964beb37e0a25d754836..ad5cf672b9548a4f9921c4bc3521a0c8111e998d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -182,7 +182,7 @@ import java.util.Locale; +@@ -174,7 +174,7 @@ import java.util.Locale; * are accessible via a chrome specific tab switching UI. */ public class ChromeTabbedActivity diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-preferences-ChromePreferenceManager.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-preferences-ChromePreferenceManager.java.patch index defe5bf5bc9..708bcc87765 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-preferences-ChromePreferenceManager.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-preferences-ChromePreferenceManager.java.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java -index 80072b7f7afc55c1d893416b614267edbfb7b2da..091832ed91eea9462378b30ac3ec717e648e211e 100644 +index e269ba6c0436afc362804823e557dfe38c600c3b..fc3699b450c22a9731ccce0723e69dfcf813cf3c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java @@ -21,7 +21,7 @@ import java.util.Set; diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-search_engines-TemplateUrlService.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-search_engines-TemplateUrlService.java.patch deleted file mode 100644 index 6ea203beac6..00000000000 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-search_engines-TemplateUrlService.java.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java b/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java -index 55c72cd215f525a17853cd63f79ecb8b537d4102..3bec2e2c5aedcbf631aadc058c2167c1641a626d 100644 ---- a/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java -@@ -11,6 +11,7 @@ import org.chromium.base.ThreadUtils; - import org.chromium.base.VisibleForTesting; - import org.chromium.base.annotations.CalledByNative; - import org.chromium.base.task.PostTask; -+import org.chromium.chrome.browser.search_engines.BraveTemplateUrlService; - import org.chromium.content_public.browser.UiThreadTaskTraits; - - import java.util.ArrayList; -@@ -49,7 +50,7 @@ public class TemplateUrlService { - public static TemplateUrlService getInstance() { - ThreadUtils.assertOnUiThread(); - if (sService == null) { -- sService = new TemplateUrlService(); -+ sService = new BraveTemplateUrlService(); - } - return sService; - } -@@ -59,7 +60,7 @@ public class TemplateUrlService { - private final ObserverList mObservers = - new ObserverList(); - -- private TemplateUrlService() { -+ protected TemplateUrlService() { - // Note that this technically leaks the native object, however, TemlateUrlService - // is a singleton that lives forever and there's no clean shutdown of Chrome on Android - mNativeTemplateUrlServiceAndroid = nativeInit(); diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch index 45011365879..11a3f4bd00c 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch @@ -1,16 +1,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -index 5e062152c274c9f03aecd657ac9009705ac48db5..510e5501295785f689599c358ee4ef0112598a48 100644 +index 795a84107a8665a7795a14cba33687d5e5e9f460..4396a998f1e9999a0e59f5b2a72bf1a2c70aec68 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -777,6 +777,7 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF +@@ -782,6 +782,7 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF }; final OnClickListener shareButtonListener = v -> { -+/* ++/* recordBottomToolbarUseForIPH(); RecordUserAction.record("MobileBottomToolbarShareButton"); boolean isIncognito = false; -@@ -784,6 +785,7 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF +@@ -789,6 +790,7 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF isIncognito = mTabModelSelector.getCurrentTab().isIncognito(); } mActivity.onShareMenuItemSelected(false, isIncognito); @@ -18,7 +18,7 @@ index 5e062152c274c9f03aecd657ac9009705ac48db5..510e5501295785f689599c358ee4ef01 }; mBottomControlsCoordinator = new BottomControlsCoordinator(mActivity.getFullscreenManager(), -@@ -1745,6 +1747,7 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF +@@ -1772,6 +1774,7 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF boolean editingAllowed = currentTab == null || mBookmarkBridge == null || mBookmarkBridge.isEditBookmarksEnabled(); mToolbar.updateBookmarkButton(isBookmarked, editingAllowed); diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch index d1e4a98b14b..42f6915daa3 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java -index a89b91492e39563c09629a6cd27dd70d685927eb..ddb6ba9ae2bb6a60b82a37d336a8d00fdb8480bc 100644 +index 6b0082fe76b27d72b5d90c7047e9e23173dd0afc..cc1ab03f9a7c149da521375cfc18b70aaa83fdd2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java -@@ -88,7 +88,7 @@ import java.util.List; +@@ -86,7 +86,7 @@ import java.util.List; /** * Phone specific toolbar implementation. */ @@ -11,7 +11,7 @@ index a89b91492e39563c09629a6cd27dd70d685927eb..ddb6ba9ae2bb6a60b82a37d336a8d00f NewTabPage.OnSearchBoxScrollListener, TabCountObserver { /** The amount of time transitioning from one theme color to another should take in ms. */ -@@ -426,10 +426,12 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O +@@ -422,10 +422,12 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O /** * Set the background color of the location bar to appropriately match the theme color. */ @@ -25,7 +25,7 @@ index a89b91492e39563c09629a6cd27dd70d685927eb..ddb6ba9ae2bb6a60b82a37d336a8d00f } /** -@@ -546,6 +548,7 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O +@@ -542,6 +544,7 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O .notifyEvent(EventConstants.PARTNER_HOME_PAGE_BUTTON_PRESSED); } } @@ -33,7 +33,7 @@ index a89b91492e39563c09629a6cd27dd70d685927eb..ddb6ba9ae2bb6a60b82a37d336a8d00f } @Override -@@ -719,7 +722,7 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O +@@ -715,7 +718,7 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O * @return The right bounds of the location bar after accounting for any visible left buttons. */ private int getBoundsAfterAccountingForRightButtons() { @@ -42,7 +42,7 @@ index a89b91492e39563c09629a6cd27dd70d685927eb..ddb6ba9ae2bb6a60b82a37d336a8d00f } private void updateToolbarBackground(int color) { -@@ -2129,6 +2132,7 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O +@@ -2130,6 +2133,7 @@ public class ToolbarPhone extends ToolbarLayout implements Invalidator.Client, O } else { populateUrlClearFocusingAnimatorSet(animators); } diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-util-FeatureUtilities.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-util-FeatureUtilities.java.patch index df6655889f9..91bd72cf1c1 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-util-FeatureUtilities.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-util-FeatureUtilities.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java -index a1fd6aced1b2dfe6eca978d1977517383913cd37..0482c54fb467960002133d7203a43e2ec6baf6d1 100644 +index e5270f604ea8b8ee9f27b2e7c89e4945e6e45d60..deb382908cfd0112b7cc0ee02282d8eabf209b5f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java -@@ -491,6 +491,7 @@ public class FeatureUtilities { +@@ -457,6 +457,7 @@ public class FeatureUtilities { * @return Whether or not the bottom toolbar is enabled. */ public static boolean isBottomToolbarEnabled() { @@ -10,7 +10,7 @@ index a1fd6aced1b2dfe6eca978d1977517383913cd37..0482c54fb467960002133d7203a43e2e if (sIsBottomToolbarEnabled == null) { ChromePreferenceManager prefManager = ChromePreferenceManager.getInstance(); -@@ -502,6 +503,7 @@ public class FeatureUtilities { +@@ -468,6 +469,7 @@ public class FeatureUtilities { && !DeviceFormFactor.isNonMultiDisplayContextOnTablet( ContextUtils.getApplicationContext()) && !isTabGroupsAndroidEnabled(); diff --git a/patches/chrome-android-java_sources.gni.patch b/patches/chrome-android-java_sources.gni.patch index 73b0b720e16..3c717850b9c 100644 --- a/patches/chrome-android-java_sources.gni.patch +++ b/patches/chrome-android-java_sources.gni.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni -index 8aedf50897e9b40ca6b9617bb1a8ac766a6da16a..3ec678a94edda05c74640dcdbf63792a12ecc3dc 100644 +index ba374328abaf898aa5dd233f12673efb558c99ae..546ee1b26bbc68ca2c2d94aa42b93c836debac4f 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni -@@ -15,6 +15,7 @@ import("//components/offline_pages/buildflags/features.gni") +@@ -17,6 +17,7 @@ import("//components/offline_pages/buildflags/features.gni") import("//device/vr/buildflags/buildflags.gni") chrome_java_sources += public_autofill_assistant_java_sources diff --git a/patches/chrome-app-BUILD.gn.patch b/patches/chrome-app-BUILD.gn.patch index 8475bb01e1f..a5f626baa26 100644 --- a/patches/chrome-app-BUILD.gn.patch +++ b/patches/chrome-app-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/app/BUILD.gn b/chrome/app/BUILD.gn -index 590c4edcededad77172ae30e85b388b91d305b8e..ff494f3afd3dfaed475c89313116a45f64ffb565 100644 +index 6e5ec5df6fb27d3e359304ed1eed873256bdd349..070bb918c76a46a8f2f8003ecf9d616e8982bbec 100644 --- a/chrome/app/BUILD.gn +++ b/chrome/app/BUILD.gn @@ -186,6 +186,8 @@ grit("generated_resources") { @@ -20,10 +20,10 @@ index 590c4edcededad77172ae30e85b388b91d305b8e..ff494f3afd3dfaed475c89313116a45f defines = chrome_grit_defines output_dir = "$root_gen_dir/chrome" outputs = [ -@@ -348,6 +350,7 @@ static_library("test_support") { +@@ -347,6 +349,7 @@ static_library("test_support") { + "//components/gwp_asan/buildflags", "//components/nacl/common:buildflags", "//components/startup_metric_utils/browser:lib", - "//components/tracing", + "//components/unified_consent", "//content/public/app:both", "//content/public/common", diff --git a/patches/chrome-app-chrome_dll.rc.patch b/patches/chrome-app-chrome_dll.rc.patch index 02b7b7e2370..2581bf123ad 100644 --- a/patches/chrome-app-chrome_dll.rc.patch +++ b/patches/chrome-app-chrome_dll.rc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/app/chrome_dll.rc b/chrome/app/chrome_dll.rc -index d994493407e6dc5c640dd16ce488818800c09d14..90846e8502e2cda2fd3a3bad4749f9977c501b12 100644 +index 80a15b55d54f55ca13d6d79b3fd75d28ae0d647f..a0aa8fa83a4e93f7689a0ece2e6dbf9d10a4c175 100644 --- a/chrome/app/chrome_dll.rc +++ b/chrome/app/chrome_dll.rc @@ -164,6 +164,16 @@ END diff --git a/patches/chrome-browser-BUILD.gn.patch b/patches/chrome-browser-BUILD.gn.patch index ab0a6ad1608..46e28e5a260 100644 --- a/patches/chrome-browser-BUILD.gn.patch +++ b/patches/chrome-browser-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index 4f9844f6f8546efe591e679c41c7cd3b43c371a8..0e86b115bef94df9821adeffe944b0d3a63b587c 100644 +index c00a09a5ec2b58399559255ae2fc476f3135b78c..6df997d9187c4bec2b51887d7152a7243c42a23d 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2142,6 +2142,7 @@ jumbo_split_static_library("browser") { +@@ -2180,6 +2180,7 @@ jumbo_split_static_library("browser") { "//ui/strings", "//ui/surface", "//ui/web_dialogs", @@ -10,7 +10,7 @@ index 4f9844f6f8546efe591e679c41c7cd3b43c371a8..0e86b115bef94df9821adeffe944b0d3 ] if (is_posix || is_fuchsia) { -@@ -2155,6 +2156,7 @@ jumbo_split_static_library("browser") { +@@ -2193,6 +2194,7 @@ jumbo_split_static_library("browser") { } if (is_android) { diff --git a/patches/chrome-browser-about_flags.cc.patch b/patches/chrome-browser-about_flags.cc.patch index f40702e27e6..9f62001985a 100644 --- a/patches/chrome-browser-about_flags.cc.patch +++ b/patches/chrome-browser-about_flags.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc -index 61bb2977bb7c9711465a6928b45f6a69be7f4080..c8f888c1423d2e53fc94bffc9db0ab51c86e0a4d 100644 +index 2456729567158701ba9023f7741c117f25990c8c..3466bba226d9bcff427a78e3f18b1a4be0c5230f 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -254,14 +254,14 @@ const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = { +@@ -266,14 +266,14 @@ const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = { const FeatureEntry::Choice kTraceUploadURL[] = { {flags_ui::kGenericExperimentChoiceDisabled, "", ""}, {flag_descriptions::kTraceUploadUrlChoiceOther, switches::kTraceUploadURL, diff --git a/patches/chrome-browser-autocomplete-autocomplete_classifier_factory.cc.patch b/patches/chrome-browser-autocomplete-autocomplete_classifier_factory.cc.patch index d7b0aaaf610..efb80285f29 100644 --- a/patches/chrome-browser-autocomplete-autocomplete_classifier_factory.cc.patch +++ b/patches/chrome-browser-autocomplete-autocomplete_classifier_factory.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/autocomplete/autocomplete_classifier_factory.cc b/chrome/browser/autocomplete/autocomplete_classifier_factory.cc -index e3159144a0b7892e5580bfa910f2db97a81179a9..8ee42d9f6f7ac50c78a03e59aa2ba34e35dae725 100644 +index 7f4dd5ffd15a0ea17fb77d712897a86370da4266..52d8469ae70f38e7a3c714f4761d4172915af138 100644 --- a/chrome/browser/autocomplete/autocomplete_classifier_factory.cc +++ b/chrome/browser/autocomplete/autocomplete_classifier_factory.cc @@ -68,7 +68,12 @@ AutocompleteClassifierFactory::~AutocompleteClassifierFactory() { diff --git a/patches/chrome-browser-browser_process_impl.h.patch b/patches/chrome-browser-browser_process_impl.h.patch index a550a06d7d8..8d2128a57a5 100644 --- a/patches/chrome-browser-browser_process_impl.h.patch +++ b/patches/chrome-browser-browser_process_impl.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h -index 95a7bd8e8b581c6addec8b33880b2c03040f713a..b7037dd80a29bbd64a8ed66d4d01e585df589eed 100644 +index c02e294f5b2e388cda053ba03974bff53a7ba5da..c7f071ba6a9f726e45c3ad4e5b637a415ea7146d 100644 --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -206,6 +206,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -198,6 +198,7 @@ class BrowserProcessImpl : public BrowserProcess, static void RegisterPrefs(PrefRegistrySimple* registry); private: diff --git a/patches/chrome-browser-chrome_content_browser_client.h.patch b/patches/chrome-browser-chrome_content_browser_client.h.patch index fe7f0778bd9..c6a42eb46e1 100644 --- a/patches/chrome-browser-chrome_content_browser_client.h.patch +++ b/patches/chrome-browser-chrome_content_browser_client.h.patch @@ -1,9 +1,9 @@ diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h -index 499af0b670a1060f81c2b1dda8812865aac29670..b9d5d5f72fcd3a319472cb226ec83ca4b62f0180 100644 +index 069f597633a2924e0bdacd7cb1d92f5d418e6d87..a40200ffd46ec9deb623906633f4805fb63bf8dd 100644 --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h -@@ -637,6 +637,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { - content::BrowserContext* browser_context); +@@ -634,6 +634,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { + virtual const ui::NativeTheme* GetWebTheme() const; // For testing. private: + friend class BraveContentBrowserClient; diff --git a/patches/chrome-browser-content_settings-tab_specific_content_settings.cc.patch b/patches/chrome-browser-content_settings-tab_specific_content_settings.cc.patch index 9e5c3471484..b6dee9a46cf 100644 --- a/patches/chrome-browser-content_settings-tab_specific_content_settings.cc.patch +++ b/patches/chrome-browser-content_settings-tab_specific_content_settings.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/content_settings/tab_specific_content_settings.cc b/chrome/browser/content_settings/tab_specific_content_settings.cc -index f521d5f7842bcd128772a9c8b57b464ffee312f5..1a9a1b0ebb01a0db607dd88e426166e176146c75 100644 +index 34fde937fea30840585b21c0623443f7dcb6c46a..50de09977491c7961ce3fc643f175d1e1e24a7f4 100644 --- a/chrome/browser/content_settings/tab_specific_content_settings.cc +++ b/chrome/browser/content_settings/tab_specific_content_settings.cc -@@ -283,6 +283,7 @@ bool TabSpecificContentSettings::IsContentBlocked( +@@ -253,6 +253,7 @@ bool TabSpecificContentSettings::IsContentBlocked( content_type == CONTENT_SETTINGS_TYPE_ADS || content_type == CONTENT_SETTINGS_TYPE_SOUND || content_type == CONTENT_SETTINGS_TYPE_CLIPBOARD_READ || @@ -10,7 +10,7 @@ index f521d5f7842bcd128772a9c8b57b464ffee312f5..1a9a1b0ebb01a0db607dd88e426166e1 content_type == CONTENT_SETTINGS_TYPE_SENSORS) { const auto& it = content_settings_status_.find(content_type); if (it != content_settings_status_.end()) -@@ -306,6 +307,7 @@ bool TabSpecificContentSettings::IsContentAllowed( +@@ -276,6 +277,7 @@ bool TabSpecificContentSettings::IsContentAllowed( content_type != CONTENT_SETTINGS_TYPE_PPAPI_BROKER && content_type != CONTENT_SETTINGS_TYPE_MIDI_SYSEX && content_type != CONTENT_SETTINGS_TYPE_CLIPBOARD_READ && diff --git a/patches/chrome-browser-devtools-devtools_ui_bindings.h.patch b/patches/chrome-browser-devtools-devtools_ui_bindings.h.patch index 8faa4ced575..e2a2330a855 100644 --- a/patches/chrome-browser-devtools-devtools_ui_bindings.h.patch +++ b/patches/chrome-browser-devtools-devtools_ui_bindings.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/devtools/devtools_ui_bindings.h b/chrome/browser/devtools/devtools_ui_bindings.h -index f832069419217412657c1279712f821e6c036132..50fb5a5f2a6a3f0c910341115839f0d64737ec4d 100644 +index cc7e57e6c2e06dded26fce90dc22953c9785aae5..c535e148ea824e45506d37932e33ecc026e08d26 100644 --- a/chrome/browser/devtools/devtools_ui_bindings.h +++ b/chrome/browser/devtools/devtools_ui_bindings.h @@ -89,6 +89,9 @@ class DevToolsUIBindings : public DevToolsEmbedderMessageDispatcher::Delegate, diff --git a/patches/chrome-browser-extensions-api-webrtc_logging_private-webrtc_logging_private_api.cc.patch b/patches/chrome-browser-extensions-api-webrtc_logging_private-webrtc_logging_private_api.cc.patch index 1f81c76b514..4744357d8fc 100644 --- a/patches/chrome-browser-extensions-api-webrtc_logging_private-webrtc_logging_private_api.cc.patch +++ b/patches/chrome-browser-extensions-api-webrtc_logging_private-webrtc_logging_private_api.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc -index 8efee8786a5e875dfcd68f262c15a47e1512ab5e..6aea38bf2b9cbcaedd2bde00fd0f11cd2544ca87 100644 +index 3896f0b9e8f764fa425e0702c6ff97ba0a4b1bcf..37c067c77588130a78318d22eb695f70e982dc70 100644 --- a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc +++ b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc @@ -87,6 +87,7 @@ std::string HashIdWithOrigin(const std::string& security_origin, diff --git a/patches/chrome-browser-extensions-chrome_extensions_browser_client.cc.patch b/patches/chrome-browser-extensions-chrome_extensions_browser_client.cc.patch index 88d0c483ce1..f66e57e82f0 100644 --- a/patches/chrome-browser-extensions-chrome_extensions_browser_client.cc.patch +++ b/patches/chrome-browser-extensions-chrome_extensions_browser_client.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.cc b/chrome/browser/extensions/chrome_extensions_browser_client.cc -index 87a8ac4f1635d0f11067da7644987a2cff16aa06..4fc1deebd4ad047fa9f00efbd2d5490041b5d32e 100644 +index 37972b557b457ffd69215caf8d2616432fe7a3da..9be4fa73fe51417bc5e8ed88517089a6d6f6592c 100644 --- a/chrome/browser/extensions/chrome_extensions_browser_client.cc +++ b/chrome/browser/extensions/chrome_extensions_browser_client.cc @@ -9,6 +9,8 @@ @@ -11,7 +11,7 @@ index 87a8ac4f1635d0f11067da7644987a2cff16aa06..4fc1deebd4ad047fa9f00efbd2d54900 #include "build/build_config.h" #include "chrome/browser/app_mode/app_mode_utils.h" #include "chrome/browser/browser_process.h" -@@ -91,11 +93,12 @@ bool ExtensionsDisabled(const base::CommandLine& command_line) { +@@ -92,11 +94,12 @@ bool ExtensionsDisabled(const base::CommandLine& command_line) { ChromeExtensionsBrowserClient::ChromeExtensionsBrowserClient() { AddAPIProvider(std::make_unique()); AddAPIProvider(std::make_unique()); diff --git a/patches/chrome-browser-extensions-component_loader.h.patch b/patches/chrome-browser-extensions-component_loader.h.patch index 735baec7f9f..a78db28885c 100644 --- a/patches/chrome-browser-extensions-component_loader.h.patch +++ b/patches/chrome-browser-extensions-component_loader.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/extensions/component_loader.h b/chrome/browser/extensions/component_loader.h -index 3f8b640092721536276e478549d8ad5940fe4964..5d7f0ba46efdf2871f333f0010e8e51ad20e6163 100644 +index 77b0a1e8952ece2cd9bb7ea511d7b90b8f8c9abf..d2585bfa2279b5c6e31110e548a0174a9981e892 100644 --- a/chrome/browser/extensions/component_loader.h +++ b/chrome/browser/extensions/component_loader.h -@@ -84,7 +84,7 @@ class ComponentLoader { +@@ -81,7 +81,7 @@ class ComponentLoader { // the loader will skip loading component extensions that weren't supposed to // be loaded unless we are in signed user session (ChromeOS). For all other // platforms this |skip_session_components| is expected to be unset. @@ -11,7 +11,7 @@ index 3f8b640092721536276e478549d8ad5940fe4964..5d7f0ba46efdf2871f333f0010e8e51a // Similar to above but adds the default component extensions for kiosk mode. void AddDefaultComponentExtensionsForKioskMode(bool skip_session_components); -@@ -119,6 +119,7 @@ class ComponentLoader { +@@ -120,6 +120,7 @@ class ComponentLoader { } private: @@ -19,7 +19,7 @@ index 3f8b640092721536276e478549d8ad5940fe4964..5d7f0ba46efdf2871f333f0010e8e51a FRIEND_TEST_ALL_PREFIXES(ComponentLoaderTest, ParseManifest); // Information about a registered component extension. -@@ -164,6 +165,7 @@ class ComponentLoader { +@@ -165,6 +166,7 @@ class ComponentLoader { void AddDefaultComponentExtensionsWithBackgroundPagesForKioskMode(); #if BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION) diff --git a/patches/chrome-browser-extensions-extension_install_prompt.cc.patch b/patches/chrome-browser-extensions-extension_install_prompt.cc.patch index 1a3b9f05ac8..0d9f00fcce0 100644 --- a/patches/chrome-browser-extensions-extension_install_prompt.cc.patch +++ b/patches/chrome-browser-extensions-extension_install_prompt.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc -index f1ed057b1277648c9aa2cb208f92236062f9ecd6..848481f4fef9f03f19ee744d5c77fffca79bee4e 100644 +index c84fc509e52a7abd829c3dc5c4f6b821e5c32fa9..386fdf4f001177d9a779a632568fe821cbfe94db 100644 --- a/chrome/browser/extensions/extension_install_prompt.cc +++ b/chrome/browser/extensions/extension_install_prompt.cc @@ -13,6 +13,7 @@ @@ -10,7 +10,7 @@ index f1ed057b1277648c9aa2cb208f92236062f9ecd6..848481f4fef9f03f19ee744d5c77fffc #include "chrome/browser/extensions/extension_install_prompt_show_params.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/extensions/permissions_updater.h" -@@ -512,7 +513,7 @@ void ExtensionInstallPrompt::ShowDialog( +@@ -509,7 +510,7 @@ void ExtensionInstallPrompt::ShowDialog( const SkBitmap* icon, const ShowDialogCallback& show_dialog_callback) { ShowDialog(done_callback, extension, icon, diff --git a/patches/chrome-browser-extensions-extension_install_prompt.h.patch b/patches/chrome-browser-extensions-extension_install_prompt.h.patch index 314461cc7ca..754aebcb217 100644 --- a/patches/chrome-browser-extensions-extension_install_prompt.h.patch +++ b/patches/chrome-browser-extensions-extension_install_prompt.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h -index 44c0b01772fd3e2a1c1670eb077553e972e05e60..ddbf41e0c2a85293fe03249b9810932e02aa2c2b 100644 +index dcea843a6d7190d4e9e30d6ecce28028f18fd783..6f30d828db13b9f38f184499089d420cdbea4d4b 100644 --- a/chrome/browser/extensions/extension_install_prompt.h +++ b/chrome/browser/extensions/extension_install_prompt.h @@ -87,7 +87,7 @@ class ExtensionInstallPrompt { diff --git a/patches/chrome-browser-extensions-extension_management.cc.patch b/patches/chrome-browser-extensions-extension_management.cc.patch index 4a7bd83501d..05ab72e7987 100644 --- a/patches/chrome-browser-extensions-extension_management.cc.patch +++ b/patches/chrome-browser-extensions-extension_management.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc -index ab6c99a40a84961a61eea241a9dd346f8174eb48..dcdf09c4a5748032716fbc70bad7d12a15c7c566 100644 +index 0c051349bd1a862372dc975923e7fe5cc2129233..8bc5c167f712986694063d26c0dbd5cb5f7386e6 100644 --- a/chrome/browser/extensions/extension_management.cc +++ b/chrome/browser/extensions/extension_management.cc @@ -16,6 +16,7 @@ @@ -10,7 +10,7 @@ index ab6c99a40a84961a61eea241a9dd346f8174eb48..dcdf09c4a5748032716fbc70bad7d12a #include "chrome/browser/extensions/extension_management_constants.h" #include "chrome/browser/extensions/extension_management_internal.h" #include "chrome/browser/extensions/external_policy_loader.h" -@@ -626,7 +627,7 @@ KeyedService* ExtensionManagementFactory::BuildServiceInstanceFor( +@@ -625,7 +626,7 @@ KeyedService* ExtensionManagementFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { TRACE_EVENT0("browser,startup", "ExtensionManagementFactory::BuildServiceInstanceFor"); diff --git a/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch b/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch index 5b53f95cd84..989ebf2d5dc 100644 --- a/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch +++ b/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/external_protocol/external_protocol_handler.cc b/chrome/browser/external_protocol/external_protocol_handler.cc -index a3f16ad264fd2238a1b33685bfdea4d60a091a17..1848f745ea5413beab4fe2a5504ecd572cc2874c 100644 +index f8df0bf3d43cd2a68898d34ecaaf72c986a30868..a119cfba5f34ee8dc9d54b6b4013a74285a87fab 100644 --- a/chrome/browser/external_protocol/external_protocol_handler.cc +++ b/chrome/browser/external_protocol/external_protocol_handler.cc -@@ -186,7 +186,7 @@ ExternalProtocolHandler::BlockState ExternalProtocolHandler::GetBlockState( +@@ -236,7 +236,7 @@ ExternalProtocolHandler::BlockState ExternalProtocolHandler::GetBlockState( // Always allow the hard-coded allowed schemes. for (size_t i = 0; i < base::size(kAllowedSchemes); ++i) { if (kAllowedSchemes[i] == scheme) diff --git a/patches/chrome-browser-importer-external_process_importer_client.cc.patch b/patches/chrome-browser-importer-external_process_importer_client.cc.patch index ce5f8940561..2bedb5eaee0 100644 --- a/patches/chrome-browser-importer-external_process_importer_client.cc.patch +++ b/patches/chrome-browser-importer-external_process_importer_client.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/importer/external_process_importer_client.cc b/chrome/browser/importer/external_process_importer_client.cc -index 7320911bb2c1e848eafe487f9b376df2177521e8..6e7278eb8fd6fc9fd2ad339192e4eb7cf7ba3964 100644 +index d6f6de319f3662dbd1d0b4bf469c8325aea127a9..dd7e12127a6339e1eff0da8307464eb0c256d615 100644 --- a/chrome/browser/importer/external_process_importer_client.cc +++ b/chrome/browser/importer/external_process_importer_client.cc -@@ -69,6 +69,12 @@ void ExternalProcessImporterClient::Start() { +@@ -67,6 +67,12 @@ void ExternalProcessImporterClient::Start() { localized_strings.try_emplace( IDS_BOOKMARK_BAR_FOLDER_NAME, l10n_util::GetStringUTF8(IDS_BOOKMARK_BAR_FOLDER_NAME)); diff --git a/patches/chrome-browser-importer-external_process_importer_host.h.patch b/patches/chrome-browser-importer-external_process_importer_host.h.patch index 970610fed25..ef79ef5a5e4 100644 --- a/patches/chrome-browser-importer-external_process_importer_host.h.patch +++ b/patches/chrome-browser-importer-external_process_importer_host.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/importer/external_process_importer_host.h b/chrome/browser/importer/external_process_importer_host.h -index 08c6f28746cc5f345114a942834db18f5c7a1d41..9b4ba999a26fb5600fce29eed80ad6f974e0a265 100644 +index f8bd5d50910b2a068b964a8377233bf5a25fe618..1af30b9cfc4aa7924864603ee0b10e995fb77ea7 100644 --- a/chrome/browser/importer/external_process_importer_host.h +++ b/chrome/browser/importer/external_process_importer_host.h @@ -72,10 +72,13 @@ class ExternalProcessImporterHost diff --git a/patches/chrome-browser-importer-importer_list.cc.patch b/patches/chrome-browser-importer-importer_list.cc.patch index db235f94664..8ccbcc00e61 100644 --- a/patches/chrome-browser-importer-importer_list.cc.patch +++ b/patches/chrome-browser-importer-importer_list.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/importer/importer_list.cc b/chrome/browser/importer/importer_list.cc -index 71659dd4133d71a90276f364ca685e78533b8979..f33c4354a6e5f7d69ca347e737e272494d1b036e 100644 +index 57c0506feeb1318ed0ed77b47ffce4babfe0b8e1..bc7c6e04098780d12c9c55d676f587ea5b7e8937 100644 --- a/chrome/browser/importer/importer_list.cc +++ b/chrome/browser/importer/importer_list.cc @@ -29,6 +29,9 @@ diff --git a/patches/chrome-browser-io_thread.cc.patch b/patches/chrome-browser-io_thread.cc.patch deleted file mode 100644 index 26696070a93..00000000000 --- a/patches/chrome-browser-io_thread.cc.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc -index 25cb1333363e32f3afe13239b40159dd3444e834..b6e8725370c9bc040b9f4b1ca3e5b61a7351144a 100644 ---- a/chrome/browser/io_thread.cc -+++ b/chrome/browser/io_thread.cc -@@ -237,6 +237,7 @@ net::URLRequestContextGetter* IOThread::system_url_request_context_getter() { - system_url_request_context_getter_ = - base::MakeRefCounted(this); - } else { -+ if (base::FeatureList::IsEnabled(network::features::kNetworkService)) - NOTREACHED(); - } - return system_url_request_context_getter_.get(); diff --git a/patches/chrome-browser-media-webrtc-webrtc_log_uploader.cc.patch b/patches/chrome-browser-media-webrtc-webrtc_log_uploader.cc.patch index acb09012c9d..65f19af23d8 100644 --- a/patches/chrome-browser-media-webrtc-webrtc_log_uploader.cc.patch +++ b/patches/chrome-browser-media-webrtc-webrtc_log_uploader.cc.patch @@ -1,12 +1,12 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc -index ff329ad9104cd0e87f376b8c1771620a771c0be1..904b50859dfb3f9289d9168b7bba8c088c5df141 100644 +index a89794d69357b7bd24853c7a7bb978cec265eb59..65546bb06a1876912fc39f1135c4b6f58c9170bc 100644 --- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc +++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc -@@ -477,6 +477,7 @@ std::string WebRtcLogUploader::CompressLog(WebRtcLogBuffer* buffer) { +@@ -445,6 +445,7 @@ std::string WebRtcLogUploader::CompressLog(WebRtcLogBuffer* buffer) { void WebRtcLogUploader::UploadCompressedLog( const WebRtcLogUploadDoneData& upload_done_data, std::unique_ptr post_data) { + return; // feature disabled in Brave - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CALLED_ON_VALID_SEQUENCE(main_sequence_checker_); DecreaseLogCount(); diff --git a/patches/chrome-browser-net-chrome_network_delegate.h.patch b/patches/chrome-browser-net-chrome_network_delegate.h.patch deleted file mode 100644 index ac229748afa..00000000000 --- a/patches/chrome-browser-net-chrome_network_delegate.h.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h -index 5286e342dec6199c2336622dc0f67eb11427300a..f29a144ad4e1311c3ebc38cfe1297c9113985bfe 100644 ---- a/chrome/browser/net/chrome_network_delegate.h -+++ b/chrome/browser/net/chrome_network_delegate.h -@@ -97,6 +97,7 @@ class ChromeNetworkDelegate : public net::NetworkDelegateImpl { - static void EnableAccessToAllFilesForTesting(bool enabled); - - private: -+ friend class BraveNetworkDelegateBase; - // NetworkDelegate implementation. - int OnBeforeURLRequest(net::URLRequest* request, - net::CompletionOnceCallback callback, diff --git a/patches/chrome-browser-net-chrome_url_request_context_getter.cc.patch b/patches/chrome-browser-net-chrome_url_request_context_getter.cc.patch deleted file mode 100644 index 6c6f0502836..00000000000 --- a/patches/chrome-browser-net-chrome_url_request_context_getter.cc.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/chrome/browser/net/chrome_url_request_context_getter.cc b/chrome/browser/net/chrome_url_request_context_getter.cc -index a931ece03ee26647686419328b9884c2726468db..90d78c0576a8f8df12649ed6dd1a34c48caa4104 100644 ---- a/chrome/browser/net/chrome_url_request_context_getter.cc -+++ b/chrome/browser/net/chrome_url_request_context_getter.cc -@@ -5,7 +5,7 @@ - #include "chrome/browser/net/chrome_url_request_context_getter.h" - - #include -- -+#include "brave/components/brave_shields/browser/adblock_interceptor.h" - #include "base/bind.h" - #include "base/compiler_specific.h" - #include "base/macros.h" -@@ -50,6 +50,7 @@ class FactoryForMain : public ChromeURLRequestContextFactory { - : profile_io_data_(profile_io_data), - request_interceptors_(std::move(request_interceptors)) { - std::swap(protocol_handlers_, *protocol_handlers); -+ request_interceptors_.emplace_back(new brave_shields::AdBlockInterceptor); - } - - net::URLRequestContext* Create() override { -@@ -84,6 +85,7 @@ class FactoryForIsolatedApp : public ChromeURLRequestContextFactory { - network_context_request_(std::move(network_context_request)), - network_context_params_(std::move(network_context_params)) { - std::swap(protocol_handlers_, *protocol_handlers); -+ request_interceptors_.emplace_back(new brave_shields::AdBlockInterceptor); - } - - net::URLRequestContext* Create() override { diff --git a/patches/chrome-browser-net-net_error_tab_helper.cc.patch b/patches/chrome-browser-net-net_error_tab_helper.cc.patch index 71b8de4f9c5..a595064ee59 100644 --- a/patches/chrome-browser-net-net_error_tab_helper.cc.patch +++ b/patches/chrome-browser-net-net_error_tab_helper.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/net/net_error_tab_helper.cc b/chrome/browser/net/net_error_tab_helper.cc -index d39876436dd64faa0bae445c3e0ad1c666dbae17..88eb4e98bdb5a040e26c72f7c5eed9de8ef8bcc8 100644 +index f2dd356b43f396991446ab3a59067e8a44048014..c74fea87daf5b42be11275ee259ae01dfbb773b7 100644 --- a/chrome/browser/net/net_error_tab_helper.cc +++ b/chrome/browser/net/net_error_tab_helper.cc -@@ -234,6 +234,9 @@ void NetErrorTabHelper::InitializePref(WebContents* contents) { +@@ -233,6 +233,9 @@ void NetErrorTabHelper::InitializePref(WebContents* contents) { } bool NetErrorTabHelper::ProbesAllowed() const { diff --git a/patches/chrome-browser-net-system_network_context_manager.cc.patch b/patches/chrome-browser-net-system_network_context_manager.cc.patch index b91462fe043..f2c4a233a83 100644 --- a/patches/chrome-browser-net-system_network_context_manager.cc.patch +++ b/patches/chrome-browser-net-system_network_context_manager.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc -index 2c9b6e9536749bee6c7ca4dbd3c87410e0940f64..835a1af9866f93b779ef5e5be36f0eabe505b815 100644 +index 156b022694d82b7e5b281cc8790b5ad8926a5c9b..a59601dc01c1c94dc6b4e49a62c71e6b056d6e7a 100644 --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -263,7 +263,7 @@ class SystemNetworkContextManager::URLLoaderFactoryForSystem +@@ -250,7 +250,7 @@ class SystemNetworkContextManager::URLLoaderFactoryForSystem if (!manager_) return; manager_->GetURLLoaderFactory()->CreateLoaderAndStart( diff --git a/patches/chrome-browser-notifications-notification_platform_bridge_linux.cc.patch b/patches/chrome-browser-notifications-notification_platform_bridge_linux.cc.patch index 229365dace4..1a6c48cf89f 100644 --- a/patches/chrome-browser-notifications-notification_platform_bridge_linux.cc.patch +++ b/patches/chrome-browser-notifications-notification_platform_bridge_linux.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/notifications/notification_platform_bridge_linux.cc b/chrome/browser/notifications/notification_platform_bridge_linux.cc -index aa6d15f6ebbdcc6e70374a46ca9c11d4c1bff854..5c2bdec672a402edbc3602887fdad9e3cc0056a8 100644 +index 04a4ac46f01173b3a8bdb4ebab1eeea03cfd6c1b..a2a0e8a90a2a564611ffc6e8f8240a63cf597fe6 100644 --- a/chrome/browser/notifications/notification_platform_bridge_linux.cc +++ b/chrome/browser/notifications/notification_platform_bridge_linux.cc -@@ -632,6 +632,7 @@ class NotificationPlatformBridgeLinuxImpl +@@ -648,6 +648,7 @@ class NotificationPlatformBridgeLinuxImpl actions.push_back("Activate"); // Always add a settings button for web notifications. if (notification_type != NotificationHandler::Type::EXTENSION && diff --git a/patches/chrome-browser-permissions-permission_manager.cc.patch b/patches/chrome-browser-permissions-permission_manager.cc.patch index 20dddb1432a..4d4e07cb450 100644 --- a/patches/chrome-browser-permissions-permission_manager.cc.patch +++ b/patches/chrome-browser-permissions-permission_manager.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc -index 3f612a3cf55ce07de9aa5aa29e94e2338377f90a..6f329e24de35557510651069a903853f34fbce42 100644 +index 9f535334da7e3ca1939e98a055ec93662a38b552..81f81e6d2b3dc359d262440dbd20cf995ba88c46 100644 --- a/chrome/browser/permissions/permission_manager.cc +++ b/chrome/browser/permissions/permission_manager.cc -@@ -88,7 +88,7 @@ PermissionStatus ContentSettingToPermissionStatus(ContentSetting setting) { +@@ -89,7 +89,7 @@ PermissionStatus ContentSettingToPermissionStatus(ContentSetting setting) { } // Helper method to convert PermissionType to ContentSettingType. @@ -11,9 +11,9 @@ index 3f612a3cf55ce07de9aa5aa29e94e2338377f90a..6f329e24de35557510651069a903853f switch (permission) { case PermissionType::MIDI: return CONTENT_SETTINGS_TYPE_MIDI; -@@ -132,6 +132,7 @@ ContentSettingsType PermissionTypeToContentSetting(PermissionType permission) { - case PermissionType::PERIODIC_BACKGROUND_SYNC: - return CONTENT_SETTINGS_TYPE_PERIODIC_BACKGROUND_SYNC; +@@ -137,6 +137,7 @@ ContentSettingsType PermissionTypeToContentSetting(PermissionType permission) { + case PermissionType::WAKE_LOCK_SYSTEM: + return CONTENT_SETTINGS_TYPE_WAKE_LOCK_SYSTEM; case PermissionType::NUM: + default: // This will hit the NOTREACHED below. diff --git a/patches/chrome-browser-permissions-permission_uma_util.cc.patch b/patches/chrome-browser-permissions-permission_uma_util.cc.patch index 625c907ed17..18bebf0040b 100644 --- a/patches/chrome-browser-permissions-permission_uma_util.cc.patch +++ b/patches/chrome-browser-permissions-permission_uma_util.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/permissions/permission_uma_util.cc b/chrome/browser/permissions/permission_uma_util.cc -index 97ae8e1ee0339d5714d3baef177a1e27ce219583..431c5256251904e83ed7c7a7245a39b4eef4f1db 100644 +index 50768c0a91bb5f29760e398ed9c6486a06334b49..18c8118777376ddd24e88ad38576be092e214ba0 100644 --- a/chrome/browser/permissions/permission_uma_util.cc +++ b/chrome/browser/permissions/permission_uma_util.cc @@ -65,7 +65,7 @@ namespace { diff --git a/patches/chrome-browser-plugins-chrome_plugin_service_filter.cc.patch b/patches/chrome-browser-plugins-chrome_plugin_service_filter.cc.patch index ca20e66cb67..02357bf63c9 100644 --- a/patches/chrome-browser-plugins-chrome_plugin_service_filter.cc.patch +++ b/patches/chrome-browser-plugins-chrome_plugin_service_filter.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/plugins/chrome_plugin_service_filter.cc b/chrome/browser/plugins/chrome_plugin_service_filter.cc -index 5c2a2d0adf1ca353d4ab8dd23475c9d6e6df3b55..dc8f62521ba5c78fcee7e79d028ee8ddc8964e7f 100644 +index 55801ac0fee766a5f46314137d4745ff8a1d7f24..9acdabbe23d440d7468cbc9ef3b1e589f74db12c 100644 --- a/chrome/browser/plugins/chrome_plugin_service_filter.cc +++ b/chrome/browser/plugins/chrome_plugin_service_filter.cc -@@ -52,7 +52,7 @@ class ProfileContentSettingObserver : public content_settings::Observer { +@@ -51,7 +51,7 @@ class ProfileContentSettingObserver : public content_settings::Observer { PluginService::GetInstance()->PurgePluginListCache(profile_, false); const GURL primary(primary_pattern.ToString()); diff --git a/patches/chrome-browser-plugins-plugins_resource_service.cc.patch b/patches/chrome-browser-plugins-plugins_resource_service.cc.patch index 407468e5925..3447f9bbea8 100644 --- a/patches/chrome-browser-plugins-plugins_resource_service.cc.patch +++ b/patches/chrome-browser-plugins-plugins_resource_service.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser/plugins/plugins_resource_service.cc -index d7c3801df3e8766b2124b4c73ec3a46631aa5d3b..d6d391d47a4b4540f4177034da6ee475100c78b0 100644 +index 85003dd6cb04d27820e182c75fd76169b269a7e1..f3facf8c650cda32fa59bca6735c897f1aede5ca 100644 --- a/chrome/browser/plugins/plugins_resource_service.cc +++ b/chrome/browser/plugins/plugins_resource_service.cc @@ -55,7 +55,7 @@ const int kStartResourceFetchDelayMs = 60 * 1000; diff --git a/patches/chrome-browser-prefs-browser_prefs.cc.patch b/patches/chrome-browser-prefs-browser_prefs.cc.patch index 57f85203cf1..58858f7e63e 100644 --- a/patches/chrome-browser-prefs-browser_prefs.cc.patch +++ b/patches/chrome-browser-prefs-browser_prefs.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc -index 50312cdb0324e3dad18c77c96e5e609bfb259541..2298f9b60d2718d82e721dc8483b114931a30d0d 100644 +index b806315041d481b485a9329097b5b626ff0921b0..73e949fdb3b751b923e759c35f546c9ec38895ea 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -658,6 +658,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -688,6 +688,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { #if defined(TOOLKIT_VIEWS) RegisterBrowserViewLocalPrefs(registry); #endif @@ -10,7 +10,7 @@ index 50312cdb0324e3dad18c77c96e5e609bfb259541..2298f9b60d2718d82e721dc8483b1149 } // Register prefs applicable to all profiles. -@@ -908,6 +909,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -945,6 +946,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #endif RegisterProfilePrefsForMigration(registry); diff --git a/patches/chrome-browser-profiles-profile.cc.patch b/patches/chrome-browser-profiles-profile.cc.patch index a1fe406766b..92b1243ba5d 100644 --- a/patches/chrome-browser-profiles-profile.cc.patch +++ b/patches/chrome-browser-profiles-profile.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc -index 71d736c9eaf3503e532d72c410f4d4dadff372cd..39114245329d5767f8b51a5c9120c76038018d04 100644 +index 28d3c597acc9e58bab439badb1d1dc9baa139048..4e4a3742f9133dcba49a2ec68a1181a345c5f63b 100644 --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc @@ -140,7 +140,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; @@ -11,7 +11,7 @@ index 71d736c9eaf3503e532d72c410f4d4dadff372cd..39114245329d5767f8b51a5c9120c760 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); #if defined(OS_ANDROID) registry->RegisterStringPref( -@@ -244,7 +244,7 @@ bool Profile::IsGuestSession() const { +@@ -257,7 +257,7 @@ bool Profile::IsGuestSession() const { chromeos::switches::kGuestSession); return is_guest_session; #else diff --git a/patches/chrome-browser-profiles-profile_avatar_icon_util.cc.patch b/patches/chrome-browser-profiles-profile_avatar_icon_util.cc.patch index 7f8facd6c79..57e4c12470e 100644 --- a/patches/chrome-browser-profiles-profile_avatar_icon_util.cc.patch +++ b/patches/chrome-browser-profiles-profile_avatar_icon_util.cc.patch @@ -1,17 +1,17 @@ diff --git a/chrome/browser/profiles/profile_avatar_icon_util.cc b/chrome/browser/profiles/profile_avatar_icon_util.cc -index b126966b32db51704639d19c47ed2c1c6c57652a..d8ace4398509ef4952aaab808a27b735bdfd282a 100644 +index c39443398d04974564cd53bc7705dc68cd65e6cc..508f734ab5af72caac46897764d77ada0fa23a50 100644 --- a/chrome/browser/profiles/profile_avatar_icon_util.cc +++ b/chrome/browser/profiles/profile_avatar_icon_util.cc -@@ -261,7 +261,7 @@ constexpr char kHighResAvatarFolderName[] = "Avatars"; - - // The size of the function-static kDefaultAvatarIconResources array below. - #if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) +@@ -265,7 +265,7 @@ constexpr size_t kDefaultAvatarIconsCount = 1; + #elif defined(OS_CHROMEOS) + constexpr size_t kDefaultAvatarIconsCount = 27; + #else -constexpr size_t kDefaultAvatarIconsCount = 56; +constexpr size_t kDefaultAvatarIconsCount = 56 + kBraveDefaultAvatarIconsCount; - #else - constexpr size_t kDefaultAvatarIconsCount = 27; #endif -@@ -362,6 +362,7 @@ size_t GetPlaceholderAvatarIndex() { + + #if !defined(OS_ANDROID) +@@ -372,6 +372,7 @@ size_t GetPlaceholderAvatarIndex() { size_t GetModernAvatarIconStartIndex() { #if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) @@ -19,11 +19,11 @@ index b126966b32db51704639d19c47ed2c1c6c57652a..d8ace4398509ef4952aaab808a27b735 return GetPlaceholderAvatarIndex() + 1; #else // Only use the placeholder avatar on ChromeOS and Android. -@@ -387,6 +388,7 @@ std::string GetPlaceholderAvatarIconUrl() { +@@ -397,6 +398,7 @@ std::string GetPlaceholderAvatarIconUrl() { const IconResourceInfo* GetDefaultAvatarIconResourceInfo(size_t index) { CHECK_LT(index, kDefaultAvatarIconsCount); + BRAVE_GET_DEFAULT_AVATAR_ICON_RESOURCE_INFO static const IconResourceInfo resource_info[kDefaultAvatarIconsCount] = { - // Old avatar icons: - {IDR_PROFILE_AVATAR_0, "avatar_generic.png", IDS_DEFAULT_AVATAR_LABEL_0}, + // Old avatar icons: + #if !defined(OS_ANDROID) diff --git a/patches/chrome-browser-profiles-profile_impl.cc.patch b/patches/chrome-browser-profiles-profile_impl.cc.patch index ad4ce212270..596d6c8df28 100644 --- a/patches/chrome-browser-profiles-profile_impl.cc.patch +++ b/patches/chrome-browser-profiles-profile_impl.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc -index 71619ca3d5271b0f813110dce0e5570b6eebdda7..97003f2bc6f1141ae49dc2a2ac58e5f861fd0615 100644 +index 084648e9606f9847ff722901fb95626677a17c1e..0bcb822c794146ceec8c52c01da8c973fa25b808 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -34,6 +34,7 @@ diff --git a/patches/chrome-browser-profiles-profile_io_data.cc.patch b/patches/chrome-browser-profiles-profile_io_data.cc.patch index 87495c2e791..49db89e3cb7 100644 --- a/patches/chrome-browser-profiles-profile_io_data.cc.patch +++ b/patches/chrome-browser-profiles-profile_io_data.cc.patch @@ -1,16 +1,8 @@ diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc -index a77de6f1abed2133190908db2fe3e417b05bc4f0..e67fcb11518b4d644425fe4275dd7aebb39e68a4 100644 +index 285f9e09a9020e8647fe363f7d3b0c867b1d26ea..10a247b701690ff70f1039a43d94dd164c3f18dd 100644 --- a/chrome/browser/profiles/profile_io_data.cc +++ b/chrome/browser/profiles/profile_io_data.cc -@@ -24,6 +24,7 @@ - #include "base/task/post_task.h" - #include "base/task/task_traits.h" - #include "base/threading/thread_task_runner_handle.h" -+#include "brave/browser/net/brave_profile_network_delegate.h" - #include "build/build_config.h" - #include "chrome/browser/browser_process.h" - #include "chrome/browser/chrome_notification_types.h" -@@ -639,6 +640,9 @@ bool ProfileIOData::IsHandledProtocol(const std::string& scheme) { +@@ -417,6 +417,9 @@ bool ProfileIOData::IsHandledProtocol(const std::string& scheme) { extensions::kExtensionScheme, #endif content::kChromeUIScheme, @@ -20,12 +12,3 @@ index a77de6f1abed2133190908db2fe3e417b05bc4f0..e67fcb11518b4d644425fe4275dd7aeb url::kDataScheme, #if defined(OS_CHROMEOS) content::kExternalFileScheme, -@@ -925,7 +929,7 @@ void ProfileIOData::Init( - std::make_unique(); - - std::unique_ptr chrome_network_delegate( -- new ChromeNetworkDelegate( -+ new BraveProfileNetworkDelegate( - #if BUILDFLAG(ENABLE_EXTENSIONS) - io_thread_globals->extension_event_router_forwarder.get())); - #else diff --git a/patches/chrome-browser-profiles-profile_manager.cc.patch b/patches/chrome-browser-profiles-profile_manager.cc.patch index 00d573f9369..7ae2c1dc431 100644 --- a/patches/chrome-browser-profiles-profile_manager.cc.patch +++ b/patches/chrome-browser-profiles-profile_manager.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc -index 4cce9ca9fbf1ded2c4b8334f8ff9be0d43e97803..7b39473be45be8530eb91c1389c96aa65625a7d1 100644 +index bd2715738d89bc9a099d3be0614f720303b98086..0cd794e5c9b6d5dea803cc00b899524ba2ac75e6 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc -@@ -1503,9 +1503,11 @@ void ProfileManager::EnsureActiveProfileExistsBeforeDeletion( +@@ -1419,9 +1419,11 @@ void ProfileManager::EnsureActiveProfileExistsBeforeDeletion( const base::FilePath last_used_profile_path = GetLastUsedProfileDir(user_data_dir_); const base::FilePath guest_profile_path = GetGuestProfilePath(); @@ -14,7 +14,7 @@ index 4cce9ca9fbf1ded2c4b8334f8ff9be0d43e97803..7b39473be45be8530eb91c1389c96aa6 last_used_profile != nullptr && !last_used_profile->IsLegacySupervised()) { FinishDeletingProfile(profile_dir, last_used_profile_path); -@@ -1518,6 +1520,7 @@ void ProfileManager::EnsureActiveProfileExistsBeforeDeletion( +@@ -1434,6 +1436,7 @@ void ProfileManager::EnsureActiveProfileExistsBeforeDeletion( base::FilePath cur_path = profile->GetPath(); if (cur_path != profile_dir && cur_path != guest_profile_path && @@ -22,7 +22,7 @@ index 4cce9ca9fbf1ded2c4b8334f8ff9be0d43e97803..7b39473be45be8530eb91c1389c96aa6 !profile->IsLegacySupervised() && !IsProfileDirectoryMarkedForDeletion(cur_path)) { OnNewActiveProfileLoaded(profile_dir, cur_path, std::move(callback), -@@ -1537,6 +1540,7 @@ void ProfileManager::EnsureActiveProfileExistsBeforeDeletion( +@@ -1453,6 +1456,7 @@ void ProfileManager::EnsureActiveProfileExistsBeforeDeletion( // legacy-supervised. if (cur_path != profile_dir && cur_path != guest_profile_path && @@ -30,7 +30,7 @@ index 4cce9ca9fbf1ded2c4b8334f8ff9be0d43e97803..7b39473be45be8530eb91c1389c96aa6 !entry->IsLegacySupervised() && !IsProfileDirectoryMarkedForDeletion(cur_path)) { fallback_profile_path = cur_path; -@@ -1894,6 +1898,7 @@ void ProfileManager::ScheduleForcedEphemeralProfileForDeletion( +@@ -1867,6 +1871,7 @@ void ProfileManager::ScheduleForcedEphemeralProfileForDeletion( base::FilePath entry_path = entry->GetPath(); if (entry_path == profile_dir || entry_path == GetGuestProfilePath() || diff --git a/patches/chrome-browser-profiles-profile_manager.h.patch b/patches/chrome-browser-profiles-profile_manager.h.patch index a2f14a3ab8c..fa4a11cd6c5 100644 --- a/patches/chrome-browser-profiles-profile_manager.h.patch +++ b/patches/chrome-browser-profiles-profile_manager.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles/profile_manager.h -index 257e27caed9f6ef1dc984d5cdbae82c3d0daa427..ab13240fbb230326ecd102fa8f60aa5eb17bc4ff 100644 +index 985c64458bdf2c547a5b9286b448aaa2513b2109..a677df807effba3589b6a067ffc940432b064839 100644 --- a/chrome/browser/profiles/profile_manager.h +++ b/chrome/browser/profiles/profile_manager.h -@@ -139,7 +139,7 @@ class ProfileManager : public content::NotificationObserver, +@@ -141,7 +141,7 @@ class ProfileManager : public content::NotificationObserver, // Get the name of the last used profile, or if that's undefined, the default // profile. @@ -11,7 +11,7 @@ index 257e27caed9f6ef1dc984d5cdbae82c3d0daa427..ab13240fbb230326ecd102fa8f60aa5e // Get the Profiles which are currently open, i.e. have open browsers or were // open the last time Chrome was running. Profiles that fail to initialize are -@@ -220,7 +220,7 @@ class ProfileManager : public content::NotificationObserver, +@@ -222,7 +222,7 @@ class ProfileManager : public content::NotificationObserver, // Initializes user prefs of |profile|. This includes profile name and // avatar values. @@ -20,12 +20,12 @@ index 257e27caed9f6ef1dc984d5cdbae82c3d0daa427..ab13240fbb230326ecd102fa8f60aa5e // Register and add testing profile to the ProfileManager. Use ONLY in tests. // This allows the creation of Profiles outside of the standard creation path -@@ -346,7 +346,7 @@ class ProfileManager : public content::NotificationObserver, +@@ -349,7 +349,7 @@ class ProfileManager : public content::NotificationObserver, // Apply settings for profiles created by the system rather than users: The // (desktop) Guest User profile and (desktop) System Profile. - void SetNonPersonalProfilePrefs(Profile* profile); + virtual void SetNonPersonalProfilePrefs(Profile* profile); - // For ChromeOS, determines if profile should be otr. + // Determines if profile should be OTR. bool ShouldGoOffTheRecord(Profile* profile); diff --git a/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch b/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch index df6e978bc65..13b46e0981f 100644 --- a/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch +++ b/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.h b/chrome/browser/renderer_context_menu/render_view_context_menu.h -index 824741727052dfd87f8f65df8bbb5adf4a9f1e2e..3caba335f84e5126c5912451b5dbcc807b21f62a 100644 +index 7e993b49e93d4a51baa2f6f4bc7953ddc099f4c6..f21255d047bbf411ce4d0509da828c7486f7c668 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.h +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.h -@@ -113,6 +113,7 @@ class RenderViewContextMenu : public RenderViewContextMenuBase { +@@ -112,6 +112,7 @@ class RenderViewContextMenu : public RenderViewContextMenuBase { // Returns true if keyboard lock is active and requires the user to press and // hold escape to exit exclusive access mode. bool IsPressAndHoldEscRequiredToExitFullscreen() const; diff --git a/patches/chrome-browser-resources-bookmarks-bookmarks.html.patch b/patches/chrome-browser-resources-bookmarks-bookmarks.html.patch index 39ff82df906..8b0bff57b51 100644 --- a/patches/chrome-browser-resources-bookmarks-bookmarks.html.patch +++ b/patches/chrome-browser-resources-bookmarks-bookmarks.html.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/bookmarks/bookmarks.html b/chrome/browser/resources/bookmarks/bookmarks.html -index b91e6202e695f7347963e1c0dbee0cea46622c62..47978779a4b4cf27b7715276fc068a6163d926df 100644 +index 077405e88cd2b5da78714c900d9d4e392981192e..0698a3fcee0f240fe9dc870292f2e4af7f4cd9d1 100644 --- a/chrome/browser/resources/bookmarks/bookmarks.html +++ b/chrome/browser/resources/bookmarks/bookmarks.html -@@ -28,6 +28,7 @@ +@@ -27,6 +27,7 @@ height: var(--md-toolbar-height); } diff --git a/patches/chrome-browser-resources-bookmarks-toolbar.html.patch b/patches/chrome-browser-resources-bookmarks-toolbar.html.patch index 520934e3907..c2a8715fe24 100644 --- a/patches/chrome-browser-resources-bookmarks-toolbar.html.patch +++ b/patches/chrome-browser-resources-bookmarks-toolbar.html.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/bookmarks/toolbar.html b/chrome/browser/resources/bookmarks/toolbar.html -index 989db07d3c1f7a2ca97044590b04b02ebd86cb1a..cc5bb8387bd51505e7ea39fb4372a7a17b7d5594 100644 +index d008a5ae9a74c9c97d61dd3ec9540baa226d75b2..c430495b1a9501c3730a3a499663b202968c88f1 100644 --- a/chrome/browser/resources/bookmarks/toolbar.html +++ b/chrome/browser/resources/bookmarks/toolbar.html @@ -1,7 +1,7 @@ diff --git a/patches/chrome-browser-resources-cryptotoken-enroller.js.patch b/patches/chrome-browser-resources-cryptotoken-enroller.js.patch deleted file mode 100644 index e8b89ecf44e..00000000000 --- a/patches/chrome-browser-resources-cryptotoken-enroller.js.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/chrome/browser/resources/cryptotoken/enroller.js b/chrome/browser/resources/cryptotoken/enroller.js -index 239721a39805f4845f200a2ec5f0ff09fdee0f3e..829476d48cb0e9dba3bb419087998b323fe81f4f 100644 ---- a/chrome/browser/resources/cryptotoken/enroller.js -+++ b/chrome/browser/resources/cryptotoken/enroller.js -@@ -111,15 +111,7 @@ async function makeCertAndKey(opt_original) { - if (opt_original) { - transport = transportType(opt_original); - } -- if (transport !== null) { -- if (transport.length != 2) { -- throw Error('bad extension length'); -- } -- if (transport[0] < 3) { -- throw Error('too many bits set'); // Only 5 bits are defined. -- } -- } -- -+ - const keyalg = {name: 'ECDSA', namedCurve: 'P-256'}; - const keypair = - await crypto.subtle.generateKey(keyalg, true, ['sign', 'verify']); diff --git a/patches/chrome-browser-resources-downloads-downloads.html.patch b/patches/chrome-browser-resources-downloads-downloads.html.patch index bcbcf36b97d..ab14a6e1ede 100644 --- a/patches/chrome-browser-resources-downloads-downloads.html.patch +++ b/patches/chrome-browser-resources-downloads-downloads.html.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/downloads/downloads.html b/chrome/browser/resources/downloads/downloads.html -index 05a625d0f349264f13bd98fff32984db56aadd2c..1ad650ef5011f79ebf6591ade055338a51a791d1 100644 +index ad88272334d24e2f60327ae30ab1d412a42a6351..43b6993c81b82d814f900d9d06baf6082ba0dd98 100644 --- a/chrome/browser/resources/downloads/downloads.html +++ b/chrome/browser/resources/downloads/downloads.html -@@ -8,6 +8,7 @@ +@@ -7,6 +7,7 @@ $i18n{title} diff --git a/patches/chrome-browser-resources-downloads-manager.html.patch b/patches/chrome-browser-resources-downloads-manager.html.patch index 1a648da2119..f337da16a1d 100644 --- a/patches/chrome-browser-resources-downloads-manager.html.patch +++ b/patches/chrome-browser-resources-downloads-manager.html.patch @@ -1,13 +1,13 @@ diff --git a/chrome/browser/resources/downloads/manager.html b/chrome/browser/resources/downloads/manager.html -index 015710be621743fbc082460a4203b67d8d76372c..8cae2e6f282e558e087a3b60f0a9a84fe9bc1ba8 100644 +index 3415eceeeb53203260a6b9c1d20e96f38dd2c55e..f05a3eabcb4e3f3ba88678880de9eb101f505d70 100644 --- a/chrome/browser/resources/downloads/manager.html +++ b/chrome/browser/resources/downloads/manager.html -@@ -20,7 +20,7 @@ +@@ -22,7 +22,7 @@
diff --git a/patches/chrome-browser-resources-extensions-sidebar.html.patch b/patches/chrome-browser-resources-extensions-sidebar.html.patch index 32a55f4a071..625c7e6bfd8 100644 --- a/patches/chrome-browser-resources-extensions-sidebar.html.patch +++ b/patches/chrome-browser-resources-extensions-sidebar.html.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/extensions/sidebar.html b/chrome/browser/resources/extensions/sidebar.html -index 8aaf1ef5fe8867e044d5d42198019e3009fb9de5..c8622c931c4955f8f7f3c9237bcbeb71135ec7e5 100644 +index 4024fb27744c1435d5349f9b51704cd6ed2d818d..fcb385deea6e984a4cc8d7f07e8925d52c708bb0 100644 --- a/chrome/browser/resources/extensions/sidebar.html +++ b/chrome/browser/resources/extensions/sidebar.html -@@ -78,6 +78,7 @@ +@@ -80,6 +80,7 @@ @@ -10,7 +10,7 @@ index 8aaf1ef5fe8867e044d5d42198019e3009fb9de5..c8622c931c4955f8f7f3c9237bcbeb71 diff --git a/patches/chrome-browser-resources-extensions-toolbar.html.patch b/patches/chrome-browser-resources-extensions-toolbar.html.patch index bb6c2b8ff1b..04410d27f55 100644 --- a/patches/chrome-browser-resources-extensions-toolbar.html.patch +++ b/patches/chrome-browser-resources-extensions-toolbar.html.patch @@ -1,13 +1,13 @@ diff --git a/chrome/browser/resources/extensions/toolbar.html b/chrome/browser/resources/extensions/toolbar.html -index 77ee1f84a66d142b39d34c65bfdc5206061e8c8e..393bea8e5be687d710e11ca7199ecf5d1816ab29 100644 +index 7e08974284adad472b8691ace100770ebd64475c..da03ebaf3c24caf1a227448fada709604bc6cddd 100644 --- a/chrome/browser/resources/extensions/toolbar.html +++ b/chrome/browser/resources/extensions/toolbar.html -@@ -2,7 +2,7 @@ - +@@ -3,7 +3,7 @@ + - + - + diff --git a/patches/chrome-browser-resources-history-app.html.patch b/patches/chrome-browser-resources-history-app.html.patch index d8c2dff4606..424ed72b282 100644 --- a/patches/chrome-browser-resources-history-app.html.patch +++ b/patches/chrome-browser-resources-history-app.html.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/history/app.html b/chrome/browser/resources/history/app.html -index 736edaf8f1d13ca634b95fd474bf53a06bdd20d6..031eeff954ccb6484a03e7af19205ccd3bbebd29 100644 +index 2e14bd06efe2f8e9df369a24129c4223b3e1cbad..b7a59a270f43fb291d62e7fc00e7b274bed72756 100644 --- a/chrome/browser/resources/history/app.html +++ b/chrome/browser/resources/history/app.html -@@ -92,6 +92,7 @@ +@@ -89,6 +89,7 @@ query-result="[[queryResult_]]" path="history"> @@ -10,7 +10,7 @@ index 736edaf8f1d13ca634b95fd474bf53a06bdd20d6..031eeff954ccb6484a03e7af19205ccd diff --git a/patches/chrome-browser-resources-history-history.html.patch b/patches/chrome-browser-resources-history-history.html.patch index c36e31e8692..de0f2a24679 100644 --- a/patches/chrome-browser-resources-history-history.html.patch +++ b/patches/chrome-browser-resources-history-history.html.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/history/history.html b/chrome/browser/resources/history/history.html -index 18214b510f5ee80dc272eca6677c087f4a67b227..38b9e7eac0db5e7447b3ed255d6c3a2c4f7f1008 100644 +index af0c23e206f7ffb21e3aa21fc869cde92e127fe8..e82c0b1d2ef678c8437c89434ebb22750a4ee652 100644 --- a/chrome/browser/resources/history/history.html +++ b/chrome/browser/resources/history/history.html -@@ -75,6 +75,7 @@ +@@ -77,6 +77,7 @@ justify-content: center; } diff --git a/patches/chrome-browser-resources-history-history_item.html.patch b/patches/chrome-browser-resources-history-history_item.html.patch index 2b4eca9897d..640f0699de2 100644 --- a/patches/chrome-browser-resources-history-history_item.html.patch +++ b/patches/chrome-browser-resources-history-history_item.html.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/history/history_item.html b/chrome/browser/resources/history/history_item.html -index d8a261a0b06749cf43bfe3b1fb678d5e6985c505..8d8c28551e6547fb8f413c43d1dce6687d1c008b 100644 +index a8094b71a5895431602912b5d595939b094dbefe..81d996d333742fc2894727cd1013399a7d42d3b2 100644 --- a/chrome/browser/resources/history/history_item.html +++ b/chrome/browser/resources/history/history_item.html @@ -14,11 +14,12 @@ diff --git a/patches/chrome-browser-resources-history-history_toolbar.html.patch b/patches/chrome-browser-resources-history-history_toolbar.html.patch index 8417eb3b051..aea11f4c8c4 100644 --- a/patches/chrome-browser-resources-history-history_toolbar.html.patch +++ b/patches/chrome-browser-resources-history-history_toolbar.html.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/history/history_toolbar.html b/chrome/browser/resources/history/history_toolbar.html -index cd86b39440a18e9876082d6cfba1bdb121a9b0ee..7a65c018de5d89a7972c20688991d7e1b09375e3 100644 +index 9357ef7446d8a800a69d029fc86374395db41fc1..0626601b11280c52b96dd8257318a4b6565ea015 100644 --- a/chrome/browser/resources/history/history_toolbar.html +++ b/chrome/browser/resources/history/history_toolbar.html @@ -1,6 +1,6 @@ diff --git a/patches/chrome-browser-resources-local_discovery-local_discovery.js.patch b/patches/chrome-browser-resources-local_discovery-local_discovery.js.patch index 0eb192ecaff..14ad0bb3264 100644 --- a/patches/chrome-browser-resources-local_discovery-local_discovery.js.patch +++ b/patches/chrome-browser-resources-local_discovery-local_discovery.js.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/local_discovery/local_discovery.js b/chrome/browser/resources/local_discovery/local_discovery.js -index 780d9abd46e3f3a3d808fd268d6f33af7205909b..5c6bb04e40fd8c2e4d01e5b6738281c93f8608f9 100644 +index 7094e5cec6bca24d97a80775dbf4fb5281ddfa4b..983e5120d92faef64cf635e67f5b0f794ca4f549 100644 --- a/chrome/browser/resources/local_discovery/local_discovery.js +++ b/chrome/browser/resources/local_discovery/local_discovery.js -@@ -584,6 +584,7 @@ cr.define('local_discovery', function() { +@@ -541,6 +541,7 @@ cr.define('local_discovery', function() { $('cloud-devices-retry-link') .addEventListener('click', retryLoadCloudDevices); @@ -10,7 +10,7 @@ index 780d9abd46e3f3a3d808fd268d6f33af7205909b..5c6bb04e40fd8c2e4d01e5b6738281c9 $('cloud-devices-login-link') .addEventListener('click', cloudDevicesLoginButtonClicked); -@@ -592,6 +593,7 @@ cr.define('local_discovery', function() { +@@ -549,6 +550,7 @@ cr.define('local_discovery', function() { $('register-overlay-login-button') .addEventListener('click', registerOverlayLoginButtonClicked); diff --git a/patches/chrome-browser-resources-settings-BUILD.gn.patch b/patches/chrome-browser-resources-settings-BUILD.gn.patch index b6b44203e01..c3ba1e5cf72 100644 --- a/patches/chrome-browser-resources-settings-BUILD.gn.patch +++ b/patches/chrome-browser-resources-settings-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn -index 39d59932f307692f57514d816b6d0494f6e123de..c990d8b8f04f93b7f1bf5107722cd62295ffaed7 100644 +index 90c81d104577e075749584511f53770fe31c9105..f7aa87e98d6c65e35529543721ba02b78ea73d6c 100644 --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn @@ -31,6 +31,7 @@ if (optimize_webui) { diff --git a/patches/chrome-browser-resources-settings-about_page-about_page.html.patch b/patches/chrome-browser-resources-settings-about_page-about_page.html.patch index c9404708155..11b1d6755d1 100644 --- a/patches/chrome-browser-resources-settings-about_page-about_page.html.patch +++ b/patches/chrome-browser-resources-settings-about_page-about_page.html.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/settings/about_page/about_page.html b/chrome/browser/resources/settings/about_page/about_page.html -index 9c777d16b4809b21160fd652b25ce251e0fa0280..a56506960739dce151a2099fb83ad694d4c5b28a 100644 +index 18c371cdbbe94c2b995988994408543ed9dccbcb..d971ad5e836246fa51edbe0d380a7defd5d155c9 100644 --- a/chrome/browser/resources/settings/about_page/about_page.html +++ b/chrome/browser/resources/settings/about_page/about_page.html -@@ -132,7 +132,7 @@ +@@ -136,7 +136,7 @@ diff --git a/patches/chrome-browser-resources-settings-appearance_page-appearance_page.html.patch b/patches/chrome-browser-resources-settings-appearance_page-appearance_page.html.patch index 5a001cf5cb0..3b5fbd68a67 100644 --- a/patches/chrome-browser-resources-settings-appearance_page-appearance_page.html.patch +++ b/patches/chrome-browser-resources-settings-appearance_page-appearance_page.html.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/appearance_page/appearance_page.html b/chrome/browser/resources/settings/appearance_page/appearance_page.html -index e9797c97d52d103cec43f84df00f6c566792ba8d..5acbbe09534565ea745b6565da06d06f673f3106 100644 +index df9863a3a64cec001f2d4a40663b0fe8512e9a25..782529ff189b082467619b1f74de65dc963d56ea 100644 --- a/chrome/browser/resources/settings/appearance_page/appearance_page.html +++ b/chrome/browser/resources/settings/appearance_page/appearance_page.html @@ -18,6 +18,12 @@ @@ -15,7 +15,7 @@ index e9797c97d52d103cec43f84df00f6c566792ba8d..5acbbe09534565ea745b6565da06d06f + + + + diff --git a/utility/BUILD.gn b/utility/BUILD.gn index fc780d8e535..8293abe50a2 100644 --- a/utility/BUILD.gn +++ b/utility/BUILD.gn @@ -35,6 +35,9 @@ source_set("utility") { ] deps += [ + "//base", + "//chrome/app:chromium_strings", + "//components/os_crypt", "//components/password_manager/core/browser", ] } @@ -50,10 +53,4 @@ source_set("utility") { if (brave_rewards_enabled) { deps += [ "//brave/components/services/bat_ledger:lib" ] } - - defines = [] - if (use_glib) { - defines += [ "USE_LIBSECRET" ] - deps += [ "//third_party/libsecret" ] - } } diff --git a/utility/importer/brave_importer.cc b/utility/importer/brave_importer.cc index d6039031a28..ffda5851eda 100644 --- a/utility/importer/brave_importer.cc +++ b/utility/importer/brave_importer.cc @@ -39,19 +39,6 @@ #include "sql/statement.h" #include "url/gurl.h" -#if defined(OS_LINUX) -#include "components/os_crypt/key_storage_config_linux.h" -#endif - -#if defined(USE_X11) -#if defined(USE_LIBSECRET) -#include "chrome/browser/password_manager/native_backend_libsecret.h" -#endif -#include "chrome/browser/password_manager/native_backend_kwallet_x.h" -#include "chrome/browser/password_manager/password_store_x.h" -#include "components/os_crypt/key_storage_util_linux.h" -#endif - using base::Time; BraveImporter::BraveImporter() { diff --git a/utility/importer/chrome_importer.cc b/utility/importer/chrome_importer.cc index 2d039b709d7..b6174000816 100644 --- a/utility/importer/chrome_importer.cc +++ b/utility/importer/chrome_importer.cc @@ -7,6 +7,7 @@ #include #include +#include #include "base/files/file_util.h" #include "base/json/json_reader.h" @@ -39,21 +40,9 @@ #if defined(OS_LINUX) #include "components/os_crypt/key_storage_config_linux.h" -#endif - -#if defined(USE_X11) -#if defined(USE_LIBSECRET) -#include "chrome/browser/password_manager/native_backend_libsecret.h" -#endif -#include "chrome/browser/password_manager/native_backend_kwallet_x.h" -#include "chrome/browser/password_manager/password_store_x.h" -#include "components/os_crypt/key_storage_util_linux.h" - -base::nix::DesktopEnvironment ChromeImporter::GetDesktopEnvironment() { - std::unique_ptr env(base::Environment::Create()); - return base::nix::GetDesktopEnvironment(env.get()); -} -#endif +#include "chrome/grit/chromium_strings.h" +#include "ui/base/l10n/l10n_util.h" +#endif // defined(OS_LINUX) using base::Time; @@ -314,92 +303,37 @@ double ChromeImporter::chromeTimeToDouble(int64_t time) { } void ChromeImporter::ImportPasswords(const base::FilePath& prefs_filename) { - #if !defined(USE_X11) - base::FilePath passwords_path = - source_path_.Append( - base::FilePath::StringType(FILE_PATH_LITERAL("Login Data"))); - - password_manager::LoginDatabase database(passwords_path); - if (!database.Init()) { - LOG(ERROR) << "LoginDatabase Init() failed"; - return; - } +#if defined(OS_LINUX) + // Set up crypt config. + std::unique_ptr config(new os_crypt::Config()); + config->product_name = l10n_util::GetStringUTF8(IDS_PRODUCT_NAME); + config->should_use_preference = false; + config->user_data_path = source_path_; + OSCrypt::SetConfig(std::move(config)); +#endif + base::FilePath passwords_path = source_path_.Append( + base::FilePath::StringType(FILE_PATH_LITERAL("Login Data"))); - std::vector> forms; - bool success = database.GetAutofillableLogins(&forms); - if (success) { - for (size_t i = 0; i < forms.size(); ++i) { - bridge_->SetPasswordForm(*forms[i].get()); - } - } - std::vector> blacklist; - success = database.GetBlacklistLogins(&blacklist); - if (success) { - for (size_t i = 0; i < blacklist.size(); ++i) { - bridge_->SetPasswordForm(*blacklist[i].get()); - } - } - #else - base::FilePath prefs_path = source_path_.Append(prefs_filename); - const base::Value *value; - scoped_refptr prefs = new JsonPrefStore(prefs_path); - int local_profile_id; - if (prefs->ReadPrefs() != PersistentPrefStore::PREF_READ_ERROR_NONE) { - return; - } - if (!prefs->GetValue(password_manager::prefs::kLocalProfileId, &value)) { - return; - } - if (!value->GetAsInteger(&local_profile_id)) { - return; - } + password_manager::LoginDatabase database(passwords_path); + if (!database.Init()) { + LOG(ERROR) << "LoginDatabase Init() failed"; + return; + } - std::unique_ptr backend; - base::nix::DesktopEnvironment desktop_env = GetDesktopEnvironment(); - - // WIP proper kEnableEncryptionSelection - os_crypt::SelectedLinuxBackend selected_backend = - os_crypt::SelectBackend(std::string(), true, desktop_env); - if (!backend && - (selected_backend == os_crypt::SelectedLinuxBackend::KWALLET || - selected_backend == os_crypt::SelectedLinuxBackend::KWALLET5)) { - base::nix::DesktopEnvironment used_desktop_env = - selected_backend == os_crypt::SelectedLinuxBackend::KWALLET - ? base::nix::DESKTOP_ENVIRONMENT_KDE4 - : base::nix::DESKTOP_ENVIRONMENT_KDE5; - backend.reset(new NativeBackendKWallet(local_profile_id, - used_desktop_env)); - } else if (selected_backend == os_crypt::SelectedLinuxBackend::GNOME_ANY || - selected_backend == - os_crypt::SelectedLinuxBackend::GNOME_KEYRING || - selected_backend == - os_crypt::SelectedLinuxBackend::GNOME_LIBSECRET) { - #if defined(USE_LIBSECRET) - if (!backend && - (selected_backend == os_crypt::SelectedLinuxBackend::GNOME_ANY || - selected_backend == - os_crypt::SelectedLinuxBackend::GNOME_LIBSECRET)) { - backend.reset(new NativeBackendLibsecret(local_profile_id)); - } - #endif + std::vector> forms; + bool success = database.GetAutofillableLogins(&forms); + if (success) { + for (size_t i = 0; i < forms.size(); ++i) { + bridge_->SetPasswordForm(*forms[i].get()); } - if (backend && backend->Init()) { - std::vector> forms; - bool success = backend->GetAutofillableLogins(&forms); - if (success) { - for (size_t i = 0; i < forms.size(); ++i) { - bridge_->SetPasswordForm(*forms[i].get()); - } - } - std::vector> blacklist; - success = backend->GetBlacklistLogins(&blacklist); - if (success) { - for (size_t i = 0; i < blacklist.size(); ++i) { - bridge_->SetPasswordForm(*blacklist[i].get()); - } - } + } + std::vector> blacklist; + success = database.GetBlacklistLogins(&blacklist); + if (success) { + for (size_t i = 0; i < blacklist.size(); ++i) { + bridge_->SetPasswordForm(*blacklist[i].get()); } - #endif + } } void ChromeImporter::ImportCookies() {