Visual update: remove card elevation for homepage cards.

- Replace CardView with MaterialCardView
- Add strokeColor and strokeWidth to MaterialCardView
- Set cardElevation to 0dp.

And remove a few unused layout, clean up color lint whitelist.

Test: rebuild, visual
Change-Id: I34a4b9a985cb85c212e123b8af5353d8c548923a
This commit is contained in:
Fan Zhang
2018-11-27 14:29:45 -08:00
parent 8bda3a5956
commit a60652a973
17 changed files with 155 additions and 786 deletions

View File

@@ -929,22 +929,6 @@
column="5"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" &lt;color name=&quot;status_bar_color&quot;>#3c3c3c&lt;/color>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="99"
column="5"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
@@ -957,7 +941,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="102"
line="100"
column="5"/>
</issue>
@@ -973,23 +957,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="105"
column="5"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" &lt;color name=&quot;fallback_tintColor&quot;>#89000000&lt;/color>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="108"
line="103"
column="5"/>
</issue>
@@ -1005,7 +973,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="111"
line="106"
column="5"/>
</issue>
@@ -1021,7 +989,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="112"
line="107"
column="5"/>
</issue>
@@ -1037,7 +1005,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="115"
line="110"
column="5"/>
</issue>
@@ -1053,7 +1021,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="116"
line="111"
column="5"/>
</issue>
@@ -1069,7 +1037,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="117"
line="112"
column="5"/>
</issue>
@@ -1085,7 +1053,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="118"
line="113"
column="5"/>
</issue>
@@ -1101,7 +1069,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="119"
line="114"
column="5"/>
</issue>
@@ -1117,7 +1085,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="120"
line="115"
column="5"/>
</issue>
@@ -1133,7 +1101,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="121"
line="116"
column="5"/>
</issue>
@@ -1149,7 +1117,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="122"
line="117"
column="5"/>
</issue>
@@ -1165,7 +1133,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="123"
line="118"
column="5"/>
</issue>
@@ -1181,7 +1149,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="124"
line="119"
column="5"/>
</issue>
@@ -1197,7 +1165,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="125"
line="120"
column="5"/>
</issue>
@@ -1213,7 +1181,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="126"
line="121"
column="5"/>
</issue>
@@ -1229,7 +1197,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="127"
line="122"
column="5"/>
</issue>
@@ -1245,7 +1213,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="128"
line="123"
column="5"/>
</issue>
@@ -1261,7 +1229,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="129"
line="124"
column="5"/>
</issue>
@@ -1277,7 +1245,23 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="130"
line="125"
column="5"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" &lt;color name=&quot;homepage_card_stroke_color&quot;>#1f000000&lt;/color>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="126"
column="5"/>
</issue>
@@ -1293,7 +1277,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="134"
line="130"
column="5"/>
</issue>
@@ -1309,7 +1293,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="139"
line="135"
column="5"/>
</issue>
@@ -1325,7 +1309,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="140"
line="136"
column="5"/>
</issue>
@@ -1341,7 +1325,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="141"
line="137"
column="5"/>
</issue>
@@ -1357,7 +1341,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="142"
line="138"
column="5"/>
</issue>
@@ -1373,7 +1357,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="143"
line="139"
column="5"/>
</issue>
@@ -1389,7 +1373,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="144"
line="140"
column="5"/>
</issue>
@@ -1405,7 +1389,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="147"
line="143"
column="5"/>
</issue>
@@ -1421,7 +1405,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="148"
line="144"
column="5"/>
</issue>
@@ -1437,7 +1421,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="149"
line="145"
column="5"/>
</issue>
@@ -1453,7 +1437,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="150"
line="146"
column="5"/>
</issue>
@@ -1469,7 +1453,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
line="151"
line="147"
column="5"/>
</issue>
@@ -2621,7 +2605,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/strings.xml"
line="5902"
line="5806"
column="36"/>
</issue>
@@ -2637,7 +2621,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
line="179"
line="174"
column="41"/>
</issue>
@@ -2653,7 +2637,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
line="448"
line="419"
column="44"/>
</issue>
@@ -2669,7 +2653,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
line="454"
line="425"
column="44"/>
</issue>
@@ -2685,10 +2669,26 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
line="455"
line="426"
column="44"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" &lt;item name=&quot;strokeColor&quot;>@color/homepage_card_stroke_color&lt;/item>"
errorLine2=" ^">
<location
file="res/values/styles.xml"
line="461"
column="34"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
@@ -3089,68 +3089,4 @@
column="5"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" android:background=&quot;@color/divider_color&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/layout-sw600dp-land/wifi_settings_for_setup_wizard_xl.xml"
line="71"
column="13"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" android:background=&quot;@color/divider_color&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/layout-sw600dp/wifi_settings_for_setup_wizard_xl.xml"
line="71"
column="13"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" android:background=&quot;@color/divider_color&quot; /> &lt;!-- TODO: fix this -->"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/layout-sw600dp-land/wifi_settings_for_setup_wizard_xl.xml"
line="178"
column="9"/>
</issue>
<issue
id="HardCodedColor"
severity="Error"
message="Avoid using hardcoded color"
category="Correctness"
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" android:background=&quot;@color/divider_color&quot; /> &lt;!-- TODO: fix this -->"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/layout-sw600dp/wifi_settings_for_setup_wizard_xl.xml"
line="178"
column="9"/>
</issue>
</issues>

