OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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.chrome.browser.init; | 5 package org.chromium.chrome.browser.init; |
6 | 6 |
7 import android.app.Activity; | 7 import android.app.Activity; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.os.AsyncTask; | 9 import android.os.AsyncTask; |
10 import android.os.Build; | 10 import android.os.Build; |
11 import android.os.Handler; | 11 import android.os.Handler; |
12 import android.os.Looper; | 12 import android.os.Looper; |
13 import android.os.Process; | 13 import android.os.Process; |
14 import android.os.StrictMode; | 14 import android.os.StrictMode; |
15 import android.text.TextUtils; | |
16 | 15 |
17 import com.squareup.leakcanary.LeakCanary; | 16 import com.squareup.leakcanary.LeakCanary; |
18 | 17 |
19 import org.chromium.base.ActivityState; | 18 import org.chromium.base.ActivityState; |
20 import org.chromium.base.ApplicationStatus; | 19 import org.chromium.base.ApplicationStatus; |
21 import org.chromium.base.ApplicationStatus.ActivityStateListener; | 20 import org.chromium.base.ApplicationStatus.ActivityStateListener; |
22 import org.chromium.base.BaseSwitches; | 21 import org.chromium.base.BaseSwitches; |
23 import org.chromium.base.CommandLine; | 22 import org.chromium.base.CommandLine; |
24 import org.chromium.base.ContentUriUtils; | 23 import org.chromium.base.ContentUriUtils; |
25 import org.chromium.base.ContextUtils; | 24 import org.chromium.base.ContextUtils; |
26 import org.chromium.base.Log; | 25 import org.chromium.base.Log; |
27 import org.chromium.base.PathUtils; | 26 import org.chromium.base.PathUtils; |
28 import org.chromium.base.ResourceExtractor; | 27 import org.chromium.base.ResourceExtractor; |
29 import org.chromium.base.ThreadUtils; | 28 import org.chromium.base.ThreadUtils; |
30 import org.chromium.base.TraceEvent; | 29 import org.chromium.base.TraceEvent; |
31 import org.chromium.base.annotations.RemovableInRelease; | 30 import org.chromium.base.annotations.RemovableInRelease; |
32 import org.chromium.base.library_loader.LibraryLoader; | 31 import org.chromium.base.library_loader.LibraryLoader; |
33 import org.chromium.base.library_loader.LibraryProcessType; | 32 import org.chromium.base.library_loader.LibraryProcessType; |
34 import org.chromium.base.library_loader.ProcessInitException; | 33 import org.chromium.base.library_loader.ProcessInitException; |
35 import org.chromium.chrome.browser.ChromeApplication; | 34 import org.chromium.chrome.browser.ChromeApplication; |
36 import org.chromium.chrome.browser.ChromeStrictMode; | 35 import org.chromium.chrome.browser.ChromeStrictMode; |
37 import org.chromium.chrome.browser.ChromeSwitches; | 36 import org.chromium.chrome.browser.ChromeSwitches; |
38 import org.chromium.chrome.browser.FileProviderHelper; | 37 import org.chromium.chrome.browser.FileProviderHelper; |
39 import org.chromium.chrome.browser.crash.MinidumpDirectoryObserver; | 38 import org.chromium.chrome.browser.crash.MinidumpDirectoryObserver; |
40 import org.chromium.chrome.browser.device.DeviceClassManager; | 39 import org.chromium.chrome.browser.device.DeviceClassManager; |
41 import org.chromium.chrome.browser.services.GoogleServicesManager; | 40 import org.chromium.chrome.browser.services.GoogleServicesManager; |
42 import org.chromium.chrome.browser.tabmodel.document.DocumentTabModelImpl; | 41 import org.chromium.chrome.browser.tabmodel.document.DocumentTabModelImpl; |
43 import org.chromium.chrome.browser.webapps.ActivityAssigner; | 42 import org.chromium.chrome.browser.webapps.ActivityAssigner; |
44 import org.chromium.chrome.browser.webapps.ChromeWebApkHost; | 43 import org.chromium.chrome.browser.webapps.ChromeWebApkHost; |
45 import org.chromium.components.variations.VariationsAssociatedData; | |
46 import org.chromium.content.app.ContentApplication; | 44 import org.chromium.content.app.ContentApplication; |
47 import org.chromium.content.browser.BrowserStartupController; | 45 import org.chromium.content.browser.BrowserStartupController; |
48 import org.chromium.content.browser.ChildProcessCreationParams; | 46 import org.chromium.content.browser.ChildProcessCreationParams; |
49 import org.chromium.content.browser.DeviceUtils; | 47 import org.chromium.content.browser.DeviceUtils; |
50 import org.chromium.content.browser.SpeechRecognition; | 48 import org.chromium.content.browser.SpeechRecognition; |
51 import org.chromium.net.NetworkChangeNotifier; | 49 import org.chromium.net.NetworkChangeNotifier; |
52 import org.chromium.policy.CombinedPolicyProvider; | 50 import org.chromium.policy.CombinedPolicyProvider; |
53 import org.chromium.ui.base.DeviceFormFactor; | 51 import org.chromium.ui.base.DeviceFormFactor; |
54 | 52 |
55 import java.util.LinkedList; | 53 import java.util.LinkedList; |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 | 388 |
391 SpeechRecognition.initialize(mApplication); | 389 SpeechRecognition.initialize(mApplication); |
392 } | 390 } |
393 | 391 |
394 private void onFinishNativeInitialization() { | 392 private void onFinishNativeInitialization() { |
395 if (mNativeInitializationComplete) return; | 393 if (mNativeInitializationComplete) return; |
396 | 394 |
397 mNativeInitializationComplete = true; | 395 mNativeInitializationComplete = true; |
398 ContentUriUtils.setFileProviderUtil(new FileProviderHelper()); | 396 ContentUriUtils.setFileProviderUtil(new FileProviderHelper()); |
399 | 397 |
400 if (TextUtils.equals("true", VariationsAssociatedData.getVariationParamV
alue( | 398 // Start the file observer to watch the minidump directory. |
401 MinidumpDirectoryObserver.MINIDUMP_EXPERIMENT_NAME, "Enabled")))
{ | 399 new AsyncTask<Void, Void, MinidumpDirectoryObserver>() { |
| 400 @Override |
| 401 protected MinidumpDirectoryObserver doInBackground(Void... params) { |
| 402 return new MinidumpDirectoryObserver(); |
| 403 } |
402 | 404 |
403 // Start the file observer to watch the minidump directory. | 405 @Override |
404 new AsyncTask<Void, Void, MinidumpDirectoryObserver>() { | 406 protected void onPostExecute(MinidumpDirectoryObserver minidumpDirec
toryObserver) { |
405 @Override | 407 mMinidumpDirectoryObserver = minidumpDirectoryObserver; |
406 protected MinidumpDirectoryObserver doInBackground(Void... param
s) { | 408 mMinidumpDirectoryObserver.startWatching(); |
407 return new MinidumpDirectoryObserver(); | 409 } |
408 } | 410 }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); |
409 | |
410 @Override | |
411 protected void onPostExecute(MinidumpDirectoryObserver minidumpD
irectoryObserver) { | |
412 mMinidumpDirectoryObserver = minidumpDirectoryObserver; | |
413 mMinidumpDirectoryObserver.startWatching(); | |
414 } | |
415 }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | |
416 } | |
417 } | 411 } |
418 | 412 |
419 private void waitForDebuggerIfNeeded() { | 413 private void waitForDebuggerIfNeeded() { |
420 if (CommandLine.getInstance().hasSwitch(BaseSwitches.WAIT_FOR_JAVA_DEBUG
GER)) { | 414 if (CommandLine.getInstance().hasSwitch(BaseSwitches.WAIT_FOR_JAVA_DEBUG
GER)) { |
421 Log.e(TAG, "Waiting for Java debugger to connect..."); | 415 Log.e(TAG, "Waiting for Java debugger to connect..."); |
422 android.os.Debug.waitForDebugger(); | 416 android.os.Debug.waitForDebugger(); |
423 Log.e(TAG, "Java debugger connected. Resuming execution."); | 417 Log.e(TAG, "Java debugger connected. Resuming execution."); |
424 } | 418 } |
425 } | 419 } |
426 | 420 |
427 private ActivityStateListener createActivityStateListener() { | 421 private ActivityStateListener createActivityStateListener() { |
428 return new ActivityStateListener() { | 422 return new ActivityStateListener() { |
429 @Override | 423 @Override |
430 public void onActivityStateChange(Activity activity, int newState) { | 424 public void onActivityStateChange(Activity activity, int newState) { |
431 if (newState == ActivityState.CREATED || newState == ActivitySta
te.DESTROYED) { | 425 if (newState == ActivityState.CREATED || newState == ActivitySta
te.DESTROYED) { |
432 // Android destroys Activities at some point after a locale
change, but doesn't | 426 // Android destroys Activities at some point after a locale
change, but doesn't |
433 // kill the process. This can lead to a bug where Chrome is
halfway RTL, where | 427 // kill the process. This can lead to a bug where Chrome is
halfway RTL, where |
434 // stale natively-loaded resources are not reloaded (http://
crbug.com/552618). | 428 // stale natively-loaded resources are not reloaded (http://
crbug.com/552618). |
435 if (!mInitialLocale.equals(Locale.getDefault())) { | 429 if (!mInitialLocale.equals(Locale.getDefault())) { |
436 Log.e(TAG, "Killing process because of locale change."); | 430 Log.e(TAG, "Killing process because of locale change."); |
437 Process.killProcess(Process.myPid()); | 431 Process.killProcess(Process.myPid()); |
438 } | 432 } |
439 | 433 |
440 DeviceFormFactor.resetValuesIfNeeded(mApplication); | 434 DeviceFormFactor.resetValuesIfNeeded(mApplication); |
441 } | 435 } |
442 } | 436 } |
443 }; | 437 }; |
444 } | 438 } |
445 } | 439 } |
OLD | NEW |