Currently the SystemWebView fails a CTS test case, specifically testStrictMode from WebViewHostSideStartupTest, due to StrictMode warnings. So ignore the StrictMode warning as is done elsewhere.
125 lines
6.5 KiB
Diff
125 lines
6.5 KiB
Diff
From: hardenedfuchsiaoswhen <hardenedfuchsiaoswhen@protonmail.com>
|
|
Date: Fri, 18 Jun 2021 03:34:20 +0000
|
|
Subject: JIT-less toggle
|
|
|
|
---
|
|
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
|
|
.../browser/privacy/settings/PrivacySettings.java | 12 ++++++++++++
|
|
.../ui/android/strings/android_chrome_strings.grd | 7 +++++++
|
|
.../browser/BrowserStartupControllerImpl.java | 1 +
|
|
.../chromium/content/browser/DeviceUtilsImpl.java | 8 ++++++++
|
|
5 files changed, 33 insertions(+)
|
|
|
|
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
|
|
@@ -32,6 +32,11 @@
|
|
android:title="@string/preload_pages_title"
|
|
android:summary="@string/preload_pages_summary"
|
|
android:persistent="false"/>
|
|
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
+ android:key="force_no_jit"
|
|
+ android:title="@string/force_no_jit_title"
|
|
+ android:summary="@string/force_no_jit_summary"
|
|
+ android:defaultValue="false" />
|
|
<org.chromium.components.browser_ui.settings.ChromeBasePreference
|
|
android:key="secure_dns"
|
|
android:title="@string/settings_secure_dns_title"
|
|
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
|
|
--- 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
|
|
@@ -4,6 +4,7 @@
|
|
|
|
package org.chromium.chrome.browser.privacy.settings;
|
|
|
|
+import android.content.SharedPreferences;
|
|
import android.os.Build;
|
|
import android.content.SharedPreferences;
|
|
import android.os.Bundle;
|
|
@@ -79,6 +80,7 @@ public class PrivacySettings
|
|
private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
|
|
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
|
|
public static final String PREF_AUTOFILL_ASSISTANT = "autofill_assistant";
|
|
+ private static final String PREF_FORCE_NO_JIT = "force_no_jit";
|
|
private ChromeSwitchPreference mSearchSuggestions;
|
|
private @Nullable ChromeSwitchPreference mAutofillAssistant;
|
|
private @Nullable Preference mContextualSearch;
|
|
@@ -200,6 +202,10 @@ public class PrivacySettings
|
|
.setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
|
|
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
|
|
prefService.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
|
|
+ } else if (PREF_FORCE_NO_JIT.equals(key)) {
|
|
+ SharedPreferences.Editor sharedPreferenceEditor = ContextUtils.getAppSharedPreferences().edit();
|
|
+ sharedPreferenceEditor.putBoolean(PREF_FORCE_NO_JIT, (boolean) newValue);
|
|
+ sharedPreferenceEditor.apply();
|
|
} else if (PREF_AUTOFILL_ASSISTANT.equals(key)) {
|
|
mSharedPreferencesManager.writeBoolean(
|
|
ChromePreferenceKeys.AUTOFILL_ASSISTANT_ENABLED, (boolean) newValue);
|
|
@@ -279,6 +285,12 @@ public class PrivacySettings
|
|
historyInIncognitoPref.setChecked(
|
|
prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED));
|
|
}
|
|
+
|
|
+ ChromeSwitchPreference forceNoJit =
|
|
+ (ChromeSwitchPreference) findPreference(PREF_FORCE_NO_JIT);
|
|
+ forceNoJit.setOnPreferenceChangeListener(this);
|
|
+ forceNoJit.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
|
+
|
|
}
|
|
|
|
private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
|
|
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
|
@@ -944,6 +944,13 @@ Privacy Sandbox trials are still in active development and are available in sele
|
|
Please verify that this is a valid provider or try again later
|
|
</message>
|
|
|
|
+ <message name="IDS_FORCE_NO_JIT_TITLE" desc="Title for disable JIT settings. [CHAR-LIMIT=32]">
|
|
+ Disable JIT
|
|
+ </message>
|
|
+ <message name="IDS_FORCE_NO_JIT_SUMMARY" desc="Summary for Disable JIT settings">
|
|
+ Improve security at the expense of performance by not compiling JavaScript to native code (requires browser restart)
|
|
+ </message>
|
|
+
|
|
<message name="IDS_CLEAR_BROWSING_DATA_TITLE" desc="Title of the Clear Browsing Data screen. [CHAR_LIMIT=32]">
|
|
Clear browsing data
|
|
</message>
|
|
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
|
|
--- a/content/public/android/java/src/org/chromium/content/browser/BrowserStartupControllerImpl.java
|
|
+++ b/content/public/android/java/src/org/chromium/content/browser/BrowserStartupControllerImpl.java
|
|
@@ -453,6 +453,7 @@ public class BrowserStartupControllerImpl implements BrowserStartupController {
|
|
}
|
|
|
|
// TODO(yfriedman): Remove dependency on a command line flag for this.
|
|
+ DeviceUtilsImpl.addJitlessSwitch();
|
|
DeviceUtilsImpl.addDeviceSpecificUserAgentSwitch();
|
|
BrowserStartupControllerImplJni.get().setCommandLineFlags(singleProcess);
|
|
}
|
|
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
|
|
--- a/content/public/android/java/src/org/chromium/content/browser/DeviceUtilsImpl.java
|
|
+++ b/content/public/android/java/src/org/chromium/content/browser/DeviceUtilsImpl.java
|
|
@@ -5,6 +5,7 @@
|
|
package org.chromium.content.browser;
|
|
|
|
import org.chromium.base.CommandLine;
|
|
+import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.StrictModeContext;
|
|
import org.chromium.content_public.common.ContentSwitches;
|
|
import org.chromium.ui.base.DeviceFormFactor;
|
|
@@ -22,4 +23,11 @@ public class DeviceUtilsImpl {
|
|
}
|
|
}
|
|
}
|
|
+ public static void addJitlessSwitch() {
|
|
+ try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
|
|
+ if (ContextUtils.getAppSharedPreferences().getBoolean("force_no_jit", false)) {
|
|
+ CommandLine.getInstance().appendSwitchWithValue("js-flags", "--jitless");
|
|
+ }
|
|
+ }
|
|
+ }
|
|
}
|
|
--
|
|
2.20.1
|
|
|