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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/AndroidBrowserProcess.java

Issue 17450020: Drop memory class-based renderer limit on Android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address remarks. Created 7 years, 6 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: content/public/android/java/src/org/chromium/content/browser/AndroidBrowserProcess.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/AndroidBrowserProcess.java b/content/public/android/java/src/org/chromium/content/browser/AndroidBrowserProcess.java
index d4dd6f06e5c6ca3af6b930b5c095d851494f8fd4..f9871f77a15acb1c9e4a865e34c095b576b02cc6 100644
--- a/content/public/android/java/src/org/chromium/content/browser/AndroidBrowserProcess.java
+++ b/content/public/android/java/src/org/chromium/content/browser/AndroidBrowserProcess.java
@@ -1,4 +1,4 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 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.
@@ -13,35 +13,13 @@ import org.chromium.content.app.ContentMain;
import org.chromium.content.app.LibraryLoader;
import org.chromium.content.common.ProcessInitException;
-// NOTE: This file hasn't been fully upstreamed, please don't merge to downstream.
@JNINamespace("content")
public class AndroidBrowserProcess {
-
private static final String TAG = "BrowserProcessMain";
// Prevents initializing the process more than once.
private static boolean sInitialized = false;
- // Computes the actual max renderer processes used.
- private static int normalizeMaxRendererProcesses(Context context, int maxRendererProcesses) {
- if (maxRendererProcesses == MAX_RENDERERS_AUTOMATIC) {
- // We use the device's memory class to decide the maximum renderer
- // processes. For the baseline devices the memory class is 16 and we will
- // limit it to one render process. For the devices with memory class 24,
- // we allow two render processes.
- ActivityManager am = (ActivityManager)context.getSystemService(
- Context.ACTIVITY_SERVICE);
- maxRendererProcesses = Math.max(((am.getMemoryClass() - 8) / 8), 1);
- }
- if (maxRendererProcesses > MAX_RENDERERS_LIMIT) {
- Log.w(TAG, "Excessive maxRendererProcesses value: " + maxRendererProcesses);
- return MAX_RENDERERS_LIMIT;
- }
- return Math.max(0, maxRendererProcesses);
- }
-
- // Automatically decide the number of renderer processes to use based on device memory class.
- public static final int MAX_RENDERERS_AUTOMATIC = -1;
// Use single-process mode that runs the renderer on a separate thread in the main application.
public static final int MAX_RENDERERS_SINGLE_PROCESS = 0;
@@ -64,39 +42,36 @@ public class AndroidBrowserProcess {
* @param maxRendererProcesses Limit on the number of renderers to use. Each tab runs in its own
* process until the maximum number of processes is reached. The special value of
* MAX_RENDERERS_SINGLE_PROCESS requests single-process mode where the renderer will run in the
- * application process in a separate thread. If the special value MAX_RENDERERS_AUTOMATIC is
- * used then the number of renderers will be determined based on the device memory class. The
- * maximum number of allowed renderers is capped by MAX_RENDERERS_LIMIT.
-
+ * application process in a separate thread. The maximum number of allowed renderers is capped
+ * by MAX_RENDERERS_LIMIT.
+ *
* @return Whether the process actually needed to be initialized (false if already running).
*/
public static boolean init(Context context, int maxRendererProcesses)
throws ProcessInitException {
+ assert maxRendererProcesses >= 0;
+ assert maxRendererProcesses <= MAX_RENDERERS_LIMIT;
if (sInitialized) return false;
sInitialized = true;
+ Log.i(TAG, "Initializing chromium process, renderers=" + maxRendererProcesses);
- // Normally Main.java will have kicked this off asynchronously for Chrome. But
- // other ContentView apps like tests also need them so we make sure we've
- // extracted resources here. We can still make it a little async (wait until
- // the library is loaded).
+ // Normally Main.java will have kicked this off asynchronously for Chrome. But other
+ // ContentView apps like tests also need them so we make sure we've extracted resources
+ // here. We can still make it a little async (wait until the library is loaded).
ResourceExtractor resourceExtractor = ResourceExtractor.get(context);
resourceExtractor.startExtractingResources();
- // Normally Main.java will have already loaded the library asynchronously, we only
- // need to load it here if we arrived via another flow, e.g. bookmark access & sync setup.
+ // Normally Main.java will have already loaded the library asynchronously, we only need to
+ // load it here if we arrived via another flow, e.g. bookmark access & sync setup.
LibraryLoader.ensureInitialized();
// TODO(yfriedman): Remove dependency on a command line flag for this.
DeviceUtils.addDeviceSpecificUserAgentSwitch(context);
Context appContext = context.getApplicationContext();
-
- int maxRenderers = normalizeMaxRendererProcesses(appContext, maxRendererProcesses);
- Log.i(TAG, "Initializing chromium process, renderers=" + maxRenderers);
-
// Now we really need to have the resources ready.
resourceExtractor.waitForCompletion();
- nativeSetCommandLineFlags(maxRenderers,
+ nativeSetCommandLineFlags(maxRendererProcesses,
nativeIsPluginEnabled() ? getPlugins(context) : null);
ContentMain.initApplicationContext(appContext);
int result = ContentMain.start();
@@ -112,8 +87,8 @@ public class AndroidBrowserProcess {
resourceExtractor.startExtractingResources();
resourceExtractor.waitForCompletion();
- // Having a single renderer should be sufficient for tests.
- // We can't have more than MAX_RENDERERS_LIMIT.
+ // Having a single renderer should be sufficient for tests. We can't have more than
+ // MAX_RENDERERS_LIMIT.
nativeSetCommandLineFlags(1 /* maxRenderers */, null);
}
@@ -124,9 +99,8 @@ public class AndroidBrowserProcess {
private static native void nativeSetCommandLineFlags(int maxRenderProcesses,
String pluginDescriptor);
- // Is this an official build of Chrome? Only native code knows
- // for sure. Official build knowledge is needed very early in
- // process startup.
+ // Is this an official build of Chrome? Only native code knows for sure. Official build
+ // knowledge is needed very early in process startup.
private static native boolean nativeIsOfficialBuild();
private static native boolean nativeIsPluginEnabled();

Powered by Google App Engine
This is Rietveld 408576698