View File

@@ -1,228 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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.
-->
<RelativeLayout
android:id="@+id/layout_root"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="60dip"
android:paddingStart="@dimen/screen_margin_sides"
android:paddingEnd="@dimen/screen_margin_sides"
android:paddingBottom="0dip" >
<FrameLayout
android:id="@+id/top_padding_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true">
<!-- Set to gone when software keyboard appears -->
<View
android:id="@+id/top_padding"
android:layout_width="match_parent"
android:layout_height="94dip" />
</FrameLayout>
<TextView
android:id="@+id/wifi_setup_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="48dip"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="16dip"
android:layout_below="@id/top_padding_layout"
android:textSize="32dip"
android:textColor="@color/title_color"
android:text="@string/wifi_setup_title"
android:gravity="bottom"/>
<!-- Divider -->
<FrameLayout
android:id="@+id/top_divider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/wifi_setup_title">
<ProgressBar
android:id="@+id/scanning_progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal" />
<View
android:id="@+id/top_divider_no_progress"
android:layout_width="match_parent"
android:layout_height="3dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="0dip"
android:background="@color/divider_color"
android:visibility="gone" />
</FrameLayout>
<!-- Dummy view to have the left edge of following Views.
@id/content needs to have layout_width="match_parent" to accommodate
every views inside @id/wifi_config_ui while sometimes config ui becomes
very wide. -->
<View
android:id="@+id/dummy_for_left_edge"
android:layout_width="716dip"
android:layout_height="0dip"
android:layout_below="@id/top_divider"
android:layout_centerHorizontal="true" />
<RelativeLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/top_divider"
android:layout_alignStart="@id/dummy_for_left_edge"
android:layout_centerHorizontal="true">
<!-- Padding for @id/content shown when keyboard isn't available -->
<View
android:id="@+id/content_padding"
android:layout_width="match_parent"
android:layout_height="370dip"
android:visibility="gone" />
<FrameLayout
android:id="@+id/wifi_settings_fragment_layout"
android:layout_width="716dip"
android:layout_height="370dip">
<fragment
class="com.android.settings.wifi.WifiSettings"
android:id="@+id/wifi_setup_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout
android:id="@+id/wifi_config_ui"
android:layout_width="wrap_content"
android:minWidth="406dip"
android:layout_height="wrap_content"
android:minHeight="160dip"
android:layout_marginTop="10dip"
android:layout_alignParentStart="true"
android:visibility="gone" />
<LinearLayout
android:id="@+id/connecting_status_layout"
android:layout_width="716dip"
android:layout_height="360dip"
android:layout_marginTop="10dip"
android:visibility="gone">
<TextView
android:id="@+id/connecting_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="10dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="20sp" />
</LinearLayout>
</RelativeLayout>
<!-- Shown when @id/top_divider is using View instead of ProgressBar.
We need this padding to place @id/bottom_divider at the same position
regardless of @id/top_divider state.
Detail:
When ProgressBar is used in @id/top_divider, we have 7dip implicit
padding inside the ProgressBar object, while we don't have the
padding when View is used. As a result, all the objects below it
including @id/bottom_divider moves up/down in 7dip between those
two states. It is WAI for @id/content, but not for the others.
Note that we cannot let bottom dividers/buttons align with parent's
bottom edge using layout_alignParentBottom="true", since we'd like
to control bottom margin between @id/bottom_buttons and the edge
depending on software keyboard is shown/hidden.
We need to enclose @id/bottom_padding with @id/bottom_padding_layout
to let @id/bottom_divider use android:layout_below.
android:visibility="gone" really let the object go away,
causing @id/bottom_divider to lose the target for android:layout_below.
-->
<FrameLayout
android:id="@+id/bottom_padding_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/content">
<View
android:id="@+id/bottom_padding"
android:layout_width="match_parent"
android:layout_height="7dip"
android:visibility="gone" />
</FrameLayout>
<!-- Divider -->
<View
android:id="@+id/bottom_divider"
android:layout_width="match_parent"
android:layout_height="3dip"
android:layout_marginBottom="16dip"
android:layout_below="@id/bottom_padding_layout"
android:layout_alignStart="@id/content"
android:background="@color/divider_color" /> <!-- TODO: fix this -->
<RelativeLayout
android:id="@+id/bottom_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bottom_divider"
android:layout_alignStart="@id/bottom_divider"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/wifi_setup_add_network"
style="@style/setup_wizard_button"
android:layout_alignParentStart="true"
android:text="@string/wifi_setup_add_network"
android:enabled="false" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:orientation="horizontal">
<!-- This misleading name is for keeping consistency between non-XL
layouts -->
<Button android:id="@+id/wifi_setup_cancel"
style="@style/setup_wizard_button"
android:text="@string/wifi_setup_back"
android:visibility="gone" />
<Button android:id="@+id/wifi_setup_connect"
style="@style/setup_wizard_button"
android:layout_marginStart="16dip"
android:text="@string/wifi_setup_connect"
android:enabled="false"
android:visibility="gone" />
<Button android:id="@+id/wifi_setup_refresh_list"
style="@style/setup_wizard_button"
android:layout_marginStart="16dip"
android:text="@string/wifi_setup_refresh_list"
android:enabled="false" />
<Button android:id="@+id/wifi_setup_skip_or_next"
style="@style/setup_wizard_button"
android:layout_marginStart="16dip"
android:text="@string/wifi_setup_skip" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>

