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

Side by Side Diff: android_webview/java/src/org/chromium/android_webview/crash/MinidumpUploadJobService.java

Issue 2515353005: [Android WebView] Implement copying and uploading of Minidumps. (Closed)
Patch Set: Fix findbugs errors for realz! Created 4 years 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 package org.chromium.android_webview.crash;
5
6 import android.annotation.TargetApi;
7 import android.app.job.JobParameters;
8 import android.app.job.JobService;
9 import android.os.Build;
10
11 import org.chromium.base.ContextUtils;
12
13 /**
14 * Class that interacts with the Android JobScheduler to upload Minidumps at app ropriate times.
15 */
16 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
17 // OBS: This class needs to be public to be started from android.app.ActivityThr ead.
18 public class MinidumpUploadJobService extends JobService {
19 Object mRunningLock = new Object();
20 boolean mRunningJob = false;
21 MinidumpUploader mMinidumpUploader;
22
23 @Override
24 public void onCreate() {
25 super.onCreate();
26 SynchronizedWebViewCommandLine.initOnSeparateThread();
27 }
28
29 @Override
30 public boolean onStartJob(JobParameters params) {
31 // Ensure we can use ContextUtils later on (from minidump_uploader compo nent).
32 ContextUtils.initApplicationContext(this.getApplicationContext());
33
34 // Ensure we only run one job at a time.
35 synchronized (mRunningLock) {
36 assert !mRunningJob;
37 mRunningJob = true;
38 }
39 mMinidumpUploader = new MinidumpUploaderImpl(this, true /* cleanOutMinid umps */);
40 mMinidumpUploader.uploadAllMinidumps(createJobFinishedCallback(params));
41 return true; // true = processing work on a separate thread, false = don e already.
42 }
43
44 @Override
45 public boolean onStopJob(JobParameters params) {
46 boolean reschedule = mMinidumpUploader.cancelUploads();
47 synchronized (mRunningLock) {
48 mRunningJob = false;
49 }
50 return reschedule;
51 }
52
53 private MinidumpUploader.UploadsFinishedCallback createJobFinishedCallback(
54 final JobParameters params) {
55 return new MinidumpUploader.UploadsFinishedCallback() {
56 @Override
57 public void uploadsFinished(boolean reschedule) {
58 synchronized (mRunningLock) {
59 mRunningJob = false;
60 }
61 MinidumpUploadJobService.this.jobFinished(params, reschedule);
62 }
63 };
64 }
65
66 @Override
67 public void onDestroy() {
68 mMinidumpUploader = null;
69 super.onDestroy();
70 }
71 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698