// 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;
/** Set of system conditions to trigger background processing. */
public class TriggerConditions {
private final boolean mRequirePowerConnected;
private final int mMinimumBatteryPercentage;
private final boolean mRequireUnmeteredNetwork;
/**
* Creates set of device, network, and power conditions for triggering processing.
* @param requirePowerConnected whether to require that device is connected to power
* @param minimumBatteryPercentage minimum percentage (0-100) of remaining battery power
* @param requireUnmeteredNetwork whether to require connection to unmetered network
*/
public TriggerConditions(boolean requirePowerConnected, int minimumBatteryPercentage,
boolean requireUnmeteredNetwork) {
mRequirePowerConnected = requirePowerConnected;
mMinimumBatteryPercentage = minimumBatteryPercentage;
mRequireUnmeteredNetwork = requireUnmeteredNetwork;
}
/** Returns whether connection to power is required. */
public boolean requirePowerConnected() {
return mRequirePowerConnected;
}
/** Returns the minimum battery percentage that is required. */
public int getMinimumBatteryPercentage() {
return mMinimumBatteryPercentage;
}
/** Returns whether connection to an unmetered network is required. */
public boolean requireUnmeteredNetwork() {
return mRequireUnmeteredNetwork;
}
@Override
public int hashCode() {
int hash = 13;
hash = hash * 31 + (mRequirePowerConnected ? 1 : 0);
hash = hash * 31 + mMinimumBatteryPercentage;
hash = hash * 31 + (mRequireUnmeteredNetwork ? 1 : 0);
return hash;
}
@Override
public boolean equals(Object other) {
if (!(other instanceof TriggerConditions)) return false;
TriggerConditions otherTriggerConditions = (TriggerConditions) other;
return mRequirePowerConnected == otherTriggerConditions.mRequirePowerConnected
&& mMinimumBatteryPercentage == otherTriggerConditions.mMinimumBatteryPercentage
&& mRequireUnmeteredNetwork == otherTriggerConditions.mRequireUnmeteredNetwork;
}
}