Explorar el Código

fix patches for 96.0.4664.45

Carmelo Messina hace 3 años
padre
commit
8de44cb775

+ 6 - 6
build/patches/Add-a-proxy-configuration-page.patch

@@ -801,7 +801,7 @@ new file mode 100644
 +  }
 +
 +  proxy_config_service_ = ProxyServiceFactory::CreateProxyConfigService(
-+      pref_proxy_config_tracker_.get());
++      pref_proxy_config_tracker_.get(), nullptr);
 +}
 +
 +void ProxyConfigMessageHandler::OnProxyConfigChanged(
@@ -1332,7 +1332,7 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
 +    std::string proxy_list;
 +    for (const ProxyServer& proxy_server :
 +         single_proxies.GetAll()) {
-+      proxy_list += proxy_server.ToURI() + ";";
++      proxy_list += ProxyServerToProxyUri(proxy_server) + ";";
 +    }
 +    // remove last semicolon
 +    if (proxy_list.length() != 0 ) {
@@ -1351,19 +1351,19 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
 +  std::string list;
 +  for (const ProxyServer& proxy_server :
 +       proxies_for_http.GetAll()) {
-+    list += "http=" + proxy_server.ToURI() + ";";
++    list += "http=" + ProxyServerToProxyUri(proxy_server) + ";";
 +  }
 +  for (const ProxyServer& proxy_server :
 +       proxies_for_https.GetAll()) {
-+    list += "https=" + proxy_server.ToURI() + ";";
++    list += "https=" + ProxyServerToProxyUri(proxy_server) + ";";
 +  }
 +  for (const ProxyServer& proxy_server :
 +       proxies_for_ftp.GetAll()) {
-+    list += "ftp=" + proxy_server.ToURI() + ";";
++    list += "ftp=" + ProxyServerToProxyUri(proxy_server) + ";";
 +  }
 +  for (const ProxyServer& proxy_server :
 +       fallback_proxies.GetAll()) {
-+    list += "socks=" + proxy_server.ToURI() + ";";
++    list += "socks=" + ProxyServerToProxyUri(proxy_server) + ";";
 +  }
 +  if (list.length() != 0 ) {
 +    // remove last semicolon

+ 6 - 7
build/patches/Add-bookmark-import-export-actions.patch

@@ -14,7 +14,7 @@ Completely remove contacts picker permission from the file dialog
  .../browser/TabbedModeTabDelegateFactory.java |   5 +-
  .../browser/bookmarks/BookmarkActionBar.java  |  12 +
  .../browser/bookmarks/BookmarkActivity.java   |  30 ++
- .../browser/bookmarks/BookmarkBridge.java     | 278 +++++++++++++++++
+ .../browser/bookmarks/BookmarkBridge.java     | 277 +++++++++++++++++
  .../browser/bookmarks/BookmarkDelegate.java   |  10 +
  .../browser/bookmarks/BookmarkManager.java    |  22 ++
  .../browser/bookmarks/BookmarkPage.java       |   8 +-
@@ -44,7 +44,7 @@ Completely remove contacts picker permission from the file dialog
  ui/shell_dialogs/select_file_dialog.h         |   2 +
  .../select_file_dialog_android.cc             |   6 +
  ui/shell_dialogs/select_file_dialog_android.h |   2 +
- 38 files changed, 892 insertions(+), 29 deletions(-)
+ 38 files changed, 891 insertions(+), 29 deletions(-)
 
 diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc
 --- a/base/android/content_uri_utils.cc
@@ -364,7 +364,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  
  /**
   * Provides the communication channel for Android to fetch and manipulate the
-@@ -588,6 +626,210 @@ public class BookmarkBridge {
+@@ -588,6 +626,209 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType());
      }
  
@@ -529,7 +529,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 +                                    .with(ModalDialogProperties.CUSTOM_VIEW, mCustomView)
 +                                    .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources,
 +                                            R.string.export_bookmarks)
-+                                    .with(ModalDialogProperties.PRIMARY_BUTTON_FILLED, true)
 +                                    .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources,
 +                                            R.string.cancel)
 +                                    .build();
@@ -569,13 +568,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 +        };
 +        dialog.initialize(controller);
 +        dialog.showDialog(context, modalDialogManager, /*totalBytes*/ 0,
-+            DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "");
++            DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "", /*isIncognito*/false);
 +    }
 +
      /**
       * Synchronously gets a list of bookmarks that match the specified search query.
       * @param query Keyword used for searching bookmarks.
-@@ -1100,6 +1342,39 @@ public class BookmarkBridge {
+@@ -1100,6 +1341,39 @@ public class BookmarkBridge {
          depthList.add(depth);
      }
  
@@ -615,7 +614,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
          List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
          for (int i = 0; i < left.length; i++) {
-@@ -1167,6 +1442,9 @@ public class BookmarkBridge {
+@@ -1167,6 +1441,9 @@ public class BookmarkBridge {
          int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
          void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
                  List<BookmarkId> bookmarksList);

+ 14 - 12
build/patches/Add-history-support-in-incognito-mode.patch

@@ -35,9 +35,9 @@ See also: https://github.com/bromite/bromite/pull/1427
  .../android/offline_page_bridge.cc            |  13 +-
  .../android/offline_page_model_factory.cc     |  21 +-
  .../android/request_coordinator_factory.cc    |  17 +
- .../offline_page_model_factory.h              |   1 +
+ .../offline_page_model_factory.h              |   2 +
  .../offline_pages/recent_tab_helper.cc        |  12 +
- .../request_coordinator_factory.h             |   2 +
+ .../request_coordinator_factory.h             |   3 +
  chrome/browser/prefs/browser_prefs.cc         |   3 +
  .../browser/ui/android/native_page/BUILD.gn   |   2 +
  .../browser/ui/native_page/NativePage.java    |   6 +-
@@ -46,7 +46,7 @@ See also: https://github.com/bromite/bromite/pull/1427
  chrome/common/pref_names.cc                   |   5 +
  chrome/common/pref_names.h                    |   4 +
  chrome/test/BUILD.gn                          |   5 +
- 36 files changed, 1044 insertions(+), 38 deletions(-)
+ 36 files changed, 1046 insertions(+), 38 deletions(-)
  create mode 100644 chrome/android/javatests/src/org/chromium/chrome/browser/history/Bromite_HistoryManagerTest.java
  create mode 100644 chrome/android/javatests/src/org/chromium/chrome/browser/privacy/settings/Bromite_PrivacySettingsFragmentTest_HistoryInAlwaysIncognito.java
  create mode 100644 chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/Bromite_AppMenuPropertiesDelegateUnitTest.java
@@ -1516,14 +1516,15 @@ diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc
 diff --git a/chrome/browser/offline_pages/offline_page_model_factory.h b/chrome/browser/offline_pages/offline_page_model_factory.h
 --- a/chrome/browser/offline_pages/offline_page_model_factory.h
 +++ b/chrome/browser/offline_pages/offline_page_model_factory.h
-@@ -51,6 +51,7 @@ class OfflinePageModelFactory : public SimpleKeyedServiceFactory {
+@@ -49,6 +49,8 @@ class OfflinePageModelFactory : public SimpleKeyedServiceFactory {
+ 
+   std::unique_ptr<KeyedService> BuildServiceInstanceFor(
        SimpleFactoryKey* key) const override;
++
++  SimpleFactoryKey* GetKeyToUse(SimpleFactoryKey* key) const override;
  };
  
-+  SimpleFactoryKey* GetKeyToUse(SimpleFactoryKey* key) const override;
  }  // namespace offline_pages
- 
- #endif  // CHROME_BROWSER_OFFLINE_PAGES_OFFLINE_PAGE_MODEL_FACTORY_H_
 diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/offline_pages/recent_tab_helper.cc
 --- a/chrome/browser/offline_pages/recent_tab_helper.cc
 +++ b/chrome/browser/offline_pages/recent_tab_helper.cc
@@ -1556,15 +1557,16 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
 diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome/browser/offline_pages/request_coordinator_factory.h
 --- a/chrome/browser/offline_pages/request_coordinator_factory.h
 +++ b/chrome/browser/offline_pages/request_coordinator_factory.h
-@@ -39,6 +39,8 @@ class RequestCoordinatorFactory : public BrowserContextKeyedServiceFactory {
-       content::BrowserContext* context) const override;
- };
+@@ -37,6 +37,9 @@ class RequestCoordinatorFactory : public BrowserContextKeyedServiceFactory {
  
+   KeyedService* BuildServiceInstanceFor(
+       content::BrowserContext* context) const override;
++
 +  content::BrowserContext* GetBrowserContextToUse(
 +      content::BrowserContext* context) const override;
- }  // namespace offline_pages
+ };
  
- #endif  // CHROME_BROWSER_OFFLINE_PAGES_REQUEST_COORDINATOR_FACTORY_H_
+ }  // namespace offline_pages
 diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc

+ 9 - 10
build/patches/Add-option-to-force-tablet-UI.patch

@@ -9,11 +9,11 @@ Subject: Add option to force tablet UI
  .../preferences/LegacyChromePreferenceKeys.java        |  1 +
  .../chrome/browser/omnibox/LocationBarCoordinator.java |  2 +-
  .../ui/android/strings/android_chrome_strings.grd      |  6 ++++++
- .../browser/toolbar/top/ToolbarControlContainer.java   |  2 +-
+ .../browser/toolbar/top/ToolbarControlContainer.java   |  1 -
  components/BUILD.gn                                    |  4 ++--
  ui/android/BUILD.gn                                    |  2 ++
  .../src/org/chromium/ui/base/DeviceFormFactor.java     |  5 +++++
- 10 files changed, 34 insertions(+), 4 deletions(-)
+ 10 files changed, 33 insertions(+), 4 deletions(-)
 
 diff --git a/chrome/android/java/res/xml/accessibility_preferences.xml b/chrome/android/java/res/xml/accessibility_preferences.xml
 --- a/chrome/android/java/res/xml/accessibility_preferences.xml
@@ -117,15 +117,14 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
 +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
-@@ -114,7 +114,7 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con
-             // On tablet, draw a fake tab strip and toolbar until the compositor is
-             // ready to draw the real tab strip. (On phone, the toolbar is made entirely
-             // of Android views, which are already initialized.)
--            final Drawable backgroundDrawable =
-+//             final Drawable backgroundDrawable =
-                     AppCompatResources.getDrawable(getContext(), R.drawable.toolbar_background)
-                             .mutate();
+@@ -120,7 +120,6 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con
              backgroundDrawable.setTint(
+                     ChromeColors.getDefaultThemeColor(getContext(), isIncognito));
+             backgroundDrawable.setTintMode(PorterDuff.Mode.MULTIPLY);
+-            setBackground(backgroundDrawable);
+         }
+     }
+ 
 diff --git a/components/BUILD.gn b/components/BUILD.gn
 --- a/components/BUILD.gn
 +++ b/components/BUILD.gn

+ 59 - 4
build/patches/Disable-FLoC.patch

@@ -18,17 +18,18 @@ Also added the disabling of blink features through the DisabledForBromite tag
  components/history/core/browser/url_row.h     |  1 -
  third_party/blink/common/features.cc          |  4 +-
  .../permissions_policy_feature.mojom          |  5 --
- .../blink/renderer/core/dom/document.cc       |  3 +-
+ .../renderer/bindings/generated_in_core.gni   |  2 -
+ .../blink/renderer/core/dom/document.cc       | 31 +---------
  .../blink/renderer/core/dom/document.idl      |  1 -
  .../renderer/core/dom/interest_cohort.idl     |  4 --
  .../permissions_policy_features.json5         |  6 --
  .../platform/runtime_enabled_features.json5   |  5 +-
- 17 files changed, 38 insertions(+), 134 deletions(-)
+ 18 files changed, 38 insertions(+), 164 deletions(-)
 
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -2774,6 +2774,10 @@ bool ChromeContentBrowserClient::IsConversionMeasurementOperationAllowed(
+@@ -2776,6 +2776,10 @@ bool ChromeContentBrowserClient::IsConversionMeasurementOperationAllowed(
      const url::Origin* impression_origin,
      const url::Origin* conversion_origin,
      const url::Origin* reporting_origin) {
@@ -390,10 +391,30 @@ diff --git a/third_party/blink/public/mojom/permissions_policy/permissions_polic
    // Controls whether Autofill may fill fields in that frame when triggered on
    // a field with the main frame's origin.
    kSharedAutofill = 83,
+diff --git a/third_party/blink/renderer/bindings/generated_in_core.gni b/third_party/blink/renderer/bindings/generated_in_core.gni
+--- a/third_party/blink/renderer/bindings/generated_in_core.gni
++++ b/third_party/blink/renderer/bindings/generated_in_core.gni
+@@ -201,8 +201,6 @@ generated_dictionary_sources_in_core = [
+   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_input_device_capabilities_init.h",
+   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_input_event_init.cc",
+   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_input_event_init.h",
+-  "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_interest_cohort.cc",
+-  "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_interest_cohort.h",
+   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_init.cc",
+   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_init.h",
+   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_intrinsic_sizes_result_options.cc",
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -5998,8 +5998,7 @@ ScriptPromise Document::interestCohort(ScriptState* script_state,
+@@ -79,7 +79,6 @@
+ #include "third_party/blink/renderer/bindings/core/v8/source_location.h"
+ #include "third_party/blink/renderer/bindings/core/v8/v8_element_creation_options.h"
+ #include "third_party/blink/renderer/bindings/core/v8/v8_element_registration_options.h"
+-#include "third_party/blink/renderer/bindings/core/v8/v8_interest_cohort.h"
+ #include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
+ #include "third_party/blink/renderer/bindings/core/v8/v8_union_elementcreationoptions_string.h"
+ #include "third_party/blink/renderer/bindings/core/v8/v8_union_htmlscriptelement_svgscriptelement.h"
+@@ -5998,8 +5997,7 @@ ScriptPromise Document::interestCohort(ScriptState* script_state,
      return ScriptPromise();
    }
  
@@ -403,6 +424,40 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
      exception_state.ThrowDOMException(
          DOMExceptionCode::kInvalidAccessError,
          "The \"interest-cohort\" Permissions Policy denied the use of "
+@@ -6011,33 +6009,6 @@ ScriptPromise Document::interestCohort(ScriptState* script_state,
+       MakeGarbageCollected<ScriptPromiseResolver>(script_state);
+ 
+   ScriptPromise promise = resolver->Promise();
+-
+-  GetFlocService(ExecutionContext::From(script_state))
+-      ->GetInterestCohort(WTF::Bind(
+-          [](ScriptPromiseResolver* resolver, Document* document,
+-             mojom::blink::InterestCohortPtr interest_cohort) {
+-            DCHECK(resolver);
+-            DCHECK(document);
+-
+-            if (interest_cohort->version.IsEmpty()) {
+-              ScriptState* state = resolver->GetScriptState();
+-              ScriptState::Scope scope(state);
+-
+-              resolver->Reject(V8ThrowDOMException::CreateOrEmpty(
+-                  state->GetIsolate(), DOMExceptionCode::kDataError,
+-                  "Failed to get the interest cohort: either it is "
+-                  "unavailable, or preferences or content settings have "
+-                  "denied access."));
+-            } else {
+-              InterestCohort* result = InterestCohort::Create();
+-              result->setId(interest_cohort->id);
+-              result->setVersion(interest_cohort->version);
+-
+-              resolver->Resolve(result);
+-            }
+-          },
+-          WrapPersistent(resolver), WrapPersistent(this)));
+-
+   return promise;
+ }
+ 
 diff --git a/third_party/blink/renderer/core/dom/document.idl b/third_party/blink/renderer/core/dom/document.idl
 --- a/third_party/blink/renderer/core/dom/document.idl
 +++ b/third_party/blink/renderer/core/dom/document.idl

+ 1 - 1
build/patches/Disable-conversion-measurement-api.patch

@@ -210,7 +210,7 @@ diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/
  
  // static
 -bool AttributionStorageSql::g_run_in_memory_ = false;
-+bool ConversionStorageSql::g_run_in_memory_ = true; // use in-memory db
++bool AttributionStorageSql::g_run_in_memory_ = true; // use in-memory db
  
  AttributionStorageSql::AttributionStorageSql(
      const base::FilePath& path_to_database,

+ 112 - 85
build/patches/Disable-safe-browsing.patch

@@ -8,6 +8,7 @@ Disable CrowdDeny feature
 ---
  .../res/xml/google_services_preferences.xml   | 10 ---
  .../android/java/res/xml/main_preferences.xml |  5 --
+ .../java/res/xml/manage_sync_preferences.xml  | 12 ----
  .../java/res/xml/privacy_preferences.xml      |  9 ---
  .../EnhancedProtectionPromoController.java    |  8 ---
  .../EnhancedProtectionPromoUtils.java         |  3 +-
@@ -21,13 +22,13 @@ Disable CrowdDeny feature
  chrome/browser/browser_process_impl.cc        | 29 --------
  chrome/browser/browser_process_impl.h         |  4 --
  .../chrome_browsing_data_remover_delegate.cc  |  2 +
- .../browser/chrome_content_browser_client.cc  | 26 +++++--
+ .../browser/chrome_content_browser_client.cc  | 28 ++++++--
  .../browser/chrome_content_browser_client.h   |  2 +
  ...ontent_browser_client_receiver_bindings.cc |  2 +
  .../file_type_policies_component_installer.cc | 16 +----
  .../browser/component_updater/registration.cc |  7 --
- .../chrome_download_manager_delegate.cc       | 41 ++++-------
- .../chrome_download_manager_delegate.h        |  8 ++-
+ .../chrome_download_manager_delegate.cc       | 39 ++++------
+ .../chrome_download_manager_delegate.h        |  9 ++-
  .../browser/download/download_item_model.cc   | 15 +++-
  chrome/browser/download/download_item_model.h |  4 ++
  chrome/browser/download/download_prefs.cc     | 17 ++---
@@ -42,7 +43,7 @@ Disable CrowdDeny feature
  .../extensions/api/downloads/downloads_api.h  | 11 ---
  .../webstore_private/webstore_private_api.cc  | 18 +----
  ...e_file_system_access_permission_context.cc |  6 ++
- ...me_file_system_access_permission_context.h |  5 +-
+ ...me_file_system_access_permission_context.h |  1 +
  .../lookalike_url_controller_client.cc        |  4 --
  .../metrics/chrome_metrics_service_client.cc  |  3 -
  ...ial_comparison_cert_verifier_controller.cc |  3 -
@@ -60,6 +61,8 @@ Disable CrowdDeny feature
  .../download_protection_service.h             |  5 --
  .../url_lookup_service_factory.cc             |  4 ++
  .../safety_check/SafetyCheckMediator.java     | 13 ----
+ .../java/res/layout/fre_uma_dialog.xml        | 11 ---
+ .../ui/fre/FreUMADialogCoordinator.java       |  3 -
  .../ssl/sct_reporting_service_factory.cc      | 11 +--
  .../browser/ssl/security_state_tab_helper.cc  | 10 +--
  ...urce_filter_web_contents_helper_factory.cc |  4 ++
@@ -78,12 +81,11 @@ Disable CrowdDeny feature
  .../content/captive_portal_blocking_page.cc   |  7 --
  .../content/cert_report_helper.cc             |  2 -
  .../unified_consent_service.cc                |  2 +-
- .../file_system_access_file_writer_impl.cc    |  1 -
- .../file_system_access_file_writer_impl.h     | 16 +++--
- .../file_system_access_permission_context.h   |  6 --
+ .../file_system_access_file_writer_impl.cc    |  3 +-
+ .../file_system_access_file_writer_impl.h     |  4 --
  weblayer/BUILD.gn                             |  1 -
  weblayer/test/BUILD.gn                        |  1 -
- 77 files changed, 182 insertions(+), 625 deletions(-)
+ 79 files changed, 175 insertions(+), 639 deletions(-)
 
 diff --git a/chrome/android/java/res/xml/google_services_preferences.xml b/chrome/android/java/res/xml/google_services_preferences.xml
 --- a/chrome/android/java/res/xml/google_services_preferences.xml
@@ -120,6 +122,26 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
      <Preference
          android:key="notifications"
          android:order="12"
+diff --git a/chrome/android/java/res/xml/manage_sync_preferences.xml b/chrome/android/java/res/xml/manage_sync_preferences.xml
+--- a/chrome/android/java/res/xml/manage_sync_preferences.xml
++++ b/chrome/android/java/res/xml/manage_sync_preferences.xml
+@@ -80,16 +80,4 @@
+         android:key="sync_manage_data"
+         android:title="@string/sync_manage_data"/>
+ 
+-    <!-- This category is only shown for advanced sync consent flow. -->
+-    <PreferenceCategory
+-        android:key="search_and_browse_category"
+-        android:title="@string/search_and_browse_category"
+-        app:isPreferenceVisible="false">
+-
+-        <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+-            android:key="url_keyed_anonymized_data"
+-            android:title="@string/url_keyed_anonymized_data_title"
+-            android:summary="@string/url_keyed_anonymized_data_summary"/>
+-    </PreferenceCategory>
+-
+ </PreferenceScreen>
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -603,15 +625,21 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  
    CertificateReportingServiceCertReporter(
        const CertificateReportingServiceCertReporter&) = delete;
-@@ -942,7 +942,6 @@ class CertificateReportingServiceCertReporter : public SSLCertReporter {
+@@ -942,11 +942,12 @@ class CertificateReportingServiceCertReporter : public SSLCertReporter {
    // SSLCertReporter implementation
    void ReportInvalidCertificateChain(
        const std::string& serialized_report) override {
 -    service_->Send(serialized_report);
    }
  
++#if defined(FULL_SAFE_BROWSING)
   private:
-@@ -1423,7 +1422,9 @@ void ChromeContentBrowserClient::PostAfterStartupTask(
+   CertificateReportingService* service_;
++#endif
+ };
+ 
+ #if BUILDFLAG(ENABLE_EXTENSIONS)
+@@ -1423,7 +1424,9 @@ void ChromeContentBrowserClient::PostAfterStartupTask(
    InitNetworkContextsParentDirectory();
  
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -621,7 +649,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  }
  
  bool ChromeContentBrowserClient::IsBrowserStartupComplete() {
-@@ -2163,7 +2164,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
+@@ -2163,7 +2166,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
    }
  #elif defined(OS_POSIX)
  #if defined(OS_ANDROID)
@@ -630,7 +658,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #else
    bool enable_crash_reporter = false;
    if (crash_reporter::IsCrashpadEnabled()) {
-@@ -2300,6 +2301,9 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
+@@ -2300,6 +2303,9 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
          command_line->AppendSwitch(
              switches::kSharedArrayBufferUnrestrictedAccessAllowed);
        }
@@ -640,7 +668,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #endif
        if (!prefs->GetBoolean(prefs::kSandboxExternalProtocolBlocked))
          command_line->AppendSwitch(kDisableSandboxExternalProtocolSwitch);
-@@ -4258,6 +4262,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4258,6 +4264,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
                     &throttles);
  #endif
  
@@ -648,7 +676,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    // g_browser_process->safe_browsing_service() may be null in unittests.
    safe_browsing::SafeBrowsingUIManager* ui_manager =
        g_browser_process->safe_browsing_service()
-@@ -4272,6 +4277,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4272,6 +4279,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
          std::make_unique<safe_browsing::DelayedWarningNavigationThrottle>(
              handle));
    }
@@ -656,7 +684,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  
  // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
  // of lacros-chrome is complete.
-@@ -5670,6 +5676,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
+@@ -5670,6 +5678,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
      const std::vector<std::string>& allowlist_domains) {
    DCHECK_CURRENTLY_ON(BrowserThread::IO);
  
@@ -664,7 +692,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    // Should not bypass safe browsing check if the check is for enterprise
    // lookup.
    if (!safe_browsing_enabled_for_profile && !should_check_on_sb_disabled)
-@@ -5690,6 +5697,9 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
+@@ -5690,6 +5699,9 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
    }
  
    return safe_browsing_url_checker_delegate_;
@@ -674,7 +702,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  }
  
  safe_browsing::RealTimeUrlLookupServiceBase*
-@@ -5697,24 +5707,28 @@ ChromeContentBrowserClient::GetUrlLookupService(
+@@ -5697,24 +5709,28 @@ ChromeContentBrowserClient::GetUrlLookupService(
      content::BrowserContext* browser_context,
      bool is_enterprise_lookup_enabled,
      bool is_consumer_lookup_enabled) {
@@ -955,7 +983,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  
    base::FilePath target_path = target_info->target_path;
  
-@@ -1687,13 +1678,9 @@ void ChromeDownloadManagerDelegate::MaybeSendDangerousDownloadOpenedReport(
+@@ -1687,7 +1678,6 @@ void ChromeDownloadManagerDelegate::MaybeSendDangerousDownloadOpenedReport(
      service->MaybeSendDangerousDownloadOpenedReport(download,
                                                      show_download_in_folder);
    }
@@ -963,12 +991,14 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
    if (!download->GetAutoOpened()) {
      download::DownloadContent download_content =
          download::DownloadContentFromMimeType(download->GetMimeType(), false);
--    safe_browsing::RecordDownloadOpened(
--        download->GetDangerType(), download_content, base::Time::Now(),
--        download->GetEndTime(), show_download_in_folder);
+@@ -1695,6 +1685,7 @@ void ChromeDownloadManagerDelegate::MaybeSendDangerousDownloadOpenedReport(
+         download->GetDangerType(), download_content, base::Time::Now(),
+         download->GetEndTime(), show_download_in_folder);
    }
++#endif
  }
  
+ void ChromeDownloadManagerDelegate::CheckDownloadAllowed(
 diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome/browser/download/chrome_download_manager_delegate.h
 --- a/chrome/browser/download/chrome_download_manager_delegate.h
 +++ b/chrome/browser/download/chrome_download_manager_delegate.h
@@ -992,7 +1022,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome
    // The state of a safebrowsing check.
    class SafeBrowsingState : public DownloadCompletionBlocker {
     public:
-@@ -165,11 +167,11 @@ class ChromeDownloadManagerDelegate
+@@ -165,7 +167,6 @@ class ChromeDownloadManagerDelegate
      // a download item.
      static const char kSafeBrowsingUserDataKey[];
    };
@@ -1000,12 +1030,16 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome
  
    // Callback function after the DownloadProtectionService completes.
    void CheckClientDownloadDone(uint32_t download_id,
-                                safe_browsing::DownloadCheckResult result);
+@@ -175,6 +176,8 @@ class ChromeDownloadManagerDelegate
+   void CheckSavePackageScanningDone(uint32_t download_id,
+                                     safe_browsing::DownloadCheckResult result);
+ 
 +#endif  // FULL_SAFE_BROWSING
++
+   base::WeakPtr<ChromeDownloadManagerDelegate> GetWeakPtr();
  
-   // Callback function after scanning completes for a save package.
-   void CheckSavePackageScanningDone(uint32_t download_id,
-@@ -186,8 +188,10 @@ class ChromeDownloadManagerDelegate
+   static void ConnectToQuarantineService(
+@@ -186,8 +189,10 @@ class ChromeDownloadManagerDelegate
                         download::DownloadItem* item) const;
  
   protected:
@@ -1669,22 +1703,22 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss
  
  std::string GenerateLastPickedDirectoryKey(const std::string& id) {
    return id.empty() ? kDefaultLastPickedDirectoryKey
-@@ -1106,6 +1110,7 @@ void ChromeFileSystemAccessPermissionContext::ConfirmSensitiveDirectoryAccess(
-                      std::move(callback)));
- }
- 
-+#if defined(FULL_SAFE_BROWSING)
- void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks(
+@@ -1110,6 +1114,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks(
      std::unique_ptr<content::FileSystemAccessWriteItem> item,
      content::GlobalRenderFrameHostId frame_id,
-@@ -1127,6 +1132,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks(
+     base::OnceCallback<void(AfterWriteCheckResult)> callback) {
++#if defined(FULL_SAFE_BROWSING)
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   content::GetUIThreadTaskRunner({})->PostTask(
+       FROM_HERE,
+@@ -1126,6 +1131,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks(
+                                    InterpretSafeBrowsingResult(result)));
                },
                base::SequencedTaskRunnerHandle::Get(), std::move(callback))));
- }
 +#endif
+ }
  
  void ChromeFileSystemAccessPermissionContext::
-     DidConfirmSensitiveDirectoryAccess(
 diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h
 --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h
 +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h
@@ -1696,17 +1730,6 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss
  #include "content/public/browser/file_system_access_permission_context.h"
  #include "third_party/blink/public/mojom/permissions/permission_status.mojom.h"
  
-@@ -85,10 +86,6 @@ class ChromeFileSystemAccessPermissionContext
-       HandleType handle_type,
-       content::GlobalRenderFrameHostId frame_id,
-       base::OnceCallback<void(SensitiveDirectoryResult)> callback) override;
--  void PerformAfterWriteChecks(
--      std::unique_ptr<content::FileSystemAccessWriteItem> item,
--      content::GlobalRenderFrameHostId frame_id,
--      base::OnceCallback<void(AfterWriteCheckResult)> callback) override;
-   bool CanObtainReadPermission(const url::Origin& origin) override;
-   bool CanObtainWritePermission(const url::Origin& origin) override;
- 
 diff --git a/chrome/browser/lookalikes/lookalike_url_controller_client.cc b/chrome/browser/lookalikes/lookalike_url_controller_client.cc
 --- a/chrome/browser/lookalikes/lookalike_url_controller_client.cc
 +++ b/chrome/browser/lookalikes/lookalike_url_controller_client.cc
@@ -2210,6 +2233,40 @@ diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/br
                      return true;
                  });
          // Set the listener for clicking the passwords element.
+diff --git a/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml b/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml
+--- a/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml
++++ b/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml
+@@ -22,17 +22,6 @@
+             android:text="@string/signin_fre_uma_dialog_title"
+             style="@style/TextAppearance.Headline.Primary" />
+ 
+-        <Switch
+-            android:id="@+id/fre_uma_dialog_switch"
+-            android:layout_width="match_parent"
+-            android:layout_height="wrap_content"
+-            android:layout_marginBottom="12dp"
+-            android:text="@string/usage_and_crash_reports_title"
+-            android:checked="true"
+-            android:gravity="start|center"
+-            android:lineSpacingMultiplier="1.2"
+-            style="@style/TextAppearance.TextLarge.Primary" />
+-
+         <TextView
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java
+--- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java
++++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java
+@@ -68,9 +68,6 @@ public class FreUMADialogCoordinator {
+                 .setOnClickListener(v
+                         -> mDialogManager.dismissDialog(
+                                 mModel, DialogDismissalCause.ACTION_ON_CONTENT));
+-        Switch umaSwitch = view.findViewById(R.id.fre_uma_dialog_switch);
+-        umaSwitch.setOnCheckedChangeListener(
+-                (compoundButton, isChecked) -> listener.onAllowCrashUploadChecked(isChecked));
+         return view;
+     }
+ 
 diff --git a/chrome/browser/ssl/sct_reporting_service_factory.cc b/chrome/browser/ssl/sct_reporting_service_factory.cc
 --- a/chrome/browser/ssl/sct_reporting_service_factory.cc
 +++ b/chrome/browser/ssl/sct_reporting_service_factory.cc
@@ -2646,6 +2703,15 @@ diff --git a/content/browser/file_system_access/file_system_access_file_writer_i
        auto_close_(auto_close) {
    DCHECK_EQ(swap_url.type(), url.type());
    DCHECK_EQ(lock_->type(),
+@@ -252,7 +251,7 @@ void FileSystemAccessFileWriterImpl::CloseImpl(CloseCallback callback) {
+       /*dest_url=*/url(),
+       FileSystemOperation::OPTION_PRESERVE_DESTINATION_PERMISSIONS,
+       std::move(quarantine_connection_callback_),
+-      has_transient_user_activation_);
++      /*has_transient_user_activation_*/false);
+   // Allows the unique pointer to be bound to the callback so the helper stays
+   // alive until the operation completes.
+   SafeMoveHelper* raw_helper = safe_move_helper.get();
 diff --git a/content/browser/file_system_access/file_system_access_file_writer_impl.h b/content/browser/file_system_access/file_system_access_file_writer_impl.h
 --- a/content/browser/file_system_access/file_system_access_file_writer_impl.h
 +++ b/content/browser/file_system_access/file_system_access_file_writer_impl.h
