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

Commit 1fd96088 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11201560 from ad9f313c to 24Q1-release

Change-Id: Ib4349bd44d19d4f436026a7acdf2e00628742bd9
parents 0138393a ad9f313c
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -658,7 +658,13 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// CoreNetworking
// Networking
aconfig_declarations {
    name: "com.android.net.flags-aconfig",
    package: "com.android.net.flags",
    srcs: ["core/java/android/net/flags.aconfig"],
}

java_aconfig_library {
    name: "com.android.net.flags-aconfig-java",
    aconfig_declarations: "com.android.net.flags-aconfig",
+50 −0
Original line number Diff line number Diff line
package: "com.android.net.flags"

flag {
  name: "track_multiple_network_activities"
  namespace: "android_core_networking"
  description: "NetworkActivityTracker tracks multiple networks including non default networks"
  bug: "267870186"
}

flag {
  name: "forbidden_capability"
  namespace: "android_core_networking"
  description: "This flag controls the forbidden capability API"
  bug: "302997505"
}

flag {
  name: "set_data_saver_via_cm"
  namespace: "android_core_networking"
  description: "Set data saver through ConnectivityManager API"
  bug: "297836825"
}

flag {
  name: "support_is_uid_networking_blocked"
  namespace: "android_core_networking"
  description: "This flag controls whether isUidNetworkingBlocked is supported"
  bug: "297836825"
}

flag {
  name: "basic_background_restrictions_enabled"
  namespace: "android_core_networking"
  description: "Block network access for apps in a low importance background state"
  bug: "304347838"
}

flag {
  name: "register_nsd_offload_engine"
  namespace: "android_core_networking"
  description: "The flag controls the access for registerOffloadEngine API in NsdManager"
  bug: "294777050"
}

flag {
  name: "ipsec_transform_state"
  namespace: "android_core_networking_ipsec"
  description: "The flag controls the access for getIpSecTransformState and IpSecTransformState"
  bug: "308011229"
}
+4 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ android_test {
        "servicestests-utils",
        "testables",
        "truth",
        "TestParameterInjector",
        // TODO: remove once Android migrates to JUnit 4.12,
        // which provides assertThrows
        "testng",
@@ -82,4 +83,7 @@ android_test {
        "libutils",
        "netd_aidl_interface-V5-cpp",
    ],

    // Required for TestParameterInjector
    javacflags: ["-parameters"],
}
+54 −7
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
@@ -42,10 +43,14 @@ import android.hardware.display.ColorDisplayManager;
import android.os.PowerManager;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenDeviceEffects;
import android.service.notification.ZenModeConfig;
import android.testing.TestableContext;

import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;

import com.google.testing.junit.testparameterinjector.TestParameter;
import com.google.testing.junit.testparameterinjector.TestParameterInjector;
import com.google.testing.junit.testparameterinjector.TestParameters;

import org.junit.Before;
import org.junit.Rule;
@@ -55,7 +60,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

@RunWith(AndroidJUnit4.class)
@RunWith(TestParameterInjector.class)
public class DefaultDeviceEffectsApplierTest {

    @Rule
@@ -68,6 +73,27 @@ public class DefaultDeviceEffectsApplierTest {
    @Mock UiModeManager mUiModeManager;
    @Mock WallpaperManager mWallpaperManager;

    private enum ChangeOrigin {
        ORIGIN_UNKNOWN(ZenModeConfig.UPDATE_ORIGIN_UNKNOWN),
        ORIGIN_INIT(ZenModeConfig.UPDATE_ORIGIN_INIT),
        ORIGIN_INIT_USER(ZenModeConfig.UPDATE_ORIGIN_INIT_USER),
        ORIGIN_USER(ZenModeConfig.UPDATE_ORIGIN_USER),
        ORIGIN_APP(ZenModeConfig.UPDATE_ORIGIN_APP),
        ORIGIN_SYSTEM_OR_SYSTEMUI(ZenModeConfig.UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI),
        ORIGIN_RESTORE_BACKUP(ZenModeConfig.UPDATE_ORIGIN_RESTORE_BACKUP);

        private final int mValue;

        ChangeOrigin(@ZenModeConfig.ConfigChangeOrigin int value) {
            mValue = value;
        }

        @ZenModeConfig.ConfigChangeOrigin
        public int value() {
            return mValue;
        }
    }

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
@@ -174,7 +200,7 @@ public class DefaultDeviceEffectsApplierTest {
    }

    @Test
    public void apply_darkThemeFromApp_appliedOnScreenOff() {
    public void apply_nightModeFromApp_appliedOnScreenOff() {
        mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
        ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
                ArgumentCaptor.forClass(BroadcastReceiver.class);
@@ -203,13 +229,14 @@ public class DefaultDeviceEffectsApplierTest {
    }

    @Test
    public void apply_darkThemeFromAppWithScreenOff_appliedImmediately() {
    public void apply_nightModeWithScreenOff_appliedImmediately(
            @TestParameter ChangeOrigin origin) {
        mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);

        when(mPowerManager.isInteractive()).thenReturn(false);

        mApplier.apply(new ZenDeviceEffects.Builder().setShouldUseNightMode(true).build(),
                UPDATE_ORIGIN_APP);
                origin.value());

        // Effect was applied, and no broadcast receiver was registered.
        verify(mUiModeManager).setNightModeActivatedForCustomMode(
@@ -218,17 +245,37 @@ public class DefaultDeviceEffectsApplierTest {
    }

    @Test
    public void testDeviceEffects_darkThemeFromUser_appliedImmediately() {
    @TestParameters({"{origin: ORIGIN_USER}", "{origin: ORIGIN_INIT}", "{origin: ORIGIN_INIT_USER}",
            "{origin: ORIGIN_SYSTEM_OR_SYSTEMUI}"})
    public void apply_nightModeWithScreenOn_appliedImmediatelyBasedOnOrigin(ChangeOrigin origin) {
        mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);

        when(mPowerManager.isInteractive()).thenReturn(true);

        mApplier.apply(new ZenDeviceEffects.Builder().setShouldUseNightMode(true).build(),
                UPDATE_ORIGIN_USER);
                origin.value());

        // Effect was applied, and no broadcast receiver was registered.
        verify(mUiModeManager).setNightModeActivatedForCustomMode(
                eq(MODE_NIGHT_CUSTOM_TYPE_BEDTIME), eq(true));
        verify(mContext, never()).registerReceiver(any(), any(), anyInt());
    }

    @Test
    @TestParameters({"{origin: ORIGIN_APP}", "{origin: ORIGIN_RESTORE_BACKUP}",
            "{origin: ORIGIN_UNKNOWN}"})
    public void apply_nightModeWithScreenOn_willBeAppliedLaterBasedOnOrigin(ChangeOrigin origin) {
        mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);

        when(mPowerManager.isInteractive()).thenReturn(true);

        mApplier.apply(new ZenDeviceEffects.Builder().setShouldUseNightMode(true).build(),
                origin.value());

        // Effect was not applied, will be on next screen-off.
        verifyZeroInteractions(mUiModeManager);
        verify(mContext).registerReceiver(any(),
                argThat(filter -> Intent.ACTION_SCREEN_OFF.equals(filter.getAction(0))),
                anyInt());
    }
}