Index: base/android/java/src/org/chromium/base/CpuFeatures.java |
diff --git a/base/android/java/src/org/chromium/base/CpuFeatures.java b/base/android/java/src/org/chromium/base/CpuFeatures.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f298fb1e1653069ca22c4155b9bea59c2c480ef7 |
--- /dev/null |
+++ b/base/android/java/src/org/chromium/base/CpuFeatures.java |
@@ -0,0 +1,40 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.base; |
+ |
+// The only purpose of this class is to allow sending CPU properties |
+// from the browser process to sandboxed renderer processes. This is |
+// needed because sandboxed processes cannot, on ARM, query the kernel |
+// about the CPU's properties by parsing /proc, so this operation must |
+// be performed in the browser process, and the result passed to |
+// renderer ones. |
+// |
+// For more context, see http://crbug.com/164154 |
+// |
+// Technically, this is a wrapper around the native NDK cpufeatures |
+// library. The exact CPU features bits are never used in Java so |
+// there is no point in duplicating their definitions here. |
+// |
+@JNINamespace("base::android") |
+public abstract class CpuFeatures { |
+ /** |
+ * Return the number of CPU Cores on the device. |
+ */ |
+ public static int getCount() { |
+ return nativeGetCoreCount(); |
+ } |
+ |
+ /** |
+ * Return the CPU feature mask. |
+ * This is a 64-bit integer that corresponds to the CPU's features. |
+ * The value comes directly from android_getCpuFeatures(). |
+ */ |
+ public static long getMask() { |
+ return nativeGetCpuFeatures(); |
+ } |
+ |
+ private static native int nativeGetCoreCount(); |
+ private static native long nativeGetCpuFeatures(); |
+} |