Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa380e98 authored by Christopher Tate's avatar Christopher Tate
Browse files

DO NOT MERGE - Run the task manager service at startup

Also moves most of it into android.app.task rather than android.content.

(Cherrypick from master)

Change-Id: Ic07a664bf54bc3e40aa0b892946edba4bf37262a
parent cd3a8245
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ LOCAL_SRC_FILES += \
	core/java/android/app/IServiceConnection.aidl \
	core/java/android/app/IStopUserCallback.aidl \
	core/java/android/app/task/ITaskCallback.aidl \
	core/java/android/app/task/ITaskManager.aidl \
	core/java/android/app/task/ITaskService.aidl \
	core/java/android/app/IThumbnailRetriever.aidl \
	core/java/android/app/ITransientNotification.aidl \
+52 −49
Original line number Diff line number Diff line
@@ -5298,6 +5298,57 @@ package android.app.maintenance {
package android.app.task {
  public class Task implements android.os.Parcelable {
    method public int describeContents();
    method public int getBackoffPolicy();
    method public android.os.Bundle getExtras();
    method public long getInitialBackoffMillis();
    method public long getIntervalMillis();
    method public long getMaxExecutionDelayMillis();
    method public long getMinLatencyMillis();
    method public int getNetworkCapabilities();
    method public android.content.ComponentName getService();
    method public int getTaskId();
    method public boolean isPeriodic();
    method public boolean isRequireCharging();
    method public boolean isRequireDeviceIdle();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator CREATOR;
  }
  public static abstract interface Task.BackoffPolicy {
    field public static final int EXPONENTIAL = 1; // 0x1
    field public static final int LINEAR = 0; // 0x0
  }
  public final class Task.Builder {
    ctor public Task.Builder(int, android.content.ComponentName);
    method public android.app.task.Task build();
    method public android.app.task.Task.Builder setBackoffCriteria(long, int);
    method public android.app.task.Task.Builder setExtras(android.os.Bundle);
    method public android.app.task.Task.Builder setMinimumLatency(long);
    method public android.app.task.Task.Builder setOverrideDeadline(long);
    method public android.app.task.Task.Builder setPeriodic(long);
    method public android.app.task.Task.Builder setRequiredNetworkCapabilities(int);
    method public android.app.task.Task.Builder setRequiresCharging(boolean);
    method public android.app.task.Task.Builder setRequiresDeviceIdle(boolean);
  }
  public static abstract interface Task.NetworkType {
    field public static final int ANY = 0; // 0x0
    field public static final int UNMETERED = 1; // 0x1
  }
  public abstract class TaskManager {
    ctor public TaskManager();
    method public abstract void cancel(int);
    method public abstract void cancelAll();
    method public abstract java.util.List<android.app.task.Task> getAllPendingTasks();
    method public abstract int schedule(android.app.task.Task);
    field public static final int RESULT_INVALID_PARAMETERS = -1; // 0xffffffff
    field public static final int RESULT_OVER_QUOTA = -2; // 0xfffffffe
  }
  public class TaskParams implements android.os.Parcelable {
    method public int describeContents();
    method public android.os.Bundle getExtras();
@@ -6995,6 +7046,7 @@ package android.content {
    field public static final java.lang.String SEARCH_SERVICE = "search";
    field public static final java.lang.String SENSOR_SERVICE = "sensor";
    field public static final java.lang.String STORAGE_SERVICE = "storage";
    field public static final java.lang.String TASK_SERVICE = "task";
    field public static final java.lang.String TELEPHONY_SERVICE = "phone";
    field public static final java.lang.String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
    field public static final java.lang.String TV_INPUT_SERVICE = "tv_input";
@@ -7933,55 +7985,6 @@ package android.content {
    method public abstract void onStatusChanged(int);
  }
  public class Task implements android.os.Parcelable {
    method public int describeContents();
    method public int getBackoffPolicy();
    method public android.os.Bundle getExtras();
    method public long getInitialBackoffMillis();
    method public long getIntervalMillis();
    method public long getMaxExecutionDelayMillis();
    method public long getMinLatencyMillis();
    method public int getNetworkCapabilities();
    method public android.content.ComponentName getService();
    method public int getTaskId();
    method public boolean isPeriodic();
    method public boolean isRequireCharging();
    method public boolean isRequireDeviceIdle();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator CREATOR;
  }
  public static abstract interface Task.BackoffPolicy {
    field public static final int EXPONENTIAL = 1; // 0x1
    field public static final int LINEAR = 0; // 0x0
  }
  public final class Task.Builder {
    ctor public Task.Builder(int, android.content.ComponentName);
    method public android.content.Task build();
    method public android.content.Task.Builder setBackoffCriteria(long, int);
    method public android.content.Task.Builder setExtras(android.os.Bundle);
    method public android.content.Task.Builder setMinimumLatency(long);
    method public android.content.Task.Builder setOverrideDeadline(long);
    method public android.content.Task.Builder setPeriodic(long);
    method public android.content.Task.Builder setRequiredNetworkCapabilities(int);
    method public android.content.Task.Builder setRequiresCharging(boolean);
    method public android.content.Task.Builder setRequiresDeviceIdle(boolean);
  }
  public static abstract interface Task.NetworkType {
    field public static final int ANY = 0; // 0x0
    field public static final int UNMETERED = 1; // 0x1
  }
  public abstract class TaskManager {
    ctor public TaskManager();
    method public abstract void cancel(int);
    method public abstract void cancelAll();
    method public abstract java.util.List<android.content.Task> getAllPendingTasks();
    method public abstract int schedule(android.content.Task);
  }
  public class UriMatcher {
    ctor public UriMatcher(int);
    method public void addURI(java.lang.String, java.lang.String, int);
+8 −0
Original line number Diff line number Diff line
@@ -133,10 +133,12 @@ import android.view.textservice.TextServicesManager;
import android.accounts.AccountManager;
import android.accounts.IAccountManager;
import android.app.admin.DevicePolicyManager;
import android.app.task.ITaskManager;
import android.app.trust.TrustManager;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IAppOpsService;
import com.android.internal.appwidget.IAppWidgetService.Stub;
import com.android.internal.os.IDropBoxManagerService;

import java.io.File;
@@ -693,6 +695,12 @@ class ContextImpl extends Context {
                public Object createService(ContextImpl ctx) {
                return new UsageStatsManager(ctx.getOuterContext());
        }});

        registerService(TASK_SERVICE, new ServiceFetcher() {
            public Object createService(ContextImpl ctx) {
                IBinder b = ServiceManager.getService(TASK_SERVICE);
                return new TaskManagerImpl(ITaskManager.Stub.asInterface(b));
            }});
    }

    static ContextImpl getImpl(Context context) {
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// in android.app so ContextImpl has package access
package android.app;

import android.app.task.ITaskManager;
import android.app.task.Task;
import android.app.task.TaskManager;

import java.util.List;


/**
 * Concrete implementation of the TaskManager interface
 * @hide 
 */
public class TaskManagerImpl extends TaskManager {
    ITaskManager mBinder;

    /* package */ TaskManagerImpl(ITaskManager binder) {
        mBinder = binder;
    }

    @Override
    public int schedule(Task task) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void cancel(int taskId) {
        // TODO Auto-generated method stub

    }

    @Override
    public void cancelAll() {
        // TODO Auto-generated method stub

    }

    @Override
    public List<Task> getAllPendingTasks() {
        // TODO Auto-generated method stub
        return null;
    }

}
+30 −0
Original line number Diff line number Diff line
/**
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.app.task;

import android.app.task.Task;

 /**
  * IPC interface that supports the app-facing {@link #TaskManager} api.
  * {@hide}
  */
interface ITaskManager {
    int schedule(in Task task);
    void cancel(int taskId);
    void cancelAll();
    List<Task> getAllPendingTasks();
}
Loading