Fix ManifestMerger issues am: 4a5ff8044c
am: 0588a4e121
Change-Id: I191f10abea34d05b036f3a2a57572fc58fef4f26
diff --git a/library/Android.mk b/library/Android.mk
index 6cbfae8..4b828b6 100644
--- a/library/Android.mk
+++ b/library/Android.mk
@@ -7,7 +7,7 @@
LOCAL_USE_AAPT2 := true
LOCAL_JAVA_LIBRARIES := \
- android-support-annotations
+ androidx.annotation_annotation
LOCAL_MANIFEST_FILE := main/AndroidManifest.xml
LOCAL_MODULE := setup-wizard-lib
LOCAL_RESOURCE_DIR := \
@@ -41,13 +41,13 @@
LOCAL_SRC_FILES := $(call all-java-files-under, main/src gingerbread/src recyclerview/src)
LOCAL_JAVA_LIBRARIES := \
- android-support-annotations
+ androidx.annotation_annotation
LOCAL_SHARED_ANDROID_LIBRARIES := \
- android-support-compat \
- android-support-core-ui \
- android-support-v7-appcompat \
- android-support-v7-recyclerview
+ androidx.core_core \
+ androidx.legacy_legacy-support-core-ui \
+ androidx.appcompat_appcompat \
+ androidx.recyclerview_recyclerview
LOCAL_MIN_SDK_VERSION := 14
diff --git a/library/common-gingerbread.mk b/library/common-gingerbread.mk
index 70231df..2ab06b6 100644
--- a/library/common-gingerbread.mk
+++ b/library/common-gingerbread.mk
@@ -19,10 +19,10 @@
LOCAL_STATIC_ANDROID_LIBRARIES += setup-wizard-lib-gingerbread-compat
endif
-ifeq (,$(findstring android-support-v7-appcompat,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
- LOCAL_STATIC_ANDROID_LIBRARIES += android-support-v7-appcompat
+ifeq (,$(findstring androidx.appcompat_appcompat,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
+ LOCAL_STATIC_ANDROID_LIBRARIES += androidx.appcompat_appcompat
endif
-ifeq (,$(findstring android-support-v7-recyclerview,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
- LOCAL_STATIC_ANDROID_LIBRARIES += android-support-v7-recyclerview
+ifeq (,$(findstring androidx.recyclerview_recyclerview,$(LOCAL_STATIC_ANDROID_LIBRARIES)))
+ LOCAL_STATIC_ANDROID_LIBRARIES += androidx.recyclerview_recyclerview
endif
diff --git a/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png b/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png
index 94016f4..a7084c5 100644
--- a/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png
+++ b/library/gingerbread/res/drawable-xhdpi/suw_navbar_ic_down_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png
index 17811ae..ed3c3b0 100644
--- a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png
+++ b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_down_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png
index 97fed92..be42712 100644
--- a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png
+++ b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_left_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png
index f874955..d7bc4e3 100644
--- a/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png
+++ b/library/gingerbread/res/drawable-xxhdpi/suw_navbar_ic_right_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png b/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png
index cb6a422..dcc1f3c 100644
--- a/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png
+++ b/library/gingerbread/res/drawable-xxxhdpi/suw_navbar_ic_down_arrow.png
Binary files differ
diff --git a/library/gingerbread/res/layout/suw_items_expandable_switch.xml b/library/gingerbread/res/layout/suw_items_expandable_switch.xml
index 21c2c22..f134b3f 100644
--- a/library/gingerbread/res/layout/suw_items_expandable_switch.xml
+++ b/library/gingerbread/res/layout/suw_items_expandable_switch.xml
@@ -97,7 +97,7 @@
android:layout_marginTop="@dimen/suw_switch_divider_padding_top"
android:background="?android:attr/listDivider" />
- <android.support.v7.widget.SwitchCompat
+ <androidx.appcompat.widget.SwitchCompat
android:id="@+id/suw_items_switch"
style="@style/SuwSwitchStyle.Divided"
android:layout_width="wrap_content"
diff --git a/library/gingerbread/res/layout/suw_items_switch.xml b/library/gingerbread/res/layout/suw_items_switch.xml
index 319d7f7..5614044 100644
--- a/library/gingerbread/res/layout/suw_items_switch.xml
+++ b/library/gingerbread/res/layout/suw_items_switch.xml
@@ -17,17 +17,17 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
- style="@style/SuwItemContainer.Verbose"
+ style="@style/SuwItemContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:clipToPadding="false"
+ android:baselineAligned="false"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/suw_items_icon_container"
android:layout_width="@dimen/suw_items_icon_container_width"
android:layout_height="wrap_content"
- android:layout_gravity="top"
+ android:layout_gravity="center_vertical"
android:gravity="start">
<ImageView
@@ -41,13 +41,13 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/suw_items_verbose_padding_bottom_extra"
+ android:layout_marginBottom="@dimen/suw_items_padding_bottom_extra"
android:layout_weight="1"
android:orientation="vertical">
<com.android.setupwizardlib.view.RichTextView
android:id="@+id/suw_items_title"
- style="@style/SuwItemTitle.Verbose"
+ style="@style/SuwItemTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
@@ -67,7 +67,7 @@
</LinearLayout>
- <android.support.v7.widget.SwitchCompat
+ <androidx.appcompat.widget.SwitchCompat
android:id="@+id/suw_items_switch"
style="@style/SuwSwitchStyle"
android:layout_width="wrap_content"
diff --git a/library/gingerbread/res/layout/suw_items_switch_verbose.xml b/library/gingerbread/res/layout/suw_items_switch_verbose.xml
new file mode 100644
index 0000000..8911acc
--- /dev/null
+++ b/library/gingerbread/res/layout/suw_items_switch_verbose.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2016 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ style="@style/SuwItemContainer.Verbose"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:baselineAligned="false"
+ android:clipToPadding="false"
+ android:orientation="horizontal"
+ tools:ignore="UnusedResources">
+ <!-- Ignore UnusedResources: can be used by clients -->
+
+ <FrameLayout
+ android:id="@+id/suw_items_icon_container"
+ android:layout_width="@dimen/suw_items_icon_container_width"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top"
+ android:gravity="start">
+
+ <ImageView
+ android:id="@+id/suw_items_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ tools:ignore="ContentDescription" />
+
+ </FrameLayout>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/suw_items_verbose_padding_bottom_extra"
+ android:layout_weight="1"
+ android:orientation="vertical">
+
+ <com.android.setupwizardlib.view.RichTextView
+ android:id="@+id/suw_items_title"
+ style="@style/SuwItemTitle.Verbose"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="start"
+ android:labelFor="@+id/suw_items_switch"
+ android:textAlignment="viewStart"
+ tools:ignore="UnusedAttribute" />
+
+ <com.android.setupwizardlib.view.RichTextView
+ android:id="@+id/suw_items_summary"
+ style="@style/SuwItemSummary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="start"
+ android:textAlignment="viewStart"
+ android:visibility="gone"
+ tools:ignore="UnusedAttribute" />
+
+ </LinearLayout>
+
+ <androidx.appcompat.widget.SwitchCompat
+ android:id="@+id/suw_items_switch"
+ style="@style/SuwSwitchStyle"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="center_vertical" />
+
+</LinearLayout>
diff --git a/library/gingerbread/res/values-v21/styles.xml b/library/gingerbread/res/values-v21/styles.xml
new file mode 100644
index 0000000..3c0c254
--- /dev/null
+++ b/library/gingerbread/res/values-v21/styles.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2018 Google Inc.
+
+ 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.
+-->
+
+<resources xmlns:tools="http://schemas.android.com/tools">
+
+ <!-- Button styles -->
+
+ <style name="SuwGlifButton.Tertiary" parent="SuwGlifButton.BaseTertiary">
+ <item name="android:fontFamily">sans-serif-medium</item>
+ <item name="textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>
+ </style>
+
+</resources>
diff --git a/library/gingerbread/res/values/styles.xml b/library/gingerbread/res/values/styles.xml
index 241f037..b008e1e 100644
--- a/library/gingerbread/res/values/styles.xml
+++ b/library/gingerbread/res/values/styles.xml
@@ -41,6 +41,7 @@
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonHighlightAlpha">0.24</item>
<item name="suwCardBackground">@drawable/suw_card_bg_dark</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
@@ -75,6 +76,7 @@
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonHighlightAlpha">0.24</item>
<item name="suwCardBackground">@drawable/suw_card_bg_light</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
@@ -109,7 +111,8 @@
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
- <item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonFontFamily">sans-serif-medium</item>
+ <item name="suwButtonHighlightAlpha">0.24</item>
<item name="suwColorPrimary">?attr/colorPrimary</item>
<item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
<item name="suwDividerInsetEnd">0dp</item>
@@ -148,7 +151,8 @@
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
- <item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonFontFamily">sans-serif-medium</item>
+ <item name="suwButtonHighlightAlpha">0.12</item>
<item name="suwColorPrimary">?attr/colorPrimary</item>
<item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
<item name="suwDividerInsetEnd">0dp</item>
@@ -262,6 +266,13 @@
<item name="colorControlHighlight">@color/suw_flat_button_highlight</item>
</style>
+ <!-- Ignore UnusedResources: used by clients -->
+ <style name="SuwGlifButton.Tertiary"
+ parent="SuwGlifButton.BaseTertiary"
+ tools:ignore="UnusedResources">
+ <item name="textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>
+ </style>
+
<!-- Card layout (for tablets) -->
<style name="TextAppearance.SuwCardTitle" parent="@style/TextAppearance.AppCompat.Display1">
@@ -279,6 +290,10 @@
<style name="SuwFourColorIndeterminateProgressBar" parent="SuwBase.ProgressBarLarge">
<item name="android:layout_gravity">center</item>
<item name="android:indeterminate">true</item>
+ <item name="android:paddingEnd" tools:targetApi="17" >@dimen/suw_glif_progress_bar_padding</item>
+ <item name="android:paddingLeft">@dimen/suw_glif_progress_bar_padding</item>
+ <item name="android:paddingRight">@dimen/suw_glif_progress_bar_padding</item>
+ <item name="android:paddingStart" tools:targetApi="17" >@dimen/suw_glif_progress_bar_padding</item>
</style>
<!-- Navigation bar styles -->
diff --git a/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java b/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java
index 7459d77..8d828ac 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/items/SwitchItem.java
@@ -18,11 +18,12 @@
import android.content.Context;
import android.content.res.TypedArray;
-import android.support.v7.widget.SwitchCompat;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CompoundButton;
+import androidx.appcompat.widget.SwitchCompat;
+
import com.android.setupwizardlib.R;
/**
diff --git a/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java b/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java
index 9965aa0..a0ea379 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/util/LinkAccessibilityHelper.java
@@ -19,12 +19,6 @@
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.view.AccessibilityDelegateCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat;
-import android.support.v4.widget.ExploreByTouchHelper;
import android.text.Layout;
import android.text.Spanned;
import android.text.style.ClickableSpan;
@@ -35,6 +29,13 @@
import android.view.accessibility.AccessibilityEvent;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.view.AccessibilityDelegateCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.core.view.accessibility.AccessibilityNodeProviderCompat;
+import androidx.customview.widget.ExploreByTouchHelper;
+
import java.util.List;
/**
@@ -63,7 +64,7 @@
* </pre>
*
* @see com.android.setupwizardlib.view.RichTextView
- * @see android.support.v4.widget.ExploreByTouchHelper
+ * @see androidx.customview.widget.ExploreByTouchHelper
*/
public class LinkAccessibilityHelper extends AccessibilityDelegateCompat {
@@ -136,7 +137,7 @@
*
* @see ExploreByTouchHelper#dispatchHoverEvent(MotionEvent)
*/
- public final boolean dispatchHoverEvent(MotionEvent event) {
+ public boolean dispatchHoverEvent(MotionEvent event) {
return mDelegate instanceof ExploreByTouchHelper
&& ((ExploreByTouchHelper) mDelegate).dispatchHoverEvent(event);
}
diff --git a/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java b/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java
index d7a3c2e..872cc9f 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/view/NavigationBarButton.java
@@ -23,10 +23,11 @@
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Build;
-import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.widget.Button;
+import androidx.annotation.NonNull;
+
/**
* Button for navigation bar, which includes tinting of its compound drawables to be used for dark
* and light themes.
diff --git a/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java b/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java
index 1b1f82e..1ee3219 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/view/RichTextView.java
@@ -20,8 +20,6 @@
import android.graphics.drawable.Drawable;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.AppCompatTextView;
import android.text.Annotation;
import android.text.SpannableString;
import android.text.Spanned;
@@ -32,6 +30,9 @@
import android.util.Log;
import android.view.MotionEvent;
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.core.view.ViewCompat;
+
import com.android.setupwizardlib.span.LinkSpan;
import com.android.setupwizardlib.span.LinkSpan.OnLinkClickListener;
import com.android.setupwizardlib.span.SpanHelper;
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
index b97905c..f5b8253 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/items/ButtonItemDrawingTest.java
@@ -18,7 +18,6 @@
import static org.junit.Assert.assertTrue;
-import android.support.annotation.StyleRes;
import android.support.test.annotation.UiThreadTest;
import android.support.test.filters.SmallTest;
import android.support.test.rule.UiThreadTestRule;
@@ -27,6 +26,8 @@
import android.widget.Button;
import android.widget.LinearLayout;
+import androidx.annotation.StyleRes;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.test.util.DrawingTestHelper;
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
index 154339a..d3518f4 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestActivity.java
@@ -16,7 +16,7 @@
package com.android.setupwizardlib.test.util;
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
/**
* Activity to test view and drawable drawing behaviors. This is used to make sure that the drawing
diff --git a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
index 6228e6f..da07b40 100644
--- a/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
+++ b/library/gingerbread/test/instrumentation/src/com/android/setupwizardlib/util/LinkAccessibilityHelperTest.java
@@ -28,19 +28,20 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v4.text.BidiFormatter;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
-import android.support.v4.widget.ExploreByTouchHelper;
import android.text.SpannableStringBuilder;
import android.util.DisplayMetrics;
import android.util.TypedValue;
-import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.FrameLayout;
import android.widget.TextView;
+import androidx.core.text.BidiFormatter;
+import androidx.core.view.AccessibilityDelegateCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
+import androidx.customview.widget.ExploreByTouchHelper;
+
import com.android.setupwizardlib.span.LinkSpan;
import com.android.setupwizardlib.util.LinkAccessibilityHelper.PreOLinkAccessibilityHelper;
@@ -241,7 +242,7 @@
@Test
public void testMethodDelegation() {
initTextView();
- ExploreByTouchHelper delegate = mock(TestPreOLinkAccessibilityHelper.class);
+ AccessibilityDelegateCompat delegate = mock(AccessibilityDelegateCompat.class);
LinkAccessibilityHelper helper = new LinkAccessibilityHelper(delegate);
AccessibilityEvent accessibilityEvent =
@@ -271,10 +272,6 @@
same(mTextView),
same(accessibilityEvent));
- MotionEvent motionEvent = MotionEvent.obtain(0, 0, 0, 0, 0, 0);
- helper.dispatchHoverEvent(motionEvent);
- verify(delegate).dispatchHoverEvent(eq(motionEvent));
-
helper.getAccessibilityNodeProvider(mTextView);
verify(delegate).getAccessibilityNodeProvider(same(mTextView));
diff --git a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java
index dd26af9..4716c4d 100644
--- a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java
+++ b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/items/SwitchItemTest.java
@@ -26,20 +26,23 @@
import android.annotation.TargetApi;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
-import android.support.v7.widget.SwitchCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.appcompat.widget.SwitchCompat;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
import org.robolectric.annotation.Config;
@RunWith(SuwLibRobolectricTestRunner.class)
@@ -49,11 +52,24 @@
private SwitchCompat mSwitch;
@Test
- public void testLayout() {
+ public void defaultLayout_baselineAligned_shouldBeFalse() {
Assume.assumeTrue(VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP);
- SwitchItem item = new SwitchItem();
LayoutInflater inflater = LayoutInflater.from(application);
- ViewGroup layout = (ViewGroup) inflater.inflate(item.getDefaultLayoutResource(), null);
+ SwitchItem item = new SwitchItem();
+ LinearLayout layout = (LinearLayout) inflater.inflate(item.getDefaultLayoutResource(),
+ null);
+ assertThat(layout.isBaselineAligned()).isFalse();
+ }
+
+ @Test
+ public void verboseLayout_clipPadding_shouldBeFalse() {
+ Assume.assumeTrue(VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP);
+ LayoutInflater inflater = LayoutInflater.from(application);
+ SwitchItem item = new SwitchItem(application,
+ Robolectric.buildAttributeSet()
+ .addAttribute(android.R.attr.layout, "@layout/suw_items_switch_verbose")
+ .build());
+ ViewGroup layout = (ViewGroup) inflater.inflate(item.getLayoutResource(), null);
assertThat(layout.getClipToPadding()).isFalse();
}
diff --git a/library/main/res/color-v23/suw_flat_button_highlight.xml b/library/main/res/color-v23/suw_flat_button_highlight.xml
index c5be14f..cdb1305 100644
--- a/library/main/res/color-v23/suw_flat_button_highlight.xml
+++ b/library/main/res/color-v23/suw_flat_button_highlight.xml
@@ -17,5 +17,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/colorAccent"
- android:alpha="0.24" />
+ android:alpha="?attr/suwButtonHighlightAlpha" />
</selector>
diff --git a/library/main/res/values-as/strings.xml b/library/main/res/values-as/strings.xml
new file mode 100644
index 0000000..be6e06b
--- /dev/null
+++ b/library/main/res/values-as/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2015 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="suw_next_button_label" msgid="7269625133873553978">"পৰৱৰ্তী"</string>
+ <string name="suw_back_button_label" msgid="1460929053642711025">"উভতি যাওক"</string>
+ <string name="suw_more_button_label" msgid="7769076059705546563">"অধিক"</string>
+</resources>
diff --git a/library/main/res/values-or/strings.xml b/library/main/res/values-or/strings.xml
new file mode 100644
index 0000000..c4d12ff
--- /dev/null
+++ b/library/main/res/values-or/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2015 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="suw_next_button_label" msgid="7269625133873553978">"ପରବର୍ତ୍ତୀ"</string>
+ <string name="suw_back_button_label" msgid="1460929053642711025">"ପଛକୁ ଫେରନ୍ତୁ"</string>
+ <string name="suw_more_button_label" msgid="7769076059705546563">"ଅଧିକ"</string>
+</resources>
diff --git a/library/main/res/values-v21/styles.xml b/library/main/res/values-v21/styles.xml
index d2c27f6..fe71289 100644
--- a/library/main/res/values-v21/styles.xml
+++ b/library/main/res/values-v21/styles.xml
@@ -38,10 +38,6 @@
<!-- Button styles -->
- <style name="SuwGlifButton.Tertiary" parent="SuwGlifButton.BaseTertiary">
- <item name="android:fontFamily">sans-serif-medium</item>
- </style>
-
<style name="SuwBase.ProgressBarLarge" parent="@android:style/Widget.Material.ProgressBar.Large" />
<style name="SuwFourColorIndeterminateProgressBar" parent="SuwBase.ProgressBarLarge">
@@ -50,6 +46,8 @@
<item name="android:indeterminateDrawable">@drawable/suw_fourcolor_progress_bar</item>
<item name="android:indeterminateTint">@null</item>
<item name="android:indeterminateTintMode">@null</item>
+ <item name="android:paddingStart">@dimen/suw_glif_progress_bar_padding</item>
+ <item name="android:paddingEnd">@dimen/suw_glif_progress_bar_padding</item>
</style>
<!-- Items styles -->
diff --git a/library/main/res/values/attrs.xml b/library/main/res/values/attrs.xml
index b3fcfe9..86b27fa 100644
--- a/library/main/res/values/attrs.xml
+++ b/library/main/res/values/attrs.xml
@@ -21,6 +21,7 @@
<attr name="suwLayoutTheme" format="reference" />
<attr name="suwMarginSides" format="dimension|reference" />
<attr name="suwEditTextBackgroundColor" format="color" />
+ <attr name="suwButtonHighlightAlpha" format="float" />
<!-- Subset of values in "gravity" in frameworks/base/core/res/res/values/attrs.xml. Only
horizontal values are listed here as the header does not support vertical gravity. -->
diff --git a/library/main/res/values/dimens.xml b/library/main/res/values/dimens.xml
index 1a8b516..63980ab 100644
--- a/library/main/res/values/dimens.xml
+++ b/library/main/res/values/dimens.xml
@@ -31,7 +31,7 @@
<dimen name="suw_glif_footer_padding_vertical">8dp</dimen>
<dimen name="suw_glif_footer_min_height">72dp</dimen>
<dimen name="suw_glif_margin_sides">24dp</dimen>
- <dimen name="suw_glif_margin_top">48dp</dimen>
+ <dimen name="suw_glif_margin_top">56dp</dimen>
<dimen name="suw_glif_v3_button_corner_radius">4dp</dimen>
@@ -98,7 +98,7 @@
<!-- This is the extra spacing required to make the leading exactly 32sp -->
<dimen name="suw_header_title_line_spacing_extra">3.67sp</dimen>
- <dimen name="suw_glif_header_title_margin_top">15dp</dimen>
+ <dimen name="suw_glif_header_title_margin_top">16dp</dimen>
<dimen name="suw_glif_header_title_margin_bottom">2dp</dimen>
<dimen name="suw_glif_icon_max_height">32dp</dimen>
@@ -139,6 +139,7 @@
<!-- The margin to compensate for the padding built-in to the widget itself -->
<dimen name="suw_progress_bar_margin_vertical">-7dp</dimen>
<dimen name="suw_glif_progress_bar_margin_vertical">7dp</dimen>
+ <dimen name="suw_glif_progress_bar_padding">40dp</dimen>
<!-- Edit Text dimensions -->
<dimen name="suw_edit_text_min_height">56dp</dimen>
diff --git a/library/main/res/values/styles.xml b/library/main/res/values/styles.xml
index fa2a080..6c813b8 100644
--- a/library/main/res/values/styles.xml
+++ b/library/main/res/values/styles.xml
@@ -166,7 +166,7 @@
<!-- Before Honeycomb, layout_gravity is needed for FrameLayout to apply the margins -->
<item name="android:layout_gravity">top</item>
<item name="android:ellipsize">end</item>
- <item name="android:maxLines">2</item>
+ <item name="android:maxLines">3</item>
<item name="android:textSize">@dimen/suw_header_title_size</item>
</style>
@@ -204,11 +204,6 @@
<item name="android:textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>
</style>
- <!-- Ignore UnusedResources: used by clients -->
- <style name="SuwGlifButton.Tertiary"
- parent="SuwGlifButton.BaseTertiary"
- tools:ignore="UnusedResources" />
-
<!-- The start and end paddings are asymmetric because start buttons are borderless buttons
which aligns the text label. -->
<style name="SuwGlifButtonBar">
diff --git a/library/main/src/com/android/setupwizardlib/GlifLayout.java b/library/main/src/com/android/setupwizardlib/GlifLayout.java
index e1d9d70..9b30c2f 100644
--- a/library/main/src/com/android/setupwizardlib/GlifLayout.java
+++ b/library/main/src/com/android/setupwizardlib/GlifLayout.java
@@ -24,9 +24,6 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -36,6 +33,10 @@
import android.widget.ScrollView;
import android.widget.TextView;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.template.ButtonFooterMixin;
import com.android.setupwizardlib.template.ColoredHeaderMixin;
import com.android.setupwizardlib.template.HeaderMixin;
diff --git a/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java b/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java
index c1d968a..caf92ac 100644
--- a/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java
+++ b/library/main/src/com/android/setupwizardlib/GlifPatternDrawable.java
@@ -31,8 +31,9 @@
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
import java.lang.ref.SoftReference;
diff --git a/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java b/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java
index 5a39d70..d520873 100644
--- a/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java
+++ b/library/main/src/com/android/setupwizardlib/SetupWizardItemsLayout.java
@@ -17,10 +17,11 @@
package com.android.setupwizardlib;
import android.content.Context;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.ListAdapter;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.items.ItemAdapter;
/**
diff --git a/library/main/src/com/android/setupwizardlib/TemplateLayout.java b/library/main/src/com/android/setupwizardlib/TemplateLayout.java
index d270091..0108880 100644
--- a/library/main/src/com/android/setupwizardlib/TemplateLayout.java
+++ b/library/main/src/com/android/setupwizardlib/TemplateLayout.java
@@ -20,9 +20,6 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.Keep;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.StyleRes;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -30,6 +27,10 @@
import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
+import androidx.annotation.Keep;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StyleRes;
+
import com.android.setupwizardlib.template.Mixin;
import com.android.setupwizardlib.util.FallbackThemeWrapper;
@@ -229,7 +230,7 @@
* stripped out by proguard when using this with {@link android.animation.ObjectAnimator}. You
* may need to add
* <code>
- * -keep @android.support.annotation.Keep class *
+ * -keep @androidx.annotation.Keep class *
* </code>
* to your proguard configuration if you are seeing mysterious {@link NoSuchMethodError} at
* runtime.
diff --git a/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java b/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java
index c7af410..8ffa943 100644
--- a/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java
+++ b/library/main/src/com/android/setupwizardlib/items/ReflectionInflater.java
@@ -17,11 +17,12 @@
package com.android.setupwizardlib.items;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.InflateException;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import java.lang.reflect.Constructor;
import java.util.HashMap;
diff --git a/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java b/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java
index 141438b..0b12aca 100644
--- a/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java
+++ b/library/main/src/com/android/setupwizardlib/items/SimpleInflater.java
@@ -18,12 +18,13 @@
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
-import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Xml;
import android.view.InflateException;
+import androidx.annotation.NonNull;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
diff --git a/library/main/src/com/android/setupwizardlib/span/LinkSpan.java b/library/main/src/com/android/setupwizardlib/span/LinkSpan.java
index 26a3d16..3dd783b 100644
--- a/library/main/src/com/android/setupwizardlib/span/LinkSpan.java
+++ b/library/main/src/com/android/setupwizardlib/span/LinkSpan.java
@@ -20,7 +20,6 @@
import android.content.ContextWrapper;
import android.graphics.Typeface;
import android.os.Build;
-import android.support.annotation.Nullable;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextPaint;
@@ -29,6 +28,8 @@
import android.view.View;
import android.widget.TextView;
+import androidx.annotation.Nullable;
+
/**
* A clickable span that will listen for click events and send it back to the context. To use this
* class, implement {@link OnLinkClickListener} in your TextView, or use
diff --git a/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java b/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java
index 01dbc29..a8580a3 100644
--- a/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/ButtonFooterMixin.java
@@ -18,10 +18,6 @@
import android.annotation.SuppressLint;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.annotation.StyleRes;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
@@ -30,6 +26,11 @@
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.annotation.StyleRes;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.TemplateLayout;
diff --git a/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java b/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java
index bd3f210..604de9a 100644
--- a/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/HeaderMixin.java
@@ -17,12 +17,13 @@
package com.android.setupwizardlib.template;
import android.content.res.TypedArray;
-import android.support.annotation.AttrRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.TextView;
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.TemplateLayout;
diff --git a/library/main/src/com/android/setupwizardlib/template/IconMixin.java b/library/main/src/com/android/setupwizardlib/template/IconMixin.java
index 5386c92..5f5c915 100644
--- a/library/main/src/com/android/setupwizardlib/template/IconMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/IconMixin.java
@@ -19,11 +19,12 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
-import android.support.annotation.DrawableRes;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
+import androidx.annotation.DrawableRes;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.TemplateLayout;
diff --git a/library/main/src/com/android/setupwizardlib/template/ListMixin.java b/library/main/src/com/android/setupwizardlib/template/ListMixin.java
index 10e85a9..cbc29b5 100644
--- a/library/main/src/com/android/setupwizardlib/template/ListMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/ListMixin.java
@@ -21,15 +21,16 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.AttrRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.HeaderViewListAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.TemplateLayout;
import com.android.setupwizardlib.items.ItemAdapter;
diff --git a/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java b/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java
index f55d06d..faea305 100644
--- a/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java
+++ b/library/main/src/com/android/setupwizardlib/template/ListViewScrollHandlingDelegate.java
@@ -16,13 +16,14 @@
package com.android.setupwizardlib.template;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.Log;
import android.widget.AbsListView;
import android.widget.ListAdapter;
import android.widget.ListView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.template.RequireScrollMixin.ScrollHandlingDelegate;
/**
diff --git a/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java b/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java
index eecf99c..504b2f0 100644
--- a/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/ProgressBarMixin.java
@@ -19,11 +19,12 @@
import android.content.res.ColorStateList;
import android.os.Build;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewStub;
import android.widget.ProgressBar;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.TemplateLayout;
diff --git a/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java b/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java
index 231c064..fd3303b 100644
--- a/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java
+++ b/library/main/src/com/android/setupwizardlib/template/RequireScrollMixin.java
@@ -18,13 +18,14 @@
import android.os.Handler;
import android.os.Looper;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
import com.android.setupwizardlib.TemplateLayout;
import com.android.setupwizardlib.view.NavigationBar;
diff --git a/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java b/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java
index d159465..9e4d1cf 100644
--- a/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java
+++ b/library/main/src/com/android/setupwizardlib/template/ScrollViewScrollHandlingDelegate.java
@@ -16,11 +16,12 @@
package com.android.setupwizardlib.template;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.Log;
import android.widget.ScrollView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.template.RequireScrollMixin.ScrollHandlingDelegate;
import com.android.setupwizardlib.view.BottomScrollView;
import com.android.setupwizardlib.view.BottomScrollView.BottomScrollListener;
diff --git a/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java b/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java
index 975927b..2ec4f84 100644
--- a/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java
+++ b/library/main/src/com/android/setupwizardlib/util/FallbackThemeWrapper.java
@@ -18,9 +18,10 @@
import android.content.Context;
import android.content.res.Resources.Theme;
-import android.support.annotation.StyleRes;
import android.view.ContextThemeWrapper;
+import androidx.annotation.StyleRes;
+
/**
* Same as {@link ContextThemeWrapper}, but the base context's theme attributes take precedence
* over the wrapper context's. This is used to provide default values for theme attributes
diff --git a/library/main/src/com/android/setupwizardlib/util/Partner.java b/library/main/src/com/android/setupwizardlib/util/Partner.java
index baf66d1..9eaedc3 100644
--- a/library/main/src/com/android/setupwizardlib/util/Partner.java
+++ b/library/main/src/com/android/setupwizardlib/util/Partner.java
@@ -26,13 +26,14 @@
import android.graphics.drawable.Drawable;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.AnyRes;
-import android.support.annotation.ColorRes;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
import android.util.Log;
+import androidx.annotation.AnyRes;
+import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+
import java.util.List;
/**
diff --git a/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java b/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java
index b31e82e..7e3e885 100644
--- a/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java
+++ b/library/main/src/com/android/setupwizardlib/util/SystemBarHelper.java
@@ -24,7 +24,6 @@
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Handler;
-import android.support.annotation.RequiresPermission;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@@ -32,6 +31,8 @@
import android.view.WindowInsets;
import android.view.WindowManager;
+import androidx.annotation.RequiresPermission;
+
/**
* A helper class to manage the system navigation bar and status bar. This will add various
* systemUiVisibility flags to the given Window or View to make them follow the Setup Wizard style.
diff --git a/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java b/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java
index cf9ddac..9230b67 100644
--- a/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java
+++ b/library/main/src/com/android/setupwizardlib/util/WizardManagerHelper.java
@@ -22,8 +22,10 @@
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.provider.Settings;
-import android.support.annotation.StyleRes;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.annotation.VisibleForTesting;
import com.android.setupwizardlib.R;
@@ -278,7 +280,25 @@
*/
public static @StyleRes int getThemeRes(Intent intent, @StyleRes int defaultTheme) {
final String theme = intent.getStringExtra(EXTRA_THEME);
- return getThemeRes(theme, defaultTheme);
+ return getThemeRes(theme, defaultTheme, null);
+ }
+
+ /**
+ * Gets the theme style resource defined by this library for the theme specified in the given
+ * intent. For example, for THEME_GLIF_LIGHT, the theme @style/SuwThemeGlif.Light is returned.
+ *
+ * @param intent The intent passed by setup wizard, or one with the theme propagated along using
+ * {@link #copyWizardManagerExtras(Intent, Intent)}.
+ * @return The style corresponding to the theme in the given intent, or {@code defaultTheme} if
+ * the given theme is not recognized. Return the {@code defaultTheme} if the specified
+ * theme is older than the oldest supported one.
+ *
+ * @see #getThemeRes(String, int)
+ */
+ public static @StyleRes int getThemeRes(Intent intent, @StyleRes int defaultTheme,
+ @Nullable String oldestSupportedTheme) {
+ final String theme = intent.getStringExtra(EXTRA_THEME);
+ return getThemeRes(theme, defaultTheme, oldestSupportedTheme);
}
/**
@@ -301,28 +321,91 @@
* given theme is not recognized.
*/
public static @StyleRes int getThemeRes(String theme, @StyleRes int defaultTheme) {
+ return getThemeRes(theme, defaultTheme, null);
+ }
+
+ /**
+ * Gets the theme style resource defined by this library for the given theme name. For example,
+ * for THEME_GLIF_LIGHT, the theme @style/SuwThemeGlif.Light is returned.
+ *
+ * <p>If you require extra theme attributes but want to ensure forward compatibility with new
+ * themes added here, consider overriding {@link android.app.Activity#onApplyThemeResource} in
+ * your activity and call {@link Theme#applyStyle(int, boolean)} using your theme overlay.
+ *
+ * <pre>{@code
+ * protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
+ * super.onApplyThemeResource(theme, resid, first);
+ * theme.applyStyle(R.style.MyThemeOverlay, true);
+ * }
+ * }</pre>
+ *
+ * @param theme The string representation of the theme.
+ * @return The style corresponding to the given {@code theme}, or {@code defaultTheme} if the
+ * given theme is not recognized.
+ */
+ public static @StyleRes int getThemeRes(String theme, @StyleRes int defaultTheme,
+ @Nullable String oldestSupportedTheme) {
+ int returnedTheme = defaultTheme;
if (theme != null) {
switch (theme) {
case THEME_GLIF_V3_LIGHT:
- return R.style.SuwThemeGlifV3_Light;
+ returnedTheme = R.style.SuwThemeGlifV3_Light;
+ break;
case THEME_GLIF_V3:
- return R.style.SuwThemeGlifV3;
+ returnedTheme = R.style.SuwThemeGlifV3;
+ break;
case THEME_GLIF_V2_LIGHT:
- return R.style.SuwThemeGlifV2_Light;
+ returnedTheme = R.style.SuwThemeGlifV2_Light;
+ break;
case THEME_GLIF_V2:
- return R.style.SuwThemeGlifV2;
+ returnedTheme = R.style.SuwThemeGlifV2;
+ break;
case THEME_GLIF_LIGHT:
- return R.style.SuwThemeGlif_Light;
+ returnedTheme = R.style.SuwThemeGlif_Light;
+ break;
case THEME_GLIF:
- return R.style.SuwThemeGlif;
+ returnedTheme = R.style.SuwThemeGlif;
+ break;
case THEME_MATERIAL_LIGHT:
- return R.style.SuwThemeMaterial_Light;
+ returnedTheme = R.style.SuwThemeMaterial_Light;
+ break;
case THEME_MATERIAL:
- return R.style.SuwThemeMaterial;
+ returnedTheme = R.style.SuwThemeMaterial;
+ break;
+ default:
+ // fall through
+ }
+
+ // b/79540471 Return the default theme if the specified theme
+ // is older than the oldest supported one.
+ if (oldestSupportedTheme != null
+ && (getThemeVersion(theme) < getThemeVersion(oldestSupportedTheme))) {
+ returnedTheme = defaultTheme;
+ }
+ }
+
+ return returnedTheme;
+ }
+
+ private static int getThemeVersion(String theme) {
+ if (theme != null) {
+ switch (theme) {
+ case THEME_GLIF_V3_LIGHT:
+ case THEME_GLIF_V3:
+ return 4;
+ case THEME_GLIF_V2_LIGHT:
+ case THEME_GLIF_V2:
+ return 3;
+ case THEME_GLIF_LIGHT:
+ case THEME_GLIF:
+ return 2;
+ case THEME_MATERIAL_LIGHT:
+ case THEME_MATERIAL:
+ return 1;
default:
// fall through
}
}
- return defaultTheme;
+ return -1;
}
}
diff --git a/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java b/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java
index aac6668..eeb40a9 100644
--- a/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java
+++ b/library/main/src/com/android/setupwizardlib/view/BottomScrollView.java
@@ -17,11 +17,12 @@
package com.android.setupwizardlib.view;
import android.content.Context;
-import android.support.annotation.VisibleForTesting;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ScrollView;
+import androidx.annotation.VisibleForTesting;
+
/**
* An extension of ScrollView that will invoke a listener callback when the ScrollView needs
* scrolling, and when the ScrollView is being scrolled to the bottom. This is often used in Setup
diff --git a/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java b/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java
index bd0aead..9605f99 100644
--- a/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java
+++ b/library/main/src/com/android/setupwizardlib/view/CheckableLinearLayout.java
@@ -19,11 +19,12 @@
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.Checkable;
import android.widget.LinearLayout;
+import androidx.annotation.Nullable;
+
/**
* A LinearLayout which is checkable. This will set the checked state when
* {@link #onCreateDrawableState(int)} is called, and can be used with
diff --git a/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java b/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
index e5c2fb1..e5688b3 100644
--- a/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
+++ b/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
@@ -22,18 +22,27 @@
import android.graphics.SurfaceTexture;
import android.graphics.drawable.Animatable;
import android.media.MediaPlayer;
+import android.media.MediaPlayer.OnErrorListener;
+import android.media.MediaPlayer.OnInfoListener;
+import android.media.MediaPlayer.OnPreparedListener;
+import android.media.MediaPlayer.OnSeekCompleteListener;
+import android.net.Uri;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.support.annotation.RawRes;
-import android.support.annotation.VisibleForTesting;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Surface;
import android.view.TextureView;
+import android.view.TextureView.SurfaceTextureListener;
import android.view.View;
+import androidx.annotation.Nullable;
+import androidx.annotation.RawRes;
+import androidx.annotation.VisibleForTesting;
+
import com.android.setupwizardlib.R;
+import java.io.IOException;
+
/**
* A view for displaying videos in a continuous loop (without audio). This is typically used for
* animated illustrations.
@@ -48,10 +57,11 @@
*/
@TargetApi(VERSION_CODES.ICE_CREAM_SANDWICH)
public class IllustrationVideoView extends TextureView implements Animatable,
- TextureView.SurfaceTextureListener,
- MediaPlayer.OnPreparedListener,
- MediaPlayer.OnSeekCompleteListener,
- MediaPlayer.OnInfoListener {
+ SurfaceTextureListener,
+ OnPreparedListener,
+ OnSeekCompleteListener,
+ OnInfoListener,
+ OnErrorListener {
private static final String TAG = "IllustrationVideoView";
@@ -64,6 +74,8 @@
@VisibleForTesting Surface mSurface;
+ private boolean mPrepared;
+
public IllustrationVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
final TypedArray a = context.obtainStyledAttributes(attrs,
@@ -124,7 +136,7 @@
* Creates a media player for the current URI. The media player will be started immediately if
* the view's window is visible. If there is an existing media player, it will be released.
*/
- private void createMediaPlayer() {
+ protected void createMediaPlayer() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
}
@@ -132,25 +144,48 @@
return;
}
- mMediaPlayer = MediaPlayer.create(getContext(), mVideoResId);
+ mMediaPlayer = new MediaPlayer();
- if (mMediaPlayer != null) {
- mMediaPlayer.setSurface(mSurface);
- mMediaPlayer.setOnPreparedListener(this);
- mMediaPlayer.setOnSeekCompleteListener(this);
- mMediaPlayer.setOnInfoListener(this);
+ mMediaPlayer.setSurface(mSurface);
+ mMediaPlayer.setOnPreparedListener(this);
+ mMediaPlayer.setOnSeekCompleteListener(this);
+ mMediaPlayer.setOnInfoListener(this);
+ mMediaPlayer.setOnErrorListener(this);
- float aspectRatio =
- (float) mMediaPlayer.getVideoHeight() / mMediaPlayer.getVideoWidth();
- if (mAspectRatio != aspectRatio) {
- mAspectRatio = aspectRatio;
- requestLayout();
- }
- } else {
- Log.wtf(TAG, "Unable to initialize media player for video view");
+ setVideoResourceInternal(mVideoResId);
+ }
+
+ private void setVideoResourceInternal(@RawRes int videoRes) {
+ Uri uri =
+ Uri.parse("android.resource://" + getContext().getPackageName() + "/" + videoRes);
+ try {
+ mMediaPlayer.setDataSource(getContext(), uri);
+ mMediaPlayer.prepareAsync();
+ } catch (IOException e) {
+ Log.wtf(TAG, "Unable to set data source", e);
}
- if (getWindowVisibility() == View.VISIBLE) {
- start();
+ }
+
+ protected void createSurface() {
+ if (mSurface != null) {
+ mSurface.release();
+ mSurface = null;
+ }
+ // Reattach only if it has been previously released
+ SurfaceTexture surfaceTexture = getSurfaceTexture();
+ if (surfaceTexture != null) {
+ setVisibility(View.INVISIBLE);
+ mSurface = new Surface(surfaceTexture);
+ }
+ }
+
+ @Override
+ protected void onWindowVisibilityChanged(int visibility) {
+ super.onWindowVisibilityChanged(visibility);
+ if (visibility == View.VISIBLE) {
+ reattach();
+ } else {
+ release();
}
}
@@ -168,9 +203,9 @@
*/
public void release() {
if (mMediaPlayer != null) {
- mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
+ mPrepared = false;
}
if (mSurface != null) {
mSurface.release();
@@ -178,14 +213,34 @@
}
}
+ private void reattach() {
+ if (mSurface == null) {
+ initVideo();
+ }
+ }
+
+ private void initVideo() {
+ if (getWindowVisibility() != View.VISIBLE) {
+ return;
+ }
+ createSurface();
+ if (mSurface != null) {
+ createMediaPlayer();
+ } else {
+ Log.w(TAG, "Surface creation failed");
+ }
+ }
+
+ protected void onRenderingStart() {
+ }
+
/* SurfaceTextureListener methods */
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
// Keep the view hidden until video starts
setVisibility(View.INVISIBLE);
- mSurface = new Surface(surfaceTexture);
- createMediaPlayer();
+ initVideo();
}
@Override
@@ -206,14 +261,14 @@
@Override
public void start() {
- if (mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
+ if (mPrepared && mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
mMediaPlayer.start();
}
}
@Override
public void stop() {
- if (mMediaPlayer != null) {
+ if (mPrepared && mMediaPlayer != null) {
mMediaPlayer.pause();
}
}
@@ -230,21 +285,46 @@
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// Video available, show view now
setVisibility(View.VISIBLE);
+ onRenderingStart();
}
return false;
}
@Override
public void onPrepared(MediaPlayer mp) {
+ mPrepared = true;
mp.setLooping(shouldLoop());
+ float aspectRatio =
+ (float) mp.getVideoHeight() / mp.getVideoWidth();
+ if (Float.compare(mAspectRatio, aspectRatio) == 0) {
+ mAspectRatio = aspectRatio;
+ requestLayout();
+ }
+ if (getWindowVisibility() == View.VISIBLE) {
+ start();
+ }
}
@Override
public void onSeekComplete(MediaPlayer mp) {
- mp.start();
+ if (isPrepared()) {
+ mp.start();
+ } else {
+ Log.wtf(TAG, "Seek complete but media player not prepared");
+ }
}
public int getCurrentPosition() {
return mMediaPlayer == null ? 0 : mMediaPlayer.getCurrentPosition();
}
+
+ protected boolean isPrepared() {
+ return mPrepared;
+ }
+
+ @Override
+ public boolean onError(MediaPlayer mediaPlayer, int what, int extra) {
+ Log.w(TAG, "MediaPlayer error. what=" + what + " extra=" + extra);
+ return false;
+ }
}
diff --git a/library/main/src/com/android/setupwizardlib/view/NavigationBar.java b/library/main/src/com/android/setupwizardlib/view/NavigationBar.java
index 2a1dd28..9971bac 100644
--- a/library/main/src/com/android/setupwizardlib/view/NavigationBar.java
+++ b/library/main/src/com/android/setupwizardlib/view/NavigationBar.java
@@ -21,13 +21,14 @@
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.StyleableRes;
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
+import androidx.annotation.StyleableRes;
+
import com.android.setupwizardlib.R;
/**
diff --git a/library/platform/res/values-v27/styles.xml b/library/platform/res/values-v27/styles.xml
index 6e36919..70101c9 100644
--- a/library/platform/res/values-v27/styles.xml
+++ b/library/platform/res/values-v27/styles.xml
@@ -44,6 +44,7 @@
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonHighlightAlpha">0.24</item>
<item name="suwCardBackground">@drawable/suw_card_bg</item>
<item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
<item name="suwDividerInsetEnd">0dp</item>
@@ -75,6 +76,7 @@
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonHighlightAlpha">0.24</item>
<item name="suwCardBackground">@drawable/suw_card_bg</item>
<item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
<item name="suwDividerInsetEnd">0dp</item>
@@ -109,7 +111,8 @@
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
- <item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonFontFamily">sans-serif-medium</item>
+ <item name="suwButtonHighlightAlpha">0.24</item>
<item name="suwColorPrimary">?android:attr/colorPrimary</item>
<item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
<item name="suwDividerInsetEnd">0dp</item>
@@ -145,7 +148,8 @@
<item name="suwButtonAllCaps">true</item>
<item name="suwButtonCornerRadius">@dimen/suw_glif_button_corner_radius</item>
- <item name="suwButtonFontFamily">sans-serif</item>
+ <item name="suwButtonFontFamily">sans-serif-medium</item>
+ <item name="suwButtonHighlightAlpha">0.12</item>
<item name="suwColorPrimary">?android:attr/colorPrimary</item>
<item name="suwFillContentLayoutStyle">@style/SuwFillContentLayout</item>
<item name="suwDividerInsetEnd">0dp</item>
@@ -218,4 +222,11 @@
<item name="android:colorControlHighlight">@color/suw_flat_button_highlight</item>
</style>
+ <!-- Ignore UnusedResources: used by clients -->
+ <style name="SuwGlifButton.Tertiary"
+ parent="SuwGlifButton.BaseTertiary"
+ tools:ignore="UnusedResources">
+ <item name="android:fontFamily">sans-serif-medium</item>
+ </style>
+
</resources>
diff --git a/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml b/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml
index 0979d91..088a35c 100644
--- a/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml
+++ b/library/recyclerview/res/layout/suw_preference_recycler_view_normal.xml
@@ -15,7 +15,7 @@
limitations under the License.
-->
-<android.support.v7.widget.RecyclerView
+<androidx.recyclerview.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/suw_recycler_view"
android:layout_width="match_parent"
diff --git a/library/recyclerview/res/layout/suw_recycler_template_card.xml b/library/recyclerview/res/layout/suw_recycler_template_card.xml
index 1d7b143..79cbcd6 100644
--- a/library/recyclerview/res/layout/suw_recycler_template_card.xml
+++ b/library/recyclerview/res/layout/suw_recycler_template_card.xml
@@ -49,7 +49,7 @@
android:elevation="@dimen/suw_card_elevation"
tools:ignore="UnusedAttribute">
- <android.support.v7.widget.RecyclerView
+ <androidx.recyclerview.widget.RecyclerView
android:id="@+id/suw_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml b/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml
index e5e876f..31f1ca0 100644
--- a/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml
+++ b/library/recyclerview/res/layout/suw_recycler_template_card_wide.xml
@@ -50,7 +50,7 @@
android:elevation="@dimen/suw_card_elevation"
tools:ignore="UnusedAttribute">
- <android.support.v7.widget.RecyclerView
+ <androidx.recyclerview.widget.RecyclerView
android:id="@+id/suw_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml b/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml
index 1960f0d..833f7d0 100644
--- a/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml
+++ b/library/recyclerview/res/layout/suw_recycler_template_header_collapsed.xml
@@ -44,7 +44,7 @@
android:layout_height="0dp"
android:layout_weight="1">
- <android.support.v7.widget.RecyclerView
+ <androidx.recyclerview.widget.RecyclerView
android:id="@+id/suw_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java b/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java
index 6c1a928..2db17f8 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/DividerItemDecoration.java
@@ -21,16 +21,17 @@
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
-import android.support.annotation.IntDef;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.RecyclerView;
import android.view.View;
+import androidx.annotation.IntDef;
+import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
- * An {@link android.support.v7.widget.RecyclerView.ItemDecoration} for RecyclerView to draw
+ * An {@link androidx.recyclerview.widget.RecyclerView.ItemDecoration} for RecyclerView to draw
* dividers between items. This ItemDecoration will draw the drawable specified by
* {@link #setDivider(android.graphics.drawable.Drawable)} as the divider in between each item by
* default, and the behavior of whether the divider is shown can be customized by subclassing
diff --git a/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java b/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java
index d337e84..af1a739 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/GlifPreferenceLayout.java
@@ -18,12 +18,13 @@
import android.content.Context;
import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.template.RecyclerMixin;
/**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java b/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java
index e8a021d..7e0b1b7 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/GlifRecyclerLayout.java
@@ -20,14 +20,15 @@
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build.VERSION_CODES;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
import com.android.setupwizardlib.template.RecyclerMixin;
import com.android.setupwizardlib.template.RecyclerViewScrollHandlingDelegate;
import com.android.setupwizardlib.template.RequireScrollMixin;
diff --git a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java
index 6570694..670c309 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardPreferenceLayout.java
@@ -18,12 +18,13 @@
import android.content.Context;
import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.template.RecyclerMixin;
/**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java
index 6f3aed4..5d3f1a5 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/SetupWizardRecyclerLayout.java
@@ -18,20 +18,21 @@
import android.content.Context;
import android.graphics.drawable.Drawable;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
import com.android.setupwizardlib.template.RecyclerMixin;
import com.android.setupwizardlib.template.RecyclerViewScrollHandlingDelegate;
import com.android.setupwizardlib.template.RequireScrollMixin;
/**
- * A setup wizard layout for use with {@link android.support.v7.widget.RecyclerView}.
+ * A setup wizard layout for use with {@link androidx.recyclerview.widget.RecyclerView}.
* {@code android:entries} can also be used to specify an
* {@link com.android.setupwizardlib.items.ItemHierarchy} to be used with this layout in XML.
*
diff --git a/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java b/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java
index 231f81d..aeaba68 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/items/ItemViewHolder.java
@@ -16,9 +16,10 @@
package com.android.setupwizardlib.items;
-import android.support.v7.widget.RecyclerView;
import android.view.View;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.DividerItemDecoration;
class ItemViewHolder extends RecyclerView.ViewHolder
diff --git a/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java b/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java
index 0703c17..56c60e7 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/items/RecyclerItemAdapter.java
@@ -20,13 +20,14 @@
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.VisibleForTesting;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.R;
/**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java
index fa5ac4a..32e7bd8 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerMixin.java
@@ -21,15 +21,16 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
import android.util.AttributeSet;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
import com.android.setupwizardlib.DividerItemDecoration;
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.TemplateLayout;
diff --git a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java
index 41fb03e..bfe8df2 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegate.java
@@ -16,11 +16,12 @@
package com.android.setupwizardlib.template;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.template.RequireScrollMixin.ScrollHandlingDelegate;
/**
diff --git a/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java b/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java
index cf13d01..0304b65 100644
--- a/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java
+++ b/library/recyclerview/src/com/android/setupwizardlib/view/HeaderRecyclerView.java
@@ -19,7 +19,6 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
-import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -27,6 +26,8 @@
import android.view.accessibility.AccessibilityEvent;
import android.widget.FrameLayout;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.DividerItemDecoration;
import com.android.setupwizardlib.R;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java
index 1bfbb95..6f42e84 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/items/RecyclerItemAdapterTest.java
@@ -35,9 +35,10 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView.AdapterDataObserver;
import android.widget.FrameLayout;
+import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver;
+
import com.android.setupwizardlib.items.RecyclerItemAdapter.PatchedLayerDrawable;
import com.android.setupwizardlib.test.R;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java
index ce73791..ece4bf9 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/template/RecyclerMixinTest.java
@@ -33,10 +33,11 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
import android.view.View;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+
import com.android.setupwizardlib.TemplateLayout;
import com.android.setupwizardlib.test.R;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java
index 747d1ba..9cf33b9 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/DividerItemDecorationTest.java
@@ -31,11 +31,12 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.DividerItemDecoration;
import org.junit.Test;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java
index 791e11f..4d2876d 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifPreferenceLayoutTest.java
@@ -27,12 +27,13 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.GlifPreferenceLayout;
import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java
index 4bd98ce..a68faf0 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/GlifRecyclerLayoutTest.java
@@ -29,14 +29,15 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+
import com.android.setupwizardlib.GlifRecyclerLayout;
import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java
index d9f52cd..9af68a7 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/HeaderRecyclerViewTest.java
@@ -22,10 +22,11 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.view.HeaderRecyclerView.HeaderAdapter;
import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java
index 486d2cf..316793f 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardPreferenceLayoutTest.java
@@ -27,12 +27,13 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.android.setupwizardlib.SetupWizardPreferenceLayout;
import org.junit.Before;
diff --git a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java
index 4b38945..bbe773b 100644
--- a/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java
+++ b/library/recyclerview/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardRecyclerLayoutTest.java
@@ -29,15 +29,16 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Adapter;
-import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
import com.android.setupwizardlib.SetupWizardRecyclerLayout;
import org.junit.Before;
diff --git a/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java b/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java
index 5912f7f..6fa4c54 100644
--- a/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java
+++ b/library/recyclerview/test/robotest/src/com/android/setupwizardlib/template/RecyclerViewScrollHandlingDelegateTest.java
@@ -24,8 +24,8 @@
import static org.mockito.Mockito.verify;
import static org.robolectric.RuntimeEnvironment.application;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.OnScrollListener;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.OnScrollListener;
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
diff --git a/library/rules.gradle b/library/rules.gradle
index 9baa390..4e815ce 100644
--- a/library/rules.gradle
+++ b/library/rules.gradle
@@ -26,7 +26,7 @@
// Provides backwards compatibility for Gingerbread or above, using support libraries.
gingerbreadCompat {
dimension 'compat'
- minSdkVersion 9
+ minSdkVersion 14
}
}
diff --git a/library/standalone-rules.gradle b/library/standalone-rules.gradle
index 7f505a1..e17cffd 100644
--- a/library/standalone-rules.gradle
+++ b/library/standalone-rules.gradle
@@ -26,9 +26,9 @@
// }
//
deps = [
- 'support-annotations': 'com.android.support:support-annotations:23.4.0',
- 'support-appcompat-v7': 'com.android.support:appcompat-v7:23.4.0',
- 'support-recyclerview-v7': 'com.android.support:recyclerview-v7:23.4.0'
+ 'support-annotations': 'androidx.annotation:annotation:1.0.0-alpha1',
+ 'support-appcompat-v7': 'androidx.appcompat:appcompat:1.0.0-alpha1',
+ 'support-recyclerview-v7': 'androidx.recyclerview:recyclerview:1.0.0-alpha1'
]
}
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java
index 2772cb1..08f5958 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/template/ButtonFooterMixinTest.java
@@ -24,7 +24,6 @@
import static org.mockito.Mockito.spy;
import android.content.Context;
-import android.support.annotation.IdRes;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
@@ -36,6 +35,8 @@
import android.widget.FrameLayout;
import android.widget.LinearLayout;
+import androidx.annotation.IdRes;
+
import com.android.setupwizardlib.TemplateLayout;
import com.android.setupwizardlib.test.R;
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java
index 5c22324..137a146 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/ReflectionInflaterTest.java
@@ -20,7 +20,6 @@
import static org.junit.Assert.assertTrue;
import android.content.Context;
-import android.support.annotation.NonNull;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
@@ -28,6 +27,8 @@
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
+import androidx.annotation.NonNull;
+
import com.android.setupwizardlib.items.ReflectionInflater;
import org.junit.Test;
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java
index aab2efb..531d69e 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java
@@ -27,7 +27,6 @@
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Parcelable;
-import android.support.annotation.IdRes;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
@@ -39,6 +38,8 @@
import android.widget.ProgressBar;
import android.widget.TextView;
+import androidx.annotation.IdRes;
+
import com.android.setupwizardlib.SetupWizardLayout;
import com.android.setupwizardlib.template.HeaderMixin;
import com.android.setupwizardlib.template.NavigationBarMixin;
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java
index bd4c251..f4738ca 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/SimpleInflaterTest.java
@@ -20,12 +20,13 @@
import android.content.Context;
import android.content.res.Resources;
-import android.support.annotation.NonNull;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.util.AttributeSet;
+import androidx.annotation.NonNull;
+
import com.android.setupwizardlib.items.SimpleInflater;
import org.junit.Test;
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java
index 94ef145..6910513 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/DrawingTestHelper.java
@@ -24,11 +24,12 @@
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.Canvas;
-import android.support.annotation.StyleRes;
import android.support.test.InstrumentationRegistry;
import android.view.View;
import android.view.View.MeasureSpec;
+import androidx.annotation.StyleRes;
+
public class DrawingTestHelper {
/**
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java
index 9358aad..7af20eb 100644
--- a/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java
+++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/util/MockWindow.java
@@ -21,7 +21,6 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
-import android.support.annotation.NonNull;
import android.view.InputQueue;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -31,6 +30,8 @@
import android.view.ViewGroup;
import android.view.Window;
+import androidx.annotation.NonNull;
+
public class MockWindow extends Window {
public MockWindow(Context context) {
diff --git a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
index d2d1ee0..2a4a8c0 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
@@ -34,13 +34,14 @@
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.IdRes;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.ScrollView;
import android.widget.TextView;
+import androidx.annotation.IdRes;
+
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
import com.android.setupwizardlib.template.ColoredHeaderMixin;
import com.android.setupwizardlib.template.HeaderMixin;
diff --git a/library/test/robotest/src/com/android/setupwizardlib/shadow/ShadowMediaPlayer.java b/library/test/robotest/src/com/android/setupwizardlib/shadow/ShadowMediaPlayer.java
new file mode 100644
index 0000000..2ef2b7d
--- /dev/null
+++ b/library/test/robotest/src/com/android/setupwizardlib/shadow/ShadowMediaPlayer.java
@@ -0,0 +1,51 @@
+/*
+ * 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.setupwizardlib.shadow;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.io.IOException;
+import java.net.HttpCookie;
+import java.util.List;
+import java.util.Map;
+
+@Implements(MediaPlayer.class)
+public class ShadowMediaPlayer extends org.robolectric.shadows.ShadowMediaPlayer {
+
+ @Implementation
+ public void setDataSource(
+ @NonNull Context context,
+ @NonNull Uri uri,
+ @Nullable Map<String, String> headers,
+ @Nullable List<HttpCookie> cookies)
+ throws IOException {
+ setDataSource(context, uri, headers);
+ }
+
+ @Implementation
+ public void seekTo(long msec, int mode) {
+ seekTo((int) msec);
+ }
+}
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
index 46df9d6..195fc9b 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
@@ -28,35 +28,31 @@
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
-import android.support.annotation.Nullable;
+import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.widget.Button;
import android.widget.ProgressBar;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
-import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+import org.robolectric.util.ReflectionHelpers.ClassParameter;
@RunWith(SuwLibRobolectricTestRunner.class)
@Config(sdk = {Config.OLDEST_SDK, Config.NEWEST_SDK})
public class GlifStyleTest {
- private Context mContext;
-
- @Before
- public void setUp() {
- mContext = new ContextThemeWrapper(application, R.style.SuwThemeGlif_Light);
- }
-
@Test
public void testSuwGlifButtonTertiary() {
- Button button = new Button(
- mContext,
+ Button button = createButton(
+ new ContextThemeWrapper(application, R.style.SuwThemeGlif_Light),
Robolectric.buildAttributeSet()
.setStyleAttribute("@style/SuwGlifButton.Tertiary")
.build());
@@ -86,6 +82,22 @@
activity.findViewById(R.id.suw_large_progress_bar) instanceof ProgressBar);
}
+ private Button createButton(Context context, AttributeSet attrs) {
+ Class<? extends Button> buttonClass;
+ try {
+ // Use AppCompatButton in builds that have them (i.e. gingerbreadCompat)
+ // noinspection unchecked
+ buttonClass = (Class<? extends Button>)
+ Class.forName("androidx.appcompat.widget.AppCompatButton");
+ } catch (ClassNotFoundException e) {
+ buttonClass = Button.class;
+ }
+ return ReflectionHelpers.callConstructor(
+ buttonClass,
+ ClassParameter.from(Context.class, context),
+ ClassParameter.from(AttributeSet.class, attrs));
+ }
+
private static class GlifThemeActivity extends Activity {
@Override
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java
index 613f2aa..44b8886 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifV3StyleTest.java
@@ -27,10 +27,11 @@
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
-import android.support.annotation.Nullable;
import android.view.View;
import android.widget.Button;
+import androidx.annotation.Nullable;
+
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java
index 0d15ef4..20549f2 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/util/WizardManagerHelperTest.java
@@ -29,7 +29,8 @@
import android.provider.Settings;
import android.provider.Settings.Global;
import android.provider.Settings.Secure;
-import android.support.annotation.StyleRes;
+
+import androidx.annotation.StyleRes;
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
@@ -161,6 +162,22 @@
}
@Test
+ public void getThemeRes_whenOldestSupportedThemeTakeEffect_shouldReturnDefault() {
+ Intent intent = new Intent();
+ intent.putExtra(WizardManagerHelper.EXTRA_THEME, "material");
+ assertEquals(0,
+ WizardManagerHelper.getThemeRes(intent, 0, WizardManagerHelper.THEME_GLIF_V2));
+ }
+
+ @Test
+ public void getThemeRes_whenOldestSupportedThemeNotTakeEffect_shouldReturnCurrent() {
+ Intent intent = new Intent();
+ intent.putExtra(WizardManagerHelper.EXTRA_THEME, "glif_v3");
+ assertEquals(R.style.SuwThemeGlifV3,
+ WizardManagerHelper.getThemeRes(intent, 0, WizardManagerHelper.THEME_GLIF_V2));
+ }
+
+ @Test
public void testIsLightThemeDefault() {
final Intent intent = new Intent();
intent.putExtra("theme", "abracadabra");
diff --git a/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java b/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java
index 21822a4..c09e22f 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/view/IllustrationVideoViewTest.java
@@ -16,50 +16,52 @@
package com.android.setupwizardlib.view;
-import static org.junit.Assert.assertEquals;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.verify;
import static org.robolectric.RuntimeEnvironment.application;
import android.annotation.TargetApi;
-import android.content.Context;
+import android.app.Activity;
import android.graphics.SurfaceTexture;
-import android.media.MediaPlayer;
+import android.net.Uri;
import android.os.Build.VERSION_CODES;
-import android.support.annotation.RawRes;
import android.view.Surface;
+import android.view.View;
+
+import androidx.annotation.RawRes;
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
import com.android.setupwizardlib.shadow.ShadowLog;
-import com.android.setupwizardlib.shadow.ShadowLog.TerribleFailure;
-import com.android.setupwizardlib.view.IllustrationVideoViewTest.ShadowMockMediaPlayer;
+import com.android.setupwizardlib.shadow.ShadowMediaPlayer;
import com.android.setupwizardlib.view.IllustrationVideoViewTest.ShadowSurface;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
+import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
-import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.RealObject;
import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowMediaPlayer;
+import org.robolectric.shadows.ShadowMediaPlayer.InvalidStateBehavior;
+import org.robolectric.shadows.ShadowMediaPlayer.MediaInfo;
+import org.robolectric.shadows.ShadowMediaPlayer.State;
+import org.robolectric.shadows.util.DataSource;
import org.robolectric.util.ReflectionHelpers;
+import org.robolectric.util.ReflectionHelpers.ClassParameter;
@RunWith(SuwLibRobolectricTestRunner.class)
@Config(
sdk = Config.NEWEST_SDK,
shadows = {
ShadowLog.class,
- ShadowMockMediaPlayer.class,
+ ShadowMediaPlayer.class,
ShadowSurface.class
})
public class IllustrationVideoViewTest {
@@ -69,48 +71,58 @@
private IllustrationVideoView mView;
+ private ShadowMediaPlayer mShadowMediaPlayer;
+
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- }
-
- @After
- public void tearDown() {
- ShadowMockMediaPlayer.reset();
+ addMediaInfo(android.R.color.white);
}
@Test
- public void nullMediaPlayer_shouldThrowWtf() {
- ShadowMockMediaPlayer.sMediaPlayer = null;
- try {
- createDefaultView();
- fail("WTF should be thrown for null media player");
- } catch (TerribleFailure e) {
- // pass
- }
+ public void onVisibilityChanged_notVisible_shouldRelease() {
+
+ createDefaultView();
+ mView.onWindowVisibilityChanged(View.GONE);
+
+ assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.END);
+ assertThat(mView.mSurface).isNull();
+ assertThat(mView.mMediaPlayer).isNull();
+ }
+
+ @Test
+ public void onVisibilityChanged_visible_shouldPlay() {
+ createDefaultView();
+
+ mView.onWindowVisibilityChanged(View.GONE);
+ assertThat(mView.mSurface).isNull();
+ assertThat(mView.mMediaPlayer).isNull();
+
+ mView.onWindowVisibilityChanged(View.VISIBLE);
+
+ assertThat(mView.mSurface).isNotNull();
+ assertThat(mView.mMediaPlayer).isNotNull();
}
@Test
public void testPausedWhenWindowFocusLost() {
createDefaultView();
+ Robolectric.flushForegroundThreadScheduler();
mView.start();
assertNotNull(mView.mMediaPlayer);
assertNotNull(mView.mSurface);
mView.onWindowFocusChanged(false);
- verify(ShadowMockMediaPlayer.getMock()).pause();
+ assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.PAUSED);
}
@Test
public void testStartedWhenWindowFocusRegained() {
testPausedWhenWindowFocusLost();
- // Clear verifications for calls in the other test
- reset(ShadowMockMediaPlayer.getMock());
-
mView.onWindowFocusChanged(true);
- verify(ShadowMockMediaPlayer.getMock()).start();
+ assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.STARTED);
}
@Test
@@ -122,55 +134,68 @@
assertNotNull(mView.mSurface);
mView.onSurfaceTextureDestroyed(mSurfaceTexture);
- verify(ShadowMockMediaPlayer.getMock()).release();
+ assertThat(mShadowMediaPlayer.getState()).isEqualTo(State.END);
}
@Test
public void testXmlSetVideoResId() {
createDefaultView();
- assertEquals(android.R.color.white, ShadowMockMediaPlayer.sResId);
+ assertThat(mShadowMediaPlayer.getSourceUri().toString())
+ .isEqualTo("android.resource://com.android.setupwizardlib/"
+ + android.R.color.white);
}
@Test
public void testSetVideoResId() {
+ addMediaInfo(android.R.color.black);
+
createDefaultView();
@RawRes int black = android.R.color.black;
mView.setVideoResource(black);
- assertEquals(android.R.color.black, ShadowMockMediaPlayer.sResId);
+ mShadowMediaPlayer = (ShadowMediaPlayer) Shadows.shadowOf(mView.mMediaPlayer);
+
+ assertThat(mShadowMediaPlayer.getSourceUri().toString())
+ .isEqualTo("android.resource://com.android.setupwizardlib/"
+ + android.R.color.black);
}
private void createDefaultView() {
mView = new IllustrationVideoView(
application,
Robolectric.buildAttributeSet()
- // Any resource attribute should work, since the media player is mocked
+ // Any resource attribute should work, since the DataSource is fake
.addAttribute(R.attr.suwVideo, "@android:color/white")
.build());
+
+ Activity activity = Robolectric.setupActivity(Activity.class);
+ activity.setContentView(mView);
+ setWindowVisible();
+
+ mView.setSurfaceTexture(mock(SurfaceTexture.class));
mView.onSurfaceTextureAvailable(mSurfaceTexture, 500, 500);
+ mShadowMediaPlayer = (ShadowMediaPlayer) Shadows.shadowOf(mView.mMediaPlayer);
+ mShadowMediaPlayer.setInvalidStateBehavior(InvalidStateBehavior.EMULATE);
}
- @Implements(MediaPlayer.class)
- public static class ShadowMockMediaPlayer extends ShadowMediaPlayer {
+ private void setWindowVisible() {
+ Object viewRootImpl = ReflectionHelpers.callInstanceMethod(mView, "getViewRootImpl");
+ ReflectionHelpers.callInstanceMethod(
+ viewRootImpl,
+ "handleAppVisibility",
+ ClassParameter.from(boolean.class, true));
+ assertThat(mView.isAttachedToWindow()).isTrue();
+ assertThat(mView.getWindowVisibility()).isEqualTo(View.VISIBLE);
+ }
- private static MediaPlayer sMediaPlayer = mock(MediaPlayer.class);
- private static int sResId;
-
- public static void reset() {
- sMediaPlayer = mock(MediaPlayer.class);
- sResId = 0;
- }
-
- @Implementation
- public static MediaPlayer create(Context context, int resId) {
- sResId = resId;
- return sMediaPlayer;
- }
-
- public static MediaPlayer getMock() {
- return sMediaPlayer;
- }
+ private void addMediaInfo(@RawRes int res) {
+ ShadowMediaPlayer.addMediaInfo(
+ DataSource.toDataSource(
+ application,
+ Uri.parse("android.resource://com.android.setupwizardlib/" + res),
+ null),
+ new MediaInfo(5000, 1));
}
@Implements(Surface.class)
@@ -180,6 +205,7 @@
@RealObject
private Surface mRealSurface;
+ @Override
public void __constructor__(SurfaceTexture surfaceTexture) {
// Call the constructor on the real object, so that critical fields such as mLock is
// initialized properly.
diff --git a/navigationbar/res/values-as/strings.xml b/navigationbar/res/values-as/strings.xml
new file mode 100644
index 0000000..398ff1f
--- /dev/null
+++ b/navigationbar/res/values-as/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="setup_wizard_next_button_label" msgid="6681282266022780599">"পৰৱৰ্তী"</string>
+ <string name="setup_wizard_back_button_label" msgid="2863826823307023546">"উভতি যাওক"</string>
+</resources>
diff --git a/navigationbar/res/values-or/strings.xml b/navigationbar/res/values-or/strings.xml
new file mode 100644
index 0000000..4c70d06
--- /dev/null
+++ b/navigationbar/res/values-or/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="setup_wizard_next_button_label" msgid="6681282266022780599">"ପରବର୍ତ୍ତୀ"</string>
+ <string name="setup_wizard_back_button_label" msgid="2863826823307023546">"ପଛକୁ ଫେରନ୍ତୁ"</string>
+</resources>
diff --git a/tools/build_for_build_server.sh b/tools/build_for_build_server.sh
index 7a8c942..1ed4ea7 100755
--- a/tools/build_for_build_server.sh
+++ b/tools/build_for_build_server.sh
@@ -6,4 +6,4 @@
export TARGET_BUILD_TYPE="release"
export TARGET_BUILD_APPS="setup-wizard-lib"
-./gradlew buildProjectFull test coverage
+./gradlew buildProjectFull test coverage --info
diff --git a/tools/gradle/repositories.properties b/tools/gradle/repositories.properties
index 378d454..d2c15a1 100644
--- a/tools/gradle/repositories.properties
+++ b/tools/gradle/repositories.properties
@@ -1,3 +1,4 @@
repositories {
maven { url "$rootDir/prebuilts/maven_repo/robolectric" }
+ maven { url "$rootDir/prebuilts/maven_repo/android" }
}