View File

@@ -1,238 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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.
-->
<RelativeLayout
android:id="@+id/layout_root"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="60dip"
android:paddingStart="@dimen/screen_margin_sides"
android:paddingEnd="@dimen/screen_margin_sides"
android:paddingBottom="0dip" >
<FrameLayout
android:id="@+id/top_padding_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true">
<!-- Set to gone when software keyboard appears -->
<View
android:id="@+id/top_padding"
android:layout_width="match_parent"
android:layout_height="94dip" />
</FrameLayout>
<TextView
android:id="@+id/wifi_setup_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="48dip"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="16dip"
android:layout_below="@id/top_padding_layout"
android:textSize="32dip"
android:textColor="@color/title_color"
android:text="@string/wifi_setup_title"
android:gravity="bottom"/>
<!-- Divider -->
<FrameLayout
android:id="@+id/top_divider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/wifi_setup_title">
<ProgressBar
android:id="@+id/scanning_progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal" />
<View
android:id="@+id/top_divider_no_progress"
android:layout_width="match_parent"
android:layout_height="3dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="0dip"
android:background="@color/divider_color"
android:visibility="gone" />
</FrameLayout>
<!-- Dummy view to have the left edge of following Views.
@id/content needs to have layout_width="match_parent" to accommodate
every views inside @id/wifi_config_ui while sometimes config ui becomes
very wide. -->
<View
android:id="@+id/dummy_for_left_edge"
android:layout_width="716dip"
android:layout_height="0dip"
android:layout_below="@id/top_divider"
android:layout_centerHorizontal="true" />
<RelativeLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/top_divider"
android:layout_alignStart="@id/dummy_for_left_edge"
android:layout_centerHorizontal="true">
<!-- Padding for @id/content shown when keyboard isn't available -->
<View
android:id="@+id/content_padding"
android:layout_width="match_parent"
android:layout_height="370dip"
android:visibility="gone" />
<FrameLayout
android:id="@+id/wifi_settings_fragment_layout"
android:layout_width="716dip"
android:layout_height="377dip">
<fragment
class="com.android.settings.wifi.WifiSettings"
android:id="@+id/wifi_setup_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout
android:id="@+id/wifi_config_ui"
android:layout_width="wrap_content"
android:minWidth="406dip"
android:layout_height="wrap_content"
android:minHeight="160dip"
android:layout_marginTop="10dip"
android:layout_alignParentStart="true"
android:visibility="gone" />
<LinearLayout
android:id="@+id/connecting_status_layout"
android:layout_width="716dip"
android:layout_height="360dip"
android:layout_marginTop="10dip"
android:visibility="gone">
<TextView
android:id="@+id/connecting_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="10dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="20sp" />
</LinearLayout>
</RelativeLayout>
<!-- Shown when @id/top_divider is using View instead of ProgressBar.
We need this padding to place @id/bottom_divider at the same position
regardless of @id/top_divider state.
Detail:
When ProgressBar is used in @id/top_divider, we have 7dip implicit
padding inside the ProgressBar object, while we don't have the
padding when View is used. As a result, all the objects below it
including @id/bottom_divider moves up/down in 7dip between those
two states. It is WAI for @id/content, but not for the others.
Note that we cannot let bottom dividers/buttons align with parent's
bottom edge using layout_alignParentBottom="true", since we'd like
to control bottom margin between @id/bottom_buttons and the edge
depending on software keyboard is shown/hidden.
We need to enclose @id/bottom_padding with @id/bottom_padding_layout
to let @id/bottom_divider use android:layout_below.
android:visibility="gone" really let the object go away,
causing @id/bottom_divider to lose the target for android:layout_below.
-->
<FrameLayout
android:id="@+id/bottom_padding_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/content">
<View
android:id="@+id/bottom_padding"
android:layout_width="match_parent"
android:layout_height="7dip"
android:visibility="gone" />
</FrameLayout>
<!-- Divider -->
<View
android:id="@+id/bottom_divider"
android:layout_width="match_parent"
android:layout_height="3dip"
android:layout_marginBottom="16dip"
android:layout_below="@id/bottom_padding_layout"
android:layout_alignStart="@id/content"
android:background="@color/divider_color" /> <!-- TODO: fix this -->
<LinearLayout
android:id="@+id/bottom_buttons"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bottom_divider"
android:layout_alignStart="@id/bottom_divider">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bottom_divider"
android:layout_alignStart="@id/bottom_divider"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/wifi_setup_add_network"
style="@style/setup_wizard_button"
android:layout_alignParentStart="true"
android:text="@string/wifi_setup_add_network"
android:enabled="false" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:orientation="horizontal">
<!-- This misleading name is for keeping consistency between non-XL
layouts -->
<Button android:id="@+id/wifi_setup_cancel"
style="@style/setup_wizard_button"
android:text="@string/wifi_setup_back"
android:visibility="gone" />
<Button android:id="@+id/wifi_setup_connect"
style="@style/setup_wizard_button"
android:layout_marginStart="16dip"
android:text="@string/wifi_setup_connect"
android:enabled="false"
android:visibility="gone" />
<Button android:id="@+id/wifi_setup_skip_or_next"
style="@style/setup_wizard_button"
android:layout_marginStart="16dip"
android:text="@string/wifi_setup_skip" />
</LinearLayout>
</RelativeLayout>
<Button android:id="@+id/wifi_setup_refresh_list"
style="@style/setup_wizard_button"
android:layout_alignParentEnd="true"
android:text="@string/wifi_setup_refresh_list"
android:enabled="false" />
</LinearLayout>
</RelativeLayout>

