blob: d2ddfd3886168169e558923914162bd65c4d981b [file] [log] [blame]
// Copyright 2019 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.
syntax = "proto3";
option optimize_for = LITE_RUNTIME;
package background_task_scheduler;
option java_package = "org.chromium.components.background_task_scheduler.internal";
option java_outer_classname = "ScheduledTaskProto";
message ScheduledTask {
enum Type {
ONE_OFF = 0;
PERIODIC = 1;
EXACT = 2;
}
enum RequiredNetworkType {
NONE = 0;
ANY = 1;
UNMETERED = 2;
}
// The type of the scheduled task.
Type type = 1;
// UTC timestamp at which an ExactTask will be triggered by AlarmManager.
int64 trigger_ms = 2;
message ExtraItem {
enum Type {
SINGLE = 0;
BOOLEAN_ARRAY = 1;
DOUBLE_ARRAY = 2;
INT_ARRAY = 3;
LONG_ARRAY = 4;
STRING_ARRAY = 5;
NULL = 6;
}
message ExtraValue {
oneof oneof_value {
bool boolean_value = 1;
double double_value = 2;
int32 int_value = 3;
int64 long_value = 4;
string string_value = 5;
}
}
// The key set for this item in the extras.
string key = 1;
// The type of the value associated with this item.
Type type = 2;
// Value set for this item in the extras. Non-array types will store only
// one element in this repeated field. Null types will not store any element
// in this field. All the types supported in the extras field can be stored
// in the ExtraValue message.
repeated ExtraValue values = 3;
}
// Extras for the BackgroundTask, stored for an ExactTask. OneOffTask and
// PeriodicTask objects store their extras through their scheduling backend
// (JobScheduler and GcmNetworkManager).
repeated ExtraItem extras = 3;
// Required network type, stored for an ExactTask. OneOffTask and PeriodicTask
// objects store their required network type through their scheduling backend
// (JobScheduler and GCMNetworkManager).
RequiredNetworkType required_network_type = 4;
// Bool representing whether the task requires charging. Stored for an
// ExactTask. OneOffTask and PeriodicTask objects store this info through
// their scheduling backend (JobScheduler and GCMNetworkManager).
bool requires_charging = 5;
}