Chromium Code Reviews| Index: content/public/android/java/src/org/chromium/content/app/DownloadProcessService.java |
| diff --git a/content/public/android/java/src/org/chromium/content/app/DownloadProcessService.java b/content/public/android/java/src/org/chromium/content/app/DownloadProcessService.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..906f32a207d1d437841575c5526d79a2e5320f84 |
| --- /dev/null |
| +++ b/content/public/android/java/src/org/chromium/content/app/DownloadProcessService.java |
| @@ -0,0 +1,63 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.content.app; |
| + |
| +import android.annotation.SuppressLint; |
| +import android.app.Notification; |
| +import android.content.Intent; |
| +import android.os.Build; |
| +import android.os.Bundle; |
| +import android.os.IBinder; |
| +import android.os.RemoteException; |
| + |
| +import org.chromium.base.Log; |
| +import org.chromium.base.annotations.JNINamespace; |
| +import org.chromium.content.browser.ChildProcessConstants; |
| +import org.chromium.content.browser.FileDescriptorInfo; |
| +import org.chromium.content.common.IChildProcessCallback; |
| + |
| +/** |
| + * Background download process for handling all transferable downloads. |
| + */ |
| +@JNINamespace("content") |
| +public class DownloadProcessService extends ChildProcessService { |
| + private static final String TAG = "DownloadProcess"; |
| + @Override |
| + public void onCreate() { |
| + super.onCreate(); |
| + // TODO(qinmin): Use the first pending download as notification, or |
| + // get a more proper notification for this. |
| + startForeground(ChildProcessConstants.DOWNLOAD_PROCESS_NOTIFICATION_ID, new Notification()); |
| + } |
| + |
| + @Override |
| + protected boolean isBoundService() { |
| + return false; |
| + } |
| + |
| + @Override |
| + public int onStartCommand(Intent intent, int flags, int startId) { |
| + assert !isBoundService(); |
|
svaldez
2016/01/25 15:33:43
Remove isBoundsService. (Seems to only state wheth
qinmin
2016/01/25 22:48:23
Done.
|
| + initializeParams(intent); |
| + getServiceInfo(intent.getExtras()); |
|
svaldez
2016/01/25 15:33:43
Locally override getServiceInfo instead of modifyi
qinmin
2016/01/25 22:48:23
hmm... That's a lot of duplicated code. And i need
|
| + return START_STICKY; |
| + } |
| + |
| + @Override |
| + @SuppressLint("NewApi") |
| + protected FileDescriptorInfo[] getFileDescriptorInfo(Bundle bundle) { |
| + assert Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2; |
| + IBinder binder = bundle.getBinder(ChildProcessConstants.EXTRA_CHILD_PROCESS_CALLBACK); |
| + IChildProcessCallback callback = IChildProcessCallback.Stub.asInterface(binder); |
| + String channel = bundle.getString(ChildProcessConstants.EXTRA_CHANNEL_ID); |
| + try { |
| + return callback.getFileDescriptorInfo(channel); |
| + } catch (RemoteException e) { |
| + Log.e(TAG, "Unable to get file descriptors."); |
| + stopSelf(); |
| + } |
| + return EMPTY_FILE_DESCRIPTOR_INFO; |
| + } |
| +} |