JIT-less-toggle.patch 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. From: hardenedfuchsiaoswhen <hardenedfuchsiaoswhen@protonmail.com>
  2. Date: Fri, 18 Jun 2021 03:34:20 +0000
  3. Subject: JIT-less toggle
  4. ---
  5. chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
  6. .../browser/privacy/settings/PrivacySettings.java | 12 ++++++++++++
  7. .../ui/android/strings/android_chrome_strings.grd | 7 +++++++
  8. .../browser/BrowserStartupControllerImpl.java | 1 +
  9. .../chromium/content/browser/DeviceUtilsImpl.java | 6 ++++++
  10. 5 files changed, 31 insertions(+)
  11. diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
  12. --- a/chrome/android/java/res/xml/privacy_preferences.xml
  13. +++ b/chrome/android/java/res/xml/privacy_preferences.xml
  14. @@ -32,6 +32,11 @@
  15. android:title="@string/preload_pages_title"
  16. android:summary="@string/preload_pages_summary"
  17. android:persistent="false"/>
  18. + <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
  19. + android:key="force_no_jit"
  20. + android:title="@string/force_no_jit_title"
  21. + android:summary="@string/force_no_jit_summary"
  22. + android:defaultValue="false" />
  23. <org.chromium.components.browser_ui.settings.ChromeBasePreference
  24. android:key="secure_dns"
  25. android:title="@string/settings_secure_dns_title"
  26. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
  27. --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
  28. +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
  29. @@ -4,6 +4,7 @@
  30. package org.chromium.chrome.browser.privacy.settings;
  31. +import android.content.SharedPreferences;
  32. import android.os.Build;
  33. import android.content.SharedPreferences;
  34. import android.os.Bundle;
  35. @@ -79,6 +80,7 @@ public class PrivacySettings
  36. private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
  37. private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
  38. public static final String PREF_AUTOFILL_ASSISTANT = "autofill_assistant";
  39. + private static final String PREF_FORCE_NO_JIT = "force_no_jit";
  40. private ChromeSwitchPreference mSearchSuggestions;
  41. private @Nullable ChromeSwitchPreference mAutofillAssistant;
  42. private @Nullable Preference mContextualSearch;
  43. @@ -200,6 +202,10 @@ public class PrivacySettings
  44. .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
  45. } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
  46. prefService.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
  47. + } else if (PREF_FORCE_NO_JIT.equals(key)) {
  48. + SharedPreferences.Editor sharedPreferenceEditor = ContextUtils.getAppSharedPreferences().edit();
  49. + sharedPreferenceEditor.putBoolean(PREF_FORCE_NO_JIT, (boolean) newValue);
  50. + sharedPreferenceEditor.apply();
  51. } else if (PREF_AUTOFILL_ASSISTANT.equals(key)) {
  52. mSharedPreferencesManager.writeBoolean(
  53. ChromePreferenceKeys.AUTOFILL_ASSISTANT_ENABLED, (boolean) newValue);
  54. @@ -279,6 +285,12 @@ public class PrivacySettings
  55. historyInIncognitoPref.setChecked(
  56. prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED));
  57. }
  58. +
  59. + ChromeSwitchPreference forceNoJit =
  60. + (ChromeSwitchPreference) findPreference(PREF_FORCE_NO_JIT);
  61. + forceNoJit.setOnPreferenceChangeListener(this);
  62. + forceNoJit.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  63. +
  64. }
  65. private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
  66. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  67. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  68. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  69. @@ -944,6 +944,13 @@ Privacy Sandbox trials are still in active development and are available in sele
  70. Please verify that this is a valid provider or try again later
  71. </message>
  72. + <message name="IDS_FORCE_NO_JIT_TITLE" desc="Title for disable JIT settings. [CHAR-LIMIT=32]">
  73. + Disable JIT
  74. + </message>
  75. + <message name="IDS_FORCE_NO_JIT_SUMMARY" desc="Summary for Disable JIT settings">
  76. + Improve security at the expense of performance by not compiling JavaScript to native code (requires browser restart)
  77. + </message>
  78. +
  79. <message name="IDS_CLEAR_BROWSING_DATA_TITLE" desc="Title of the Clear Browsing Data screen. [CHAR_LIMIT=32]">
  80. Clear browsing data
  81. </message>
  82. diff --git a/content/public/android/java/src/org/chromium/content/browser/BrowserStartupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/BrowserStartupControllerImpl.java
  83. --- a/content/public/android/java/src/org/chromium/content/browser/BrowserStartupControllerImpl.java
  84. +++ b/content/public/android/java/src/org/chromium/content/browser/BrowserStartupControllerImpl.java
  85. @@ -453,6 +453,7 @@ public class BrowserStartupControllerImpl implements BrowserStartupController {
  86. }
  87. // TODO(yfriedman): Remove dependency on a command line flag for this.
  88. + DeviceUtilsImpl.addJitlessSwitch();
  89. DeviceUtilsImpl.addDeviceSpecificUserAgentSwitch();
  90. BrowserStartupControllerImplJni.get().setCommandLineFlags(singleProcess);
  91. }
  92. diff --git a/content/public/android/java/src/org/chromium/content/browser/DeviceUtilsImpl.java b/content/public/android/java/src/org/chromium/content/browser/DeviceUtilsImpl.java
  93. --- a/content/public/android/java/src/org/chromium/content/browser/DeviceUtilsImpl.java
  94. +++ b/content/public/android/java/src/org/chromium/content/browser/DeviceUtilsImpl.java
  95. @@ -5,6 +5,7 @@
  96. package org.chromium.content.browser;
  97. import org.chromium.base.CommandLine;
  98. +import org.chromium.base.ContextUtils;
  99. import org.chromium.base.StrictModeContext;
  100. import org.chromium.content_public.common.ContentSwitches;
  101. import org.chromium.ui.base.DeviceFormFactor;
  102. @@ -22,4 +23,9 @@ public class DeviceUtilsImpl {
  103. }
  104. }
  105. }
  106. + public static void addJitlessSwitch() {
  107. + if (ContextUtils.getAppSharedPreferences().getBoolean("force_no_jit", false)) {
  108. + CommandLine.getInstance().appendSwitchWithValue("js-flags", "--jitless");
  109. + }
  110. + }
  111. }
  112. --
  113. 2.20.1