Files
react-native/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.java
T
Andres Suarez 722feeb02b Tidy up license headers [1/n]
Summary: Changelog: [General] [Fixed] - License header cleanup

Reviewed By: yungsters

Differential Revision: D17952695

fbshipit-source-id: 81aa607612ba1357ef7814ef20371335151afe7e
2019-10-16 10:06:33 -07:00

122 lines
4.6 KiB
Java

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.react.jstasks;
import com.facebook.react.bridge.WritableMap;
/** Class that holds the various parameters needed to start a JS task. */
public class HeadlessJsTaskConfig {
private final String mTaskKey;
private final WritableMap mData;
private final long mTimeout;
private final boolean mAllowedInForeground;
private final HeadlessJsTaskRetryPolicy mRetryPolicy;
/**
* Create a HeadlessJsTaskConfig. Equivalent to calling {@link #HeadlessJsTaskConfig(String,
* WritableMap, long, boolean)} with no timeout (0) and {@code false} for {@code
* allowedInBackground}.
*/
public HeadlessJsTaskConfig(String taskKey, WritableMap data) {
this(taskKey, data, 0, false);
}
/**
* Create a HeadlessJsTaskConfig. Equivalent to calling {@link #HeadlessJsTaskConfig(String,
* WritableMap, long, boolean)} with {@code false} for {@code allowedInBackground}.
*/
public HeadlessJsTaskConfig(String taskKey, WritableMap data, long timeout) {
this(taskKey, data, timeout, false);
}
/**
* Create a HeadlessJsTaskConfig.
*
* @param taskKey the key for the JS task to execute. This is the same key that you call {@code
* AppRegistry.registerTask} with in JS.
* @param data a map of parameters passed to the JS task executor.
* @param timeout the amount of time (in ms) after which the React instance should be terminated
* regardless of whether the task has completed or not. This is meant as a safeguard against
* accidentally keeping the device awake for long periods of time because JS crashed or some
* request timed out. A value of 0 means no timeout (should only be used for long-running
* tasks such as music playback).
* @param allowedInForeground whether to allow this task to run while the app is in the foreground
* (i.e. there is a host in resumed mode for the current ReactContext). Only set this to true
* if you really need it. Note that tasks run in the same JS thread as UI code, so doing
* expensive operations would degrade user experience.
*/
public HeadlessJsTaskConfig(
String taskKey, WritableMap data, long timeout, boolean allowedInForeground) {
this(taskKey, data, timeout, allowedInForeground, NoRetryPolicy.INSTANCE);
}
/**
* Create a HeadlessJsTaskConfig.
*
* @param taskKey the key for the JS task to execute. This is the same key that you call {@code
* AppRegistry.registerTask} with in JS.
* @param data a map of parameters passed to the JS task executor.
* @param timeout the amount of time (in ms) after which the React instance should be terminated
* regardless of whether the task has completed or not. This is meant as a safeguard against
* accidentally keeping the device awake for long periods of time because JS crashed or some
* request timed out. A value of 0 means no timeout (should only be used for long-running
* tasks such as music playback).
* @param allowedInForeground whether to allow this task to run while the app is in the foreground
* (i.e. there is a host in resumed mode for the current ReactContext). Only set this to true
* if you really need it. Note that tasks run in the same JS thread as UI code, so doing
* expensive operations would degrade user experience.
* @param retryPolicy the number of times & delays the task should be retried on error.
*/
public HeadlessJsTaskConfig(
String taskKey,
WritableMap data,
long timeout,
boolean allowedInForeground,
HeadlessJsTaskRetryPolicy retryPolicy) {
mTaskKey = taskKey;
mData = data;
mTimeout = timeout;
mAllowedInForeground = allowedInForeground;
mRetryPolicy = retryPolicy;
}
public HeadlessJsTaskConfig(HeadlessJsTaskConfig source) {
mTaskKey = source.mTaskKey;
mData = source.mData.copy();
mTimeout = source.mTimeout;
mAllowedInForeground = source.mAllowedInForeground;
final HeadlessJsTaskRetryPolicy retryPolicy = source.mRetryPolicy;
if (retryPolicy != null) {
mRetryPolicy = retryPolicy.copy();
} else {
mRetryPolicy = null;
}
}
/* package */ String getTaskKey() {
return mTaskKey;
}
/* package */ WritableMap getData() {
return mData;
}
/* package */ long getTimeout() {
return mTimeout;
}
/* package */ boolean isAllowedInForeground() {
return mAllowedInForeground;
}
/* package */ HeadlessJsTaskRetryPolicy getRetryPolicy() {
return mRetryPolicy;
}
}