@@ -2660,45 +2726,6 @@ diff --git a/content/browser/file_system_access/file_system_access_file_writer_i
    // Changes will be written to the target file even if the stream isn't
    // explicitly closed.
    bool auto_close_ = false;
-@@ -128,10 +124,22 @@ class CONTENT_EXPORT FileSystemAccessFileWriterImpl
-   // active swap file of a different writer.
-   bool should_purge_swap_file_on_destruction_ = true;
- 
-+<<<<<<< found
-   base::WeakPtr<FileSystemAccessHandleBase> AsWeakPtr() override;
- 
-   base::WeakPtrFactory<FileSystemAccessFileWriterImpl> weak_factory_{this};
- };
-+||||||| expected
-+  // TOOD(crbug.com/1103076): Extend this check to non-native paths.
-+  bool RequireSecurityChecks() const {
-+    return url().type() != storage::kFileSystemTypeTemporary;
-+  }
-+=======
-+  // TOOD(crbug.com/1103076): Extend this check to non-native paths.
-+  bool RequireSecurityChecks() const {
-+    return false;
-+  }
-+>>>>>>> replacement
- 
- }  // namespace content
- 
-diff --git a/content/public/browser/file_system_access_permission_context.h b/content/public/browser/file_system_access_permission_context.h
---- a/content/public/browser/file_system_access_permission_context.h
-+++ b/content/public/browser/file_system_access_permission_context.h
-@@ -107,12 +107,6 @@ class FileSystemAccessPermissionContext {
-       base::OnceCallback<void(SensitiveDirectoryResult)> callback) = 0;
- 
-   enum class AfterWriteCheckResult { kAllow, kBlock };
--  // Runs a recently finished write operation through checks such as malware
--  // or other security checks to determine if the write should be allowed.
--  virtual void PerformAfterWriteChecks(
--      std::unique_ptr<FileSystemAccessWriteItem> item,
--      GlobalRenderFrameHostId frame_id,
--      base::OnceCallback<void(AfterWriteCheckResult)> callback) = 0;
- 
-   // Returns whether the give |origin| already allows read permission, or it is
-   // possible to request one. This is used to block file dialogs from being
 diff --git a/weblayer/BUILD.gn b/weblayer/BUILD.gn
 --- a/weblayer/BUILD.gn
 +++ b/weblayer/BUILD.gn

