Merge "Fix #62545908 : 'metered' network jobs run without network" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-06-13 23:27:10 +00:00
committed by Android (Google) Code Review
5 changed files with 22 additions and 2 deletions

View File

@@ -698,7 +698,8 @@ public final class JobStatus {
static final int CONSTRAINTS_OF_INTEREST = static final int CONSTRAINTS_OF_INTEREST =
CONSTRAINT_CHARGING | CONSTRAINT_BATTERY_NOT_LOW | CONSTRAINT_STORAGE_NOT_LOW | CONSTRAINT_CHARGING | CONSTRAINT_BATTERY_NOT_LOW | CONSTRAINT_STORAGE_NOT_LOW |
CONSTRAINT_TIMING_DELAY | CONSTRAINT_TIMING_DELAY |
CONSTRAINT_CONNECTIVITY | CONSTRAINT_UNMETERED | CONSTRAINT_NOT_ROAMING | CONSTRAINT_CONNECTIVITY | CONSTRAINT_UNMETERED |
CONSTRAINT_NOT_ROAMING | CONSTRAINT_METERED |
CONSTRAINT_IDLE | CONSTRAINT_CONTENT_TRIGGER; CONSTRAINT_IDLE | CONSTRAINT_CONTENT_TRIGGER;
// Soft override covers all non-"functional" constraints // Soft override covers all non-"functional" constraints
@@ -865,6 +866,9 @@ public final class JobStatus {
if ((constraints&CONSTRAINT_NOT_ROAMING) != 0) { if ((constraints&CONSTRAINT_NOT_ROAMING) != 0) {
pw.print(" NOT_ROAMING"); pw.print(" NOT_ROAMING");
} }
if ((constraints&CONSTRAINT_METERED) != 0) {
pw.print(" METERED");
}
if ((constraints&CONSTRAINT_APP_NOT_IDLE) != 0) { if ((constraints&CONSTRAINT_APP_NOT_IDLE) != 0) {
pw.print(" APP_NOT_IDLE"); pw.print(" APP_NOT_IDLE");
} }

View File

@@ -73,10 +73,18 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal">
<RadioButton android:id="@+id/checkbox_none"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/none"/>
<RadioButton android:id="@+id/checkbox_any" <RadioButton android:id="@+id/checkbox_any"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/any"/> android:text="@string/any"/>
<RadioButton android:id="@+id/checkbox_metered"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/metered"/>
<RadioButton android:id="@+id/checkbox_unmetered" <RadioButton android:id="@+id/checkbox_unmetered"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@@ -30,7 +30,9 @@ limitations under the License.
<string name="persisted_caption">Persisted:</string> <string name="persisted_caption">Persisted:</string>
<string name="constraints">Constraints</string> <string name="constraints">Constraints</string>
<string name="connectivity">Connectivity:</string> <string name="connectivity">Connectivity:</string>
<string name="none">None</string>
<string name="any">Any</string> <string name="any">Any</string>
<string name="metered">Metered</string>
<string name="unmetered">WiFi</string> <string name="unmetered">WiFi</string>
<string name="timing">Timing:</string> <string name="timing">Timing:</string>
<string name="delay">Delay:</string> <string name="delay">Delay:</string>

View File

@@ -63,6 +63,7 @@ public class MainActivity extends Activity {
mDeadlineEditText = findViewById(R.id.deadline_time); mDeadlineEditText = findViewById(R.id.deadline_time);
mWiFiConnectivityRadioButton = findViewById(R.id.checkbox_unmetered); mWiFiConnectivityRadioButton = findViewById(R.id.checkbox_unmetered);
mAnyConnectivityRadioButton = findViewById(R.id.checkbox_any); mAnyConnectivityRadioButton = findViewById(R.id.checkbox_any);
mCellConnectivityRadioButton = findViewById(R.id.checkbox_metered);
mRequiresChargingCheckBox = findViewById(R.id.checkbox_charging); mRequiresChargingCheckBox = findViewById(R.id.checkbox_charging);
mRequiresIdleCheckbox = findViewById(R.id.checkbox_idle); mRequiresIdleCheckbox = findViewById(R.id.checkbox_idle);
mIsPersistedCheckbox = findViewById(R.id.checkbox_persisted); mIsPersistedCheckbox = findViewById(R.id.checkbox_persisted);
@@ -85,6 +86,7 @@ public class MainActivity extends Activity {
EditText mDeadlineEditText; EditText mDeadlineEditText;
RadioButton mWiFiConnectivityRadioButton; RadioButton mWiFiConnectivityRadioButton;
RadioButton mAnyConnectivityRadioButton; RadioButton mAnyConnectivityRadioButton;
RadioButton mCellConnectivityRadioButton;
CheckBox mRequiresChargingCheckBox; CheckBox mRequiresChargingCheckBox;
CheckBox mRequiresIdleCheckbox; CheckBox mRequiresIdleCheckbox;
CheckBox mIsPersistedCheckbox; CheckBox mIsPersistedCheckbox;
@@ -141,9 +143,12 @@ public class MainActivity extends Activity {
builder.setOverrideDeadline(Long.parseLong(deadline) * 1000); builder.setOverrideDeadline(Long.parseLong(deadline) * 1000);
} }
boolean requiresUnmetered = mWiFiConnectivityRadioButton.isChecked(); boolean requiresUnmetered = mWiFiConnectivityRadioButton.isChecked();
boolean requiresMetered = mCellConnectivityRadioButton.isChecked();
boolean requiresAnyConnectivity = mAnyConnectivityRadioButton.isChecked(); boolean requiresAnyConnectivity = mAnyConnectivityRadioButton.isChecked();
if (requiresUnmetered) { if (requiresUnmetered) {
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
} else if (requiresMetered) {
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_METERED);
} else if (requiresAnyConnectivity) { } else if (requiresAnyConnectivity) {
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
} }

View File

@@ -81,7 +81,8 @@ public class TestJobService extends JobService {
@Override @Override
public boolean onStartJob(JobParameters params) { public boolean onStartJob(JobParameters params) {
Log.i(TAG, "on start job: " + params.getJobId()); Log.i(TAG, "on start job: " + params.getJobId()
+ " deadline?=" + params.isOverrideDeadlineExpired());
currentId++; currentId++;
jobParamsMap.put(currentId, params); jobParamsMap.put(currentId, params);
final int currId = this.currentId; final int currId = this.currentId;