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

Unified Diff: base/android/java/src/org/chromium/base/SysUtils.java

Issue 1647803004: Move base to DEPS (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 11 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/SysUtils.java
diff --git a/base/android/java/src/org/chromium/base/SysUtils.java b/base/android/java/src/org/chromium/base/SysUtils.java
deleted file mode 100644
index 9dad5162999c799243ebadc0374912ed6a4c0414..0000000000000000000000000000000000000000
--- a/base/android/java/src/org/chromium/base/SysUtils.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2013 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;
-
-import android.annotation.TargetApi;
-import android.app.ActivityManager;
-import android.content.Context;
-import android.os.Build;
-import android.os.StrictMode;
-import android.util.Log;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Exposes system related information about the current device.
- */
-public class SysUtils {
- // A device reporting strictly more total memory in megabytes cannot be considered 'low-end'.
- private static final int ANDROID_LOW_MEMORY_DEVICE_THRESHOLD_MB = 512;
-
- // Number of kilobytes in a megabyte.
- private static final int KBS_IN_MB = 1024;
-
- private static final String TAG = "SysUtils";
-
- private static Boolean sLowEndDevice;
-
- private SysUtils() { }
-
- /**
- * Return the amount of physical memory on this device in kilobytes.
- * @return Amount of physical memory in kilobytes, or 0 if there was
- * an error trying to access the information.
- */
- private static int amountOfPhysicalMemoryMB() {
- // Extract total memory RAM size by parsing /proc/meminfo, note that
- // this is exactly what the implementation of sysconf(_SC_PHYS_PAGES)
- // does. However, it can't be called because this method must be
- // usable before any native code is loaded.
-
- // An alternative is to use ActivityManager.getMemoryInfo(), but this
- // requires a valid ActivityManager handle, which can only come from
- // a valid Context object, which itself cannot be retrieved
- // during early startup, where this method is called. And making it
- // an explicit parameter here makes all call paths _much_ more
- // complicated.
-
- Pattern pattern = Pattern.compile("^MemTotal:\\s+([0-9]+) kB$");
- // Synchronously reading files in /proc in the UI thread is safe.
- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
- try {
- FileReader fileReader = new FileReader("/proc/meminfo");
- try {
- BufferedReader reader = new BufferedReader(fileReader);
- try {
- String line;
- for (;;) {
- line = reader.readLine();
- if (line == null) {
- Log.w(TAG, "/proc/meminfo lacks a MemTotal entry?");
- break;
- }
- Matcher m = pattern.matcher(line);
- if (!m.find()) continue;
-
- int totalMemoryKB = Integer.parseInt(m.group(1));
- // Sanity check.
- if (totalMemoryKB <= KBS_IN_MB) {
- Log.w(TAG, "Invalid /proc/meminfo total size in kB: " + m.group(1));
- break;
- }
-
- return totalMemoryKB / KBS_IN_MB;
- }
-
- } finally {
- reader.close();
- }
- } finally {
- fileReader.close();
- }
- } catch (Exception e) {
- Log.w(TAG, "Cannot get total physical size from /proc/meminfo", e);
- } finally {
- StrictMode.setThreadPolicy(oldPolicy);
- }
-
- return 0;
- }
-
- /**
- * @return Whether or not this device should be considered a low end device.
- */
- @CalledByNative
- public static boolean isLowEndDevice() {
- if (sLowEndDevice == null) {
- sLowEndDevice = detectLowEndDevice();
- }
- return sLowEndDevice.booleanValue();
- }
-
- @TargetApi(Build.VERSION_CODES.KITKAT)
- private static boolean detectLowEndDevice() {
- assert CommandLine.isInitialized();
- if (CommandLine.getInstance().hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)) {
- return true;
- }
- if (CommandLine.getInstance().hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)) {
- return false;
- }
- // Any pre-KitKat device cannot be considered 'low-end'.
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
- return false;
- }
-
- Context context = ApplicationStatus.getApplicationContext();
- if (context != null) {
- ActivityManager activityManager = (ActivityManager)
- context.getSystemService(Context.ACTIVITY_SERVICE);
- if (activityManager.isLowRamDevice()) {
- return true;
- }
- } else {
- Log.e(TAG, "ApplicationContext is null in ApplicationStatus");
- }
-
- int ramSizeMB = amountOfPhysicalMemoryMB();
- if (ramSizeMB <= 0) {
- return false;
- }
-
- return ramSizeMB < ANDROID_LOW_MEMORY_DEVICE_THRESHOLD_MB;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698