+ 6 - 7
build/patches/Experimental-user-scripts-support.patch

@@ -63,7 +63,7 @@ See also: components/user_scripts/README.md
  .../user_scripts/android/java_sources.gni     |  18 +
  .../android/user_scripts_bridge.cc            | 173 ++++
  .../android/user_scripts_bridge.h             |  31 +
- components/user_scripts/browser/BUILD.gn      |  83 ++
+ components/user_scripts/browser/BUILD.gn      |  82 ++
  .../user_scripts/browser/file_task_runner.cc  |  40 +
  .../user_scripts/browser/file_task_runner.h   |  34 +
  .../browser/resources/browser_resources.grd   |  14 +
@@ -133,7 +133,7 @@ See also: components/user_scripts/README.md
  .../renderer/web_ui_injection_host.h          |  28 +
  .../strings/userscripts_strings.grdp          |  55 ++
  tools/gritsettings/resource_ids.spec          |   6 +
- 111 files changed, 9580 insertions(+), 2 deletions(-)
+ 111 files changed, 9579 insertions(+), 2 deletions(-)
  create mode 100644 components/user_scripts/README.md
  create mode 100755 components/user_scripts/android/BUILD.gn
  create mode 100644 components/user_scripts/android/java/res/layout/accept_script_item.xml
