OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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; | 5 package org.chromium.chrome.browser; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.content.SharedPreferences; | 8 import android.content.SharedPreferences; |
9 import android.os.AsyncTask; | 9 import android.os.AsyncTask; |
10 import android.os.Looper; | 10 import android.os.Looper; |
11 import android.os.MessageQueue; | 11 import android.os.MessageQueue; |
12 import android.os.SystemClock; | 12 import android.os.SystemClock; |
13 import android.support.annotation.UiThread; | 13 import android.support.annotation.UiThread; |
14 import android.support.annotation.WorkerThread; | 14 import android.support.annotation.WorkerThread; |
15 import android.view.inputmethod.InputMethodInfo; | 15 import android.view.inputmethod.InputMethodInfo; |
16 import android.view.inputmethod.InputMethodManager; | 16 import android.view.inputmethod.InputMethodManager; |
17 import android.view.inputmethod.InputMethodSubtype; | 17 import android.view.inputmethod.InputMethodSubtype; |
18 | 18 |
19 import org.chromium.base.CommandLine; | |
20 import org.chromium.base.ContextUtils; | 19 import org.chromium.base.ContextUtils; |
21 import org.chromium.base.FieldTrialList; | 20 import org.chromium.base.FieldTrialList; |
22 import org.chromium.base.Log; | 21 import org.chromium.base.Log; |
23 import org.chromium.base.PowerMonitor; | 22 import org.chromium.base.PowerMonitor; |
24 import org.chromium.base.SysUtils; | 23 import org.chromium.base.SysUtils; |
25 import org.chromium.base.ThreadUtils; | 24 import org.chromium.base.ThreadUtils; |
26 import org.chromium.base.TraceEvent; | 25 import org.chromium.base.TraceEvent; |
27 import org.chromium.base.VisibleForTesting; | 26 import org.chromium.base.VisibleForTesting; |
28 import org.chromium.base.metrics.RecordHistogram; | 27 import org.chromium.base.metrics.RecordHistogram; |
29 import org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProvider; | 28 import org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProvider; |
30 import org.chromium.chrome.browser.crash.LogcatExtractionRunnable; | 29 import org.chromium.chrome.browser.crash.LogcatExtractionRunnable; |
31 import org.chromium.chrome.browser.crash.MinidumpUploadService; | 30 import org.chromium.chrome.browser.crash.MinidumpUploadService; |
32 import org.chromium.chrome.browser.init.ProcessInitializationHandler; | 31 import org.chromium.chrome.browser.init.ProcessInitializationHandler; |
33 import org.chromium.chrome.browser.locale.LocaleManager; | 32 import org.chromium.chrome.browser.locale.LocaleManager; |
34 import org.chromium.chrome.browser.media.MediaCaptureNotificationService; | 33 import org.chromium.chrome.browser.media.MediaCaptureNotificationService; |
35 import org.chromium.chrome.browser.metrics.LaunchMetrics; | 34 import org.chromium.chrome.browser.metrics.LaunchMetrics; |
36 import org.chromium.chrome.browser.metrics.UmaUtils; | 35 import org.chromium.chrome.browser.metrics.UmaUtils; |
37 import org.chromium.chrome.browser.ntp.NewTabPage; | 36 import org.chromium.chrome.browser.ntp.NewTabPage; |
38 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; | 37 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; |
39 import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim; | 38 import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim; |
40 import org.chromium.chrome.browser.partnercustomizations.HomepageManager; | 39 import org.chromium.chrome.browser.partnercustomizations.HomepageManager; |
41 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza
tions; | 40 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza
tions; |
42 import org.chromium.chrome.browser.physicalweb.PhysicalWeb; | 41 import org.chromium.chrome.browser.physicalweb.PhysicalWeb; |
43 import org.chromium.chrome.browser.precache.PrecacheLauncher; | 42 import org.chromium.chrome.browser.precache.PrecacheLauncher; |
44 import org.chromium.chrome.browser.preferences.ChromePreferenceManager; | 43 import org.chromium.chrome.browser.preferences.ChromePreferenceManager; |
45 import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager
; | |
46 import org.chromium.chrome.browser.share.ShareHelper; | 44 import org.chromium.chrome.browser.share.ShareHelper; |
47 import org.chromium.chrome.browser.webapps.ChromeWebApkHost; | 45 import org.chromium.chrome.browser.webapps.ChromeWebApkHost; |
48 import org.chromium.chrome.browser.webapps.WebApkVersionManager; | 46 import org.chromium.chrome.browser.webapps.WebApkVersionManager; |
49 import org.chromium.chrome.browser.webapps.WebappRegistry; | 47 import org.chromium.chrome.browser.webapps.WebappRegistry; |
50 import org.chromium.components.minidump_uploader.CrashFileManager; | 48 import org.chromium.components.minidump_uploader.CrashFileManager; |
51 import org.chromium.content.browser.ChildProcessLauncher; | 49 import org.chromium.content.browser.ChildProcessLauncher; |
52 | 50 |
53 import java.io.File; | 51 import java.io.File; |
54 import java.util.ArrayList; | 52 import java.util.ArrayList; |
55 import java.util.Arrays; | 53 import java.util.Arrays; |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 SystemClock.uptimeMillis() - mAsyncTaskStartTime, TimeUn
it.MILLISECONDS); | 307 SystemClock.uptimeMillis() - mAsyncTaskStartTime, TimeUn
it.MILLISECONDS); |
310 } | 308 } |
311 | 309 |
312 /** | 310 /** |
313 * Initializes the crash reporting system. More specifically, enable
s the crash | 311 * Initializes the crash reporting system. More specifically, enable
s the crash |
314 * reporting system if it is user-permitted, and initiates uploading
of any pending | 312 * reporting system if it is user-permitted, and initiates uploading
of any pending |
315 * crash reports. Also updates some UMA metrics and performs cleanup
in the local crash | 313 * crash reports. Also updates some UMA metrics and performs cleanup
in the local crash |
316 * minidump storage directory. | 314 * minidump storage directory. |
317 */ | 315 */ |
318 private void initCrashReporting() { | 316 private void initCrashReporting() { |
319 // Perform cleanup prior to checking whether crash reporting is
enabled, so that | |
320 // users who disable crash reporting are still able to eventuall
y recover disk space | |
321 // dedicated to storing pending crash reports. | |
322 CrashFileManager crashFileManager = new CrashFileManager(mAppCon
text.getCacheDir()); | |
323 crashFileManager.cleanOutAllNonFreshMinidumpFiles(); | |
324 | |
325 // Likewise, there might be pending metrics from previous runs w
hen crash reporting | |
326 // was enabled. | |
327 MinidumpUploadService.storeBreakpadUploadStatsInUma( | |
328 ChromePreferenceManager.getInstance()); | |
329 | |
330 // Now check whether crash reporting is enabled. If it is, broad
cast the appropriate | |
331 // permission. | |
332 boolean crashReportingDisabled = CommandLine.getInstance().hasSw
itch( | |
333 ChromeSwitches.DISABLE_CRASH_DUMP_UPLOAD); | |
334 if (crashReportingDisabled) return; | |
335 PrivacyPreferencesManager.getInstance().enablePotentialCrashUplo
ading(); | |
336 | |
337 RecordHistogram.recordLongTimesHistogram("UMA.Debug.EnableCrashU
pload.Uptime3", | 317 RecordHistogram.recordLongTimesHistogram("UMA.Debug.EnableCrashU
pload.Uptime3", |
338 mAsyncTaskStartTime - UmaUtils.getForegroundStartTime(), | 318 mAsyncTaskStartTime - UmaUtils.getForegroundStartTime(), |
339 TimeUnit.MILLISECONDS); | 319 TimeUnit.MILLISECONDS); |
340 | 320 |
| 321 // Crash reports can be uploaded as part of a background service
even while the main |
| 322 // Chrome activity is not running, and hence regular metrics rep
orting is not |
| 323 // possible. Instead, metrics are temporarily written to prefs;
export those prefs |
| 324 // to UMA metrics here. |
| 325 MinidumpUploadService.storeBreakpadUploadStatsInUma( |
| 326 ChromePreferenceManager.getInstance()); |
| 327 |
| 328 // Likewise, this is a good time to process and clean up any pen
ding or stale crash |
| 329 // reports left behind by previous runs. |
| 330 CrashFileManager crashFileManager = new CrashFileManager(mAppCon
text.getCacheDir()); |
| 331 crashFileManager.cleanOutAllNonFreshMinidumpFiles(); |
| 332 |
341 // Finally, uploading any pending crash reports. | 333 // Finally, uploading any pending crash reports. |
342 File[] minidumps = crashFileManager.getAllMinidumpFiles( | 334 File[] minidumps = crashFileManager.getAllMinidumpFiles( |
343 MinidumpUploadService.MAX_TRIES_ALLOWED); | 335 MinidumpUploadService.MAX_TRIES_ALLOWED); |
344 int numMinidumpsSansLogcat = 0; | 336 int numMinidumpsSansLogcat = 0; |
345 for (File minidump : minidumps) { | 337 for (File minidump : minidumps) { |
346 if (CrashFileManager.isMinidumpMIMEFirstTry(minidump.getName
())) { | 338 if (CrashFileManager.isMinidumpMIMEFirstTry(minidump.getName
())) { |
347 ++numMinidumpsSansLogcat; | 339 ++numMinidumpsSansLogcat; |
348 } | 340 } |
349 } | 341 } |
350 // TODO(isherman): These two histograms are intended to be tempo
rary, and can | 342 // TODO(isherman): These two histograms are intended to be tempo
rary, and can |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 } | 454 } |
463 | 455 |
464 /** | 456 /** |
465 * @return Whether deferred startup has been completed. | 457 * @return Whether deferred startup has been completed. |
466 */ | 458 */ |
467 @VisibleForTesting | 459 @VisibleForTesting |
468 public boolean isDeferredStartupCompleteForApp() { | 460 public boolean isDeferredStartupCompleteForApp() { |
469 return mDeferredStartupCompletedForApp; | 461 return mDeferredStartupCompletedForApp; |
470 } | 462 } |
471 } | 463 } |
OLD | NEW |