// Copyright 2004-present Facebook. All Rights Reserved. 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; /** * 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) { mTaskKey = taskKey; mData = data; mTimeout = timeout; mAllowedInForeground = allowedInForeground; } /* package */ String getTaskKey() { return mTaskKey; } /* package */ WritableMap getData() { return mData; } /* package */ long getTimeout() { return mTimeout; } /* package */ boolean isAllowedInForeground() { return mAllowedInForeground; } }