@@ -359,7 +359,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -4660,7 +4660,8 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles(
+@@ -4662,7 +4662,8 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles(
    chrome::mojom::DynamicParams dynamic_params = {
        profile->GetPrefs()->GetBoolean(prefs::kForceGoogleSafeSearch),
        profile->GetPrefs()->GetInteger(prefs::kForceYouTubeRestrict),
@@ -2391,7 +2391,7 @@ diff --git a/components/user_scripts/browser/BUILD.gn b/components/user_scripts/
 new file mode 100755
 --- /dev/null
 +++ b/components/user_scripts/browser/BUILD.gn
-@@ -0,0 +1,83 @@
+@@ -0,0 +1,82 @@
 +# This file is part of Bromite.
 +
 +# Bromite is free software: you can redistribute it and/or modify
@@ -2448,7 +2448,6 @@ new file mode 100755
 +    "//services/preferences/public/cpp",
 +    "//services/service_manager/public/cpp",
 +    "//third_party/blink/public/common",
-+    "//third_party/blink/public/mojom/frame",
 +    "//ui/display",
 +  ]
 +
@@ -8348,8 +8347,8 @@ new file mode 100755
 +          ? blink::WebLocalFrame::kAsynchronousBlockingOnload
 +          : blink::WebLocalFrame::kSynchronous;
 +
-+  render_frame_->GetWebFrame()->RequestExecuteScriptInIsolatedWorld(
-+      world_id, &sources.front(), sources.size(), is_user_gesture,
++  render_frame_->GetWebFrame()->RequestExecuteScript(
++      world_id, sources, is_user_gesture,
 +      execution_option, callback.release(),
 +      blink::BackForwardCacheAware::kPossiblyDisallow);
 +}

+ 96 - 11
build/patches/Remove-signin-and-data-saver-integrations.patch

@@ -28,7 +28,7 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
  .../android/java/res/xml/main_preferences.xml |  27 +--
  .../java/res/xml/privacy_preferences.xml      |   4 -
  .../org/chromium/chrome/browser/AppHooks.java |   8 -
- .../chrome/browser/ChromeTabbedActivity.java  |  14 --
+ .../chrome/browser/ChromeTabbedActivity.java  |  16 --
  .../chrome/browser/app/ChromeActivity.java    |  75 --------
  .../AutofillAssistantPreferenceFragment.java  |  12 --
  .../bookmarks/BookmarkItemsAdapter.java       |  50 +----
@@ -38,13 +38,13 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
  .../browser/customtabs/CustomTabActivity.java |   3 -
  .../DataReductionPreferenceFragment.java      |  24 +--
  .../browser/firstrun/FirstRunActivity.java    |  38 ----
- .../firstrun/FirstRunFlowSequencer.java       |  29 +--
+ .../firstrun/FirstRunFlowSequencer.java       |  34 +---
  .../firstrun/LightweightFirstRunActivity.java |   6 +-
  .../firstrun/ToSAndUMAFirstRunFragment.java   |  11 --
  .../history/HistoryContentManager.java        |  10 +-
  .../init/ChromeBrowserInitializer.java        |   2 -
  .../init/ProcessInitializationHandler.java    |   4 -
- .../chrome/browser/ntp/RecentTabsManager.java |  69 +------
+ .../chrome/browser/ntp/RecentTabsManager.java |  70 +------
  .../browser/ntp/RecentTabsRowAdapter.java     |   6 -
  .../browser/omaha/RequestGenerator.java       |   3 -
  .../PasswordManagerLauncher.java              |  15 +-
@@ -66,12 +66,13 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
  .../signin/ui/SignOutDialogFragment.java      |  13 --
  .../signin/ui/SigninPromoController.java      |  15 +-
  .../AccountPickerDelegateImpl.java            |  18 --
+ .../signin/ui/fre/SigninFirstRunMediator.java |  26 +--
  chrome/browser/sync/sync_service_factory.cc   |  12 +-
  .../strings/android_chrome_strings.grd        |  12 --
  .../signin/SystemAccountManagerDelegate.java  |  35 +---
  .../net/HttpNegotiateAuthenticator.java       |  88 +--------
  .../chromoting/base/OAuthTokenFetcher.java    |   2 -
- 52 files changed, 48 insertions(+), 1209 deletions(-)
+ 53 files changed, 51 insertions(+), 1240 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
@@ -577,7 +578,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
  import org.chromium.chrome.browser.layouts.LayoutStateProvider;
  import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
  import org.chromium.chrome.browser.locale.LocaleManager;
-@@ -645,9 +643,6 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -135,8 +133,6 @@ import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
+ import org.chromium.chrome.browser.share.send_tab_to_self.SendTabToSelfAndroidBridge;
+ import org.chromium.chrome.browser.suggestions.SuggestionsMetrics;
+ import org.chromium.chrome.browser.survey.ChromeSurveyController;
+-import org.chromium.chrome.browser.sync.ui.SyncErrorMessage;
+-import org.chromium.chrome.browser.sync.ui.SyncErrorPromptUtils;
+ import org.chromium.chrome.browser.tab.RedirectHandlerTabHelper;
+ import org.chromium.chrome.browser.tab.Tab;
+ import org.chromium.chrome.browser.tab.TabAssociatedApp;
+@@ -645,9 +641,6 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
      }
  
      private void refreshSignIn() {
@@ -587,7 +597,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
      }
  
      private void setupCompositorContentPreNativeForPhone() {
-@@ -1811,15 +1806,6 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1811,15 +1804,6 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
                  if (!navigation.hasCommitted() || !navigation.isInPrimaryMainFrame()) {
                      return;
                  }
@@ -1375,7 +1385,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
          }
  
          /** @return true if the Data Reduction promo page should be shown. */
-@@ -172,7 +156,6 @@ public abstract class FirstRunFlowSequencer  {
+@@ -99,10 +83,7 @@ public abstract class FirstRunFlowSequencer  {
+         /** @return true if Sync is allowed for the current user. */
+         @VisibleForTesting
+         protected boolean isSyncAllowed() {
+-            SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(
+-                    Profile.getLastUsedRegularProfile());
+-            return FirstRunUtils.canAllowSync() && !signinManager.isSigninDisabledByPolicy()
+-                    && signinManager.isSigninSupported();
++            return false;
+         }
+ 
+         /** @return true if first use hints should be skipped. */
+@@ -172,7 +153,6 @@ public abstract class FirstRunFlowSequencer  {
  
      @VisibleForTesting
      protected void setFirstRunFlowSignInComplete() {
@@ -1383,7 +1405,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
      }
  
      @VisibleForTesting
-@@ -183,13 +166,6 @@ public abstract class FirstRunFlowSequencer  {
+@@ -183,13 +163,6 @@ public abstract class FirstRunFlowSequencer  {
      }
  
      void processFreEnvironmentPreNative() {
@@ -1397,7 +1419,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
      }
  
      /**
-@@ -217,9 +193,6 @@ public abstract class FirstRunFlowSequencer  {
+@@ -217,9 +190,6 @@ public abstract class FirstRunFlowSequencer  {
          if (!FirstRunUtils.isFirstRunEulaAccepted()) {
              FirstRunUtils.setEulaAccepted();
          }
@@ -1655,7 +1677,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
      }
  
      private void updatePromoState() {
-@@ -411,7 +361,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
+@@ -402,7 +352,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
+                 && (newState == PromoState.PROMO_SIGNIN_PERSONALIZED
+                         || newState == PromoState.PROMO_SYNC_PERSONALIZED);
+         if (hasSyncPromoStateChangedtoShown) {
+-            mSigninPromoController.increasePromoShowCount();
+         }
+         mPromoState = newState;
+     }
+@@ -411,7 +360,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
       * Sets up the sync promo view.
       */
      void setUpSyncPromoView(PersonalizedSigninPromoView view) {
@@ -1663,7 +1693,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
      }
  
      // SignInStateObserver implementation.
-@@ -431,18 +380,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
+@@ -431,18 +379,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
          update();
      }
  
@@ -2595,6 +2625,61 @@ diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/brows
          });
      }
  
+diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/SigninFirstRunMediator.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/SigninFirstRunMediator.java
+--- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/SigninFirstRunMediator.java
++++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/SigninFirstRunMediator.java
+@@ -72,10 +72,7 @@ class SigninFirstRunMediator implements AccountsChangeObserver, ProfileDataCache
+     void onNativeAndPolicyLoaded(boolean hasPolicies) {
+         mModel.set(SigninFirstRunProperties.ARE_NATIVE_AND_POLICY_LOADED, true);
+         mModel.set(SigninFirstRunProperties.FRE_POLICY, hasPolicies ? new FrePolicy() : null);
+-        final boolean isSigninSupported = ExternalAuthUtils.getInstance().canUseGooglePlayServices()
+-                && !IdentityServicesProvider.get()
+-                            .getSigninManager(Profile.getLastUsedRegularProfile())
+-                            .isSigninDisabledByPolicy();
++        final boolean isSigninSupported = false;
+         mModel.set(SigninFirstRunProperties.IS_SIGNIN_SUPPORTED, isSigninSupported);
+     }
+ 
+@@ -134,21 +131,6 @@ class SigninFirstRunMediator implements AccountsChangeObserver, ProfileDataCache
+             mListener.acceptTermsOfService();
+             return;
+         }
+-        final SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(
+-                Profile.getLastUsedRegularProfile());
+-        signinManager.onFirstRunCheckDone();
+-        signinManager.signin(
+-                AccountUtils.createAccountFromName(mSelectedAccountName), new SignInCallback() {
+-                    @Override
+-                    public void onSignInComplete() {
+-                        mListener.acceptTermsOfService();
+-                    }
+-
+-                    @Override
+-                    public void onSignInAborted() {
+-                        // TODO(crbug/1248090): Handle the sign-in error here
+-                    }
+-                });
+     }
+ 
+     /**
+@@ -160,10 +142,6 @@ class SigninFirstRunMediator implements AccountsChangeObserver, ProfileDataCache
+         if (IdentityServicesProvider.get()
+                         .getIdentityManager(Profile.getLastUsedRegularProfile())
+                         .hasPrimaryAccount(ConsentLevel.SIGNIN)) {
+-            IdentityServicesProvider.get()
+-                    .getSigninManager(Profile.getLastUsedRegularProfile())
+-                    .signOut(SignoutReason.ABORT_SIGNIN, mListener::acceptTermsOfService,
+-                            /* forceWipeUserData= */ false);
+         } else {
+             mListener.acceptTermsOfService();
+         }
+@@ -205,4 +183,4 @@ class SigninFirstRunMediator implements AccountsChangeObserver, ProfileDataCache
+             mModel.set(SigninFirstRunProperties.IS_SELECTED_ACCOUNT_SUPERVISED, false);
+         }
+     }
+-}
+\ No newline at end of file
++}
 diff --git a/chrome/browser/sync/sync_service_factory.cc b/chrome/browser/sync/sync_service_factory.cc
 --- a/chrome/browser/sync/sync_service_factory.cc
 +++ b/chrome/browser/sync/sync_service_factory.cc

