diff options
| author | Gustav Sennton <gsennton@google.com> | 2017-10-24 14:28:26 +0100 |
|---|---|---|
| committer | Gustav Sennton <gsennton@google.com> | 2017-10-24 15:07:42 +0100 |
| commit | 0e541ef99221d7681e2fe0d721e92c4d6c74073c (patch) | |
| tree | 0a68f1418186e7bbb425c8b2ca7de34574368872 /core/java/android/webkit/WebViewLibraryLoader.java | |
| parent | 439b62c182f603b3b107b4153cd51e3e430be4f1 (diff) | |
Refactor some WebView loading logic into WebViewLibraryLoader.
This is in preparation for a patch which with bigger changes for
WebViewLibraryLoader (including tests).
Bug: 28736099
Test: ensure relro loaded into app process on 32-bit device.
Change-Id: Ic1aef697c1010380d8bce466ee14627d9cdff9e7
Diffstat (limited to 'core/java/android/webkit/WebViewLibraryLoader.java')
| -rw-r--r-- | core/java/android/webkit/WebViewLibraryLoader.java | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/core/java/android/webkit/WebViewLibraryLoader.java b/core/java/android/webkit/WebViewLibraryLoader.java index fa1a3907b1f9..175f35f41ebf 100644 --- a/core/java/android/webkit/WebViewLibraryLoader.java +++ b/core/java/android/webkit/WebViewLibraryLoader.java @@ -127,11 +127,34 @@ class WebViewLibraryLoader { } } + static int prepareNativeLibraries(PackageInfo webviewPackageInfo) + throws WebViewFactory.MissingWebViewPackageException { + String[] nativeLibs = updateWebViewZygoteVmSize(webviewPackageInfo); + if (DEBUG) Log.v(LOGTAG, "creating relro files"); + int numRelros = 0; + + // We must always trigger createRelRo regardless of the value of nativeLibraryPaths. Any + // unexpected values will be handled there to ensure that we trigger notifying any process + // waiting on relro creation. + if (Build.SUPPORTED_32_BIT_ABIS.length > 0) { + if (DEBUG) Log.v(LOGTAG, "Create 32 bit relro"); + createRelroFile(false /* is64Bit */, nativeLibs[0]); + numRelros++; + } + + if (Build.SUPPORTED_64_BIT_ABIS.length > 0) { + if (DEBUG) Log.v(LOGTAG, "Create 64 bit relro"); + createRelroFile(true /* is64Bit */, nativeLibs[1]); + numRelros++; + } + return numRelros; + } + /** * * @return the native WebView libraries in the new WebView APK. */ - static String[] updateWebViewZygoteVmSize(PackageInfo packageInfo) + private static String[] updateWebViewZygoteVmSize(PackageInfo packageInfo) throws WebViewFactory.MissingWebViewPackageException { // Find the native libraries of the new WebView package, to change the size of the // memory region in the Zygote reserved for the library. |
