• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.service.settings.preferences
18 
19 import android.content.Intent
20 import android.os.Bundle
21 import android.os.Parcel
22 import android.platform.test.annotations.RequiresFlagsEnabled
23 import android.platform.test.flag.junit.CheckFlagsRule
24 import android.platform.test.flag.junit.DeviceFlagsValueProvider
25 import androidx.test.ext.junit.runners.AndroidJUnit4
26 import androidx.test.filters.SmallTest
27 import com.android.settingslib.flags.Flags.FLAG_SETTINGS_CATALYST
28 import com.google.common.truth.Truth.assertThat
29 import org.junit.Rule
30 import org.junit.Test
31 import org.junit.runner.RunWith
32 
33 @RunWith(AndroidJUnit4::class)
34 @SmallTest
35 @RequiresFlagsEnabled(FLAG_SETTINGS_CATALYST)
36 class SettingsPreferenceMetadataTest {
37 
38     @get:Rule
39     val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
40 
41     private val intent = Intent(Intent.ACTION_VIEW).setPackage("test")
42 
43     private val metadata: SettingsPreferenceMetadata
44         get() = SettingsPreferenceMetadata.Builder("screenKey", "key")
45             .setTitle("title")
46             .setSummary("summary")
47             .setReadPermissions(listOf("readPermission"))
48             .setWritePermissions(listOf("writePermission"))
49             .setEnabled(true)
50             .setAvailable(true)
51             .setWritable(true)
52             .setRestricted(true)
53             .setWriteSensitivity(SettingsPreferenceMetadata.EXPECT_POST_CONFIRMATION)
54             .setLaunchIntent(intent)
<lambda>null55             .setExtras(Bundle().apply { putString("bKey", "bValue") })
56             .build()
57 
58     @Test
buildMetadata_allFieldsSetnull59     fun buildMetadata_allFieldsSet() {
60         with(metadata) {
61             assertThat(key).isEqualTo("key")
62             assertThat(screenKey).isEqualTo("screenKey")
63             assertThat(title!!).isEqualTo("title")
64             assertThat(summary!!).isEqualTo("summary")
65             assertThat(readPermissions).isEqualTo(listOf("readPermission"))
66             assertThat(writePermissions).isEqualTo(listOf("writePermission"))
67             assertThat(isEnabled).isTrue()
68             assertThat(isAvailable).isTrue()
69             assertThat(isWritable).isTrue()
70             assertThat(isRestricted).isTrue()
71             assertThat(writeSensitivity)
72                 .isEqualTo(SettingsPreferenceMetadata.EXPECT_POST_CONFIRMATION)
73             assertThat(launchIntent!!).isEqualTo(intent)
74             assertThat(extras.getString("bKey")!!).isEqualTo("bValue")
75         }
76     }
77 
78     @Test
buildMetadata_deeplinkSensitivity_allFieldsSetnull79     fun buildMetadata_deeplinkSensitivity_allFieldsSet() {
80         val deeplinkOnlyMetadata = SettingsPreferenceMetadata.Builder("screenKey", "key")
81             .setTitle("title")
82             .setSummary("summary")
83             .setReadPermissions(listOf("readPermission"))
84             .setWritePermissions(listOf("writePermission"))
85             .setEnabled(true)
86             .setAvailable(true)
87             .setWritable(true)
88             .setRestricted(true)
89             .setWriteSensitivity(SettingsPreferenceMetadata.DEEPLINK_ONLY)
90             .setLaunchIntent(intent)
91             .setExtras(Bundle().apply { putString("bKey", "bValue") })
92             .build()
93         with(deeplinkOnlyMetadata) {
94             assertThat(key).isEqualTo("key")
95             assertThat(screenKey).isEqualTo("screenKey")
96             assertThat(title!!).isEqualTo("title")
97             assertThat(summary!!).isEqualTo("summary")
98             assertThat(readPermissions).isEqualTo(listOf("readPermission"))
99             assertThat(writePermissions).isEqualTo(listOf("writePermission"))
100             assertThat(isEnabled).isTrue()
101             assertThat(isAvailable).isTrue()
102             assertThat(isWritable).isTrue()
103             assertThat(isRestricted).isTrue()
104             assertThat(writeSensitivity)
105                 .isEqualTo(SettingsPreferenceMetadata.DEEPLINK_ONLY)
106             assertThat(launchIntent!!).isEqualTo(intent)
107             assertThat(extras.getString("bKey")!!).isEqualTo("bValue")
108         }
109     }
110 
111     @Test
buildMetadata_excludedSensitivity_nullLaunchIntentnull112     fun buildMetadata_excludedSensitivity_nullLaunchIntent() {
113         val md = SettingsPreferenceMetadata.Builder("screenKey", "key")
114             .setLaunchIntent(intent)
115             .setWriteSensitivity(SettingsPreferenceMetadata.NO_DIRECT_ACCESS)
116             .build()
117         assertThat(md.writeSensitivity).isEqualTo(SettingsPreferenceMetadata.NO_DIRECT_ACCESS)
118         assertThat(md.launchIntent).isNull()
119     }
120 
121     @Test
buildMetadata_fromParcelablenull122     fun buildMetadata_fromParcelable() {
123         val parcel = Parcel.obtain()
124         metadata.writeToParcel(parcel, 0)
125         parcel.setDataPosition(0)
126         val new = SettingsPreferenceMetadata.CREATOR.createFromParcel(parcel)
127 
128         with(new) {
129             assertThat(key).isEqualTo("key")
130             assertThat(screenKey).isEqualTo("screenKey")
131             assertThat(title!!).isEqualTo("title")
132             assertThat(summary!!).isEqualTo("summary")
133             assertThat(readPermissions).isEqualTo(listOf("readPermission"))
134             assertThat(writePermissions).isEqualTo(listOf("writePermission"))
135             assertThat(isEnabled).isTrue()
136             assertThat(isAvailable).isTrue()
137             assertThat(isWritable).isTrue()
138             assertThat(isRestricted).isTrue()
139             assertThat(writeSensitivity)
140                 .isEqualTo(SettingsPreferenceMetadata.EXPECT_POST_CONFIRMATION)
141             assertThat(launchIntent!!.toUri(0)).isEqualTo(intent.toUri(0))
142             assertThat(extras.getString("bKey")!!).isEqualTo("bValue")
143         }
144     }
145 }
146