// Copyright 2016 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.chrome.browser.offlinepages;
import android.os.Bundle;
import org.chromium.chrome.browser.ChromeBackgroundService;
/**
* Class to put our custom task information into the task bundle.
*/
public class TaskExtrasPacker {
/** Bundle key for the timestamp in milliseconds when the request started. */
public static final String SCHEDULED_TIME_TAG = "ScheduleTime";
// Trigger condition tags.
private static final String POWER_CONNECTED_TAG = "PowerConnected";
private static final String BATTERY_PERCENTAGE_TAG = "BatteryPercentage";
private static final String UNMETERED_NETWORK_TAG = "UnmeteredNetwork";
/** Puts current time into the input bundle. */
public static void packTimeInBundle(Bundle bundle) {
bundle.putLong(SCHEDULED_TIME_TAG, System.currentTimeMillis());
bundle.putBoolean(ChromeBackgroundService.HOLD_WAKELOCK, true);
}
/** Extracts the time we put into the bundle. */
public static long unpackTimeFromBundle(Bundle bundle) {
return bundle.getLong(SCHEDULED_TIME_TAG);
}
/** Puts trigger conditions into the input bundle. */
public static void packTriggerConditionsInBundle(Bundle bundle, TriggerConditions conditions) {
bundle.putBoolean(POWER_CONNECTED_TAG, conditions.requirePowerConnected());
bundle.putInt(BATTERY_PERCENTAGE_TAG, conditions.getMinimumBatteryPercentage());
bundle.putBoolean(UNMETERED_NETWORK_TAG, conditions.requireUnmeteredNetwork());
}
/** Extracts the trigger conditions we put into the bundle. */
public static TriggerConditions unpackTriggerConditionsFromBundle(Bundle bundle) {
boolean requirePowerConnected = bundle.getBoolean(POWER_CONNECTED_TAG, true);
int minimumBatteryPercentage = bundle.getInt(BATTERY_PERCENTAGE_TAG, 100);
boolean requireUnmeteredNetwork = bundle.getBoolean(UNMETERED_NETWORK_TAG, true);
return new TriggerConditions(
requirePowerConnected, minimumBatteryPercentage, requireUnmeteredNetwork);
}
}