+ 9 - 60
build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch

@@ -9,15 +9,14 @@ Subject: Revert the removal of an option to block autoplay
  .../res/drawable-xhdpi/settings_autoplay.png  | Bin 0 -> 551 bytes
  .../res/drawable-xxhdpi/settings_autoplay.png | Bin 0 -> 792 bytes
  .../drawable-xxxhdpi/settings_autoplay.png    | Bin 0 -> 1064 bytes
- .../res/xml/site_settings_preferences.xml     |   4 +++
+ .../res/xml/site_settings_preferences.xml     |   4 ++++
  .../ContentSettingsResources.java             |   5 +++-
- .../site_settings/SingleCategorySettings.java |   4 +++
- .../site_settings/SingleWebsiteSettings.java  |  22 +++++++++++++++++
+ .../site_settings/SingleCategorySettings.java |   4 ++++
+ .../site_settings/SingleWebsiteSettings.java  |  22 ++++++++++++++++++
  .../site_settings/SiteSettingsCategory.java   |   9 +++++--
- .../browser_ui/site_settings/Website.java     |   8 ++++++
+ .../browser_ui/site_settings/Website.java     |   8 +++++++
  .../WebsitePermissionsFetcher.java            |   1 +
- .../WebsitePreferenceBridge.java              |   4 +++
- .../android/website_preference_bridge.cc      |  23 ++++++++++++++++++
+ .../android/website_preference_bridge.cc      |   1 +
  .../strings/android/site_settings.grdp        |   9 +++++++
  .../core/browser/content_settings_registry.cc |   2 +-
  .../core/browser/content_settings_utils.cc    |   2 ++