View File

@@ -15,7 +15,7 @@
limitations under the License.
-->
<androidx.cardview.widget.CardView
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -71,4 +71,4 @@
</LinearLayout>
</androidx.cardview.widget.CardView>
</com.google.android.material.card.MaterialCardView>

View File

@@ -15,7 +15,7 @@
limitations under the License.
-->
<androidx.cardview.widget.CardView
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/homepage_condition_half_card_height"
@@ -65,4 +65,4 @@
</LinearLayout>
</androidx.cardview.widget.CardView>
</com.google.android.material.card.MaterialCardView>

View File

@@ -15,7 +15,7 @@
limitations under the License.
-->
<androidx.cardview.widget.CardView
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -49,4 +49,4 @@
</LinearLayout>
</androidx.cardview.widget.CardView>
</com.google.android.material.card.MaterialCardView>

View File

@@ -15,7 +15,7 @@
limitations under the License.
-->
<androidx.cardview.widget.CardView
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -70,4 +70,4 @@
</LinearLayout>
</LinearLayout>
</ViewFlipper>
</androidx.cardview.widget.CardView>
</com.google.android.material.card.MaterialCardView>

View File

@@ -15,7 +15,7 @@
limitations under the License.
-->
<androidx.cardview.widget.CardView
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/suggestion_card"
android:layout_width="match_parent"
@@ -67,4 +67,4 @@
</LinearLayout>
</androidx.cardview.widget.CardView>
</com.google.android.material.card.MaterialCardView>

