OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.content.browser; | 5 package org.chromium.content.browser; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.os.Handler; | 8 import android.os.Handler; |
9 import android.os.StrictMode; | 9 import android.os.StrictMode; |
10 | 10 |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 | 111 |
112 // This field is set after startup has been completed based on whether the s
tartup was a success | 112 // This field is set after startup has been completed based on whether the s
tartup was a success |
113 // or not. It is used when later requests to startup come in that happen aft
er the initial set | 113 // or not. It is used when later requests to startup come in that happen aft
er the initial set |
114 // of enqueued callbacks have been executed. | 114 // of enqueued callbacks have been executed. |
115 private boolean mStartupSuccess; | 115 private boolean mStartupSuccess; |
116 | 116 |
117 private int mLibraryProcessType; | 117 private int mLibraryProcessType; |
118 | 118 |
119 BrowserStartupController(Context context, int libraryProcessType) { | 119 BrowserStartupController(Context context, int libraryProcessType) { |
120 mContext = context.getApplicationContext(); | 120 mContext = context.getApplicationContext(); |
121 mAsyncStartupCallbacks = new ArrayList<StartupCallback>(); | 121 mAsyncStartupCallbacks = new ArrayList<>(); |
122 mLibraryProcessType = libraryProcessType; | 122 mLibraryProcessType = libraryProcessType; |
123 } | 123 } |
124 | 124 |
125 /** | 125 /** |
126 * Get BrowserStartupController instance, create a new one if no existing. | 126 * Get BrowserStartupController instance, create a new one if no existing. |
127 * | 127 * |
128 * @param context the application context. | 128 * @param context the application context. |
129 * @param libraryProcessType the type of process the shared library is loade
d. it must be | 129 * @param libraryProcessType the type of process the shared library is loade
d. it must be |
130 * LibraryProcessType.PROCESS_BROWSER or | 130 * LibraryProcessType.PROCESS_BROWSER or |
131 * LibraryProcessType.PROCESS_WEBVIEW. | 131 * LibraryProcessType.PROCESS_WEBVIEW. |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 | 295 |
296 // This strictmode exception is to cover the case where the browser proc
ess is being started | 296 // This strictmode exception is to cover the case where the browser proc
ess is being started |
297 // asynchronously but not in the main browser flow. The main browser fl
ow will trigger | 297 // asynchronously but not in the main browser flow. The main browser fl
ow will trigger |
298 // library loading earlier and this will be a no-op, but in the other ca
ses this will need | 298 // library loading earlier and this will be a no-op, but in the other ca
ses this will need |
299 // to block on loading libraries. | 299 // to block on loading libraries. |
300 // This applies to tests and ManageSpaceActivity, which can be launched
from Settings. | 300 // This applies to tests and ManageSpaceActivity, which can be launched
from Settings. |
301 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); | 301 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); |
302 try { | 302 try { |
303 // Normally Main.java will have already loaded the library asynchron
ously, we only need | 303 // Normally Main.java will have already loaded the library asynchron
ously, we only need |
304 // to load it here if we arrived via another flow, e.g. bookmark acc
ess & sync setup. | 304 // to load it here if we arrived via another flow, e.g. bookmark acc
ess & sync setup. |
305 LibraryLoader.get(mLibraryProcessType).ensureInitialized(mContext); | 305 LibraryLoader.get(mLibraryProcessType).ensureInitialized(); |
306 } finally { | 306 } finally { |
307 StrictMode.setThreadPolicy(oldPolicy); | 307 StrictMode.setThreadPolicy(oldPolicy); |
308 } | 308 } |
309 | 309 |
310 Runnable postResourceExtraction = new Runnable() { | 310 Runnable postResourceExtraction = new Runnable() { |
311 @Override | 311 @Override |
312 public void run() { | 312 public void run() { |
313 if (!mPostResourceExtractionTasksCompleted) { | 313 if (!mPostResourceExtractionTasksCompleted) { |
314 // TODO(yfriedman): Remove dependency on a command line flag
for this. | 314 // TODO(yfriedman): Remove dependency on a command line flag
for this. |
315 DeviceUtils.addDeviceSpecificUserAgentSwitch(mContext); | 315 DeviceUtils.addDeviceSpecificUserAgentSwitch(mContext); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 | 348 |
349 private static native void nativeSetCommandLineFlags( | 349 private static native void nativeSetCommandLineFlags( |
350 boolean singleProcess, String pluginDescriptor); | 350 boolean singleProcess, String pluginDescriptor); |
351 | 351 |
352 // Is this an official build of Chrome? Only native code knows for sure. Off
icial build | 352 // Is this an official build of Chrome? Only native code knows for sure. Off
icial build |
353 // knowledge is needed very early in process startup. | 353 // knowledge is needed very early in process startup. |
354 private static native boolean nativeIsOfficialBuild(); | 354 private static native boolean nativeIsOfficialBuild(); |
355 | 355 |
356 private static native boolean nativeIsPluginEnabled(); | 356 private static native boolean nativeIsPluginEnabled(); |
357 } | 357 } |
OLD | NEW |