@@ -33,9 +32,9 @@ Subject: Revert the removal of an option to block autoplay
  components/page_info/page_info_ui.cc          |   1 +
  components/site_settings_strings.grdp         |   5 +++-
  .../platform/web_content_settings_client.h    |   3 +++
- .../core/html/media/autoplay_policy.cc        |  12 ++++++++-
- .../core/html/media/autoplay_policy.h         |   4 +++
- 32 files changed, 145 insertions(+), 6 deletions(-)
+ .../core/html/media/autoplay_policy.cc        |  12 +++++++++-
+ .../core/html/media/autoplay_policy.h         |   4 ++++
+ 31 files changed, 119 insertions(+), 6 deletions(-)
  create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_autoplay.png
  create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/settings_autoplay.png
  create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_autoplay.png
@@ -333,42 +332,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              case ContentSettingsType.COOKIES:
              case ContentSettingsType.REQUEST_DESKTOP_SITE:
              case ContentSettingsType.JAVASCRIPT:
-diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
-+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
-@@ -402,6 +402,10 @@ public class WebsitePreferenceBridge {
-         void setPermissionSettingForOrigin(BrowserContextHandle browserContextHandle,
-                 @ContentSettingsType int contentSettingsType, String origin, String embedder,
-                 @ContentSettingValues int value);
-+        void getAutoplayOrigins(
-+                BrowserContextHandle browserContextHandle, Object list, boolean managedOnly);
-+        void setAutoplaySettingForOrigin(
-+                BrowserContextHandle browserContextHandle, String origin, int value);
-         boolean isPermissionControlledByDSE(BrowserContextHandle browserContextHandle,
-                 @ContentSettingsType int contentSettingsType, String origin);
-         boolean isDSEOrigin(BrowserContextHandle browserContextHandle, String origin);
 diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc
 --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc
 +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
-@@ -452,6 +452,17 @@ static void JNI_WebsitePreferenceBridge_GetOriginsForPermission(
-              managedOnly);
- }
- 
-+static void JNI_WebsitePreferenceBridge_SetAutoplaySettingForOrigin(
-+    JNIEnv* env,
-+    const JavaParamRef<jobject>& jbrowser_context_handle,
-+    const JavaParamRef<jstring>& origin,
-+    jint value) {
-+  // Here 'nullptr' indicates that autoplay uses wildcard for embedder.
-+  SetSettingForOrigin(env, jbrowser_context_handle,
-+                      ContentSettingsType::AUTOPLAY, origin, nullptr,
-+                      static_cast<ContentSetting>(value));
-+}
-+
- static jboolean JNI_WebsitePreferenceBridge_IsContentSettingsPatternValid(
-     JNIEnv* env,
-     const JavaParamRef<jstring>& pattern) {
-@@ -820,6 +831,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled(
+@@ -820,6 +820,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled(
        case ContentSettingsType::POPUPS:
        case ContentSettingsType::SENSORS:
        case ContentSettingsType::SOUND:
@@ -376,24 +343,6 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid
          value = CONTENT_SETTING_ALLOW;
          break;
        default:
-@@ -928,6 +940,17 @@ static jboolean JNI_WebsitePreferenceBridge_IsContentSettingUserModifiable(
-       static_cast<ContentSettingsType>(content_settings_type));
- }
- 
-+static void JNI_WebsitePreferenceBridge_GetAutoplayOrigins(
-+    JNIEnv* env,
-+    const JavaParamRef<jobject>& jbrowser_context_handle,
-+    const JavaParamRef<jobject>& list,
-+    jboolean managedOnly) {
-+  GetOrigins(env, jbrowser_context_handle,
-+             ContentSettingsType::AUTOPLAY,
-+             &Java_WebsitePreferenceBridge_insertPermissionInfoIntoList, list,
-+             managedOnly);
-+}
-+
- static jboolean JNI_WebsitePreferenceBridge_IsContentSettingManagedByCustodian(
-     JNIEnv* env,
-     const JavaParamRef<jobject>& jbrowser_context_handle,
 diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp
 --- a/components/browser_ui/strings/android/site_settings.grdp
 +++ b/components/browser_ui/strings/android/site_settings.grdp

+ 3 - 3
build/patches/Timezone-customization.patch

@@ -389,7 +389,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +        } else if (TIMEOVERRIDE_STATE_TOGGLE_KEY.equals(preference.getKey())) {
 +            @ContentSettingValues
 +            int setting = (int) newValue;
-+            WebsitePreferenceBridge.setContentSetting(
++            WebsitePreferenceBridge.setDefaultContentSetting(
 +                    browserContextHandle, ContentSettingsType.TIMEZONE_OVERRIDE, setting);
 +            getInfoForOrigins();
          } else if (FOUR_STATE_COOKIE_TOGGLE_KEY.equals(preference.getKey())) {
@@ -409,7 +409,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              setting = cookieSettingsExceptionShouldBlock() ? ContentSettingValues.BLOCK
                                                             : ContentSettingValues.ALLOW;
 +        } else if (mRequiresTriStateSetting) {
-+            setting = WebsitePreferenceBridge.getContentSetting(browserContextHandle, mCategory.getContentSettingsType());
++            setting = WebsitePreferenceBridge.getDefaultContentSetting(browserContextHandle, mCategory.getContentSettingsType());
 +            if (setting == ContentSettingValues.ALLOW) {
 +              setting = ContentSettingValues.BLOCK;
 +            } else {
@@ -495,7 +495,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +            TimezoneOverrideSiteSettingsPreference timeOverrideStateToggle) {
 +        timeOverrideStateToggle.setOnPreferenceChangeListener(this);
 +        @ContentSettingValues
-+        int setting = WebsitePreferenceBridge.getContentSetting(
++        int setting = WebsitePreferenceBridge.getDefaultContentSetting(
 +                getSiteSettingsDelegate().getBrowserContextHandle(), ContentSettingsType.TIMEZONE_OVERRIDE);
 +        timeOverrideStateToggle.initialize(setting, getSiteSettingsDelegate().getBrowserContextHandle());
 +    }

+ 8 - 8
build/patches/ungoogled-chromium-Disable-Google-host-detection.patch

@@ -4,17 +4,17 @@ Subject: ungoogled-chromium: Disable Google host detection
 
 Disables various detections of Google hosts and functionality specific to them
 ---
- components/google/core/common/google_util.cc  | 221 +-----------------
+ components/google/core/common/google_util.cc  | 219 +-----------------
  .../browser/page_load_metrics_util.cc         |   4 +-
  .../common/page_load_metrics_util.cc          |  33 +--
  components/search_engines/template_url.cc     |   6 +-
  net/base/url_util.cc                          |  21 --
- 5 files changed, 8 insertions(+), 277 deletions(-)
+ 5 files changed, 8 insertions(+), 275 deletions(-)
 
 diff --git a/components/google/core/common/google_util.cc b/components/google/core/common/google_util.cc
 --- a/components/google/core/common/google_util.cc
 +++ b/components/google/core/common/google_util.cc
-@@ -29,132 +29,6 @@
+@@ -29,132 +29,8 @@
  
  namespace google_util {
  
@@ -132,8 +132,8 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co
 -
 -// Global functions -----------------------------------------------------------
 -
--const char kGoogleHomepageURL[] = "https://www.google.com/";
--
+ const char kGoogleHomepageURL[] = "https://www.google.com/";
+ 
 -bool HasGoogleSearchQueryParam(base::StringPiece str) {
 -  url::Component query(0, static_cast<int>(str.length())), key, value;
 -  while (url::ExtractQueryKeyValue(str.data(), &query, &key, &value)) {
@@ -147,7 +147,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co
  std::string GetGoogleLocale(const std::string& application_locale) {
    // Google does not recognize "nb" for Norwegian Bokmal; it uses "no".
    return (application_locale == "nb") ? "no" : application_locale;
-@@ -168,24 +42,7 @@ GURL AppendGoogleLocaleParam(const GURL& url,
+@@ -168,24 +44,7 @@ GURL AppendGoogleLocaleParam(const GURL& url,
  
  std::string GetGoogleCountryCode(const GURL& google_homepage_url) {
    base::StringPiece google_hostname = google_homepage_url.host_piece();
@@ -173,7 +173,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co
  }
  
  GURL GetGoogleSearchURL(const GURL& google_homepage_url) {
-@@ -224,9 +81,7 @@ bool StartsWithCommandLineGoogleBaseURL(const GURL& url) {
+@@ -224,9 +83,7 @@ bool StartsWithCommandLineGoogleBaseURL(const GURL& url) {
  
  bool IsGoogleHostname(base::StringPiece host,
                        SubdomainPermission subdomain_permission) {
@@ -184,7 +184,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co
  }
  
  bool IsGoogleDomainUrl(const GURL& url,
-@@ -237,86 +92,20 @@ bool IsGoogleDomainUrl(const GURL& url,
+@@ -237,86 +94,20 @@ bool IsGoogleDomainUrl(const GURL& url,
  }
  
  bool IsGoogleHomePageUrl(const GURL& url) {