View File

@@ -20,12 +20,4 @@
<item name="android:windowNoTitle">true</item>
</style>
<style name="setup_wizard_button">
<item name="android:layout_width">wrap_content</item>
<item name="android:minWidth">208dip</item>
<item name="android:layout_height">48dip</item>
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
<item name="android:textSize">20sp</item>
</style>
</resources>

View File

@@ -96,17 +96,12 @@
<!-- Gestures settings -->
<color name="gestures_setting_background_color">#ffffff</color>
<color name="status_bar_color">#3c3c3c</color>
<!-- Color for the background of the shortcut icons.-->
<color name="shortcut_background">#fff5f5f5</color>
<!-- Color for preference icons on the Wifi Network Details page -->
<color name="wifi_details_icon_color">#8A000000</color>
<!-- The fallback color for tinting icons. Only used when colorControlNormal is unavailable -->
<color name="fallback_tintColor">#89000000</color>
<!-- Suggestion/condition colors -->
<color name="suggestion_condition_background">#f2f2f2</color>
<color name="condition_card_background">#f8f8f8</color>
@@ -128,6 +123,7 @@
<color name="homepage_location_background">#2EC7DC</color>
<color name="homepage_about_background">#9FA8DA</color>
<color name="homepage_privacy_background">#5E97F6</color>
<color name="homepage_card_stroke_color">#1f000000</color>
<!-- End of dashboard/homepage icon background colors -->
<color name="switchbar_text_color">@android:color/white</color>

View File

@@ -327,8 +327,6 @@
<!-- Homepage cards size and padding -->
<dimen name="homepage_card_icon_size">24dp</dimen>
<dimen name="homepage_card_corner_radius">8dp</dimen>
<dimen name="homepage_card_elevation">2dp</dimen>
<dimen name="homepage_card_vertical_margin">8dp</dimen>
<dimen name="homepage_card_side_margin">4dp</dimen>
<dimen name="homepage_card_padding_start">16dp</dimen>

View File

