Snap for 5179425 from 57baac2df5 to qt-release
Change-Id: I91ab279caa558370561119874b87a189a8021fe9
This commit is contained in:
@@ -30,6 +30,8 @@ LOCAL_STATIC_ANDROID_LIBRARIES := \
|
||||
androidx.preference_preference \
|
||||
androidx.recyclerview_recyclerview \
|
||||
com.google.android.material_material \
|
||||
setupcompat \
|
||||
setupdesign
|
||||
|
||||
LOCAL_JAVA_LIBRARIES := \
|
||||
telephony-common \
|
||||
@@ -53,7 +55,6 @@ ifneq ($(INCREMENTAL_BUILDS),)
|
||||
LOCAL_JACK_FLAGS := --multi-dex native
|
||||
endif
|
||||
|
||||
include frameworks/opt/setupwizard/library/common-gingerbread.mk
|
||||
include frameworks/base/packages/SettingsLib/common.mk
|
||||
include frameworks/base/packages/SettingsLib/search/common.mk
|
||||
|
||||
|
||||
@@ -3054,6 +3054,14 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".wifi.dpp.WifiDppEnrolleeActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.settings.WIFI_DPP_ENROLLEE_QR_CODE_SCANNER"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".homepage.contextualcards.ContextualCardFeedbackDialog"
|
||||
android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert" />
|
||||
<!-- This is the longest AndroidManifest.xml ever. -->
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
@@ -164,7 +164,7 @@
|
||||
</LinearLayout>
|
||||
|
||||
<!-- right side: lock pattern -->
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
style="@style/LockPatternContainerStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
@@ -177,8 +177,8 @@
|
||||
android:layout_gravity="center"
|
||||
android:background="@color/lock_pattern_background" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
</ScrollView>
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
style="@style/LockPatternContainerStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
@@ -102,7 +102,7 @@
|
||||
android:layout_gravity="center"
|
||||
android:background="@color/lock_pattern_background" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
@@ -108,7 +108,7 @@
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginVertical="24dp"
|
||||
@@ -120,7 +120,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center" />
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.FingerprintErrorText"
|
||||
@@ -139,4 +139,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
@@ -112,4 +112,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
@@ -75,7 +75,7 @@
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.android.setupwizardlib.view.ButtonBarLayout
|
||||
<com.google.android.setupdesign.view.ButtonBarLayout
|
||||
style="@style/SuwGlifButtonBar.Stackable"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -103,11 +103,11 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/security_settings_fingerprint_enroll_done" />
|
||||
|
||||
</com.android.setupwizardlib.view.ButtonBarLayout>
|
||||
</com.google.android.setupdesign.view.ButtonBarLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="match_parent">
|
||||
@@ -120,8 +120,8 @@
|
||||
android:contentDescription="@android:string/fingerprint_icon_content_description"
|
||||
android:src="@drawable/fingerprint_enroll_finish" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:icon="@drawable/ic_lock"
|
||||
android:importantForAutofill="noExcludeDescendants"
|
||||
settings:suwFooter="@layout/choose_lock_password_footer"
|
||||
settings:sucFooter="@layout/choose_lock_password_footer"
|
||||
settings:suwHeaderText="@string/lockpassword_choose_your_screen_lock_header">
|
||||
|
||||
<LinearLayout
|
||||
@@ -79,4 +79,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
-->
|
||||
|
||||
<!-- Used in phone portrait and tablet, as referenced in alias.xml. -->
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:icon="@drawable/ic_lock"
|
||||
android:layout="@layout/suw_glif_blank_template"
|
||||
settings:suwFooter="@layout/choose_lock_pattern_common_footer"
|
||||
settings:sucFooter="@layout/choose_lock_pattern_common_footer"
|
||||
settings:suwHeaderText="@string/lockpassword_choose_your_screen_lock_header">
|
||||
|
||||
<com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
|
||||
@@ -85,7 +85,7 @@
|
||||
android:paddingHorizontal="?attr/suwMarginSides"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
style="@style/LockPatternContainerStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
@@ -97,7 +97,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -119,4 +119,4 @@
|
||||
|
||||
</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
|
||||
<!-- TODO: Use aapt:attr when it is fixed (b/36809755) -->
|
||||
<com.android.setupwizardlib.view.ButtonBarLayout
|
||||
<com.google.android.setupdesign.view.ButtonBarLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SuwGlifButtonBar.Stackable"
|
||||
android:layout_width="match_parent"
|
||||
@@ -49,4 +49,4 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/lockpattern_tutorial_continue_label" />
|
||||
|
||||
</com.android.setupwizardlib.view.ButtonBarLayout>
|
||||
</com.google.android.setupdesign.view.ButtonBarLayout>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
@@ -82,4 +82,4 @@
|
||||
android:text="@string/cancel" />
|
||||
|
||||
</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
@@ -13,7 +13,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
@@ -65,7 +65,7 @@
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp">
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
style="@style/LockPatternContainerStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
@@ -77,7 +77,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.ConfirmDeviceCredentialsErrorText"
|
||||
@@ -104,4 +104,4 @@
|
||||
|
||||
</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:icon="@drawable/ic_lock"
|
||||
app:suwFooter="@layout/encryption_interstitial_footer">
|
||||
app:sucFooter="@layout/encryption_interstitial_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -39,4 +39,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
style="?attr/face_layout_theme"
|
||||
app:suwFooter="@layout/face_enroll_enrolling_footer">
|
||||
app:sucFooter="@layout/face_enroll_enrolling_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -71,4 +71,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
@@ -15,14 +15,14 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
style="?attr/face_layout_theme"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/face_enroll_finish_footer">
|
||||
app:sucFooter="@layout/face_enroll_finish_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -39,7 +39,7 @@
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
@@ -51,10 +51,10 @@
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/face_enroll_introduction" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
|
||||
<!-- TODO: Use aapt:attr when it is fixed (b/36809755) -->
|
||||
<com.android.setupwizardlib.view.ButtonBarLayout
|
||||
<com.google.android.setupdesign.view.ButtonBarLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SuwGlifButtonBar.Stackable"
|
||||
android:layout_width="match_parent"
|
||||
@@ -34,4 +34,4 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/security_settings_face_enroll_done" />
|
||||
|
||||
</com.android.setupwizardlib.view.ButtonBarLayout>
|
||||
</com.google.android.setupdesign.view.ButtonBarLayout>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
style="?attr/face_layout_theme"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/face_enroll_introduction_footer">
|
||||
app:sucFooter="@layout/face_enroll_introduction_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -32,20 +32,20 @@
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.setupwizardlib.view.RichTextView
|
||||
<com.google.android.setupdesign.view.RichTextView
|
||||
android:id="@+id/description_text"
|
||||
style="@style/SuwDescription.Glif"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/security_settings_face_enroll_introduction_message" />
|
||||
|
||||
<com.android.setupwizardlib.view.RichTextView
|
||||
<com.google.android.setupdesign.view.RichTextView
|
||||
android:id="@+id/error_text"
|
||||
style="@style/SuwDescription.Glif"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
@@ -57,8 +57,8 @@
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/face_enroll_introduction" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
|
||||
<!-- TODO: Use aapt:attr when it is fixed (b/36809755) -->
|
||||
<com.android.setupwizardlib.view.ButtonBarLayout
|
||||
<com.google.android.setupdesign.view.ButtonBarLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SuwGlifButtonBar.Stackable"
|
||||
android:layout_width="match_parent"
|
||||
@@ -41,4 +41,4 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/suw_next_button_label" />
|
||||
|
||||
</com.android.setupwizardlib.view.ButtonBarLayout>
|
||||
</com.google.android.setupdesign.view.ButtonBarLayout>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
style="?attr/fingerprint_layout_theme"
|
||||
app:suwFooter="@layout/fingerprint_enroll_enrolling_base_footer">
|
||||
app:sucFooter="@layout/fingerprint_enroll_enrolling_base_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -64,7 +64,7 @@
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
android:layout_width="@dimen/fingerprint_progress_bar_max_size"
|
||||
android:layout_height="@dimen/fingerprint_progress_bar_max_size"
|
||||
android:paddingTop="0dp"
|
||||
@@ -75,7 +75,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center" />
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.FingerprintErrorText"
|
||||
@@ -91,4 +91,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
style="?attr/fingerprint_layout_theme"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/fingerprint_enroll_find_sensor_base_footer">
|
||||
app:sucFooter="@layout/fingerprint_enroll_find_sensor_base_footer">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -59,4 +59,4 @@
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
|
||||
</LinearLayout>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
~ limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
style="?attr/fingerprint_layout_theme"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/fingerprint_enroll_finish_base_footer">
|
||||
app:sucFooter="@layout/fingerprint_enroll_finish_base_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -48,7 +48,7 @@
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
android:layout_width="@dimen/fingerprint_progress_bar_max_size"
|
||||
android:layout_height="@dimen/fingerprint_progress_bar_max_size"
|
||||
android:layout_marginVertical="24dp"
|
||||
@@ -64,7 +64,7 @@
|
||||
android:padding="7dp"
|
||||
android:contentDescription="@android:string/fingerprint_icon_content_description"
|
||||
android:src="@drawable/fingerprint_enroll_finish" />
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
<!-- Added to align elements with fingerprint_enroll_enrolling_base -->
|
||||
<TextView
|
||||
@@ -78,4 +78,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
|
||||
<!-- TODO: Use aapt:attr when it is fixed (b/36809755) -->
|
||||
<com.android.setupwizardlib.view.ButtonBarLayout
|
||||
<com.google.android.setupdesign.view.ButtonBarLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SuwGlifButtonBar.Stackable"
|
||||
android:layout_width="match_parent"
|
||||
@@ -41,4 +41,4 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/security_settings_fingerprint_enroll_done" />
|
||||
|
||||
</com.android.setupwizardlib.view.ButtonBarLayout>
|
||||
</com.google.android.setupdesign.view.ButtonBarLayout>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
style="?attr/fingerprint_layout_theme"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/fingerprint_enroll_introduction_footer">
|
||||
app:sucFooter="@layout/fingerprint_enroll_introduction_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -32,20 +32,20 @@
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.setupwizardlib.view.RichTextView
|
||||
<com.google.android.setupdesign.view.RichTextView
|
||||
android:id="@+id/description_text"
|
||||
style="@style/SuwDescription.Glif"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/security_settings_fingerprint_enroll_introduction_message" />
|
||||
|
||||
<com.android.setupwizardlib.view.RichTextView
|
||||
<com.google.android.setupdesign.view.RichTextView
|
||||
android:id="@+id/error_text"
|
||||
style="@style/SuwDescription.Glif"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.android.setupwizardlib.view.FillContentLayout
|
||||
<com.google.android.setupdesign.view.FillContentLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
@@ -57,8 +57,8 @@
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/fingerprint_enroll_introduction" />
|
||||
|
||||
</com.android.setupwizardlib.view.FillContentLayout>
|
||||
</com.google.android.setupdesign.view.FillContentLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
|
||||
<!-- TODO: Use aapt:attr when it is fixed (b/36809755) -->
|
||||
<com.android.setupwizardlib.view.ButtonBarLayout
|
||||
<com.google.android.setupdesign.view.ButtonBarLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SuwGlifButtonBar.Stackable"
|
||||
android:layout_width="match_parent"
|
||||
@@ -41,4 +41,4 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/suw_next_button_label" />
|
||||
|
||||
</com.android.setupwizardlib.view.ButtonBarLayout>
|
||||
</com.google.android.setupdesign.view.ButtonBarLayout>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
@@ -135,4 +135,4 @@
|
||||
android:layout_height="wrap_content"/>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
@@ -37,4 +37,4 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/master_clear_final_desc"/>
|
||||
</LinearLayout>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
limitations under the License
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:icon="@drawable/ic_suggested_notifications"
|
||||
settings:suwFooter="@layout/redaction_interstitial_footer"
|
||||
settings:sucFooter="@layout/redaction_interstitial_footer"
|
||||
settings:suwHeaderText="@string/lock_screen_notifications_interstitial_title">
|
||||
|
||||
<LinearLayout
|
||||
@@ -78,4 +78,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifPreferenceLayout
|
||||
<com.google.android.setupdesign.GlifPreferenceLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@android:id/list_container"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/storage_wizard_footer">
|
||||
app:sucFooter="@layout/storage_wizard_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -44,4 +44,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/storage_wizard_footer">
|
||||
app:sucFooter="@layout/storage_wizard_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -136,4 +136,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/storage_wizard_footer">
|
||||
app:sucFooter="@layout/storage_wizard_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -59,4 +59,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/storage_wizard_footer">
|
||||
app:sucFooter="@layout/storage_wizard_footer">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SuwContentFrame"
|
||||
@@ -38,4 +38,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
25
res/layout/wifi_button_preference_widget.xml
Normal file
25
res/layout/wifi_button_preference_widget.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2018 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/button_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:background="@null"
|
||||
android:visibility="gone"
|
||||
android:contentDescription="@string/wifi_add_network" />
|
||||
@@ -50,13 +50,28 @@
|
||||
android:text="@string/wifi_ssid"
|
||||
android:textDirection="locale" />
|
||||
|
||||
<EditText android:id="@+id/ssid"
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" >
|
||||
<EditText android:id="@+id/ssid"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/wifi_item_edit_content"
|
||||
android:hint="@string/wifi_ssid_hint"
|
||||
android:singleLine="true"
|
||||
android:inputType="textNoSuggestions" />
|
||||
<ImageButton
|
||||
android:id="@+id/ssid_scanner_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/wifi_item_edit_content"
|
||||
android:hint="@string/wifi_ssid_hint"
|
||||
android:singleLine="true"
|
||||
android:inputType="textNoSuggestions" />
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="5dp"
|
||||
android:background="@null"
|
||||
android:src="@drawable/ic_qrcode_24dp"
|
||||
android:visibility="gone"
|
||||
android:contentDescription="@string/wifi_add_network" />
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout android:id="@+id/ssid_too_long_warning"
|
||||
android:layout_width="match_parent"
|
||||
@@ -270,12 +285,28 @@
|
||||
style="@style/wifi_item_label"
|
||||
android:text="@string/wifi_password" />
|
||||
|
||||
<EditText android:id="@+id/password"
|
||||
android:layout_width="match_parent"
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" >
|
||||
<EditText android:id="@+id/password"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/wifi_item_edit_content"
|
||||
android:singleLine="true"
|
||||
android:password="true" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/password_scanner_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/wifi_item_edit_content"
|
||||
android:singleLine="true"
|
||||
android:password="true" />
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="5dp"
|
||||
android:background="@null"
|
||||
android:src="@drawable/ic_qrcode_24dp"
|
||||
android:visibility="gone"
|
||||
android:contentDescription="@string/wifi_add_network" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout android:id="@+id/show_password_layout"
|
||||
|
||||
@@ -44,8 +44,5 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
<include layout="@layout/wifi_dpp_fragment_footer"
|
||||
android:gravity="center|bottom"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -2056,6 +2056,14 @@
|
||||
<string name="wifi_dpp_add_device_to_network">Add a device to this network</string>
|
||||
<!-- Hint for the user to center another device's QR code in the below camera window [CHAR LIMIT=120] -->
|
||||
<string name="wifi_dpp_center_qr_code">Center the device\u2019s QR code below to add device to \u201c<xliff:g id="ssid" example="OfficeWifi">%1$s</xliff:g>\u201d</string>
|
||||
<!-- Title for the fragment to scan QR code [CHAR LIMIT=50] -->
|
||||
<string name="wifi_dpp_scan_qr_code">Scan QR code</string>
|
||||
<!-- Hint for the user to center another device's QR code in the below camera window [CHAR LIMIT=NONE] -->
|
||||
<string name="wifi_dpp_scan_qr_code_join_network">Join \u201c<xliff:g id="ssid" example="OfficeWifi">%1$s</xliff:g>\u201d by scanning a QR code</string>
|
||||
<!-- Title for the fragment to share Wi-Fi [CHAR LIMIT=50] -->
|
||||
<string name="wifi_dpp_share_wifi">Share Wi\u2011Fi</string>
|
||||
<!-- Hint for the user to use another device to scan QR code on screen to join Wi-Fi [CHAR LIMIT=NONE] -->
|
||||
<string name="wifi_dpp_scan_qr_code_with_another_device">Scan this QR code with another device to join \u201c<xliff:g id="ssid" example="OfficeWifi">%1$s</xliff:g>\u201d</string>
|
||||
<!-- Label for the check box to share a network with other users on the same device -->
|
||||
<string name="wifi_shared">Share with other device users</string>
|
||||
<!-- Hint for unchanged fields -->
|
||||
@@ -8404,6 +8412,12 @@
|
||||
<!-- Title for Default Phone app settings [CHAR LIMIT=30] -->
|
||||
<string name="default_phone_title">Phone app</string>
|
||||
|
||||
<!--
|
||||
~ STOPSHIP(b/110557011): Remove once the new UI is ready.
|
||||
-->
|
||||
<!-- Title for Roles settings [CHAR LIMIT=30] -->
|
||||
<string name="roles_title">Roles</string>
|
||||
|
||||
<!-- Label of default app for current setting [CHAR LIMIT=40] -->
|
||||
<string name="default_app">(Default)</string>
|
||||
|
||||
|
||||
@@ -198,6 +198,7 @@
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:navigationBarDividerColor">@*android:color/ripple_material_light</item>
|
||||
<item name="android:navigationBarColor">@android:color/white</item>
|
||||
<item name="android:windowBackground">@android:color/white</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
|
||||
|
||||
@@ -79,6 +79,14 @@
|
||||
android:fragment="com.android.settings.applications.managedomainurls.ManageDomainUrls"
|
||||
settings:keywords="@string/keywords_default_links"/>
|
||||
|
||||
<!--
|
||||
~ STOPSHIP(b/110557011): Remove once the new UI is ready.
|
||||
-->
|
||||
<Preference
|
||||
android:key="roles"
|
||||
android:title="@string/roles_title"
|
||||
settings:controller="com.android.settings.applications.defaultapps.RolesPreferenceController" />
|
||||
|
||||
<com.android.settings.widget.WorkOnlyCategory
|
||||
android:key="work_app_defaults"
|
||||
android:title="@string/default_for_work">
|
||||
|
||||
@@ -39,7 +39,8 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
import com.android.setupwizardlib.GlifLayout;
|
||||
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -64,8 +64,9 @@ import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
import com.android.settings.password.ConfirmLockPattern;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.setupwizardlib.TemplateLayout;
|
||||
import com.android.setupwizardlib.template.ButtonFooterMixin;
|
||||
|
||||
import com.google.android.setupcompat.TemplateLayout;
|
||||
import com.google.android.setupdesign.template.ButtonFooterMixin;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -43,8 +43,9 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.setupwizardlib.TemplateLayout;
|
||||
import com.android.setupwizardlib.template.ButtonFooterMixin;
|
||||
|
||||
import com.google.android.setupcompat.TemplateLayout;
|
||||
import com.google.android.setupdesign.template.ButtonFooterMixin;
|
||||
|
||||
/**
|
||||
* Confirm and execute a reset of the device to a clean "just out of the box"
|
||||
|
||||
@@ -21,7 +21,9 @@ import android.os.SystemProperties;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.setupwizardlib.util.WizardManagerHelper;
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
import com.google.android.setupdesign.util.ThemeHelper;
|
||||
|
||||
|
||||
public class SetupWizardUtils {
|
||||
|
||||
@@ -35,17 +37,17 @@ public class SetupWizardUtils {
|
||||
}
|
||||
if (theme != null) {
|
||||
switch (theme) {
|
||||
case WizardManagerHelper.THEME_GLIF_V3_LIGHT:
|
||||
case ThemeHelper.THEME_GLIF_V3_LIGHT:
|
||||
return R.style.GlifV3Theme_Light;
|
||||
case WizardManagerHelper.THEME_GLIF_V3:
|
||||
case ThemeHelper.THEME_GLIF_V3:
|
||||
return R.style.GlifV3Theme;
|
||||
case WizardManagerHelper.THEME_GLIF_V2_LIGHT:
|
||||
case ThemeHelper.THEME_GLIF_V2_LIGHT:
|
||||
return R.style.GlifV2Theme_Light;
|
||||
case WizardManagerHelper.THEME_GLIF_V2:
|
||||
case ThemeHelper.THEME_GLIF_V2:
|
||||
return R.style.GlifV2Theme;
|
||||
case WizardManagerHelper.THEME_GLIF_LIGHT:
|
||||
case ThemeHelper.THEME_GLIF_LIGHT:
|
||||
return R.style.GlifTheme_Light;
|
||||
case WizardManagerHelper.THEME_GLIF:
|
||||
case ThemeHelper.THEME_GLIF:
|
||||
return R.style.GlifTheme;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.applications.defaultapps;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
/**
|
||||
* STOPSHIP(b/110557011): Remove once the new UI is ready.
|
||||
*/
|
||||
public class RolesPreferenceController extends BasePreferenceController {
|
||||
|
||||
private Intent mIntent;
|
||||
|
||||
public RolesPreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
String packageName = packageManager.getPermissionControllerPackageName();
|
||||
if (packageName != null) {
|
||||
mIntent = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
|
||||
.setPackage(packageName);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return mIntent != null ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||
if (TextUtils.equals(preference.getKey(), mPreferenceKey)) {
|
||||
if (mIntent != null) {
|
||||
mContext.startActivity(mIntent);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,8 @@ import com.android.settings.SetupWizardUtils;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
|
||||
import com.android.settings.core.InstrumentedActivity;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
import com.android.setupwizardlib.GlifLayout;
|
||||
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
/**
|
||||
* Base activity for all biometric enrollment steps.
|
||||
|
||||
@@ -28,7 +28,8 @@ import android.widget.TextView;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.password.ChooseLockGeneric;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
import com.android.setupwizardlib.span.LinkSpan;
|
||||
|
||||
import com.google.android.setupdesign.span.LinkSpan;
|
||||
|
||||
/**
|
||||
* Abstract base class for the intro onboarding activity for biometric enrollment.
|
||||
|
||||
@@ -29,7 +29,8 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.biometrics.BiometricEnrollIntroduction;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.setupwizardlib.span.LinkSpan;
|
||||
|
||||
import com.google.android.setupdesign.span.LinkSpan;
|
||||
|
||||
public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
|
||||
|
||||
|
||||
@@ -43,8 +43,9 @@ public class FaceEnrollSidecar extends BiometricEnrollSidecar {
|
||||
if (mUserId != UserHandle.USER_NULL) {
|
||||
mFaceManager.setActiveUser(mUserId);
|
||||
}
|
||||
// TODO: Send the list of disabled features
|
||||
mFaceManager.enroll(mToken, mEnrollmentCancel,
|
||||
0 /* flags */, mUserId, mEnrollmentCallback);
|
||||
mEnrollmentCallback, new int[0] /* disabledFeatures */);
|
||||
}
|
||||
|
||||
private FaceManager.EnrollmentCallback mEnrollmentCallback
|
||||
|
||||
@@ -48,7 +48,6 @@ public class FaceSettingsAttentionPreferenceController extends TogglePreferenceC
|
||||
|
||||
public void setToken(byte[] token) {
|
||||
mToken = token;
|
||||
mPreference.setChecked(mFaceManager.getRequireAttention(mToken));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,18 +63,13 @@ public class FaceSettingsAttentionPreferenceController extends TogglePreferenceC
|
||||
public boolean isChecked() {
|
||||
if (!FaceSettings.isAvailable(mContext)) {
|
||||
return true;
|
||||
} else if (mToken == null) {
|
||||
// The token will be null when the controller is first created, since CC has not been
|
||||
// completed by the user. Once it's completed, FaceSettings will use setToken which
|
||||
// will retrieve the correct value from FaceService
|
||||
return true;
|
||||
}
|
||||
return mFaceManager.getRequireAttention(mToken);
|
||||
return mFaceManager.getFeature(FaceManager.FEATURE_REQUIRE_ATTENTION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setChecked(boolean isChecked) {
|
||||
mFaceManager.setRequireAttention(isChecked, mToken);
|
||||
mFaceManager.setFeature(FaceManager.FEATURE_REQUIRE_ATTENTION, isChecked, mToken);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,8 @@ import com.android.settings.biometrics.BiometricEnrollIntroduction;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
import com.android.settingslib.HelpUtils;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.setupwizardlib.span.LinkSpan;
|
||||
|
||||
import com.google.android.setupdesign.span.LinkSpan;
|
||||
|
||||
public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
|
||||
|
||||
|
||||
@@ -44,7 +44,8 @@ import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settingslib.Utils;
|
||||
import com.android.setupwizardlib.GlifLayout;
|
||||
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.util.List;
|
||||
|
||||
@@ -68,7 +68,8 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.notification.RedactionInterstitial;
|
||||
import com.android.settings.widget.ImeAwareEditText;
|
||||
import com.android.setupwizardlib.GlifLayout;
|
||||
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -48,9 +48,9 @@ import com.android.settings.SetupWizardUtils;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.notification.RedactionInterstitial;
|
||||
import com.android.setupwizardlib.GlifLayout;
|
||||
|
||||
import com.google.android.collect.Lists;
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -31,7 +31,8 @@ import androidx.fragment.app.Fragment;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.setupwizardlib.util.WizardManagerHelper;
|
||||
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
|
||||
public final class ChooseLockSettingsHelper {
|
||||
|
||||
|
||||
@@ -39,7 +39,8 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment;
|
||||
import com.android.setupwizardlib.util.WizardManagerHelper;
|
||||
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@ import com.android.settings.SetupEncryptionInterstitial;
|
||||
import com.android.settings.SetupWizardUtils;
|
||||
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor;
|
||||
import com.android.settings.utils.SettingsDividerItemDecoration;
|
||||
import com.android.setupwizardlib.GlifPreferenceLayout;
|
||||
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
|
||||
/**
|
||||
* Setup Wizard's version of ChooseLockGeneric screen. It inherits the logic and basic structure
|
||||
|
||||
@@ -21,7 +21,7 @@ import android.content.Context;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.setupwizardlib.DividerItemDecoration;
|
||||
import com.google.android.setupdesign.DividerItemDecoration;
|
||||
|
||||
public class SettingsDividerItemDecoration extends DividerItemDecoration {
|
||||
|
||||
|
||||
@@ -23,12 +23,14 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.wifi.dpp.WifiDppUtils;
|
||||
|
||||
public class AddNetworkFragment extends InstrumentedFragment implements WifiConfigUiBase,
|
||||
View.OnClickListener {
|
||||
@@ -64,6 +66,18 @@ public class AddNetworkFragment extends InstrumentedFragment implements WifiConf
|
||||
mCancelBtn.setOnClickListener(this);
|
||||
mUIController = new WifiConfigController(this, rootView, null, getMode());
|
||||
|
||||
if (WifiDppUtils.isSharingNetworkEnabled(getContext())) {
|
||||
final ImageButton scannerButton = rootView.findViewById(R.id.ssid_scanner_button);
|
||||
if (scannerButton != null) {
|
||||
scannerButton.setVisibility(View.VISIBLE);
|
||||
scannerButton.setOnClickListener((View v) -> {
|
||||
// Launch QR code scanner to join a network.
|
||||
getContext().startActivity(
|
||||
WifiDppUtils.getConfiguratorQRCodeScannerIntent(/* ssid */ null));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
123
src/com/android/settings/wifi/ButtonPreference.java
Normal file
123
src/com/android/settings/wifi/ButtonPreference.java
Normal file
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
/**
|
||||
* This preference provides one button layout with Settings style.
|
||||
* It looks like below
|
||||
*
|
||||
* --------------------------------------------------------------
|
||||
* | icon | title | button |
|
||||
* --------------------------------------------------------------
|
||||
*
|
||||
* User can set icon / click listener for button.
|
||||
* By default, the button is invisible.
|
||||
*/
|
||||
public class ButtonPreference extends Preference {
|
||||
|
||||
private static final String TAG = "ButtonPreference";
|
||||
|
||||
private ImageButton mImageButton;
|
||||
private Drawable mButtonIcon;
|
||||
private View.OnClickListener mClickListener;
|
||||
|
||||
// Used for dummy pref.
|
||||
public ButtonPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setWidgetLayoutResource(R.layout.wifi_button_preference_widget);
|
||||
mImageButton = null;
|
||||
mButtonIcon = null;
|
||||
mClickListener = null;
|
||||
}
|
||||
|
||||
public ButtonPreference(Context context) {
|
||||
this(context, /* attrs */ null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final PreferenceViewHolder view) {
|
||||
super.onBindViewHolder(view);
|
||||
initButton(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOrder(int order) {
|
||||
super.setOrder(order);
|
||||
setButtonVisibility();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
protected void initButton(final PreferenceViewHolder view) {
|
||||
if (mImageButton == null) {
|
||||
mImageButton = (ImageButton) view.findViewById(R.id.button_icon);
|
||||
}
|
||||
if (mImageButton != null) {
|
||||
mImageButton.setImageDrawable(mButtonIcon);
|
||||
mImageButton.setOnClickListener(mClickListener);
|
||||
}
|
||||
setButtonVisibility();
|
||||
}
|
||||
|
||||
private void setButtonVisibility() {
|
||||
if(mImageButton != null) {
|
||||
mImageButton.setVisibility(mButtonIcon == null ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the drawable to be displayed in button.
|
||||
*/
|
||||
public ButtonPreference setButtonIcon(@DrawableRes int iconResId) {
|
||||
if (iconResId == 0) {
|
||||
return this;
|
||||
}
|
||||
|
||||
try {
|
||||
mButtonIcon = getContext().getDrawable(iconResId);
|
||||
notifyChanged();
|
||||
} catch (Resources.NotFoundException exception) {
|
||||
Log.e(TAG, "Resource does not exist: " + iconResId);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a callback to be invoked when button is clicked.
|
||||
*/
|
||||
public ButtonPreference setButtonOnClickListener(View.OnClickListener listener) {
|
||||
if (listener != mClickListener) {
|
||||
mClickListener = listener;
|
||||
notifyChanged();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -21,10 +21,13 @@ import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.wifi.dpp.WifiDppUtils;
|
||||
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.settingslib.wifi.AccessPoint;
|
||||
@@ -77,7 +80,18 @@ public class WifiDialog extends AlertDialog implements WifiConfigUiBase,
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
mView = getLayoutInflater().inflate(R.layout.wifi_dialog, null);
|
||||
mView = getLayoutInflater().inflate(R.layout.wifi_dialog, /* root */ null);
|
||||
if (WifiDppUtils.isSharingNetworkEnabled(getContext())) {
|
||||
final ImageButton scannerButton = mView.findViewById(R.id.password_scanner_button);
|
||||
if (scannerButton != null) {
|
||||
scannerButton.setVisibility(View.VISIBLE);
|
||||
scannerButton.setOnClickListener((View v) -> {
|
||||
// Launch QR code scanner to join a network.
|
||||
getContext().startActivity(
|
||||
WifiDppUtils.getConfiguratorQRCodeScannerIntent(/* ssid */ null));
|
||||
});
|
||||
}
|
||||
}
|
||||
setView(mView);
|
||||
mController = new WifiConfigController(this, mView, mAccessPoint, mMode);
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
@@ -30,7 +30,8 @@ import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.settings.SetupWizardUtils;
|
||||
import com.android.settingslib.wifi.AccessPoint;
|
||||
import com.android.setupwizardlib.util.WizardManagerHelper;
|
||||
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
|
||||
public class WifiDialogActivity extends Activity implements WifiDialog.WifiDialogListener,
|
||||
DialogInterface.OnDismissListener {
|
||||
|
||||
@@ -66,6 +66,7 @@ import com.android.settings.search.SearchIndexableRaw;
|
||||
import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
|
||||
import com.android.settings.widget.SwitchBarController;
|
||||
import com.android.settings.wifi.details.WifiNetworkDetailsFragment;
|
||||
import com.android.settings.wifi.dpp.WifiDppUtils;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
@@ -175,7 +176,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
|
||||
private PreferenceCategory mConnectedAccessPointPreferenceCategory;
|
||||
private PreferenceCategory mAccessPointsPreferenceCategory;
|
||||
private Preference mAddPreference;
|
||||
private ButtonPreference mAddPreference;
|
||||
@VisibleForTesting
|
||||
Preference mConfigureWifiSettingsPreference;
|
||||
@VisibleForTesting
|
||||
@@ -235,9 +236,17 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
|
||||
|
||||
Context prefContext = getPrefContext();
|
||||
mAddPreference = new Preference(prefContext);
|
||||
mAddPreference = new ButtonPreference(prefContext);
|
||||
mAddPreference.setIcon(R.drawable.ic_menu_add);
|
||||
mAddPreference.setTitle(R.string.wifi_add_network);
|
||||
if (WifiDppUtils.isSharingNetworkEnabled(getContext())) {
|
||||
mAddPreference.setButtonIcon(R.drawable.ic_qrcode_24dp);
|
||||
mAddPreference.setButtonOnClickListener((View v) -> {
|
||||
// Launch QR code scanner to join a network.
|
||||
getContext().startActivity(
|
||||
WifiDppUtils.getConfiguratorQRCodeScannerIntent(/* ssid */ null));
|
||||
});
|
||||
}
|
||||
mStatusMessagePreference = (LinkablePreference) findPreference(PREF_KEY_STATUS_MESSAGE);
|
||||
|
||||
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
|
||||
|
||||
@@ -31,8 +31,26 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.core.InstrumentedActivity;
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
* To provision "other" device with specified Wi-Fi network.
|
||||
*
|
||||
* Uses different intents to specify different provisioning ways.
|
||||
*
|
||||
* For intent action {@code ACTION_CONFIGURATOR_QR_CODE_SCANNER} and
|
||||
* {@code android.settings.WIFI_DPP_CONFIGURATOR_QR_CODE_GENERATOR}, specify the Wi-Fi network to be
|
||||
* provisioned in:
|
||||
*
|
||||
* {@code WifiDppUtils.EXTRA_WIFI_SECURITY}
|
||||
* {@code WifiDppUtils.EXTRA_WIFI_SSID}
|
||||
* {@code WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY}
|
||||
* {@code WifiDppUtils.EXTRA_WIFI_HIDDEN_SSID}
|
||||
*
|
||||
* For intent action {@code ACTION_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK}, specify Wi-Fi (DPP)
|
||||
* QR code in {@code WifiDppUtils.EXTRA_QR_CODE}
|
||||
*/
|
||||
public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
||||
WifiNetworkConfig.Retriever {
|
||||
WifiNetworkConfig.Retriever,
|
||||
WifiDppQrCodeGeneratorFragment.OnQrCodeGeneratorFragmentAddButtonClickedListener {
|
||||
private static final String TAG = "WifiDppConfiguratorActivity";
|
||||
|
||||
public static final String ACTION_CONFIGURATOR_QR_CODE_SCANNER =
|
||||
@@ -43,7 +61,6 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
||||
"android.settings.WIFI_DPP_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK";
|
||||
|
||||
private FragmentManager mFragmentManager;
|
||||
private FragmentTransaction mFragmentTransaction;
|
||||
|
||||
/** The Wi-Fi network which will be configured */
|
||||
private WifiNetworkConfig mWifiNetworkConfig;
|
||||
@@ -57,12 +74,20 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.wifi_dpp_activity);
|
||||
|
||||
mFragmentManager = getSupportFragmentManager();
|
||||
mFragmentTransaction = getSupportFragmentManager().beginTransaction();
|
||||
|
||||
Intent intent = getIntent();
|
||||
handleIntent(getIntent());
|
||||
|
||||
ActionBar actionBar = getActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.setElevation(0);
|
||||
actionBar.setDisplayShowTitleEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleIntent(Intent intent) {
|
||||
boolean cancelActivity = false;
|
||||
WifiNetworkConfig config;
|
||||
switch (intent.getAction()) {
|
||||
@@ -72,7 +97,7 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
||||
cancelActivity = true;
|
||||
} else {
|
||||
mWifiNetworkConfig = config;
|
||||
addQrCodeScannerFragment(/* addToBackStack= */ false);
|
||||
showQrCodeScannerFragment(/* addToBackStack= */ false);
|
||||
}
|
||||
break;
|
||||
case ACTION_CONFIGURATOR_QR_CODE_GENERATOR:
|
||||
@@ -81,11 +106,11 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
||||
cancelActivity = true;
|
||||
} else {
|
||||
mWifiNetworkConfig = config;
|
||||
addQrCodeGeneratorFragment();
|
||||
showQrCodeGeneratorFragment();
|
||||
}
|
||||
break;
|
||||
case ACTION_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK:
|
||||
addChooseSavedWifiNetworkFragment(/* addToBackStack */ false);
|
||||
showChooseSavedWifiNetworkFragment(/* addToBackStack */ false);
|
||||
break;
|
||||
default:
|
||||
cancelActivity = true;
|
||||
@@ -98,45 +123,55 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
private void addQrCodeScannerFragment(boolean addToBackStack) {
|
||||
WifiDppQrCodeScannerFragment fragment = new WifiDppQrCodeScannerFragment();
|
||||
mFragmentTransaction.add(R.id.fragment_container, fragment);
|
||||
if (addToBackStack) {
|
||||
mFragmentTransaction.addToBackStack(/* name */ null);
|
||||
private void showQrCodeScannerFragment(boolean addToBackStack) {
|
||||
// Avoid to replace the same fragment during configuration change
|
||||
if (mFragmentManager.findFragmentByTag(WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER) != null) {
|
||||
return;
|
||||
}
|
||||
mFragmentTransaction.commit();
|
||||
|
||||
WifiDppQrCodeScannerFragment fragment = new WifiDppQrCodeScannerFragment();
|
||||
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
|
||||
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragment,
|
||||
WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
|
||||
if (addToBackStack) {
|
||||
fragmentTransaction.addToBackStack(/* name */ null);
|
||||
}
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
|
||||
private void addQrCodeGeneratorFragment() {
|
||||
private void showQrCodeGeneratorFragment() {
|
||||
// Avoid to replace the same fragment during configuration change
|
||||
if (mFragmentManager.findFragmentByTag(
|
||||
WifiDppUtils.TAG_FRAGMENT_QR_CODE_GENERATOR) != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
WifiDppQrCodeGeneratorFragment fragment = new WifiDppQrCodeGeneratorFragment();
|
||||
mFragmentTransaction.add(R.id.fragment_container, fragment);
|
||||
mFragmentTransaction.commit();
|
||||
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
|
||||
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragment,
|
||||
WifiDppUtils.TAG_FRAGMENT_QR_CODE_GENERATOR);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
|
||||
private void addChooseSavedWifiNetworkFragment(boolean addToBackStack) {
|
||||
ActionBar action = getActionBar();
|
||||
if (action != null) {
|
||||
action.hide();
|
||||
private void showChooseSavedWifiNetworkFragment(boolean addToBackStack) {
|
||||
// Avoid to replace the same fragment during configuration change
|
||||
if (mFragmentManager.findFragmentByTag(
|
||||
WifiDppUtils.TAG_FRAGMENT_CHOOSE_SAVED_WIFI_NETWORK) != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
WifiDppChooseSavedWifiNetworkFragment fragment =
|
||||
new WifiDppChooseSavedWifiNetworkFragment();
|
||||
mFragmentTransaction.add(R.id.fragment_container, fragment);
|
||||
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
|
||||
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragment,
|
||||
WifiDppUtils.TAG_FRAGMENT_CHOOSE_SAVED_WIFI_NETWORK);
|
||||
if (addToBackStack) {
|
||||
mFragmentTransaction.addToBackStack(/* name */ null);
|
||||
fragmentTransaction.addToBackStack(/* name */ null);
|
||||
}
|
||||
mFragmentTransaction.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
Fragment fragment = mFragmentManager.findFragmentById(R.id.fragment_container);
|
||||
if (fragment != null) {
|
||||
// Remove it to prevent stacking multiple fragments after screen rotated.
|
||||
mFragmentManager.beginTransaction().remove(fragment).commit();
|
||||
}
|
||||
|
||||
super.onStop();
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -153,4 +188,22 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNavigateUp(){
|
||||
Fragment fragment = mFragmentManager.findFragmentById(R.id.fragment_container);
|
||||
if (fragment instanceof WifiDppQrCodeGeneratorFragment) {
|
||||
setResult(Activity.RESULT_CANCELED);
|
||||
finish();
|
||||
return true;
|
||||
} else if (fragment instanceof WifiDppQrCodeScannerFragment) {
|
||||
mFragmentManager.popBackStackImmediate();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override public void onQrCodeGeneratorFragmentAddButtonClicked() {
|
||||
showQrCodeScannerFragment(/* addToBackStack */ true);
|
||||
}
|
||||
}
|
||||
|
||||
106
src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
Normal file
106
src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.wifi.dpp;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
|
||||
import com.android.settings.core.InstrumentedActivity;
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
* To provision "this" device with specified Wi-Fi network.
|
||||
*
|
||||
* To use intent action {@code ACTION_ENROLLEE_QR_CODE_SCANNER}, specify the SSID string of the
|
||||
* Wi-Fi network to be provisioned in {@code WifiDppUtils.EXTRA_QR_CODE}.
|
||||
*/
|
||||
public class WifiDppEnrolleeActivity extends InstrumentedActivity {
|
||||
private static final String TAG = "WifiDppEnrolleeActivity";
|
||||
|
||||
public static final String ACTION_ENROLLEE_QR_CODE_SCANNER =
|
||||
"android.settings.WIFI_DPP_ENROLLEE_QR_CODE_SCANNER";
|
||||
|
||||
private FragmentManager mFragmentManager;
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
//TODO:Should we use a new metrics category for Wi-Fi DPP?
|
||||
return MetricsProto.MetricsEvent.WIFI_NETWORK_DETAILS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.wifi_dpp_activity);
|
||||
mFragmentManager = getSupportFragmentManager();
|
||||
|
||||
handleIntent(getIntent());
|
||||
|
||||
ActionBar actionBar = getActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.setElevation(0);
|
||||
actionBar.setDisplayShowTitleEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleIntent(Intent intent) {
|
||||
switch (intent.getAction()) {
|
||||
case ACTION_ENROLLEE_QR_CODE_SCANNER:
|
||||
String ssid = intent.getStringExtra(WifiDppUtils.EXTRA_WIFI_SSID);
|
||||
showQrCodeScannerFragment(/* addToBackStack */ false, ssid);
|
||||
break;
|
||||
default:
|
||||
Log.e(TAG, "Launch with an invalid action");
|
||||
setResult(Activity.RESULT_CANCELED);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
private void showQrCodeScannerFragment(boolean addToBackStack, String ssid) {
|
||||
// Avoid to replace the same fragment during configuration change
|
||||
if (mFragmentManager.findFragmentByTag(WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER) != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
WifiDppQrCodeScannerFragment fragment = new WifiDppQrCodeScannerFragment(ssid);
|
||||
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
|
||||
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragment,
|
||||
WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
|
||||
if (addToBackStack) {
|
||||
fragmentTransaction.addToBackStack(/* name */ null);
|
||||
}
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNavigateUp(){
|
||||
setResult(Activity.RESULT_CANCELED);
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,10 @@ import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.wifi.qrcode.QrDecorateView;
|
||||
import com.android.settings.R;
|
||||
|
||||
/**
|
||||
* TODO: Should refine code to only initiate UI component in each child fragment.
|
||||
*/
|
||||
|
||||
/**
|
||||
* There are below 4 fragments for Wi-Fi DPP UI flow, to reduce redundant code of UI components,
|
||||
* this parent fragment instantiates all UI components and provides setting APIs for them.
|
||||
@@ -58,11 +62,9 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
|
||||
private ImageView mWifiApPictureView; //optional, for WifiDppAddDeviceFragment
|
||||
private TextView mChooseDifferentNetwork;//optional, for WifiDppAddDeviceFragment
|
||||
|
||||
private Button mButtonLeft; //optional, for WifiDppQrCodeScannerFragment,
|
||||
// WifiDppChooseSavedWifiNetworkFragment,
|
||||
private Button mButtonLeft; //optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
// WifiDppAddDeviceFragment
|
||||
private Button mButtonRight; //optional, for WifiDppQrCodeScannerFragment,
|
||||
// WifiDppChooseSavedWifiNetworkFragment,
|
||||
private Button mButtonRight; //optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
// WifiDppAddDeviceFragment
|
||||
|
||||
abstract protected int getLayout();
|
||||
@@ -122,8 +124,7 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
/**
|
||||
* optional, for WifiDppQrCodeScannerFragment,
|
||||
* WifiDppChooseSavedWifiNetworkFragment,
|
||||
* optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
* WifiDppAddDeviceFragment
|
||||
*/
|
||||
protected void setLeftButtonText(String text) {
|
||||
@@ -133,8 +134,7 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
/**
|
||||
* optional, for WifiDppQrCodeScannerFragment,
|
||||
* WifiDppChooseSavedWifiNetworkFragment,
|
||||
* optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
* WifiDppAddDeviceFragment
|
||||
*/
|
||||
protected void setRightButtonText(String text) {
|
||||
@@ -144,8 +144,7 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
/**
|
||||
* optional, for WifiDppQrCodeScannerFragment,
|
||||
* WifiDppChooseSavedWifiNetworkFragment,
|
||||
* optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
* WifiDppAddDeviceFragment
|
||||
*/
|
||||
protected void hideLeftButton() {
|
||||
@@ -155,8 +154,7 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
/**
|
||||
* optional, for WifiDppQrCodeScannerFragment,
|
||||
* WifiDppChooseSavedWifiNetworkFragment,
|
||||
* optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
* WifiDppAddDeviceFragment
|
||||
*/
|
||||
protected void hideRightButton() {
|
||||
@@ -166,8 +164,7 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
/**
|
||||
* optional, for WifiDppQrCodeScannerFragment,
|
||||
* WifiDppChooseSavedWifiNetworkFragment,
|
||||
* optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
* WifiDppAddDeviceFragment
|
||||
*/
|
||||
protected void setLeftButtonOnClickListener(View.OnClickListener listener) {
|
||||
@@ -177,8 +174,7 @@ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
/**
|
||||
* optional, for WifiDppQrCodeScannerFragment,
|
||||
* WifiDppChooseSavedWifiNetworkFragment,
|
||||
* optional, for WifiDppChooseSavedWifiNetworkFragment,
|
||||
* WifiDppAddDeviceFragment
|
||||
*/
|
||||
protected void setRightButtonOnClickListener(View.OnClickListener listener) {
|
||||
|
||||
@@ -16,7 +16,12 @@
|
||||
|
||||
package com.android.settings.wifi.dpp;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
@@ -30,8 +35,64 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment {
|
||||
return R.layout.wifi_dpp_qrcode_generator_fragment;
|
||||
}
|
||||
|
||||
// Container Activity must implement this interface
|
||||
public interface OnQrCodeGeneratorFragmentAddButtonClickedListener {
|
||||
public void onQrCodeGeneratorFragmentAddButtonClicked();
|
||||
}
|
||||
OnQrCodeGeneratorFragmentAddButtonClickedListener mListener;
|
||||
|
||||
@Override
|
||||
public void onActivityCreated (Bundle savedInstanceState) {
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity())
|
||||
.getWifiNetworkConfig();
|
||||
if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) {
|
||||
throw new IllegalArgumentException("Invalid Wi-Fi network for configuring");
|
||||
}
|
||||
setTitle(getString(R.string.wifi_dpp_share_wifi));
|
||||
setDescription(getString(R.string.wifi_dpp_scan_qr_code_with_another_device,
|
||||
wifiNetworkConfig.getSsid()));
|
||||
|
||||
setHasOptionsMenu(true);
|
||||
ActionBar actionBar = getActivity().getActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
actionBar.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
mListener = (OnQrCodeGeneratorFragmentAddButtonClickedListener) context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
mListener = null;
|
||||
|
||||
super.onDetach();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.next_label);
|
||||
item.setIcon(R.drawable.ic_menu_add);
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
||||
switch (menuItem.getItemId()) {
|
||||
case Menu.FIRST:
|
||||
mListener.onQrCodeGeneratorFragmentAddButtonClicked();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(menuItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,12 +17,15 @@
|
||||
package com.android.settings.wifi.dpp;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Size;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.View;
|
||||
@@ -38,32 +41,60 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
||||
private SurfaceView mSurfaceView;
|
||||
private QrDecorateView mDecorateView;
|
||||
|
||||
/** true if the fragment working for configurator, false enrollee*/
|
||||
private final boolean mConfiguratorMode;
|
||||
|
||||
/** The SSID of the Wi-Fi network which the user specify to enroll */
|
||||
private String mSsid;
|
||||
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
return R.layout.wifi_dpp_qrcode_scanner_fragment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configurator container activity of the fragment should create instance with this constructor.
|
||||
*/
|
||||
public WifiDppQrCodeScannerFragment() {
|
||||
super();
|
||||
|
||||
mConfiguratorMode = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enrollee container activity of the fragment should create instance with this constructor and
|
||||
* specify the SSID string of the WI-Fi network to be provisioned.
|
||||
*/
|
||||
public WifiDppQrCodeScannerFragment(String ssid) {
|
||||
super();
|
||||
|
||||
mConfiguratorMode = false;
|
||||
mSsid = ssid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
setTitle(getString(R.string.wifi_dpp_add_device_to_network));
|
||||
if (mConfiguratorMode) {
|
||||
setTitle(getString(R.string.wifi_dpp_add_device_to_network));
|
||||
|
||||
WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity())
|
||||
WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity())
|
||||
.getWifiNetworkConfig();
|
||||
if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) {
|
||||
throw new IllegalArgumentException("Invalid Wi-Fi network for configuring");
|
||||
if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) {
|
||||
throw new IllegalArgumentException("Invalid Wi-Fi network for configuring");
|
||||
}
|
||||
setDescription(getString(R.string.wifi_dpp_center_qr_code, wifiNetworkConfig.getSsid()));
|
||||
} else {
|
||||
setTitle(getString(R.string.wifi_dpp_scan_qr_code));
|
||||
setDescription(getString(R.string.wifi_dpp_scan_qr_code_join_network, mSsid));
|
||||
}
|
||||
setDescription(getString(R.string.wifi_dpp_center_qr_code, wifiNetworkConfig.getSsid()));
|
||||
|
||||
hideRightButton();
|
||||
|
||||
setLeftButtonText(getString(android.R.string.cancel));
|
||||
|
||||
setLeftButtonOnClickListener((view) -> {
|
||||
getActivity().setResult(Activity.RESULT_CANCELED);
|
||||
getActivity().finish();
|
||||
});
|
||||
ActionBar actionBar = getActivity().getActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
actionBar.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -78,6 +109,21 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
||||
mDecorateView = (QrDecorateView) view.findViewById(R.id.decorate_view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
SurfaceHolder surfaceHolder = mSurfaceView.getHolder();
|
||||
surfaceHolder.removeCallback(this);
|
||||
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
menu.removeItem(Menu.FIRST);
|
||||
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void surfaceCreated(final SurfaceHolder holder) {
|
||||
initCamera(holder);
|
||||
|
||||
@@ -16,12 +16,36 @@
|
||||
|
||||
package com.android.settings.wifi.dpp;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
/**
|
||||
* Here are the items shared by both WifiDppConfiguratorActivity & WifiDppEnrolleeActivity
|
||||
*/
|
||||
public class WifiDppUtils {
|
||||
/**
|
||||
* The fragment tag specified to FragmentManager for container activities to manage fragments.
|
||||
*/
|
||||
public static final String TAG_FRAGMENT_QR_CODE_SCANNER = "qr_code_scanner_fragment";
|
||||
|
||||
/**
|
||||
* @see #TAG_FRAGMENT_QR_CODE_SCANNER
|
||||
*/
|
||||
public static final String TAG_FRAGMENT_QR_CODE_GENERATOR = "qr_code_generator_fragment";
|
||||
|
||||
/**
|
||||
* @see #TAG_FRAGMENT_QR_CODE_SCANNER
|
||||
*/
|
||||
public static final String TAG_FRAGMENT_CHOOSE_SAVED_WIFI_NETWORK =
|
||||
"choose_saved_wifi_network_fragment";
|
||||
|
||||
/**
|
||||
* @see #TAG_FRAGMENT_QR_CODE_SCANNER
|
||||
*/
|
||||
public static final String TAG_FRAGMENT_ADD_DEVICE = "add_device_fragment";
|
||||
|
||||
/** The data is from {@code com.android.settingslib.wifi.AccessPoint.securityToString} */
|
||||
public static final String EXTRA_WIFI_SECURITY = "security";
|
||||
|
||||
@@ -54,4 +78,46 @@ public class WifiDppUtils {
|
||||
* H true Optional. True if the network SSID is hidden.
|
||||
*/
|
||||
public static final String EXTRA_QR_CODE = "qrCode";
|
||||
|
||||
/**
|
||||
* Returns whether the user can share the network represented by this preference with QR code.
|
||||
*/
|
||||
public static boolean isSharingNetworkEnabled(Context context) {
|
||||
return FeatureFlagUtils.isEnabled(context,
|
||||
com.android.settings.core.FeatureFlags.WIFI_SHARING);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an intent to launch QR code scanner.
|
||||
*
|
||||
* @param ssid The data corresponding to {@code WifiConfiguration} SSID
|
||||
* @return Intent for launching QR code scanner
|
||||
*/
|
||||
public static Intent getConfiguratorQRCodeScannerIntent(String ssid) {
|
||||
final Intent intent = new Intent(
|
||||
WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
|
||||
if (!TextUtils.isEmpty(ssid)) {
|
||||
intent.putExtra(EXTRA_WIFI_SSID, ssid);
|
||||
}
|
||||
return intent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an intent to launch QR code generator.
|
||||
*
|
||||
* @param ssid The data corresponding to {@code WifiConfiguration} SSID
|
||||
* @param Security The data is from {@code AccessPoint.securityToString}
|
||||
* @return Intent for launching QR code generator
|
||||
*/
|
||||
public static Intent getConfiguratorQRCodeGeneratorIntent(String ssid, String Security) {
|
||||
final Intent intent = new Intent(
|
||||
WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR);
|
||||
if (!TextUtils.isEmpty(ssid)) {
|
||||
intent.putExtra(EXTRA_WIFI_SSID, ssid);
|
||||
}
|
||||
if (!TextUtils.isEmpty(Security)) {
|
||||
intent.putExtra(EXTRA_WIFI_SECURITY, Security);
|
||||
}
|
||||
return intent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.setupwizardlib.GlifLayout
|
||||
<com.google.android.setupdesign.GlifLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
style="?attr/fingerprint_layout_theme"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:suwFooter="@layout/fingerprint_enroll_find_sensor_base_footer">
|
||||
app:sucFooter="@layout/fingerprint_enroll_find_sensor_base_footer">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -77,4 +77,4 @@
|
||||
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
</com.android.setupwizardlib.GlifLayout>
|
||||
</com.google.android.setupdesign.GlifLayout>
|
||||
|
||||
@@ -22,7 +22,9 @@ import android.content.Intent;
|
||||
import android.os.SystemProperties;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.setupwizardlib.util.WizardManagerHelper;
|
||||
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
import com.google.android.setupdesign.util.ThemeHelper;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -47,9 +49,9 @@ public class SetupWizardUtilsTest {
|
||||
@Test
|
||||
public void testGetTheme_withIntentExtra_shouldReturnExtraTheme() {
|
||||
SystemProperties.set(SetupWizardUtils.SYSTEM_PROP_SETUPWIZARD_THEME,
|
||||
WizardManagerHelper.THEME_GLIF);
|
||||
ThemeHelper.THEME_GLIF);
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(WizardManagerHelper.EXTRA_THEME, WizardManagerHelper.THEME_GLIF_V2);
|
||||
intent.putExtra(WizardManagerHelper.EXTRA_THEME, ThemeHelper.THEME_GLIF_V2);
|
||||
|
||||
assertThat(SetupWizardUtils.getTheme(intent)).isEqualTo(R.style.GlifV2Theme);
|
||||
}
|
||||
@@ -57,7 +59,7 @@ public class SetupWizardUtilsTest {
|
||||
@Test
|
||||
public void testGetTheme_withEmptyIntent_shouldReturnSystemProperty() {
|
||||
SystemProperties.set(SetupWizardUtils.SYSTEM_PROP_SETUPWIZARD_THEME,
|
||||
WizardManagerHelper.THEME_GLIF_V2_LIGHT);
|
||||
ThemeHelper.THEME_GLIF_V2_LIGHT);
|
||||
Intent intent = new Intent();
|
||||
|
||||
assertThat(SetupWizardUtils.getTheme(intent)).isEqualTo(R.style.GlifV2Theme_Light);
|
||||
@@ -66,7 +68,7 @@ public class SetupWizardUtilsTest {
|
||||
@Test
|
||||
public void testGetTheme_glifV3Light_shouldReturnThemeResource() {
|
||||
SystemProperties.set(SetupWizardUtils.SYSTEM_PROP_SETUPWIZARD_THEME,
|
||||
WizardManagerHelper.THEME_GLIF_V3_LIGHT);
|
||||
ThemeHelper.THEME_GLIF_V3_LIGHT);
|
||||
Intent intent = new Intent();
|
||||
|
||||
assertThat(SetupWizardUtils.getTheme(intent)).isEqualTo(R.style.GlifV3Theme_Light);
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.applications.defaultapps;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
public class RolesPreferenceControllerTest {
|
||||
|
||||
private static final String PREFERENCE_KEY = "roles";
|
||||
private static final String DIFFERENT_PREFERENCE_KEY = "different";
|
||||
private static final String PERMISSION_CONTROLLER_PACKAGE_NAME =
|
||||
"com.android.permissioncontroller";
|
||||
|
||||
@Mock
|
||||
private Context mContext;
|
||||
@Mock
|
||||
private PackageManager mPackageManager;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_noPermissionController_shouldReturnUnsupportedOnDevice() {
|
||||
when(mPackageManager.getPermissionControllerPackageName()).thenReturn(null);
|
||||
RolesPreferenceController controller = new RolesPreferenceController(mContext,
|
||||
PREFERENCE_KEY);
|
||||
|
||||
assertThat(controller.getAvailabilityStatus())
|
||||
.isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_hasPermissionController_shouldReturnAvailableUnsearchable() {
|
||||
when(mPackageManager.getPermissionControllerPackageName())
|
||||
.thenReturn(PERMISSION_CONTROLLER_PACKAGE_NAME);
|
||||
RolesPreferenceController controller = new RolesPreferenceController(mContext,
|
||||
PREFERENCE_KEY);
|
||||
|
||||
assertThat(controller.getAvailabilityStatus())
|
||||
.isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_differentKey_shouldReturnFalse() {
|
||||
when(mPackageManager.getPermissionControllerPackageName())
|
||||
.thenReturn(PERMISSION_CONTROLLER_PACKAGE_NAME);
|
||||
RolesPreferenceController controller = new RolesPreferenceController(mContext,
|
||||
PREFERENCE_KEY);
|
||||
Preference preference = mock(Preference.class);
|
||||
when(preference.getKey()).thenReturn(DIFFERENT_PREFERENCE_KEY);
|
||||
|
||||
assertThat(controller.handlePreferenceTreeClick(preference)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_sameKey_shouldReturnTrue() {
|
||||
when(mPackageManager.getPermissionControllerPackageName())
|
||||
.thenReturn(PERMISSION_CONTROLLER_PACKAGE_NAME);
|
||||
RolesPreferenceController controller = new RolesPreferenceController(mContext,
|
||||
PREFERENCE_KEY);
|
||||
Preference preference = mock(Preference.class);
|
||||
when(preference.getKey()).thenReturn(PREFERENCE_KEY);
|
||||
|
||||
assertThat(controller.handlePreferenceTreeClick(preference)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_noPermissionController_shouldNotStartActivity() {
|
||||
when(mPackageManager.getPermissionControllerPackageName()).thenReturn(null);
|
||||
RolesPreferenceController controller = new RolesPreferenceController(mContext,
|
||||
PREFERENCE_KEY);
|
||||
Preference preference = mock(Preference.class);
|
||||
when(preference.getKey()).thenReturn(PREFERENCE_KEY);
|
||||
controller.handlePreferenceTreeClick(preference);
|
||||
|
||||
verify(mContext, never()).startActivity(any(Intent.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_hasPermissionController_shouldStartActivityWithIntent() {
|
||||
when(mPackageManager.getPermissionControllerPackageName())
|
||||
.thenReturn(PERMISSION_CONTROLLER_PACKAGE_NAME);
|
||||
RolesPreferenceController controller = new RolesPreferenceController(mContext,
|
||||
PREFERENCE_KEY);
|
||||
Preference preference = mock(Preference.class);
|
||||
when(preference.getKey()).thenReturn(PREFERENCE_KEY);
|
||||
controller.handlePreferenceTreeClick(preference);
|
||||
ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
|
||||
|
||||
verify(mContext).startActivity(intent.capture());
|
||||
assertThat(intent.getValue().getAction())
|
||||
.isEqualTo(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);
|
||||
assertThat(intent.getValue().getPackage()).isEqualTo(PERMISSION_CONTROLLER_PACKAGE_NAME);
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,8 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
|
||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||
import com.android.setupwizardlib.GlifLayout;
|
||||
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
||||
@@ -32,7 +32,8 @@ import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
|
||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||
import com.android.settingslib.testutils.DrawableTestHelper;
|
||||
import com.android.setupwizardlib.GlifLayout;
|
||||
|
||||
import com.google.android.setupdesign.GlifLayout;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -19,7 +19,9 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||
import com.android.setupwizardlib.util.WizardManagerHelper;
|
||||
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
import com.google.android.setupdesign.util.ThemeHelper;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -109,7 +111,7 @@ public class ChooseLockSettingsHelperTest {
|
||||
@Test
|
||||
public void testLaunchConfirmationActivity_internal_shouldPropagateTheme() {
|
||||
Intent intent = new Intent()
|
||||
.putExtra(WizardManagerHelper.EXTRA_THEME, WizardManagerHelper.THEME_GLIF_V2);
|
||||
.putExtra(WizardManagerHelper.EXTRA_THEME, ThemeHelper.THEME_GLIF_V2);
|
||||
Activity activity = Robolectric.buildActivity(Activity.class, intent).get();
|
||||
ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity);
|
||||
helper.launchConfirmationActivity(123, "test title", true, 0 /* userId */);
|
||||
@@ -118,7 +120,7 @@ public class ChooseLockSettingsHelperTest {
|
||||
IntentForResult startedActivity = shadowActivity.getNextStartedActivityForResult();
|
||||
assertThat(startedActivity.requestCode).isEqualTo(123);
|
||||
assertThat(startedActivity.intent.getStringExtra(WizardManagerHelper.EXTRA_THEME))
|
||||
.isEqualTo(WizardManagerHelper.THEME_GLIF_V2);
|
||||
.isEqualTo(ThemeHelper.THEME_GLIF_V2);
|
||||
}
|
||||
|
||||
private ChooseLockSettingsHelper getChooseLockSettingsHelper(Activity activity) {
|
||||
|
||||
@@ -72,9 +72,9 @@ public class SettingsRobolectricTestRunner extends RobolectricTestRunner {
|
||||
public static void addIncludedResourcePaths(List<ResourcePath> paths) {
|
||||
try {
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:packages/apps/Settings/res")), null));
|
||||
Fs.fromURL(new URL("file:packages/apps/Settings/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/res")), null));
|
||||
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/AppPreference/res/")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
@@ -88,21 +88,19 @@ public class SettingsRobolectricTestRunner extends RobolectricTestRunner {
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/SettingsLayoutPreference/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/base/core/res/res")), null));
|
||||
Fs.fromURL(new URL("file:frameworks/base/core/res/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/opt/setupwizard/library/main/res")), null));
|
||||
Fs.fromURL(new URL("file:external/setupcompat/main/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:external/setupdesign/main/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:out/target/common/obj/JAVA_LIBRARIES/robolectric_android-all-stub_intermediates/classes/raw-res/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/opt/setupwizard/library/gingerbread/res")), null));
|
||||
Fs.fromURL(new URL("file:out/soong/.intermediates/prebuilts/sdk/current/androidx/androidx.appcompat_appcompat-nodeps/android_common/aar/res/")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/opt/setupwizard/library/recyclerview/res")), null));
|
||||
Fs.fromURL(new URL("file:out/soong/.intermediates/prebuilts/sdk/current/extras/material-design-x/com.google.android.material_material-nodeps/android_common/aar/res/")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:out/soong/.intermediates/prebuilts/sdk/current/androidx/androidx.appcompat_appcompat-nodeps/android_common/aar/res/")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:out/soong/.intermediates/prebuilts/sdk/current/extras/material-design-x/com.google.android.material_material-nodeps/android_common/aar/res/")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:out/soong/.intermediates/prebuilts/sdk/current/androidx/androidx.cardview_cardview-nodeps/android_common/aar/res")), null));
|
||||
Fs.fromURL(new URL("file:out/soong/.intermediates/prebuilts/sdk/current/androidx/androidx.cardview_cardview-nodeps/android_common/aar/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:out/soong/.intermediates/prebuilts/sdk/current/androidx/androidx.slice_slice-view-nodeps/android_common/aar/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
public class ButtonPreferenceTest {
|
||||
|
||||
private Context mContext;
|
||||
private View mRootView;
|
||||
private ButtonPreference mPref;
|
||||
private PreferenceViewHolder mHolder;
|
||||
private boolean mClicked;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mPref = new ButtonPreference(mContext);
|
||||
mRootView = View.inflate(mContext, R.layout.wifi_button_preference_widget, /* parent */
|
||||
null);
|
||||
mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initButton_noIcon_shouldInvisible() {
|
||||
mPref.initButton(mHolder);
|
||||
assertThat(mRootView.findViewById(R.id.button_icon).getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initButton_withIcon_shouldVisible() {
|
||||
mPref.setButtonIcon(R.drawable.ic_qrcode_24dp);
|
||||
mPref.initButton(mHolder);
|
||||
assertThat(mRootView.findViewById(R.id.button_icon).getVisibility()).isEqualTo(
|
||||
View.VISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initButton_whenClick_shouldCallback() {
|
||||
mClicked = false;
|
||||
mPref.setButtonIcon(R.drawable.ic_qrcode_24dp);
|
||||
mPref.setButtonOnClickListener((View v) -> {
|
||||
mClicked = true;
|
||||
});
|
||||
mPref.initButton(mHolder);
|
||||
ImageButton button = (ImageButton) mRootView.findViewById(R.id.button_icon);
|
||||
button.performClick();
|
||||
assertThat(mClicked).isTrue();
|
||||
}
|
||||
}
|
||||
@@ -73,4 +73,12 @@ public class WifiDppConfiguratorActivityTest {
|
||||
|
||||
assertThat(activity instanceof WifiNetworkConfig.Retriever).isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testActivity_shouldImplementsQrCodeGeneratorFragmentCallback() {
|
||||
WifiDppConfiguratorActivity activity = mActivityRule.getActivity();
|
||||
|
||||
assertThat(activity instanceof WifiDppQrCodeGeneratorFragment
|
||||
.OnQrCodeGeneratorFragmentAddButtonClickedListener).isEqualTo(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.wifi.dpp;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.support.test.rule.ActivityTestRule;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class WifiDppQrCodeGeneratorFragmentTest {
|
||||
@Rule
|
||||
public final ActivityTestRule<WifiDppConfiguratorActivity> mActivityRule =
|
||||
new ActivityTestRule<>(WifiDppConfiguratorActivity.class, true);
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
Intent intent =
|
||||
new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR);
|
||||
intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP");
|
||||
intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
|
||||
mActivityRule.launchActivity(intent);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rotateScreen_shouldNotCrash() {
|
||||
mActivityRule.getActivity().setRequestedOrientation(
|
||||
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
||||
mActivityRule.getActivity().setRequestedOrientation(
|
||||
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,6 @@
|
||||
|
||||
package com.android.settings.wifi.dpp;
|
||||
|
||||
import static android.support.test.espresso.action.ViewActions.click;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withText;
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
|
||||
Reference in New Issue
Block a user