Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77b76181 authored by Mark Chien's avatar Mark Chien Committed by Android (Google) Code Review
Browse files

Merge "Ignore the outdated entitlement check" into qt-dev

parents f0924515 8667e01c
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ public class TetherProvisioningActivity extends Activity {
    private static final int PROVISION_REQUEST = 0;
    private static final String TAG = "TetherProvisioningAct";
    private static final String EXTRA_TETHER_TYPE = "TETHER_TYPE";
    private static final String EXTRA_SUBID = "subId";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private ResultReceiver mResultReceiver;

@@ -49,14 +50,21 @@ public class TetherProvisioningActivity extends Activity {
        mResultReceiver = (ResultReceiver)getIntent().getParcelableExtra(
                ConnectivityManager.EXTRA_PROVISION_CALLBACK);

        int tetherType = getIntent().getIntExtra(ConnectivityManager.EXTRA_ADD_TETHER_TYPE,
        final int tetherType = getIntent().getIntExtra(ConnectivityManager.EXTRA_ADD_TETHER_TYPE,
                ConnectivityManager.TETHERING_INVALID);

        final int tetherSubId = getIntent().getIntExtra(EXTRA_SUBID,
                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
        final int subId = SubscriptionManager.getDefaultDataSubscriptionId();
        if (tetherSubId != subId) {
            Log.e(TAG, "This Provisioning request is outdated, current subId: " + subId);
            return;
        }
        final Resources res = Utils.getResourcesForSubId(this, subId);
        final String[] provisionApp = res.getStringArray(
                com.android.internal.R.array.config_mobile_hotspot_provision_app);

        Intent intent = new Intent(Intent.ACTION_MAIN);
        final Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.setClassName(provisionApp[0], provisionApp[1]);
        intent.putExtra(EXTRA_TETHER_TYPE, tetherType);
        if (DEBUG) {
+14 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ public class TetherService extends Service {

    @VisibleForTesting
    public static final String EXTRA_RESULT = "EntitlementResult";
    @VisibleForTesting
    public static final String EXTRA_SUBID = "subId";

    // Activity results to match the activity provision protocol.
    // Default to something not ok.
@@ -100,6 +102,18 @@ public class TetherService extends Service {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (intent.hasExtra(EXTRA_SUBID)) {
            final int tetherSubId = intent.getIntExtra(EXTRA_SUBID,
                    SubscriptionManager.INVALID_SUBSCRIPTION_ID);
            final int subId = getTetherServiceWrapper().getDefaultDataSubscriptionId();
            if (tetherSubId != subId) {
                Log.e(TAG, "This Provisioning request is outdated, current subId: " + subId);
                if (!mInProvisionCheck) {
                    stopSelf();
                }
                return START_NOT_STICKY;
            }
        }
        if (intent.hasExtra(ConnectivityManager.EXTRA_ADD_TETHER_TYPE)) {
            int type = intent.getIntExtra(ConnectivityManager.EXTRA_ADD_TETHER_TYPE,
                    ConnectivityManager.TETHERING_INVALID);
+16 −1
Original line number Diff line number Diff line
@@ -266,11 +266,26 @@ public class TetherServiceTest extends ServiceTestCase<TetherService> {
        assertEquals(TetherService.class.getName(), pi.getIntent().getComponent().getClassName());
    }

    public void testIgnoreOutdatedRequest() {
        Intent intent = new Intent();
        intent.putExtra(EXTRA_ADD_TETHER_TYPE, TETHERING_WIFI);
        intent.putExtra(EXTRA_RUN_PROVISION, true);
        intent.putExtra(EXTRA_PROVISION_CALLBACK, mResultReceiver);
        intent.putExtra(TetherService.EXTRA_SUBID, 1 /* Tested subId number */);
        startService(intent);

        SystemClock.sleep(PROVISION_TIMEOUT);
        assertEquals(TETHERING_INVALID, mLastTetherRequestType);
        assertTrue(mWrapper.isAppInactive(ENTITLEMENT_PACKAGE_NAME));
        assertTrue(mWrapper.isAppInactive(FAKE_PACKAGE_NAME));
    }

    private void runProvisioningForType(int type) {
        Intent intent = new Intent();
        intent.putExtra(EXTRA_ADD_TETHER_TYPE, type);
        intent.putExtra(EXTRA_RUN_PROVISION, true);
        intent.putExtra(EXTRA_PROVISION_CALLBACK, mResultReceiver);
        intent.putExtra(TetherService.EXTRA_SUBID, INVALID_SUBSCRIPTION_ID);
        startService(intent);
    }

@@ -291,7 +306,7 @@ public class TetherServiceTest extends ServiceTestCase<TetherService> {
        long startTime = SystemClock.uptimeMillis();
        while (true) {
            if (mLastTetherRequestType == expectedType) {
                mLastTetherRequestType = -1;
                mLastTetherRequestType = TETHERING_INVALID;
                return true;
            }
            if ((SystemClock.uptimeMillis() - startTime) > PROVISION_TIMEOUT) {