@@ -5721,116 +5721,14 @@
<!-- Message displayed to let the user know that some of the options are disabled by admin. [CHAR LIMIT=NONE] -->
<string name="admin_disabled_other_options">Other options are disabled by your admin</string>
<string name="admin_more_details">More details</string>
<string name="sound_category_sound_title">General</string>
<string name="notification_log_title">Notification log</string>
<!-- Category title for phone call's ringtone and vibration settings in the Sound Setting.
[CHAR LIMIT=40] -->
<string name="sound_category_call_ringtone_vibrate_title">Call ringtone &amp; vibrate</string>
<!-- Category title for system-wide notification and feedback settings in the Sound Setting.
[CHAR LIMIT=40] -->
<string name="sound_category_system_title">System</string>
<!-- Wifi Setup For Setup Wizard with XL screen -->
<!-- Title shown in Wifi Setup Wizard with XL screen -->
<string name="wifi_setup_title">Wi\u2011Fi setup</string>
<!-- Title shown in Wifi Setup Wizard with XL screen when
a user is configuring password for a network.
The argument should be the name of the network.
[CHAR LIMIT=50] -->
<string name="wifi_setup_title_editing_network">Connect to Wi\u2011Fi network <xliff:g id="network_name" example="Happy Mobile">%s</xliff:g></string>
<!-- Title shown in Wifi Setup For Setup Wizard with XL screen when
the device is connecting a network the user specified.
The argument should be the name of the network.
[CHAR LIMIT=50] -->
<string name="wifi_setup_title_connecting_network">Connecting to Wi\u2011Fi network <xliff:g id="network_name" example="Happy Mobile">%s</xliff:g>\u2026</string>
<!-- Title shown in Wifi Setup For Setup Wizard with XL screen when
the device successfully connected to a network the user specified.
The argument should be the name of the network.
[CHAR LIMIT=50] -->
<string name="wifi_setup_title_connected_network">Connected to Wi\u2011Fi network <xliff:g id="network_name" example="Happy Mobile">%s</xliff:g></string>
<!-- Title shown in Wifi Setup For Setup Wizard with XL screen when
a user is adding a network.
[CHAR LIMIT=50] -->
<string name="wifi_setup_title_add_network">Add a network</string>
<!-- Text message shown when Wifi is not connected.
Used in Wifi Setup For Setup Wizard with XL screen. -->
<string name="wifi_setup_not_connected">Not connected</string>
<!-- Button message shown on the button adding manual setting.
Used in Wifi Setup For Setup Wizard with XL screen. -->
<string name="wifi_setup_add_network">Add network</string>
<!-- Button message shown on the button refreshing a list of network.
Used in Wifi Setup For Setup Wizard with XL screen. -->
<string name="wifi_setup_refresh_list">Refresh list</string>
<!-- Button message shown on the button enabling users skip Wifi Setup.
Used in Wifi Setup For Setup Wizard with XL screen. [CHAR LIMIT=10] -->
<string name="wifi_setup_skip">Skip</string>
<!-- Button message shown on the button enabling users go the next step.
Used in Wifi Setup For Setup Wizard with XL screen. [CHAR LIMIT=10] -->
<string name="wifi_setup_next">Next</string>
<!-- Button label to go back to previous screen. Used in SetupWizard for
XLarge screen [CHAR LIMIT=10] -->
<string name="wifi_setup_back">Back</string>
<!-- Button label to show detailed dialog for a selected Wi-Fi settings.
Used in SetupWizard for XLarge screen [CHAR LIMIT=20] -->
<string name="wifi_setup_detail">Network details</string>
<!-- Button label to connect to a Wi-Fi network.
Used in SetupWizard for XLarge screen [CHAR LIMIT=10] -->
<string name="wifi_setup_connect">Connect</string>
<!-- Button label to delete a Wi-Fi network.
Used in SetupWizard for XLarge screen [CHAR LIMIT=10] -->
<string name="wifi_setup_forget">Forget</string>
<!-- Button label to save a Wi-Fi network configuration.
Used in SetupWizard for XLarge screen [CHAR LIMIT=10] -->
<string name="wifi_setup_save">Save</string>
<!-- Button label to dismiss the dialog.
Used in SetupWizard for XLarge screen [CHAR LIMIT=10] -->
<string name="wifi_setup_cancel">Cancel</string>
<!-- The message shown above available networks when the device is scanning
available networks [CHAR LIMIT=35] -->
<string name="wifi_setup_status_scanning">Scanning networks\u2026</string>
<!-- Message shown above available network when there's no connected network.
Used in Wifi Setup For Setup Wizard with XL screen. -->
<string name="wifi_setup_status_select_network">Tap a network to connect to it</string>
<!-- Message shown above available networks when a user clicked one of available
networks and the UI is showing one possible existing network.
Used in Wifi Setup. -->
<string name="wifi_setup_status_existing_network">Connect to existing network</string>
<!-- Message shown above available networks when a user clicked one of available
networks and the network doesn't require configuration (e.g. password)
Used in Wifi Setup with XL screen. [CHAR LIMIT=35] -->
<string name="wifi_setup_status_unsecured_network">Connect to unsecured network</string>
<!-- Message shown above available networks when a user clicked one of available
networks and the UI is prompting the user to edit the network configuration
if needed. Used in Wifi Setup with XL screen. [CHAR LIMIT=35] -->
<string name="wifi_setup_status_edit_network">Type network configuration</string>
<!-- The message shown above available networks when a user clicked "Add network"
button. Used in Wifi Setup For Setup Wizard with XL screen. [CHAR LIMIT=35] -->
<string name="wifi_setup_status_new_network">Connect to new network</string>
<!-- The message shown above available networks when a user clicked one of available
networks or created another profile and he/she is waiting for the connection
is established.
Used in Wifi Setup For Setup Wizard with XL screen. [CHAR LIMIT=35] -->
<string name="wifi_setup_status_connecting">Connecting\u2026</string>
<!-- The message shown above available networks when connection is established,
letting a user to proceed to the next step of the SetupWizard.
Used in Wifi Setup For Setup Wizard with XL screen. [CHAR LIMIT=35] -->
<string name="wifi_setup_status_proceed_to_next">Go to the next step</string>
<!-- The message shown above available networks when a user clicked a network secured by
EAP. We don't allow the user to connect it.
Used in Wifi Setup For Setup Wizard with XL screen. [CHAR LIMIT=35] -->
<string name="wifi_setup_status_eap_not_supported">EAP isn\u2019t supported.</string>
<!-- Message shown when users select EAP in Wi-Fi settings for SetupWizard,
saying EAP can't be configured in SetupWizard flow.
[CHAR LIMIT=NONE] -->
<string name="wifi_setup_eap_not_supported">You can\u2019t configure an EAP Wi\u2011Fi connection during setup. After setup, you can do that in Settings &gt; Wireless &amp; networks.</string>
<!-- Message shown when the device is connecting a network [CHAR LIMIT=NONE] -->
<string name="wifi_setup_description_connecting">Connecting can take a few minutes\u2026</string>
<!-- Message shown when the device is connected to a network [CHAR LIMIT=NONE] -->
<string name="wifi_setup_description_connected">Tap <b>Next</b> to continue with setup.\n\nTap <b>Back</b> to connect to a different Wi\u2011Fi network.</string>
<!-- Do not translate. This is a stub which will be removed soon. -->
<string name="time_zone_auto_stub" translatable="false">Select Time Zone</string>

