From 962233864b73bfbafdbdd15c21185374ca49facb Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Thu, 14 Dec 2023 15:30:30 +0100 Subject: [PATCH] #159 allow the webview build --- .../Add-option-to-force-tablet-UI.patch | 80 ++++++++++++------- ...Disable-fetching-of-all-field-trials.patch | 33 +++++++- .../Disable-third-party-origin-trials.patch | 14 +++- .../Enable-native-Android-autofill.patch | 28 +++---- 4 files changed, 112 insertions(+), 43 deletions(-) diff --git a/build/patches/Add-option-to-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index 5a8b78a1..eb24896d 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -7,7 +7,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../ChromeAccessibilitySettingsDelegate.java | 19 +++++++++++++++++++ .../browser/tasks/ReturnToChromeUtil.java | 4 +++- .../chrome/browser/ui/RootUiCoordinator.java | 5 ++++- + chrome/browser/preferences/BUILD.gn | 1 + .../preferences/ChromePreferenceKeys.java | 1 + + .../preferences/ChromeSharedPreferences.java | 8 ++++++++ .../LegacyChromePreferenceKeys.java | 1 + .../omnibox/LocationBarCoordinator.java | 2 +- .../strings/android_chrome_strings.grd | 7 +++++++ @@ -16,9 +18,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../res/xml/accessibility_preferences.xml | 5 +++++ .../accessibility/AccessibilitySettings.java | 10 ++++++++++ .../AccessibilitySettingsDelegate.java | 2 ++ - ui/android/BUILD.gn | 2 ++ - .../chromium/ui/base/DeviceFormFactor.java | 5 +++++ - 14 files changed, 65 insertions(+), 9 deletions(-) + .../chromium/ui/base/DeviceFormFactor.java | 6 ++++++ + 15 files changed, 73 insertions(+), 9 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java @@ -85,6 +86,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi stubId = R.id.find_toolbar_tablet_stub; } mFindToolbarManager = new FindToolbarManager(mActivity.findViewById(stubId), +diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn +--- a/chrome/browser/preferences/BUILD.gn ++++ b/chrome/browser/preferences/BUILD.gn +@@ -25,6 +25,7 @@ android_library("java") { + "//components/browser_ui/site_settings/android:constants_java", + "//third_party/androidx:androidx_annotation_annotation_java", + "//third_party/jni_zero:jni_zero_java", ++ "//ui/android:ui_java", + ] + + srcjar_deps = [ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java @@ -96,6 +108,31 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** Keys used to save settings related to homepage. */ public static final String DEPRECATED_HOMEPAGE_CUSTOM_URI = "homepage_custom_uri"; +diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java +--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java ++++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java +@@ -11,6 +11,8 @@ import org.chromium.base.shared_preferences.PreferenceKeyRegistry; + import org.chromium.base.shared_preferences.SharedPreferencesManager; + import org.chromium.build.BuildConfig; + ++import org.chromium.ui.base.DeviceFormFactor; ++ + @JNINamespace("android::shared_preferences") + public class ChromeSharedPreferences { + public static final PreferenceKeyRegistry REGISTRY = +@@ -22,6 +24,12 @@ public class ChromeSharedPreferences { + LegacyChromePreferenceKeys.getPrefixesInUse()) + : null); + ++ static { ++ DeviceFormFactor.setForceTabletUI( ++ ChromeSharedPreferences.getInstance().readBoolean( ++ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false)); ++ } ++ + /** + * @return The //base SharedPreferencesManager singleton. + */ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java @@ -242,37 +279,26 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c /** * Allows the embedder to add more preferences to the preference screen. * -diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn ---- a/ui/android/BUILD.gn -+++ b/ui/android/BUILD.gn -@@ -417,6 +417,8 @@ android_library("ui_no_recycler_view_java") { - ":ui_android_features_java", - ":ui_java_resources", - ":ui_utils_java", -+ # dependency for ui_no_recycler_view_java -+ "//chrome/browser/preferences:java", - "//base:base_java", - "//build/android:build_java", - "//components/url_formatter/android:url_formatter_java", diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java --- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java +++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java -@@ -13,6 +13,8 @@ import org.jni_zero.CalledByNative; +@@ -38,6 +38,11 @@ public class DeviceFormFactor { + */ + private static final int SCREEN_BUCKET_LARGET_TABLET = 3; - import org.chromium.base.ContextUtils; - import org.chromium.base.ThreadUtils; -+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; - import org.chromium.ui.R; - import org.chromium.ui.display.DisplayAndroid; - import org.chromium.ui.display.DisplayUtil; -@@ -63,6 +65,9 @@ public class DeviceFormFactor { ++ private static boolean mForceTabletUI; ++ public static void setForceTabletUI(boolean forceTabletUI) { ++ mForceTabletUI = forceTabletUI; ++ } ++ + /** + * Each activity could be on a different display, and this will just tell you whether the + * display associated with the application context is "tablet sized". +@@ -63,6 +68,7 @@ public class DeviceFormFactor { * E.g. http://developer.samsung.com/samsung-dex/testing */ public static boolean isNonMultiDisplayContextOnTablet(Context context) { -+ if (ChromeSharedPreferences.getInstance().readBoolean( -+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false)) -+ return true; ++ if (mForceTabletUI) return true; return detectScreenWidthBucket(context) >= SCREEN_BUCKET_TABLET; } diff --git a/build/patches/Disable-fetching-of-all-field-trials.patch b/build/patches/Disable-fetching-of-all-field-trials.patch index e8997513..aa3adc2b 100644 --- a/build/patches/Disable-fetching-of-all-field-trials.patch +++ b/build/patches/Disable-fetching-of-all-field-trials.patch @@ -9,6 +9,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- android_webview/common/aw_features.cc | 4 +-- android_webview/nonembedded/BUILD.gn | 2 -- + ...eddedFastVariationsSeedSafeModeAction.java | 2 -- + ...SafeModeVariationsSeedContentProvider.java | 2 -- .../services/VariationsSeedServer.java | 2 -- .../metrics/chrome_browser_sampling_trials.cc | 4 +++ .../net/system_network_context_manager.cc | 1 - @@ -25,7 +27,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../variations_render_thread_observer.cc | 9 ------ .../Disable-fetching-of-all-field-trials.inc | 1 + .../renderer/core/loader/document_loader.cc | 7 ---- - 18 files changed, 28 insertions(+), 80 deletions(-) + 20 files changed, 28 insertions(+), 84 deletions(-) create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-fetching-of-all-field-trials.inc diff --git a/android_webview/common/aw_features.cc b/android_webview/common/aw_features.cc @@ -61,6 +63,35 @@ diff --git a/android_webview/nonembedded/BUILD.gn b/android_webview/nonembedded/ "java/src/org/chromium/android_webview/services/VariationsSeedServer.java", ] deps = [ +diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/NonEmbeddedFastVariationsSeedSafeModeAction.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/NonEmbeddedFastVariationsSeedSafeModeAction.java +--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/NonEmbeddedFastVariationsSeedSafeModeAction.java ++++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/NonEmbeddedFastVariationsSeedSafeModeAction.java +@@ -27,13 +27,11 @@ public class NonEmbeddedFastVariationsSeedSafeModeAction implements NonEmbeddedS + + @Override + public boolean onActivate() { +- AwVariationsSeedFetcher.scheduleIfNeeded(/*requireFastMode=*/true); + return true; + } + + @Override + public boolean onDeactivate() { +- AwVariationsSeedFetcher.cancelSafeModeSeedFetchSchedulerJob(); + return true; + } + } +diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/SafeModeVariationsSeedContentProvider.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/SafeModeVariationsSeedContentProvider.java +--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/SafeModeVariationsSeedContentProvider.java ++++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/SafeModeVariationsSeedContentProvider.java +@@ -83,8 +83,6 @@ public class SafeModeVariationsSeedContentProvider extends ContentProvider { + + private Boolean awaitSeedResults() { + CountDownLatch countDownLatch = new CountDownLatch(1); +- VariationsSeedHolder.getInstance().hasSeedUpdateCompletedAsync( +- () -> { countDownLatch.countDown(); }); + try { + return countDownLatch.await(TIMEOUT_IN_MILLIS, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedServer.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedServer.java --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedServer.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/VariationsSeedServer.java diff --git a/build/patches/Disable-third-party-origin-trials.patch b/build/patches/Disable-third-party-origin-trials.patch index 7544f267..42725a0d 100644 --- a/build/patches/Disable-third-party-origin-trials.patch +++ b/build/patches/Disable-third-party-origin-trials.patch @@ -4,6 +4,7 @@ Subject: Disable third-party origin trials License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- + android_webview/common/aw_content_client.cc | 1 - .../origin_trials/origin_trial_policy_impl.cc | 7 ++++--- .../origin_trials/origin_trial_policy_impl.h | 2 +- .../browser/renderer_host/navigation_request.cc | 1 - @@ -13,8 +14,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/core/loader/document_loader.cc | 17 ----------------- .../blink/renderer/core/loader/http_equiv.cc | 2 +- .../core/origin_trials/origin_trial_context.cc | 6 ++++-- - 9 files changed, 16 insertions(+), 47 deletions(-) + 10 files changed, 16 insertions(+), 48 deletions(-) +diff --git a/android_webview/common/aw_content_client.cc b/android_webview/common/aw_content_client.cc +--- a/android_webview/common/aw_content_client.cc ++++ b/android_webview/common/aw_content_client.cc +@@ -127,7 +127,6 @@ blink::OriginTrialPolicy* AwContentClient::GetOriginTrialPolicy() { + // flag to true after construction. This will work because trial token + // validator will always get the current instance of policy when needed. + if (IsDisableOriginTrialsSafeModeActionOn()) { +- origin_trial_policy_->SetAllowOnlyDeprecationTrials(true); + } + return origin_trial_policy_.get(); + } diff --git a/components/embedder_support/origin_trials/origin_trial_policy_impl.cc b/components/embedder_support/origin_trials/origin_trial_policy_impl.cc --- a/components/embedder_support/origin_trials/origin_trial_policy_impl.cc +++ b/components/embedder_support/origin_trials/origin_trial_policy_impl.cc diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index 6738cc51..d448c294 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -15,7 +15,7 @@ See also: https://github.com/bromite/bromite/issues/547 Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - android_webview/browser/aw_contents.cc | 3 +- + android_webview/browser/aw_autofill_client.cc | 3 +- chrome/android/BUILD.gn | 1 + .../settings/PasswordSettings.java | 81 ++++++++++++++++++- .../chromium/chrome/browser/tab/TabImpl.java | 51 ++++++++++++ @@ -38,19 +38,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chromium/ui/base/ViewAndroidDelegate.java | 8 ++ 21 files changed, 326 insertions(+), 9 deletions(-) -diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw_contents.cc ---- a/android_webview/browser/aw_contents.cc -+++ b/android_webview/browser/aw_contents.cc -@@ -216,7 +216,8 @@ AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID( - AwSafeBrowsingUIManager::UIManagerClient* - AwSafeBrowsingUIManager::UIManagerClient::FromWebContents( - WebContents* web_contents) { -- return AwContents::FromWebContents(web_contents); -+ return AwContents::FromWebContents(web_contents, -+ /*enable_secondary_autofill_manager*/ false); - } - - // static +diff --git a/android_webview/browser/aw_autofill_client.cc b/android_webview/browser/aw_autofill_client.cc +--- a/android_webview/browser/aw_autofill_client.cc ++++ b/android_webview/browser/aw_autofill_client.cc +@@ -369,7 +369,8 @@ AwAutofillClient::AwAutofillClient(WebContents* contents, + ? base::BindRepeating(&autofill::AndroidDriverInitHook, this) + : base::BindRepeating(&autofill::BrowserDriverInitHook, + this, +- base::android::GetDefaultLocaleString())) ++ base::android::GetDefaultLocaleString(), ++ /*enable_secondary_autofill_manager*/ false)) + #if DCHECK_IS_ON() + , + use_android_autofill_manager_(use_android_autofill_manager) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn