Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(508)

Unified Diff: base/android/java/src/org/chromium/base/library_loader/Linker.java

Issue 684453003: Add UMA for testing whether the Chromium library was page aligned in the APK file. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/android/java/src/org/chromium/base/library_loader/Linker.java
diff --git a/base/android/java/src/org/chromium/base/library_loader/Linker.java b/base/android/java/src/org/chromium/base/library_loader/Linker.java
index 8ad26d8a8391237e3dd60511487f10842deee12b..32d22fb6c549d3e28bc4036ab4a9facc559804e7 100644
--- a/base/android/java/src/org/chromium/base/library_loader/Linker.java
+++ b/base/android/java/src/org/chromium/base/library_loader/Linker.java
@@ -727,8 +727,7 @@ public class Linker {
// Don't self-load the linker. This is because the build system is
// not clever enough to understand that all the libraries packaged
// in the final .apk don't need to be explicitly loaded.
- // Also deal with the component build that adds a .cr suffix to the name.
- if (library.equals(TAG) || library.equals(TAG + ".cr")) {
+ if (isLinkerLibrary(library)) {
if (DEBUG) Log.i(TAG, "ignoring self-linker load");
return;
}
@@ -821,6 +820,14 @@ public class Linker {
}
/**
+ * Determine whether a library is the linker library. Also deal with the
+ * component build that adds a .cr suffix to the name.
+ */
+ public static boolean isLinkerLibrary(String library) {
+ return library.equals(TAG) || library.equals(TAG + ".cr");
+ }
+
+ /**
* Check whether the device supports loading a library directly from the APK file.
*
* @param apkFile Filename of the APK.
@@ -840,6 +847,25 @@ public class Linker {
}
/**
+ * Check whether a library is page aligned in the APK file.
+ *
+ * @param apkFile Filename of the APK.
+ * @param library The library's base name.
+ * @return true if page aligned.
+ */
+ public static boolean checkLibraryAlignedInApk(String apkFile, String library) {
+ synchronized (Linker.class) {
+ ensureInitializedLocked();
+
+ if (DEBUG) Log.i(TAG, "checkLibraryAlignedInApk: " + apkFile + ", " + library);
+ boolean aligned = nativeCheckLibraryAlignedInApk(apkFile, library);
+ if (DEBUG) Log.i(TAG, library + " is " + (aligned ? "" : "NOT ") +
+ "page aligned in " + apkFile);
+ return aligned;
+ }
+ }
+
+ /**
* Move activity from the native thread to the main UI thread.
* Called from native code on its own thread. Posts a callback from
* the UI thread back to native code.
@@ -942,11 +968,19 @@ public class Linker {
*
* @param apkFile Filename of the APK.
* @return true if supported.
- *
*/
private static native boolean nativeCheckLibraryLoadFromApkSupport(String apkFile);
/**
+ * Native method which checks whether a library is page aligned in the APK file.
+ *
+ * @param apkFile Filename of the APK.
+ * @param library The library's base name.
+ * @return true if page aligned.
+ */
+ private static native boolean nativeCheckLibraryAlignedInApk(String apkFile, String library);
+
+ /**
* Record information for a given library.
* IMPORTANT: Native code knows about this class's fields, so
* don't change them without modifying the corresponding C++ sources.

Powered by Google App Engine
This is Rietveld 408576698