View File

@@ -164,11 +164,6 @@
<item name="android:orientation">vertical</item>
</style>
<style name="setup_wizard_button">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
<style name="ConfirmDeviceCredentialsAnimationStyle"
parent="@*android:style/Animation.Material.Activity">
<item name="android:activityOpenEnterAnimation">@anim/confirm_credential_open_enter</item>
@@ -461,8 +456,10 @@
<item name="android:layout_marginBottom">@dimen/homepage_card_vertical_margin</item>
<item name="android:layout_marginStart">@dimen/homepage_card_side_margin</item>
<item name="android:layout_marginEnd">@dimen/homepage_card_side_margin</item>
<item name="cardCornerRadius">@dimen/homepage_card_corner_radius</item>
<item name="cardElevation">@dimen/homepage_card_elevation</item>
<item name="cardCornerRadius">8dp</item>
<item name="cardElevation">0dp</item>
<item name="strokeColor">@color/homepage_card_stroke_color</item>
<item name="strokeWidth">1dp</item>
</style>
<style name="ConditionCardBorderlessButton"

View File

@@ -19,11 +19,10 @@ package com.android.settings.homepage.contextualcards.conditional;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
@@ -40,7 +39,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
@RunWith(SettingsRobolectricTestRunner.class)
public class ConditionContextualCardRendererTest {
@@ -49,25 +49,29 @@ public class ConditionContextualCardRendererTest {
private ControllerRendererPool mControllerRendererPool;
@Mock
private ConditionContextualCardController mController;
private Context mContext;
private Activity mActivity;
private ConditionContextualCardRenderer mRenderer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mRenderer = new ConditionContextualCardRenderer(mContext, mControllerRendererPool);
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mRenderer = new ConditionContextualCardRenderer(mActivity, mControllerRendererPool);
}
@Test
public void bindView_shouldSetListener() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
final View card = view.findViewById(R.id.content);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildConditionContextualCard());
@@ -79,12 +83,12 @@ public class ConditionContextualCardRendererTest {
@Test
public void viewClick_shouldInvokeControllerPrimaryClick() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
final View card = view.findViewById(R.id.content);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildConditionContextualCard());
@@ -103,7 +107,7 @@ public class ConditionContextualCardRendererTest {
.setName("test_name")
.setTitleText("test_title")
.setSummaryText("test_summary")
.setIconDrawable(mContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.setIconDrawable(mActivity.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.setIsHalfWidth(true)
.build();
}

View File

@@ -18,17 +18,17 @@ package com.android.settings.homepage.contextualcards.conditional;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
import com.android.settings.homepage.contextualcards.ContextualCard;
import com.android.settings.homepage.contextualcards.ControllerRendererPool;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -38,7 +38,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
import java.util.ArrayList;
import java.util.List;
@@ -50,24 +51,28 @@ public class ConditionHeaderContextualCardRendererTest {
private ControllerRendererPool mControllerRendererPool;
@Mock
private ConditionContextualCardController mController;
private Context mContext;
private Activity mActivity;
private ConditionHeaderContextualCardRenderer mRenderer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mRenderer = new ConditionHeaderContextualCardRenderer(mContext, mControllerRendererPool);
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mRenderer = new ConditionHeaderContextualCardRenderer(mActivity, mControllerRendererPool);
}
@Test
public void bindView_shouldSetClickListener() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL_HEADER)).thenReturn(mController);
mRenderer.bindView(viewHolder, generateConditionHeaderContextualCard());
@@ -79,11 +84,11 @@ public class ConditionHeaderContextualCardRendererTest {
@Test
public void bindView_clickView_shouldSetTrueToIsConditionExpanded() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL_HEADER)).thenReturn(mController);
mRenderer.bindView(viewHolder, generateConditionHeaderContextualCard());

