| Index: content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java b/content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java
|
| index de15c30dfb9f7367761b481dc28a2d145716ea8b..77229a617a62184bbcbebf48178e9921900bd472 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java
|
| @@ -16,6 +16,7 @@ import org.chromium.base.ThreadUtils;
|
| import org.chromium.content.app.ContentMain;
|
| import org.chromium.content.app.LibraryLoader;
|
| import org.chromium.content.common.ProcessInitException;
|
| +import org.chromium.content.common.ResultCodes;
|
|
|
| import java.util.ArrayList;
|
| import java.util.List;
|
| @@ -139,7 +140,8 @@ public class BrowserStartupController {
|
| *
|
| * @param callback the callback to be called when browser startup is complete.
|
| */
|
| - public void startBrowserProcessesAsync(final StartupCallback callback) {
|
| + public void startBrowserProcessesAsync(final StartupCallback callback)
|
| + throws ProcessInitException {
|
| assert ThreadUtils.runningOnUiThread() : "Tried to start the browser on the wrong thread.";
|
| if (mStartupDone) {
|
| // Browser process initialization has already been completed, so we can immediately post
|
| @@ -156,7 +158,7 @@ public class BrowserStartupController {
|
| // flag that indicates that we have kicked off starting the browser process.
|
| mHasStartedInitializingBrowserProcess = true;
|
|
|
| - if (!tryPrepareToStartBrowserProcess(MAX_RENDERERS_LIMIT)) return;
|
| + prepareToStartBrowserProcess(MAX_RENDERERS_LIMIT);
|
|
|
| setAsynchronousStartup(true);
|
| if (contentStart() > 0) {
|
| @@ -166,18 +168,6 @@ public class BrowserStartupController {
|
| }
|
| }
|
|
|
| - private boolean tryPrepareToStartBrowserProcess(int maxRenderers) {
|
| - // Make sure that everything is in place to initialize the Android browser process.
|
| - try {
|
| - prepareToStartBrowserProcess(maxRenderers);
|
| - return true;
|
| - } catch (ProcessInitException e) {
|
| - Log.e(TAG, "Unable to load native library.", e);
|
| - enqueueCallbackExecution(STARTUP_FAILURE, NOT_ALREADY_STARTED);
|
| - return false;
|
| - }
|
| - }
|
| -
|
| /**
|
| * Start the browser process synchronously. If the browser is already being started
|
| * asynchronously then complete startup synchronously
|
| @@ -188,25 +178,27 @@ public class BrowserStartupController {
|
| * @param maxRenderers The maximum number of renderer processes the browser may
|
| * create. Zero for single process mode.
|
| * @return true if successfully started, false otherwise.
|
| + * @throws ProcessInitException
|
| */
|
| - public boolean startBrowserProcessesSync(int maxRenderers) {
|
| - if (mStartupDone) {
|
| - // Nothing to do
|
| - return mStartupSuccess;
|
| - }
|
| - if (!mHasStartedInitializingBrowserProcess) {
|
| - if (!tryPrepareToStartBrowserProcess(maxRenderers)) return false;
|
| - }
|
| + public void startBrowserProcessesSync(int maxRenderers) throws ProcessInitException {
|
| + // If already started skip to checking the result
|
| + if (!mStartupDone) {
|
| + if (!mHasStartedInitializingBrowserProcess) {
|
| + prepareToStartBrowserProcess(maxRenderers);
|
| + }
|
|
|
| - setAsynchronousStartup(false);
|
| - if (contentStart() > 0) {
|
| - // Failed. The callbacks may not have run, so run them.
|
| - enqueueCallbackExecution(STARTUP_FAILURE, NOT_ALREADY_STARTED);
|
| + setAsynchronousStartup(false);
|
| + if (contentStart() > 0) {
|
| + // Failed. The callbacks may not have run, so run them.
|
| + enqueueCallbackExecution(STARTUP_FAILURE, NOT_ALREADY_STARTED);
|
| + }
|
| }
|
|
|
| // Startup should now be complete
|
| assert mStartupDone;
|
| - return mStartupSuccess;
|
| + if(!mStartupSuccess) {
|
| + throw new ProcessInitException(ResultCodes.RESULT_CODE_NATIVE_STARTUP_FAILED);
|
| + }
|
| }
|
|
|
| /**
|
|
|