View File

@@ -23,7 +23,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
@@ -40,7 +40,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
@RunWith(SettingsRobolectricTestRunner.class)
public class LegacySuggestionContextualCardRendererTest {
@@ -48,26 +49,31 @@ public class LegacySuggestionContextualCardRendererTest {
private ControllerRendererPool mControllerRendererPool;
@Mock
private LegacySuggestionContextualCardController mController;
private Context mContext;
private Activity mActivity;
private LegacySuggestionContextualCardRenderer mRenderer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mRenderer = new LegacySuggestionContextualCardRenderer(mContext, mControllerRendererPool);
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mRenderer = new LegacySuggestionContextualCardRenderer(mActivity, mControllerRendererPool);
}
@Test
public void bindView_shouldSetListener() {
final int viewType = mRenderer.getViewType(true /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View card = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View card = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(card);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.LEGACY_SUGGESTION)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildContextualCard());
@@ -79,11 +85,11 @@ public class LegacySuggestionContextualCardRendererTest {
@Test
public void viewClick_shouldInvokeControllerPrimaryClick() {
final int viewType = mRenderer.getViewType(true /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View card = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View card = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(card);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.LEGACY_SUGGESTION)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildContextualCard());
@@ -99,7 +105,7 @@ public class LegacySuggestionContextualCardRendererTest {
.setName("test_name")
.setTitleText("test_title")
.setSummaryText("test_summary")
.setIconDrawable(mContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.setIconDrawable(mActivity.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.build();
}
}

View File

@@ -20,7 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import android.content.Context;
import android.app.Activity;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
@@ -45,7 +45,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
@RunWith(SettingsRobolectricTestRunner.class)
public class SliceContextualCardRendererTest {
@@ -54,19 +55,21 @@ public class SliceContextualCardRendererTest {
private LiveData<Slice> mSliceLiveData;
@Mock
private ControllerRendererPool mControllerRendererPool;
@Mock
private SliceContextualCardController mController;
private Context mContext;
private Activity mActivity;
private SliceContextualCardRenderer mRenderer;
private LifecycleOwner mLifecycleOwner;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mLifecycleOwner = new ContextualCardsFragment();
mRenderer = new SliceContextualCardRenderer(mContext, mLifecycleOwner,
mRenderer = new SliceContextualCardRenderer(mActivity, mLifecycleOwner,
mControllerRendererPool);
}
@@ -156,9 +159,9 @@ public class SliceContextualCardRendererTest {
private RecyclerView.ViewHolder getSliceViewHolder() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
return mRenderer.createViewHolder(view);
}