Snap for 11444718 from 13e570f104 to 24Q3-release

Change-Id: Ie9e053c58327b2b258919e2cbeb25f64cc04ae1c
This commit is contained in:
Android Build Coastguard Worker
2024-02-14 00:21:41 +00:00
34 changed files with 709 additions and 272 deletions

View File

@@ -0,0 +1,26 @@
<!--
~ Copyright (C) 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M5,3H19C20.1,3 21,3.9 21,5V19C21,20.1 20.1,21 19,21H5C3.9,21 3,20.1 3,19V5C3,3.9 3.9,3 5,3ZM13.5,15.501L12.93,12.271C13.57,11.941 14,11.271 14,10.501C14,9.401 13.1,8.501 12,8.501C10.9,8.501 10,9.401 10,10.501C10,11.271 10.43,11.941 11.07,12.271L10.5,15.501H13.5Z"
android:fillColor="?android:attr/colorAccent"
android:fillType="evenOdd"/>
</vector>

View File

@@ -1,27 +0,0 @@
<!--
~ Copyright (C) 2023 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M420,600L540,600L517,471Q537,461 548.5,442Q560,423 560,400Q560,367 536.5,343.5Q513,320 480,320Q447,320 423.5,343.5Q400,367 400,400Q400,423 411.5,442Q423,461 443,471L420,600ZM480,880Q341,845 250.5,720.5Q160,596 160,444L160,200L480,80L800,200L800,444Q800,596 709.5,720.5Q619,845 480,880ZM480,796Q584,763 652,664Q720,565 720,444L720,255L480,165L240,255L240,444Q240,565 308,664Q376,763 480,796ZM480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Z"/>
</vector>

View File

@@ -0,0 +1,84 @@
<!--
~ Copyright (C) 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="364dp"
android:height="266dp"
android:viewportWidth="364"
android:viewportHeight="266">
<group>
<clip-path
android:pathData="M0,0.95h364v265.05h-364z"/>
<path
android:pathData="M339.42,265.47H24.58C11.07,265.47 0,254.17 0,240.39V26.42C0,12.6 11.07,1.3 24.58,1.3H339.52C352.93,1.3 364,12.6 364,26.38V240.49C364,254.17 352.93,265.47 339.42,265.47Z"
android:fillColor="#000000"/>
<path
android:pathData="M300.32,99.22C310.82,106.16 324.97,103.31 331.93,92.85C338.89,82.39 336.03,68.29 325.54,61.35L301.31,45.32C290.82,38.38 276.67,41.24 269.7,51.69C262.74,62.15 265.6,76.26 276.1,83.19L300.32,99.22Z"
android:fillColor="#C7EBD4"/>
<path
android:pathData="M323.02,78.05L314.03,79.7C313.56,79.79 313.24,80.25 313.33,80.72L314.98,89.71C315.07,90.19 315.52,90.5 316,90.41L324.99,88.76C325.46,88.68 325.78,88.22 325.69,87.75L324.04,78.76C323.95,78.28 323.5,77.97 323.02,78.05Z"
android:fillColor="#5BB974"/>
<path
android:pathData="M310.61,70.73L310.59,70.95C311.1,73.37 309.48,75.68 307.04,76.1L298.41,77.6C295.97,78.01 293.62,76.36 293.19,73.99L293.21,73.77C292.7,71.35 294.32,69.04 296.76,68.63L305.39,67.13C307.83,66.71 310.1,68.31 310.61,70.73Z"
android:fillColor="#5BB974"/>
<path
android:pathData="M280.24,67.28C283.75,69.56 288.46,68.56 290.74,65.05C293.02,61.54 292.02,56.84 288.51,54.56C285,52.28 280.29,53.28 278.02,56.79C275.73,60.3 276.73,65 280.24,67.28Z"
android:fillColor="#5BB974"/>
<path
android:pathData="M68.38,36.61C69.99,35.55 71.95,35.17 73.84,35.55C75.73,35.92 77.39,37.02 78.48,38.6L78.71,38.97L80.09,41.3C80.7,42.37 81.58,43.26 82.64,43.89C83.7,44.52 84.9,44.87 86.14,44.89L88.76,44.96C90.69,45.04 92.52,45.87 93.84,47.28C95.16,48.69 95.87,50.56 95.82,52.49C95.77,52.62 95.77,52.77 95.83,52.91L95.52,55.59C95.39,56.8 95.58,58.03 96.06,59.15C96.54,60.28 97.3,61.26 98.27,62L100.32,63.72C101.82,64.92 102.8,66.65 103.03,68.56C103.26,70.47 102.73,72.39 101.56,73.91C101.44,73.98 101.39,74.18 101.27,74.26L99.55,76.2C98.72,77.1 98.14,78.2 97.87,79.4C97.59,80.59 97.63,81.84 97.99,83.01L98.66,85.58C99.17,87.44 98.92,89.43 97.97,91.11C97.02,92.78 95.44,94.02 93.58,94.55C93.46,94.63 93.26,94.58 93.13,94.66L90.56,95.23C89.36,95.48 88.24,96.04 87.32,96.84C86.4,97.64 85.69,98.67 85.28,99.82L84.38,102.36C83.69,104.16 82.33,105.61 80.58,106.42C78.83,107.22 76.83,107.31 75.02,106.65C74.88,106.64 74.74,106.57 74.64,106.46L72.32,105.41C71.19,104.94 69.96,104.75 68.74,104.85C67.52,104.96 66.34,105.36 65.31,106.01L63.11,107.43C61.5,108.48 59.54,108.86 57.65,108.49C55.76,108.12 54.1,107.02 53.01,105.44L52.78,105.07L51.4,102.75C50.78,101.68 49.89,100.79 48.81,100.17C47.74,99.55 46.52,99.22 45.28,99.22L42.66,99.15C40.72,99.07 38.9,98.24 37.58,96.83C36.25,95.42 35.54,93.55 35.6,91.62C35.64,91.49 35.64,91.34 35.59,91.2L35.89,88.52C36.02,87.31 35.84,86.08 35.36,84.95C34.88,83.83 34.12,82.84 33.15,82.09L31.08,80.46C30.32,79.87 29.68,79.13 29.21,78.28C28.74,77.44 28.43,76.51 28.32,75.56C28.21,74.6 28.29,73.63 28.55,72.7C28.82,71.77 29.27,70.9 29.87,70.15C29.99,70.07 30.04,69.87 30.16,69.79L31.89,67.77C32.72,66.87 33.3,65.76 33.58,64.57C33.85,63.38 33.81,62.13 33.46,60.96L32.79,58.37C32.29,56.51 32.54,54.53 33.49,52.86C34.44,51.18 36.01,49.95 37.87,49.42C37.99,49.34 38.19,49.39 38.32,49.31L40.89,48.73C42.09,48.48 43.21,47.92 44.13,47.12C45.06,46.31 45.76,45.29 46.17,44.13L47.07,41.6C47.75,39.81 49.12,38.35 50.87,37.55C52.62,36.75 54.62,36.66 56.43,37.31C56.57,37.33 56.71,37.4 56.81,37.5L59.2,38.58C60.33,39.04 61.56,39.23 62.78,39.13C64,39.02 65.18,38.63 66.21,37.97L68.38,36.61Z"
android:fillColor="#CEE3FF"/>
<path
android:pathData="M60.5,74.56C59.92,74.56 59.44,74.37 59.05,73.97C58.65,73.58 58.45,73.09 58.45,72.52C58.45,71.95 58.65,71.46 59.05,71.07C59.44,70.67 59.92,70.48 60.5,70.48C61.07,70.48 61.55,70.67 61.95,71.07C62.34,71.46 62.54,71.95 62.54,72.52C62.54,73.09 62.34,73.58 61.95,73.97C61.55,74.37 61.07,74.56 60.5,74.56ZM70.3,74.56C69.73,74.56 69.25,74.37 68.85,73.97C68.46,73.58 68.26,73.09 68.26,72.52C68.26,71.95 68.46,71.46 68.85,71.07C69.25,70.67 69.73,70.48 70.3,70.48C70.88,70.48 71.36,70.67 71.75,71.07C72.15,71.46 72.35,71.95 72.35,72.52C72.35,73.09 72.15,73.58 71.75,73.97C71.36,74.37 70.88,74.56 70.3,74.56ZM65.4,83.96C69.05,83.96 72.14,82.69 74.68,80.16C77.21,77.63 78.48,74.54 78.48,70.89C78.48,70.23 78.43,69.6 78.35,68.99C78.27,68.37 78.12,67.78 77.9,67.21C77.33,67.34 76.76,67.45 76.19,67.51C75.61,67.58 75.02,67.62 74.39,67.62C71.91,67.62 69.57,67.09 67.36,66.02C65.15,64.96 63.27,63.48 61.72,61.57C60.85,63.69 59.6,65.54 57.98,67.11C56.36,68.67 54.48,69.85 52.32,70.64V70.89C52.32,74.54 53.59,77.63 56.12,80.16C58.66,82.69 61.75,83.96 65.4,83.96ZM65.4,87.23C63.14,87.23 61.01,86.8 59.03,85.94C57.04,85.09 55.31,83.92 53.84,82.45C52.36,80.98 51.2,79.25 50.34,77.26C49.48,75.27 49.05,73.15 49.05,70.89C49.05,68.62 49.48,66.5 50.34,64.51C51.2,62.52 52.36,60.79 53.84,59.32C55.31,57.85 57.04,56.69 59.03,55.83C61.01,54.97 63.14,54.54 65.4,54.54C67.66,54.54 69.79,54.97 71.77,55.83C73.76,56.69 75.49,57.85 76.96,59.32C78.43,60.79 79.6,62.52 80.46,64.51C81.32,66.5 81.74,68.62 81.74,70.89C81.74,73.15 81.32,75.27 80.46,77.26C79.6,79.25 78.43,80.98 76.96,82.45C75.49,83.92 73.76,85.09 71.77,85.94C69.79,86.8 67.66,87.23 65.4,87.23ZM63.19,58.01C64.34,59.92 65.89,61.45 67.85,62.61C69.81,63.77 71.99,64.35 74.39,64.35C74.77,64.35 75.14,64.33 75.49,64.29C75.85,64.25 76.21,64.2 76.6,64.14C75.45,62.24 73.9,60.7 71.94,59.55C69.98,58.39 67.8,57.81 65.4,57.81C65.02,57.81 64.65,57.83 64.3,57.87C63.94,57.91 63.57,57.96 63.19,58.01ZM53.02,66.76C54.41,65.97 55.62,64.95 56.66,63.69C57.69,62.44 58.47,61.04 58.98,59.49C57.6,60.28 56.38,61.3 55.35,62.55C54.31,63.8 53.54,65.21 53.02,66.76Z"
android:fillColor="#559DFD"/>
<path
android:pathData="M185.48,137.47C186.07,137.47 186.56,137.28 186.94,136.89C187.33,136.51 187.52,136.02 187.52,135.43C187.52,134.84 187.33,134.35 186.94,133.96C186.56,133.58 186.07,133.39 185.48,133.39C184.88,133.39 184.4,133.58 184.01,133.96C183.62,134.35 183.43,134.84 183.43,135.43C183.43,136.02 183.62,136.51 184.01,136.89C184.4,137.28 184.88,137.47 185.48,137.47Z"
android:fillColor="#202124"/>
<path
android:pathData="M54.83,176.56L60.78,178.1C63.63,178.83 66.64,178.74 69.45,177.82L75.29,175.92C86.88,172.14 98.07,182.63 94.99,194.4L93.44,200.33C92.69,203.18 92.78,206.18 93.69,208.97L95.6,214.79C99.37,226.35 88.83,237.52 77.03,234.47L71.09,232.93C68.23,232.19 65.22,232.29 62.42,233.2L56.58,235.11C44.98,238.89 33.8,228.4 36.88,216.63L38.43,210.7C39.17,207.85 39.08,204.85 38.17,202.06L36.27,196.23C32.49,184.68 43.03,173.51 54.83,176.56Z"
android:fillColor="#FFF7DD"/>
<path
android:pathData="M80.51,190.74m-6.18,0a6.18,6.18 0,1 1,12.37 0a6.18,6.18 0,1 1,-12.37 0"
android:fillColor="#FFC800"/>
<path
android:pathData="M50.47,219.9m-6.18,0a6.18,6.18 0,1 1,12.37 0a6.18,6.18 0,1 1,-12.37 0"
android:fillColor="#FFC800"/>
<path
android:pathData="M80.51,219.9m-6.18,0a6.18,6.18 0,1 1,12.37 0a6.18,6.18 0,1 1,-12.37 0"
android:fillColor="#FFC800"/>
<path
android:pathData="M77.6,193.13L50.21,220.52"
android:strokeWidth="1.76699"
android:fillColor="#00000000"
android:strokeColor="#FFC800"/>
<path
android:pathData="M80.07,219.9L50.47,219.9"
android:strokeWidth="1.76699"
android:fillColor="#00000000"
android:strokeColor="#FFC800"/>
<path
android:pathData="M311.22,173.59L289.22,173.9C286.98,173.93 284.78,174.55 282.85,175.7C280.92,176.85 279.34,178.48 278.25,180.44L267.53,199.55C266.44,201.5 265.88,203.71 265.91,205.95C265.94,208.18 266.56,210.38 267.72,212.3L278.99,231.12C280.14,233.04 281.78,234.63 283.74,235.72C285.7,236.81 287.91,237.36 290.15,237.33L312.15,237.01C314.39,236.99 316.59,236.37 318.52,235.22C320.45,234.08 322.04,232.45 323.14,230.49L333.84,211.37C334.93,209.41 335.49,207.21 335.45,204.97C335.42,202.73 334.79,200.54 333.64,198.62L322.38,179.8C321.23,177.88 319.59,176.3 317.63,175.21C315.67,174.12 313.46,173.56 311.22,173.59Z"
android:fillColor="#CEE3FF"/>
<path
android:pathData="M285.54,202.36C285.35,202.24 285.23,202.07 285.18,201.88C285.14,201.68 285.19,201.47 285.35,201.25C286.94,198.95 288.98,197.13 291.46,195.8C293.93,194.48 296.6,193.77 299.45,193.68C302.3,193.59 305.02,194.11 307.58,195.24C310.15,196.37 312.32,198.05 314.08,200.28C314.28,200.51 314.35,200.72 314.28,200.91C314.22,201.1 314.11,201.26 313.96,201.4C313.8,201.53 313.61,201.6 313.4,201.59C313.18,201.59 312.99,201.48 312.82,201.27C311.28,199.25 309.32,197.72 306.96,196.69C304.6,195.66 302.11,195.19 299.5,195.27C296.89,195.35 294.46,195.98 292.21,197.15C289.95,198.33 288.11,199.97 286.67,202.09C286.51,202.33 286.33,202.47 286.11,202.51C285.9,202.54 285.71,202.49 285.54,202.36ZM304.89,221.4C302.07,220.8 299.73,219.5 297.89,217.5C296.05,215.5 295.09,213.01 294.99,210.04C294.95,208.71 295.4,207.58 296.34,206.65C297.28,205.72 298.44,205.23 299.81,205.18C301.18,205.14 302.37,205.56 303.37,206.43C304.36,207.3 304.88,208.4 304.92,209.73C304.95,210.6 305.31,211.33 306,211.9C306.69,212.48 307.5,212.76 308.41,212.73C309.33,212.7 310.1,212.38 310.73,211.76C311.35,211.14 311.65,210.39 311.62,209.52C311.53,206.44 310.3,203.89 307.95,201.86C305.6,199.84 302.83,198.87 299.66,198.97C296.48,199.07 293.79,200.21 291.56,202.38C289.34,204.54 288.28,207.15 288.37,210.21C288.39,210.84 288.48,211.64 288.63,212.59C288.78,213.54 289.11,214.65 289.6,215.9C289.69,216.14 289.69,216.35 289.6,216.54C289.51,216.73 289.36,216.87 289.15,216.96C288.94,217.04 288.73,217.04 288.52,216.96C288.32,216.87 288.17,216.72 288.09,216.51C287.65,215.49 287.33,214.47 287.12,213.45C286.92,212.44 286.79,211.38 286.76,210.29C286.65,206.77 287.86,203.77 290.38,201.3C292.9,198.83 295.96,197.54 299.57,197.42C303.2,197.31 306.36,198.4 309.05,200.71C311.73,203.02 313.13,205.94 313.24,209.47C313.28,210.79 312.84,211.92 311.91,212.84C310.98,213.76 309.83,214.24 308.46,214.28C307.09,214.32 305.9,213.91 304.89,213.06C303.88,212.2 303.35,211.1 303.31,209.78C303.28,208.9 302.93,208.18 302.25,207.6C301.57,207.02 300.78,206.75 299.86,206.78C298.95,206.81 298.17,207.13 297.53,207.75C296.89,208.37 296.58,209.11 296.61,209.99C296.69,212.56 297.53,214.69 299.13,216.36C300.73,218.04 302.77,219.18 305.24,219.8C305.48,219.87 305.65,220 305.74,220.18C305.82,220.37 305.84,220.56 305.8,220.78C305.75,220.96 305.64,221.13 305.49,221.27C305.33,221.4 305.13,221.45 304.89,221.4ZM290.53,193.88C290.32,194.02 290.1,194.06 289.89,194C289.67,193.94 289.5,193.81 289.39,193.6C289.27,193.39 289.24,193.2 289.29,193.02C289.34,192.85 289.47,192.69 289.68,192.55C291.16,191.71 292.72,191.05 294.35,190.57C295.97,190.1 297.64,189.83 299.33,189.78C301.05,189.73 302.74,189.88 304.39,190.24C306.05,190.6 307.66,191.14 309.21,191.86C309.46,191.99 309.61,192.14 309.65,192.32C309.7,192.51 309.68,192.7 309.61,192.88C309.53,193.07 309.4,193.22 309.22,193.34C309.03,193.45 308.8,193.44 308.53,193.32C307.08,192.65 305.59,192.14 304.06,191.8C302.53,191.47 300.97,191.32 299.38,191.37C297.82,191.42 296.29,191.65 294.8,192.05C293.3,192.46 291.88,193.07 290.53,193.88ZM296.15,221.12C294.51,219.52 293.24,217.88 292.34,216.2C291.44,214.51 290.95,212.5 290.88,210.17C290.8,207.75 291.63,205.69 293.35,203.97C295.07,202.26 297.19,201.36 299.69,201.28C302.19,201.21 304.37,201.97 306.23,203.57C308.08,205.17 309.05,207.18 309.12,209.6C309.13,209.84 309.06,210.03 308.92,210.18C308.77,210.33 308.58,210.41 308.34,210.42C308.12,210.42 307.93,210.36 307.77,210.22C307.6,210.07 307.52,209.88 307.51,209.65C307.45,207.66 306.65,206.01 305.11,204.72C303.58,203.43 301.79,202.81 299.74,202.88C297.7,202.94 295.96,203.66 294.54,205.05C293.11,206.44 292.43,208.13 292.49,210.12C292.56,212.27 292.99,214.08 293.79,215.55C294.59,217.03 295.74,218.5 297.24,219.97C297.41,220.12 297.5,220.31 297.5,220.52C297.51,220.73 297.44,220.92 297.28,221.08C297.12,221.25 296.94,221.33 296.72,221.34C296.51,221.35 296.32,221.27 296.15,221.12ZM308.25,218.03C305.86,218.11 303.76,217.38 301.94,215.84C300.13,214.3 299.19,212.32 299.11,209.91C299.11,209.7 299.17,209.51 299.32,209.35C299.46,209.18 299.65,209.1 299.89,209.09C300.14,209.08 300.33,209.15 300.49,209.31C300.64,209.46 300.72,209.65 300.73,209.86C300.79,211.85 301.57,213.46 303.06,214.69C304.55,215.91 306.27,216.5 308.2,216.44C308.37,216.43 308.59,216.41 308.89,216.38C309.18,216.34 309.49,216.29 309.81,216.23C310.05,216.17 310.26,216.2 310.44,216.31C310.62,216.42 310.74,216.6 310.8,216.84C310.86,217.05 310.83,217.23 310.7,217.4C310.57,217.56 310.4,217.67 310.18,217.73C309.7,217.88 309.28,217.97 308.92,217.99C308.56,218.01 308.33,218.03 308.25,218.03Z"
android:fillColor="#669DF6"/>
<path
android:pathData="M214.98,100.49V166.46H149.02V100.49H214.98ZM214.98,91.07H149.02C143.83,91.07 139.59,95.31 139.59,100.49V166.46C139.59,171.64 143.83,175.88 149.02,175.88H214.98C220.17,175.88 224.41,171.64 224.41,166.46V100.49C224.41,95.31 220.17,91.07 214.98,91.07Z"
android:fillColor="#669DF6"/>
<path
android:pathData="M186.4,134.74L189.09,149.96H174.95L177.64,134.74C174.62,133.19 172.6,130.03 172.6,126.4C172.6,121.22 176.84,116.98 182.02,116.98C187.2,116.98 191.44,121.22 191.44,126.4C191.44,130.03 189.42,133.19 186.4,134.74Z"
android:fillColor="#669DF6"/>
</group>
</vector>

View File

@@ -0,0 +1,82 @@
<!--
~ Copyright (C) 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="412dp"
android:height="300dp"
android:viewportWidth="364"
android:viewportHeight="265">
<group>
<clip-path
android:pathData="M0,0h364v265h-364z"/>
<group>
<clip-path
android:pathData="M0,0h364v265.05h-364z"/>
<path
android:pathData="M339.44,265.05H24.56C11.04,265.05 0,253.74 0,239.87V25.18C0,11.31 11.04,0 24.56,0H339.53C352.96,0 364,11.31 364,25.18V240.05C364,253.74 352.96,265.05 339.44,265.05Z"
android:fillColor="#000000"/>
<path
android:pathData="M85.7,153.29a17.67,18.11 0,1 0,35.34 0a17.67,18.11 0,1 0,-35.34 0z"
android:fillColor="#3C4043"/>
<path
android:pathData="M155.05,153.29m-18.11,0a18.11,18.11 0,1 1,36.22 0a18.11,18.11 0,1 1,-36.22 0"
android:fillColor="#3C4043"/>
<path
android:pathData="M208.95,153.29m-18.11,0a18.11,18.11 0,1 1,36.22 0a18.11,18.11 0,1 1,-36.22 0"
android:fillColor="#3C4043"/>
<path
android:pathData="M75.1,76.86L288.9,76.86A8.83,8.83 0,0 1,297.74 85.7L297.74,236.78A8.83,8.83 0,0 1,288.9 245.61L75.1,245.61A8.83,8.83 0,0 1,66.26 236.78L66.26,85.7A8.83,8.83 0,0 1,75.1 76.86z"
android:fillColor="#E8F0FE"/>
<path
android:pathData="M288.02,104.25C288.02,112.06 281.69,118.39 273.88,118.39C266.08,118.39 259.75,112.06 259.75,104.25C259.75,96.45 266.08,90.12 273.88,90.12C281.69,90.12 288.02,96.45 288.02,104.25Z"
android:fillColor="#D2E3FC"/>
<path
android:pathData="M275.92,98.6C275.92,97.39 276.99,96.37 278.35,96.37C279.71,96.37 280.78,97.39 280.78,98.6V101.88H282.72V98.6C282.72,96.33 280.74,94.53 278.35,94.53C275.96,94.53 273.98,96.33 273.98,98.6V100.96H267.57C266.18,100.96 265.05,102.03 265.05,103.35V110.7C265.05,112.02 266.18,113.09 267.57,113.09H276.7C278.09,113.09 279.22,112.02 279.22,110.7V103.35C279.22,102.03 278.09,100.96 276.7,100.96H275.92V98.6ZM267.57,102.8C267.25,102.8 266.99,103.05 266.99,103.35V110.7C266.99,111 267.25,111.25 267.57,111.25H276.7C277.02,111.25 277.28,111 277.28,110.7V103.35C277.28,103.05 277.02,102.8 276.7,102.8H267.57ZM272.14,108.68C273.1,108.68 273.88,107.94 273.88,107.03C273.88,106.11 273.1,105.37 272.14,105.37C271.17,105.37 270.39,106.11 270.39,107.03C270.39,107.94 271.17,108.68 272.14,108.68Z"
android:fillColor="#669DF6"
android:fillType="evenOdd"/>
<path
android:pathData="M102.04,147.1m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#669DF6"/>
<path
android:pathData="M155.94,147.1m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#669DF6"/>
<path
android:pathData="M102.04,204.53m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#669DF6"/>
<path
android:pathData="M155.94,204.53m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#669DF6"/>
<path
android:pathData="M210.71,203.65m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#669DF6"/>
<path
android:pathData="M265.49,203.65m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#669DF6"/>
</group>
<path
android:pathData="M86.14,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#3C4043"/>
<path
android:pathData="M150.64,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#3C4043"/>
<path
android:pathData="M213.36,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#3C4043"/>
<path
android:pathData="M277.86,46.38m-19.88,0a19.88,19.88 0,1 1,39.76 0a19.88,19.88 0,1 1,-39.76 0"
android:fillColor="#3C4043"/>
</group>
</vector>

View File

@@ -0,0 +1,65 @@
<!--
~ Copyright (C) 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="364dp"
android:height="265dp"
android:viewportWidth="364"
android:viewportHeight="265">
<group>
<group>
<clip-path
android:pathData="M0,0.48h364v265.05h-364z"/>
<path
android:pathData="M339.42,264.99H24.58C11.07,264.99 0,253.7 0,239.92V25.94C0,12.12 11.07,0.83 24.58,0.83H339.52C352.93,0.83 364,12.12 364,25.91V240.01C364,253.7 352.93,264.99 339.42,264.99Z"
android:fillColor="#000000"/>
</group>
<path
android:pathData="M200.49,144.8C200.49,139.45 205.07,134.95 210.92,134.95C216.77,134.95 221.36,139.45 221.36,144.8V159.36H229.71V144.8C229.71,134.78 221.21,126.82 210.92,126.82C200.64,126.82 192.14,134.78 192.14,144.8V155.29H164.58C158.59,155.29 153.73,160.02 153.73,165.86V198.4C153.73,204.24 158.59,208.98 164.58,208.98H203.82C209.82,208.98 214.68,204.24 214.68,198.4V165.86C214.68,160.02 209.82,155.29 203.82,155.29H200.49V144.8ZM164.58,163.42C163.2,163.42 162.08,164.52 162.08,165.86V198.4C162.08,199.75 163.2,200.85 164.58,200.85H203.82C205.21,200.85 206.33,199.75 206.33,198.4V165.86C206.33,164.52 205.21,163.42 203.82,163.42H164.58ZM184.2,189.46C188.35,189.46 191.72,186.18 191.72,182.13C191.72,178.09 188.35,174.81 184.2,174.81C180.05,174.81 176.69,178.09 176.69,182.13C176.69,186.18 180.05,189.46 184.2,189.46Z"
android:fillColor="#C58AF9"
android:fillType="evenOdd"/>
<path
android:pathData="M163.56,220.47C168.99,220.47 173.39,224.87 173.39,230.3C173.39,235.72 168.99,240.13 163.56,240.13C158.13,240.13 153.73,235.72 153.73,230.3C153.73,224.87 158.13,220.47 163.56,220.47Z"
android:fillColor="#5F6368"/>
<path
android:pathData="M201.15,220.47C206.58,220.47 210.98,224.87 210.98,230.3C210.98,235.72 206.58,240.13 201.15,240.13C195.71,240.13 191.32,235.72 191.32,230.3C191.32,224.87 195.71,220.47 201.15,220.47Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M89.23,28.75L257.1,28.75A13.25,13.25 0,0 1,270.35 42L270.35,79.99A13.25,13.25 0,0 1,257.1 93.24L89.23,93.24A13.25,13.25 0,0 1,75.98 79.99L75.98,42A13.25,13.25 0,0 1,89.23 28.75z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M145.78,43.77L241.19,43.77A5.3,5.3 0,0 1,246.49 49.07L246.49,49.07A5.3,5.3 0,0 1,241.19 54.37L145.78,54.37A5.3,5.3 0,0 1,140.48 49.07L140.48,49.07A5.3,5.3 0,0 1,145.78 43.77z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M145.34,64.97L241.64,64.97A4.86,4.86 0,0 1,246.49 69.83L246.49,69.83A4.86,4.86 0,0 1,241.64 74.69L145.34,74.69A4.86,4.86 0,0 1,140.48 69.83L140.48,69.83A4.86,4.86 0,0 1,145.34 64.97z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M108.23,81.76C120.18,81.76 129.87,72.07 129.87,60.11C129.87,48.16 120.18,38.47 108.23,38.47C96.27,38.47 86.58,48.16 86.58,60.11C86.58,72.07 96.27,81.76 108.23,81.76Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M266.37,112.68C278.33,112.68 288.02,102.99 288.02,91.03C288.02,79.08 278.33,69.39 266.37,69.39C254.42,69.39 244.73,79.08 244.73,91.03C244.73,102.99 254.42,112.68 266.37,112.68Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M96.3,70.05V66.96H99.39V56.14C99.39,54 100.04,52.1 101.33,50.43C102.61,48.77 104.29,47.68 106.35,47.17V46.09C106.35,45.44 106.58,44.89 107.03,44.44C107.48,43.99 108.03,43.77 108.67,43.77C109.31,43.77 109.86,43.99 110.31,44.44C110.76,44.89 110.99,45.44 110.99,46.09V47.17C113.05,47.68 114.73,48.77 116.01,50.43C117.3,52.1 117.95,54 117.95,56.14V66.96H121.04V70.05H96.3ZM108.67,74.69C107.82,74.69 107.09,74.39 106.49,73.78C105.88,73.18 105.58,72.45 105.58,71.6H111.76C111.76,72.45 111.46,73.18 110.85,73.78C110.25,74.39 109.52,74.69 108.67,74.69ZM102.49,66.96H114.85V56.14C114.85,54.43 114.25,52.98 113.04,51.77C111.83,50.56 110.37,49.95 108.67,49.95C106.97,49.95 105.51,50.56 104.3,51.77C103.09,52.98 102.49,54.43 102.49,56.14V66.96Z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M276.44,81.86V101.1H257.2V81.86H276.44ZM276.44,79.11H257.2C255.68,79.11 254.45,80.34 254.45,81.86V101.1C254.45,102.61 255.68,103.84 257.2,103.84H276.44C277.95,103.84 279.18,102.61 279.18,101.1V81.86C279.18,80.34 277.95,79.11 276.44,79.11Z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M268.09,91.85L268.87,96.29H264.75L265.54,91.85C264.65,91.39 264.06,90.47 264.06,89.42C264.06,87.9 265.3,86.67 266.81,86.67C268.33,86.67 269.56,87.9 269.56,89.42C269.56,90.47 268.97,91.39 268.09,91.85Z"
android:fillColor="#E9D2FD"/>
</group>
</vector>

View File

@@ -0,0 +1,77 @@
<!--
~ Copyright (C) 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="364dp"
android:height="266dp"
android:viewportWidth="364"
android:viewportHeight="266">
<group>
<clip-path
android:pathData="M0,0.48h364v265.05h-364z"/>
<path
android:pathData="M339.42,264.99H24.58C11.07,264.99 0,253.7 0,239.92V25.94C0,12.13 11.07,0.83 24.58,0.83H339.52C352.93,0.83 364,12.13 364,25.91V240.01C364,253.7 352.93,264.99 339.42,264.99Z"
android:fillColor="#000000"/>
<path
android:pathData="M75.92,137.81L50.21,111.72C50.1,111.61 49.96,111.54 49.81,111.5C49.66,111.47 49.51,111.49 49.36,111.54C49.22,111.6 49.1,111.7 49.01,111.83C48.93,111.95 48.88,112.1 48.88,112.26L48.52,162.99C48.52,163.14 48.56,163.29 48.64,163.42C48.73,163.54 48.84,163.64 48.98,163.7C49.12,163.76 49.27,163.78 49.42,163.76C49.57,163.73 49.71,163.66 49.82,163.56L75.92,137.81Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M79.16,134.61L87.37,126.51L54.65,107.44C54.48,107.32 54.27,107.28 54.07,107.31C53.87,107.35 53.69,107.46 53.57,107.62C53.45,107.78 53.39,107.99 53.42,108.19C53.44,108.39 53.55,108.58 53.71,108.71L79.16,134.61Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M53.24,166.57C53.09,166.71 53.01,166.89 52.99,167.08C52.97,167.27 53.02,167.47 53.13,167.63C53.24,167.79 53.41,167.9 53.6,167.95C53.79,167.99 53.99,167.97 54.16,167.88L87.22,149.32L79.13,141.09L53.24,166.57Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M101.4,134.67L91.43,128.87L82.37,137.83L91.35,146.94L101.4,141.28C101.97,140.94 102.45,140.46 102.78,139.88C103.11,139.3 103.29,138.64 103.29,137.97C103.29,137.31 103.11,136.65 102.78,136.07C102.45,135.49 101.97,135.01 101.4,134.67Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M263.42,132.67C263.42,136.04 264.61,138.92 267,141.32C269.39,143.71 272.26,144.91 275.61,144.91C278.96,144.91 281.83,143.71 284.22,141.32C286.61,138.92 287.8,136.04 287.8,132.67C287.8,129.31 286.61,126.43 284.22,124.03C281.83,121.63 278.96,120.43 275.61,120.43C272.26,120.43 269.39,121.63 267,124.03C264.61,126.43 263.42,129.31 263.42,132.67ZM275.61,151.03C276.27,151.03 276.9,151.01 277.51,150.95C278.12,150.9 278.73,150.8 279.34,150.65L272.18,163.04C264.51,162.17 258.08,158.87 252.9,153.13C247.72,147.4 245.13,140.58 245.13,132.67C245.13,130.53 245.33,128.45 245.74,126.44C246.14,124.43 246.75,122.5 247.57,120.66L259.76,141.85C261.33,144.6 263.52,146.82 266.31,148.51C269.11,150.19 272.2,151.03 275.61,151.03ZM275.61,114.32C271.55,114.32 267.94,115.5 264.79,117.87C261.64,120.24 259.45,123.26 258.23,126.94L251.07,114.54C253.87,110.77 257.38,107.75 261.63,105.48C265.87,103.21 270.53,102.08 275.61,102.08C280.64,102.08 285.26,103.19 289.48,105.4C293.69,107.62 297.2,110.59 299.99,114.32H275.61ZM303.5,120.43C304.36,122.32 305.01,124.29 305.44,126.32C305.87,128.36 306.09,130.48 306.09,132.67C306.09,140.58 303.51,147.38 298.36,153.1C293.2,158.81 286.84,162.12 279.27,163.04L291.46,141.85C292.22,140.53 292.82,139.09 293.25,137.53C293.68,135.98 293.9,134.36 293.9,132.67C293.9,130.28 293.48,128.04 292.64,125.98C291.8,123.92 290.65,122.07 289.17,120.43H303.5Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M155.01,119.75h41.52v36.22h-41.52z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M175.77,149.2C179.47,149.2 182.62,147.91 185.21,145.33C187.8,142.76 189.09,139.63 189.09,135.95C189.09,132.26 187.8,129.13 185.21,126.56C182.62,123.98 179.47,122.69 175.77,122.69C172.07,122.69 168.93,123.98 166.34,126.56C163.75,129.13 162.46,132.26 162.46,135.95C162.46,139.63 163.75,142.76 166.34,145.33C168.93,147.91 172.07,149.2 175.77,149.2ZM175.77,143.31C173.7,143.31 171.95,142.6 170.52,141.17C169.09,139.75 168.38,138.01 168.38,135.95C168.38,133.88 169.09,132.14 170.52,130.72C171.95,129.29 173.7,128.58 175.77,128.58C177.85,128.58 179.6,129.29 181.03,130.72C182.46,132.14 183.17,133.88 183.17,135.95C183.17,138.01 182.46,139.75 181.03,141.17C179.6,142.6 177.85,143.31 175.77,143.31ZM152.1,159.51C150.47,159.51 149.07,158.93 147.92,157.77C146.76,156.62 146.18,155.24 146.18,153.62V118.28C146.18,116.65 146.76,115.27 147.92,114.11C149.07,112.96 150.47,112.39 152.1,112.39H161.42L166.9,106.5H184.65L190.13,112.39H199.45C201.08,112.39 202.47,112.96 203.63,114.11C204.79,115.27 205.37,116.65 205.37,118.28V153.62C205.37,155.24 204.79,156.62 203.63,157.77C202.47,158.93 201.08,159.51 199.45,159.51H152.1Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M109.51,182.48C121.47,182.48 131.16,172.78 131.16,160.83C131.16,148.88 121.47,139.18 109.51,139.18C97.56,139.18 87.87,148.88 87.87,160.83C87.87,172.78 97.56,182.48 109.51,182.48Z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M119.57,151.65V170.89H100.33V151.65H119.57ZM119.57,148.9H100.33C98.82,148.9 97.58,150.14 97.58,151.65V170.89C97.58,172.4 98.82,173.64 100.33,173.64H119.57C121.09,173.64 122.32,172.4 122.32,170.89V151.65C122.32,150.14 121.09,148.9 119.57,148.9Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M111.23,161.64L112.01,166.08H107.89L108.67,161.64C107.79,161.19 107.2,160.27 107.2,159.21C107.2,157.7 108.44,156.46 109.95,156.46C111.46,156.46 112.7,157.7 112.7,159.21C112.7,160.27 112.11,161.19 111.23,161.64Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M208.46,182.48C220.42,182.48 230.11,172.78 230.11,160.83C230.11,148.88 220.42,139.18 208.46,139.18C196.51,139.18 186.82,148.88 186.82,160.83C186.82,172.78 196.51,182.48 208.46,182.48Z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M218.52,151.65V170.89H199.29V151.65H218.52ZM218.52,148.9H199.29C197.77,148.9 196.54,150.14 196.54,151.65V170.89C196.54,172.4 197.77,173.64 199.29,173.64H218.52C220.04,173.64 221.27,172.4 221.27,170.89V151.65C221.27,150.14 220.04,148.9 218.52,148.9Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M210.18,161.64L210.96,166.08H206.84L207.62,161.64C206.74,161.19 206.15,160.27 206.15,159.21C206.15,157.7 207.39,156.46 208.9,156.46C210.41,156.46 211.65,157.7 211.65,159.21C211.65,160.27 211.06,161.19 210.18,161.64Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M312.72,182.48C324.67,182.48 334.36,172.78 334.36,160.83C334.36,148.88 324.67,139.18 312.72,139.18C300.76,139.18 291.07,148.88 291.07,160.83C291.07,172.78 300.76,182.48 312.72,182.48Z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M322.78,151.65V170.89H303.54V151.65H322.78ZM322.78,148.9H303.54C302.03,148.9 300.79,150.14 300.79,151.65V170.89C300.79,172.4 302.03,173.64 303.54,173.64H322.78C324.29,173.64 325.53,172.4 325.53,170.89V151.65C325.53,150.14 324.29,148.9 322.78,148.9Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M314.43,161.64L315.22,166.08H311.09L311.88,161.64C311,161.19 310.41,160.27 310.41,159.21C310.41,157.7 311.64,156.46 313.15,156.46C314.67,156.46 315.9,157.7 315.9,159.21C315.9,160.27 315.31,161.19 314.43,161.64Z"
android:fillColor="#C58AF9"/>
</group>
</vector>

View File

@@ -0,0 +1,100 @@
<!--
~ Copyright (C) 2024 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="364dp"
android:height="266dp"
android:viewportWidth="364"
android:viewportHeight="266">
<group>
<clip-path
android:pathData="M0,0.48h364v265.05h-364z"/>
<path
android:pathData="M339.42,264.99H24.58C11.07,264.99 0,253.7 0,239.92V25.94C0,12.13 11.07,0.83 24.58,0.83H339.52C352.93,0.83 364,12.13 364,25.91V240.01C364,253.7 352.93,264.99 339.42,264.99Z"
android:fillColor="#000000"/>
<path
android:pathData="M201.15,182.48C195.72,182.48 191.32,186.88 191.32,192.31C191.32,197.73 195.72,202.14 201.15,202.14C206.58,202.14 210.98,197.73 210.98,192.31C210.98,186.88 206.58,182.48 201.15,182.48Z"
android:fillColor="#3C4043"/>
<path
android:pathData="M163.56,182.48C158.13,182.48 153.73,186.88 153.73,192.31C153.73,197.73 158.13,202.14 163.56,202.14C168.99,202.14 173.39,197.73 173.39,192.31C173.39,186.88 168.99,182.48 163.56,182.48Z"
android:fillColor="#669DF6"/>
<path
android:pathData="M185.48,136.99C186.07,136.99 186.56,136.8 186.94,136.41C187.33,136.03 187.52,135.54 187.52,134.95C187.52,134.36 187.33,133.88 186.94,133.49C186.56,133.1 186.07,132.91 185.48,132.91C184.88,132.91 184.4,133.1 184.01,133.49C183.62,133.88 183.43,134.36 183.43,134.95C183.43,135.54 183.62,136.03 184.01,136.41C184.4,136.8 184.88,136.99 185.48,136.99Z"
android:fillColor="#202124"/>
<path
android:pathData="M338.13,145.81L322.74,131.98C319.02,128.64 313.3,128.94 309.97,132.66C306.63,136.37 306.93,142.09 310.65,145.43L326.05,159.26C329.76,162.6 335.48,162.3 338.82,158.58C342.15,154.87 341.85,149.15 338.13,145.81Z"
android:fillColor="#AECBFA"/>
<path
android:pathData="M325.81,64.64L295.79,43.72C293.73,42.28 290.89,42.79 289.45,44.85L268.54,74.87C267.1,76.93 267.6,79.77 269.67,81.21L299.69,102.13C301.75,103.56 304.59,103.06 306.02,100.99L326.94,70.97C328.38,68.91 327.87,66.07 325.81,64.64Z"
android:fillColor="#E8F0FE"/>
<path
android:pathData="M297.96,73.56C299.44,74.63 301.2,75.25 303.04,75.33C304.87,75.41 306.69,74.95 308.25,74.01C309.82,73.06 311.07,71.68 311.85,70.03C312.63,68.38 312.89,66.53 312.61,64.73C312.34,62.93 311.53,61.25 310.29,59.91C309.05,58.56 307.44,57.61 305.66,57.18C303.88,56.75 302,56.85 300.28,57.47C298.56,58.09 297.06,59.21 295.97,60.68C294.52,62.65 293.91,65.11 294.28,67.53C294.65,69.94 295.98,72.11 297.96,73.56Z"
android:fillColor="#669DF6"/>
<path
android:pathData="M295.71,77.78C287.35,71.94 278.5,69.93 272.37,77.85L302.63,98.92C308.76,91 304.07,83.58 295.71,77.78Z"
android:fillColor="#669DF6"/>
<path
android:pathData="M84.13,50.89L47.87,55.78C45.37,56.11 43.63,58.4 43.96,60.89L48.85,97.15C49.18,99.65 51.47,101.39 53.97,101.06L90.23,96.17C92.72,95.84 94.47,93.55 94.13,91.05L89.25,54.79C88.91,52.3 86.62,50.55 84.13,50.89Z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M69.64,76.29C71.46,76.08 73.18,75.35 74.58,74.17C75.99,72.99 77.01,71.42 77.53,69.66C78.05,67.91 78.03,66.04 77.49,64.3C76.94,62.56 75.89,61.02 74.47,59.88C73.05,58.74 71.32,58.05 69.49,57.9C67.67,57.75 65.84,58.14 64.24,59.02C62.63,59.91 61.32,61.24 60.47,62.87C59.62,64.49 59.27,66.33 59.47,68.15C59.73,70.58 60.94,72.81 62.85,74.33C64.76,75.86 67.2,76.56 69.64,76.29Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M70.84,80.92C60.73,82.28 52.85,86.78 53.69,96.76L90.23,91.82C89.39,81.84 80.92,79.54 70.84,80.92Z"
android:fillColor="#C58AF9"/>
<path
android:pathData="M39.14,170.33L66.27,160.64A11.49,11.49 115.34,0 1,80.95 167.59L89.91,192.65A11.49,11.49 115.34,0 1,82.96 207.33L55.82,217.03A11.49,11.49 115.34,0 1,41.14 210.07L32.19,185.01A11.49,11.49 115.34,0 1,39.14 170.33z"
android:fillColor="#E8F0FE"/>
<path
android:pathData="M66.57,172.29a4.81,4.58 70.34,1 0,8.63 -3.08a4.81,4.58 70.34,1 0,-8.63 3.08z"
android:fillColor="#669DF6"/>
<group>
<clip-path
android:pathData="M39.14,170.33L66.27,160.64A11.49,11.49 115.34,0 1,80.95 167.59L89.91,192.65A11.49,11.49 115.34,0 1,82.96 207.33L55.82,217.03A11.49,11.49 115.34,0 1,41.14 210.07L32.19,185.01A11.49,11.49 115.34,0 1,39.14 170.33z"/>
<path
android:pathData="M57.86,186.51C53.39,183.04 46.83,185.22 45.32,190.67L39.9,210.23C38.18,216.44 44.17,222.01 50.24,219.85L72.6,211.86C72.78,211.79 72.95,211.72 73.12,211.65C73.31,211.59 73.49,211.54 73.68,211.47L88.87,206.04C95.09,203.82 96.05,195.42 90.49,191.86L79.38,184.73C74.99,181.92 69.13,184.01 67.52,188.97L66.21,193L57.86,186.51Z"
android:fillColor="#669DF6"
android:fillType="evenOdd"/>
</group>
<path
android:pathData="M297.35,169.44L324.72,178.44A11.49,11.49 63.19,0 1,332.04 192.93L323.74,218.22A11.49,11.49 63.19,0 1,309.24 225.54L281.87,216.55A11.49,11.49 63.19,0 1,274.54 202.05L282.85,176.77A11.49,11.49 63.19,0 1,297.35 169.44z"
android:fillColor="#E9D2FD"/>
<path
android:pathData="M317.81,187.82a4.81,4.58 108.19,1 0,8.71 2.86a4.81,4.58 108.19,1 0,-8.71 -2.86z"
android:fillColor="#C58AF9"/>
<group>
<clip-path
android:pathData="M297.35,169.44L324.72,178.44A11.49,11.49 63.19,0 1,332.04 192.93L323.74,218.22A11.49,11.49 63.19,0 1,309.24 225.54L281.87,216.55A11.49,11.49 63.19,0 1,274.54 202.05L282.85,176.77A11.49,11.49 63.19,0 1,297.35 169.44z"/>
<path
android:pathData="M302.2,193.71C300.8,188.23 294.29,185.92 289.75,189.3L273.46,201.42C268.3,205.27 269.61,213.34 275.73,215.35L298.28,222.76C298.46,222.82 298.64,222.87 298.83,222.92C299.01,222.99 299.19,223.06 299.38,223.12L314.71,228.15C320.98,230.22 326.89,224.17 324.68,217.95L320.28,205.5C318.54,200.59 312.63,198.65 308.32,201.57L304.82,203.95L302.2,193.71Z"
android:fillColor="#C58AF9"
android:fillType="evenOdd"/>
</group>
</group>
<path
android:pathData="M157.77,52.17L131.31,64.89C130.6,65.23 129.79,65.27 129.04,65.01C128.3,64.75 127.69,64.21 127.36,63.5L126.91,62.58C124.89,58.37 124.62,53.52 126.17,49.1C127.72,44.69 130.96,41.07 135.17,39.04C139.39,37.01 144.24,36.74 148.66,38.29C153.07,39.84 156.69,43.08 158.72,47.3L159.16,48.21C159.5,48.92 159.54,49.74 159.28,50.48C159.02,51.22 158.48,51.83 157.77,52.17Z"
android:fillColor="#669DF6"/>
<path
android:pathData="M200.49,106.81C200.49,101.46 205.07,96.96 210.92,96.96C216.77,96.96 221.36,101.46 221.36,106.81V121.37H229.71V106.81C229.71,96.79 221.21,88.83 210.92,88.83C200.64,88.83 192.14,96.79 192.14,106.81V117.3H164.58C158.59,117.3 153.73,122.03 153.73,127.87V160.41C153.73,166.26 158.59,170.99 164.58,170.99H203.82C209.82,170.99 214.68,166.26 214.68,160.41V127.87C214.68,122.03 209.82,117.3 203.82,117.3H200.49V106.81ZM164.58,125.43C163.2,125.43 162.08,126.53 162.08,127.87V160.41C162.08,161.76 163.2,162.85 164.58,162.85H203.82C205.21,162.85 206.33,161.76 206.33,160.41V127.87C206.33,126.53 205.21,125.43 203.82,125.43H164.58ZM184.2,151.47C188.35,151.47 191.72,148.19 191.72,144.14C191.72,140.1 188.35,136.82 184.2,136.82C180.05,136.82 176.69,140.1 176.69,144.14C176.69,148.19 180.05,151.47 184.2,151.47Z"
android:fillColor="#C58AF9"
android:fillType="evenOdd"/>
<path
android:pathData="M163.56,182.48C168.99,182.48 173.39,186.88 173.39,192.31C173.39,197.73 168.99,202.14 163.56,202.14C158.13,202.14 153.73,197.73 153.73,192.31C153.73,186.88 158.13,182.48 163.56,182.48Z"
android:fillColor="#5F6368"/>
<path
android:pathData="M201.15,182.48C206.58,182.48 210.98,186.88 210.98,192.31C210.98,197.73 206.58,202.14 201.15,202.14C195.71,202.14 191.32,197.73 191.32,192.31C191.32,186.88 195.71,182.48 201.15,182.48Z"
android:fillColor="#C58AF9"/>
</vector>

View File

@@ -1,78 +0,0 @@
<!--
~ Copyright (C) 2023 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="380dp"
android:height="276dp"
android:viewportWidth="380"
android:viewportHeight="276">
<path
android:pathData="M354.34,276H25.66C11.56,276 0,264.2 0,249.8V26.24C0,11.8 11.56,0 25.66,0H354.44C368.44,0 380,11.8 380,26.2V249.9C380,264.2 368.44,276 354.34,276Z"
android:fillColor="#000000"/>
<path
android:pathData="M190,37.72C185.34,37.71 180.72,38.64 176.42,40.45C170.09,43.12 164.69,47.58 160.89,53.3C157.1,59.01 155.09,65.72 155.1,72.57V90.07H155.29V111.34H161.68V72.57C161.67,67.12 163.23,61.79 166.18,57.2L166.04,57.11C166.1,57.01 166.16,56.92 166.23,56.82C169.33,52.16 173.74,48.5 178.91,46.33C185.11,43.73 192.03,43.39 198.45,45.38C204.88,47.37 210.39,51.55 214.02,57.2L214.01,57.2C216.96,61.79 218.52,67.12 218.51,72.57V111.34H224.9V72.57C224.92,65.9 223,59.37 219.4,53.76L215.27,56.4L219.39,53.76C216.24,48.83 211.89,44.78 206.76,41.98C201.62,39.17 195.86,37.71 190,37.72Z"
android:fillColor="#669DF6"
android:fillType="evenOdd"/>
<path
android:pathData="M250.08,227.69H129.92C126.53,227.69 123.28,226.35 120.88,223.96C118.48,221.56 117.14,218.32 117.14,214.93V122.24C117.14,118.86 118.48,115.61 120.88,113.22C123.28,110.83 126.53,109.48 129.92,109.48H250.08C253.47,109.48 256.72,110.83 259.12,113.22C261.52,115.61 262.86,118.86 262.86,122.24V214.93C262.86,218.32 261.52,221.56 259.12,223.96C256.72,226.35 253.47,227.69 250.08,227.69ZM129.92,113.13C127.5,113.13 125.18,114.09 123.46,115.8C121.75,117.5 120.79,119.82 120.79,122.24V214.93C120.79,217.35 121.75,219.67 123.46,221.38C125.18,223.09 127.5,224.05 129.92,224.05H250.08C252.5,224.05 254.82,223.09 256.54,221.38C258.25,219.67 259.21,217.35 259.21,214.93V122.24C259.21,119.82 258.25,117.5 256.54,115.8C254.82,114.09 252.5,113.13 250.08,113.13H129.92Z"
android:fillColor="#80868B"/>
<path
android:pathData="M281.77,245.93C303.27,245.93 320.69,228.59 320.69,207.21C320.69,185.83 303.27,168.49 281.77,168.49C260.28,168.49 242.86,185.83 242.86,207.21C242.86,228.59 260.28,245.93 281.77,245.93Z"
android:fillColor="#000000"/>
<path
android:pathData="M281.77,168.36C260.2,168.36 242.57,185.76 242.57,207.37C242.57,228.97 260.06,246.37 281.77,246.37C303.49,246.37 320.97,228.97 320.97,207.37C320.97,185.76 303.35,168.36 281.77,168.36ZM281.77,238.37C264.57,238.37 250.47,224.34 250.47,207.22C250.47,190.11 264.57,176.08 281.77,176.08C298.98,176.08 313.08,190.11 313.08,207.22C313.08,224.48 298.98,238.37 281.77,238.37Z"
android:fillColor="#669DF6"/>
<path
android:pathData="M281.77,170.07C261.13,170.07 244.27,186.71 244.27,207.37C244.27,228.02 260.99,244.66 281.77,244.66C302.55,244.66 319.27,228.02 319.27,207.37C319.27,186.71 302.42,170.07 281.77,170.07ZM281.77,240.07C263.64,240.07 248.77,225.29 248.77,207.22C248.77,189.16 263.64,174.38 281.77,174.38C299.91,174.38 314.78,189.16 314.78,207.22C314.78,225.43 299.9,240.07 281.77,240.07ZM242.57,207.37C242.57,185.76 260.2,168.36 281.77,168.36C303.35,168.36 320.97,185.76 320.97,207.37C320.97,228.97 303.49,246.37 281.77,246.37C260.06,246.37 242.57,228.97 242.57,207.37ZM250.47,207.22C250.47,224.34 264.57,238.37 281.77,238.37C298.98,238.37 313.08,224.48 313.08,207.22C313.08,190.11 298.98,176.08 281.77,176.08C264.57,176.08 250.47,190.11 250.47,207.22Z"
android:fillColor="#000000"
android:fillType="evenOdd"/>
<path
android:pathData="M301.48,193.25C301.48,191.56 300.44,190.07 298.85,189.48L283.36,183.85C282.49,183.54 281.54,183.54 280.66,183.85L265.14,189.48C263.56,190.07 262.52,191.56 262.52,193.25V203.97C262.56,205.8 262.68,207.57 262.93,209.4C264.07,217.18 268.46,226.02 280.46,232.19C281.41,232.68 282.56,232.68 283.51,232.19C295.52,225.99 299.9,217.18 301.05,209.4C301.29,207.59 301.43,205.8 301.46,203.97V193.25H301.48Z"
android:fillColor="#000000"/>
<path
android:pathData="M291.62,222.69C291.74,222.13 292.45,218.26 290.38,214.37C289.21,212.19 287.7,210.92 285.63,209.28C284.21,208.18 280.46,205.76 279.52,205.17C279.56,205.19 279.64,205.27 279.68,205.29C279.17,204.97 279.2,204.97 279.52,205.17C278.47,204.46 276.67,203.04 275.3,200.59C273.67,197.68 273.62,194.96 273.62,194.45C273.62,194.4 273.62,194.38 273.62,194.33C273.62,191.05 274.64,188.5 276.27,186.67C277.49,185.3 278.88,184.51 280.05,184.05L265.14,189.48C263.56,190.04 262.52,191.56 262.52,193.25V203.97C262.56,205.8 262.68,207.57 262.93,209.4C264.07,217.18 268.46,226.02 280.46,232.18C281.41,232.68 282.56,232.68 283.51,232.18C284.63,231.62 285.65,231.01 286.63,230.4C288.14,229.27 290.79,226.78 291.6,222.69H291.62Z"
android:fillColor="#3957E2"/>
<path
android:pathData="M279.69,205.29C279.69,205.29 279.57,205.19 279.52,205.17C279.2,204.97 279.17,204.97 279.69,205.29Z"
android:fillColor="#000000"/>
<path
android:pathData="M298.85,189.48L283.36,183.85C282.48,183.54 281.54,183.54 280.66,183.85L280.05,184.07C278.9,184.54 277.49,185.32 276.27,186.69C274.64,188.53 273.62,191.07 273.62,194.35C273.62,194.4 273.62,194.43 273.62,194.48C273.62,194.99 273.69,197.71 275.3,200.62C276.66,203.06 278.44,204.46 279.51,205.19C280.46,205.8 284.21,208.2 285.63,209.3C287.7,210.94 289.23,212.22 290.38,214.4C292.45,218.26 291.72,222.15 291.62,222.71C290.82,226.8 288.16,229.27 286.65,230.42C296.3,224.4 300.02,216.48 301.07,209.43C301.31,207.62 301.46,205.83 301.48,203.99V193.25C301.48,191.56 300.43,190.07 298.85,189.48Z"
android:fillColor="#698FF7"/>
<path
android:pathData="M157.35,137.23C157.97,136.58 158.83,136.2 159.73,136.17C160.63,136.14 161.5,136.47 162.16,137.08L162.31,137.22L163.18,138.14C163.57,138.57 164.07,138.88 164.62,139.06C165.17,139.24 165.76,139.26 166.32,139.15L167.53,138.91C168.42,138.74 169.34,138.93 170.09,139.44C170.84,139.95 171.36,140.73 171.54,141.61C171.54,141.68 171.55,141.74 171.59,141.8L171.73,143.06C171.8,143.62 172.01,144.17 172.35,144.63C172.69,145.09 173.14,145.46 173.66,145.7L174.77,146.27C175.58,146.66 176.21,147.36 176.52,148.2C176.83,149.05 176.79,149.98 176.41,150.8C176.37,150.84 176.37,150.94 176.32,150.99L175.74,152.05C175.45,152.55 175.3,153.11 175.3,153.69C175.3,154.26 175.46,154.82 175.74,155.32L176.32,156.43C176.74,157.22 176.84,158.16 176.58,159.02C176.32,159.89 175.73,160.62 174.94,161.06C174.89,161.1 174.8,161.1 174.75,161.15L173.63,161.68C173.11,161.92 172.66,162.29 172.32,162.76C171.99,163.22 171.77,163.76 171.71,164.33L171.56,165.59C171.44,166.48 170.97,167.28 170.26,167.84C169.54,168.38 168.64,168.63 167.74,168.53C167.68,168.54 167.61,168.52 167.55,168.48L166.38,168.24C165.82,168.15 165.23,168.19 164.69,168.36C164.14,168.54 163.64,168.85 163.24,169.25L162.39,170.13C161.76,170.78 160.91,171.16 160.01,171.19C159.11,171.22 158.23,170.89 157.57,170.28L157.43,170.14L156.55,169.22C156.16,168.8 155.66,168.49 155.1,168.31C154.54,168.14 153.95,168.12 153.39,168.25L152.18,168.49C151.29,168.66 150.37,168.47 149.62,167.96C148.87,167.46 148.35,166.67 148.17,165.79C148.18,165.72 148.16,165.65 148.12,165.6L147.98,164.34C147.91,163.77 147.7,163.23 147.36,162.77C147.02,162.3 146.57,161.93 146.05,161.69L144.94,161.16C144.53,160.97 144.16,160.7 143.85,160.37C143.55,160.03 143.32,159.64 143.16,159.21C143.01,158.78 142.94,158.33 142.96,157.88C142.99,157.43 143.1,156.99 143.3,156.58C143.34,156.53 143.34,156.44 143.39,156.39L143.97,155.28C144.26,154.78 144.4,154.22 144.4,153.65C144.4,153.07 144.26,152.51 143.97,152.01L143.39,150.9C142.97,150.1 142.88,149.17 143.13,148.3C143.39,147.44 143.98,146.71 144.77,146.28C144.82,146.23 144.91,146.23 144.96,146.18L146.08,145.65C146.6,145.41 147.05,145.04 147.39,144.57C147.72,144.11 147.94,143.57 148,143L148.15,141.75C148.27,140.86 148.74,140.05 149.46,139.5C150.17,138.95 151.07,138.7 151.97,138.81C152.04,138.8 152.1,138.82 152.16,138.86L153.37,139.1C153.93,139.19 154.51,139.15 155.06,138.97C155.6,138.8 156.1,138.49 156.5,138.09L157.35,137.24L157.35,137.23Z"
android:fillColor="#EE675C"/>
<path
android:pathData="M165.34,152.63L157.4,148.13C156.85,147.86 156.31,147.99 156.04,148.54C155.9,148.68 155.9,148.81 155.9,149.09V158.08C155.9,158.63 156.31,159.04 156.85,159.04C156.99,159.04 157.27,159.04 157.4,158.9L165.2,154.4C165.75,154.13 165.89,153.58 165.61,153.04C165.61,152.9 165.47,152.77 165.34,152.63Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M236.54,176.53L226.88,171.29C226.21,170.97 225.55,171.13 225.22,171.77C225.05,171.93 225.05,172.09 225.05,172.4V182.89C225.05,183.53 225.55,184.01 226.21,184.01C226.39,184.01 226.72,184.01 226.88,183.85L236.37,178.6C237.04,178.28 237.21,177.65 236.87,177.01C236.87,176.85 236.7,176.7 236.54,176.53Z"
android:fillColor="#3C4043"/>
<path
android:pathData="M148.49,207.01C143.41,207.01 139.27,202.88 139.27,197.81C139.27,192.74 143.41,188.61 148.49,188.61C153.58,188.61 157.72,192.74 157.72,197.81C157.72,202.88 153.58,207.01 148.49,207.01Z"
android:fillColor="#3C4043"/>
<path
android:pathData="M224.65,129.5L213.61,128.09C212.49,127.95 211.34,128.11 210.3,128.56C209.26,129 208.34,129.71 207.66,130.61L200.9,139.5C200.21,140.4 199.78,141.48 199.63,142.61C199.49,143.74 199.65,144.89 200.09,145.93L204.37,156.22C204.81,157.27 205.52,158.18 206.42,158.87C207.33,159.55 208.4,159.99 209.52,160.13L220.56,161.52C221.69,161.67 222.83,161.51 223.88,161.07C224.93,160.63 225.84,159.92 226.53,159.01L233.26,150.14C233.95,149.23 234.39,148.16 234.53,147.03C234.67,145.9 234.52,144.75 234.08,143.7L229.79,133.42C229.35,132.37 228.65,131.45 227.74,130.76C226.84,130.07 225.77,129.64 224.65,129.5Z"
android:fillColor="#FCC934"/>
<path
android:pathData="M210.34,150.41L223.25,151.73L224.57,138.86L211.66,137.54L210.34,150.41ZM210.15,152.25C209.65,152.2 209.23,151.98 208.9,151.58C208.58,151.18 208.45,150.73 208.5,150.23L209.82,137.35C209.87,136.85 210.09,136.43 210.49,136.11C210.89,135.78 211.34,135.65 211.85,135.7L224.76,137.02C225.26,137.07 225.68,137.29 226.01,137.69C226.33,138.09 226.46,138.54 226.41,139.04L225.09,151.92C225.04,152.43 224.82,152.84 224.42,153.16C224.02,153.49 223.57,153.62 223.06,153.57L210.15,152.25ZM211.45,148.67L222.51,149.8L219.53,144.85L216.38,148.24L214.59,145.27L211.45,148.67L211.45,148.67ZM211.66,137.54L210.34,150.41L211.66,137.54Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M178.53,187.68C174.35,181.53 179.88,173.46 187.15,175.11L188.35,175.38C190.56,175.88 192.89,175.44 194.77,174.17L195.79,173.48C201.96,169.32 210.05,174.84 208.4,182.08L208.13,183.28C207.62,185.49 208.06,187.81 209.34,189.69L210.02,190.7C214.2,196.85 208.67,204.93 201.41,203.28L200.21,203.01C197.99,202.5 195.66,202.94 193.78,204.21L192.76,204.9C186.6,209.07 178.5,203.55 180.15,196.3L180.43,195.1C180.93,192.9 180.5,190.57 179.22,188.7L178.53,187.68L178.53,187.68Z"
android:fillColor="#5BB974"/>
<path
android:pathData="M189.5,195.21C190.11,194.34 190.86,193.6 191.77,192.99C192.68,192.39 193.71,191.98 194.85,191.76C196,191.55 197.1,191.55 198.17,191.78C199.24,192.01 200.21,192.42 201.1,193.01L199.08,182.41L187.48,184.61L189.5,195.21ZM194.54,190.11C195.33,189.96 195.97,189.54 196.42,188.87C196.88,188.2 197.04,187.46 196.88,186.67C196.73,185.88 196.32,185.24 195.65,184.79C194.98,184.34 194.23,184.18 193.43,184.33C192.64,184.48 192,184.89 191.55,185.57C191.09,186.24 190.93,186.97 191.09,187.77C191.24,188.56 191.65,189.2 192.33,189.65C192.99,190.1 193.74,190.26 194.54,190.11ZM189.99,197.8C189.54,197.89 189.12,197.8 188.73,197.54C188.34,197.28 188.11,196.92 188.02,196.47L185.82,184.92C185.74,184.46 185.83,184.04 186.09,183.66C186.35,183.27 186.71,183.04 187.16,182.95L198.76,180.76C199.22,180.67 199.64,180.76 200.02,181.02C200.41,181.28 200.65,181.63 200.73,182.09L202.93,193.64C203.02,194.1 202.93,194.51 202.67,194.9C202.4,195.29 202.05,195.52 201.59,195.6L189.99,197.8ZM189.68,196.15L201.28,193.96L201.1,193C200.21,192.41 199.24,192.01 198.17,191.77C197.1,191.55 195.99,191.54 194.85,191.76C193.7,191.97 192.68,192.38 191.77,192.99C190.86,193.59 190.1,194.33 189.5,195.2L189.68,196.15ZM189.5,195.21L187.48,184.61L199.08,182.41L201.1,193.01C200.21,192.42 199.24,192.01 198.17,191.78C197.1,191.55 196,191.55 194.85,191.76C193.71,191.98 192.68,192.39 191.77,192.99C190.86,193.6 190.11,194.34 189.5,195.21Z"
android:fillColor="#ffffff"/>
</vector>

File diff suppressed because one or more lines are too long

View File

@@ -20,18 +20,18 @@
android:id="@+id/private_space_autoadvance_screen" android:id="@+id/private_space_autoadvance_screen"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:icon="@drawable/ic_privatespace_icon"> android:icon="@drawable/ic_private_space_icon">
<LinearLayout style="@style/SudContentFrame" <LinearLayout style="@style/SudContentFrame"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:id="@+id/placeholder_image" android:id="@+id/setup_advance_image"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_weight="1"
android:contentDescription="@null" android:contentDescription="@null"
android:src="@drawable/privatespace_setup_flow_placeholder"/> android:src="@null"/>
<TextView <TextView
android:id="@+id/createMessage" android:id="@+id/createMessage"

View File

@@ -23,7 +23,7 @@
android:filterTouchesWhenObscured="true" android:filterTouchesWhenObscured="true"
app:sucHeaderText="@string/private_space_setup_title" app:sucHeaderText="@string/private_space_setup_title"
app:sudDescriptionText="@string/private_space_hide_apps_summary" app:sudDescriptionText="@string/private_space_hide_apps_summary"
android:icon="@drawable/ic_privatespace_icon"> android:icon="@drawable/ic_private_space_icon">
<ScrollView <ScrollView
android:id="@+id/main_clear_scrollview" android:id="@+id/main_clear_scrollview"
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -34,13 +34,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:id="@+id/placeholder_image" android:id="@+id/setup_education_image"
style="@style/SudContentIllustration" style="@style/SudContentIllustration"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_marginLeft="24dp" android:layout_marginLeft="24dp"
android:layout_marginRight="24dp" android:layout_marginRight="24dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/privatespace_placeholder_image"/> android:src="@drawable/private_space_illustration"/>
<TextView <TextView
style="@style/PrivateSpaceSetupSubHeaderStyle" style="@style/PrivateSpaceSetupSubHeaderStyle"
android:text="@string/private_space_how_title"/> android:text="@string/private_space_how_title"/>

View File

@@ -37,7 +37,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:contentDescription="@null" android:contentDescription="@null"
android:src="@drawable/privatespace_lock_placeholder"/> android:src="@drawable/private_space_choose_lock_illustration"/>
</com.google.android.setupdesign.view.FillContentLayout> </com.google.android.setupdesign.view.FillContentLayout>
</com.google.android.setupdesign.GlifLayout> </com.google.android.setupdesign.GlifLayout>

View File

@@ -24,4 +24,13 @@
app:sucHeaderText="@string/private_space_success_title" app:sucHeaderText="@string/private_space_success_title"
app:sudDescriptionText="@string/private_space_access_text" app:sudDescriptionText="@string/private_space_access_text"
android:icon="@drawable/ic_privatespace_done"> android:icon="@drawable/ic_privatespace_done">
<ImageView
android:id="@+id/privatespace_success_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="24dp"
android:layout_marginRight="24dp"
android:src="@drawable/private_space_illustration"/>
</com.google.android.setupdesign.GlifLayout> </com.google.android.setupdesign.GlifLayout>

View File

@@ -473,4 +473,8 @@
<!-- An arbitrarily large number to make the max size fit the parent --> <!-- An arbitrarily large number to make the max size fit the parent -->
<dimen name="animation_max_size">1000dp</dimen> <dimen name="animation_max_size">1000dp</dimen>
<!-- Credential Manager settings dimensions -->
<dimen name="credman_primary_provider_pref_left_padding">80dp</dimen>
<dimen name="credman_primary_provider_pref_left_padding_compact">24dp</dimen>
</resources> </resources>

View File

@@ -10802,6 +10802,8 @@
<string name="credman_button_change">Change</string> <string name="credman_button_change">Change</string>
<!-- Button for opening credman service settings. [CHAR LIMIT=40] --> <!-- Button for opening credman service settings. [CHAR LIMIT=40] -->
<string name="credman_button_open">Open</string> <string name="credman_button_open">Open</string>
<!-- Label for None item in Credential Manager service selection [CHAR LIMIT=40] -->
<string name="credman_app_list_preference_none">None selected</string>
<!-- Message of the warning dialog for setting the auto-fill app. [CHAR_LIMIT=NONE] --> <!-- Message of the warning dialog for setting the auto-fill app. [CHAR_LIMIT=NONE] -->
<string name="autofill_confirmation_message"> <string name="autofill_confirmation_message">

View File

@@ -23,9 +23,9 @@
settings:searchable="false"> settings:searchable="false">
<com.android.settingslib.widget.IllustrationPreference <com.android.settingslib.widget.IllustrationPreference
android:key="privatespace_hide_video" android:key="private_space_settings"
settings:searchable="false" settings:searchable="false"
settings:lottie_rawRes="@drawable/privatespace_placeholder_image"/> settings:lottie_rawRes="@drawable/private_space_illustration"/>
<Preference <Preference
android:key="private_space_description" android:key="private_space_description"

View File

@@ -568,7 +568,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
*/ */
@VisibleForTesting @VisibleForTesting
public boolean togglePackageNameEnabled(String packageName) { public boolean togglePackageNameEnabled(String packageName) {
if (mEnabledPackageNames.size() >= MAX_SELECTABLE_PROVIDERS) { if (hasProviderLimitBeenReached()) {
return false; return false;
} else { } else {
mEnabledPackageNames.add(packageName); mEnabledPackageNames.add(packageName);
@@ -623,6 +623,19 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
return mIconResizer.createIconThumbnail(providerIcon); return mIconResizer.createIconThumbnail(providerIcon);
} }
private boolean hasProviderLimitBeenReached() {
return hasProviderLimitBeenReached(mEnabledPackageNames.size());
}
@VisibleForTesting
public static boolean hasProviderLimitBeenReached(int enabledAdditionalProviderCount) {
// If the number of package names has reached the maximum limit then
// we should stop any new packages from being added. We will also
// reserve one place for the primary provider so if the max limit is
// five providers this will be four additional plus the primary.
return (enabledAdditionalProviderCount + 1) >= MAX_SELECTABLE_PROVIDERS;
}
private CombiPreference addProviderPreference( private CombiPreference addProviderPreference(
@NonNull Context prefContext, @NonNull Context prefContext,
@NonNull CharSequence title, @NonNull CharSequence title,
@@ -648,19 +661,18 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
pref.setPreferenceListener( pref.setPreferenceListener(
new CombiPreference.OnCombiPreferenceClickListener() { new CombiPreference.OnCombiPreferenceClickListener() {
@Override @Override
public void onCheckChanged(CombiPreference p, boolean isChecked) { public boolean onCheckChanged(CombiPreference p, boolean isChecked) {
if (isChecked) { if (isChecked) {
if (mEnabledPackageNames.size() >= MAX_SELECTABLE_PROVIDERS) { if (hasProviderLimitBeenReached()) {
// Show the error if too many enabled. // Show the error if too many enabled.
pref.setChecked(false);
final DialogFragment fragment = newErrorDialogFragment(); final DialogFragment fragment = newErrorDialogFragment();
if (fragment == null || mFragmentManager == null) { if (fragment == null || mFragmentManager == null) {
return; return false;
} }
fragment.show(mFragmentManager, ErrorDialogFragment.TAG); fragment.show(mFragmentManager, ErrorDialogFragment.TAG);
return; return false;
} }
togglePackageNameEnabled(packageName); togglePackageNameEnabled(packageName);
@@ -672,6 +684,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
} else { } else {
togglePackageNameDisabled(packageName); togglePackageNameDisabled(packageName);
} }
return true;
} }
@Override @Override
@@ -989,8 +1003,13 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
@Override @Override
public void onClick(View buttonView) { public void onClick(View buttonView) {
// Forward the event. // Forward the event.
if (mSwitch != null) { if (mSwitch != null && mOnClickListener != null) {
mOnClickListener.onCheckChanged(CombiPreference.this, mSwitch.isChecked()); if (!mOnClickListener.onCheckChanged(CombiPreference.this, mSwitch.isChecked())) {
// The update was not successful since there were too
// many enabled providers to manually reset any state.
mChecked = false;
mSwitch.setChecked(false);
}
} }
} }
} }
@@ -1004,7 +1023,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
public interface OnCombiPreferenceClickListener { public interface OnCombiPreferenceClickListener {
/** Called when the check is updated */ /** Called when the check is updated */
void onCheckChanged(CombiPreference p, boolean isChecked); boolean onCheckChanged(CombiPreference p, boolean isChecked);
/** Called when the left side is clicked. */ /** Called when the left side is clicked. */
void onLeftSideClicked(); void onLeftSideClicked();

View File

@@ -114,7 +114,7 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
@Nullable CharSequence packageName, @Nullable CharSequence packageName,
@Nullable CharSequence settingsActivity) { @Nullable CharSequence settingsActivity) {
if (appName == null) { if (appName == null) {
preference.setTitle(R.string.app_list_preference_none); preference.setTitle(R.string.credman_app_list_preference_none);
} else { } else {
preference.setTitle(appName); preference.setTitle(appName);
} }
@@ -144,7 +144,7 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
// Hide the open button if there is no defined settings activity. // Hide the open button if there is no defined settings activity.
primaryPref.setOpenButtonVisible(!TextUtils.isEmpty(settingsActivity)); primaryPref.setOpenButtonVisible(!TextUtils.isEmpty(settingsActivity));
primaryPref.setButtonsVisible(appName != null); primaryPref.setButtonsCompactMode(appName != null);
} }
} }

View File

@@ -46,7 +46,7 @@ public class PrimaryProviderPreference extends GearPreference {
private @Nullable View mButtonFrameView = null; private @Nullable View mButtonFrameView = null;
private @Nullable View mGearView = null; private @Nullable View mGearView = null;
private @Nullable Delegate mDelegate = null; private @Nullable Delegate mDelegate = null;
private boolean mButtonsVisible = false; private boolean mButtonsCompactMode = false;
private boolean mOpenButtonVisible = false; private boolean mOpenButtonVisible = false;
/** Called to send messages back to the parent controller. */ /** Called to send messages back to the parent controller. */
@@ -141,26 +141,7 @@ public class PrimaryProviderPreference extends GearPreference {
}); });
mButtonFrameView = holder.findViewById(R.id.credman_button_frame); mButtonFrameView = holder.findViewById(R.id.credman_button_frame);
mButtonFrameView.setVisibility(mButtonsVisible ? View.VISIBLE : View.GONE); updateButtonFramePadding();
// There is a special case where if the provider == none then we should
// hide the buttons and when the preference is tapped we can open the
// provider selection dialog.
setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(@NonNull Preference preference) {
return handlePreferenceClickNewSettingsUi();
}
});
}
private boolean handlePreferenceClickNewSettingsUi() {
if (mDelegate != null && !mButtonsVisible) {
mDelegate.onChangeButtonClicked();
return true;
}
return false;
} }
public void setOpenButtonVisible(boolean isVisible) { public void setOpenButtonVisible(boolean isVisible) {
@@ -172,12 +153,27 @@ public class PrimaryProviderPreference extends GearPreference {
mOpenButtonVisible = isVisible; mOpenButtonVisible = isVisible;
} }
public void setButtonsVisible(boolean isVisible) { private void updateButtonFramePadding() {
if (mButtonFrameView != null) { if (mButtonFrameView == null) {
setVisibility(mButtonFrameView, isVisible); return;
} }
mButtonsVisible = isVisible; int paddingLeft = mButtonsCompactMode ?
getContext().getResources().getDimensionPixelSize(
R.dimen.credman_primary_provider_pref_left_padding) :
getContext().getResources().getDimensionPixelSize(
R.dimen.credman_primary_provider_pref_left_padding_compact);
mButtonFrameView.setPadding(
paddingLeft,
mButtonFrameView.getPaddingTop(),
mButtonFrameView.getPaddingRight(),
mButtonFrameView.getPaddingBottom());
}
public void setButtonsCompactMode(boolean isCompactMode) {
mButtonsCompactMode = isCompactMode;
updateButtonFramePadding();
} }
public void setDelegate(@NonNull Delegate delegate) { public void setDelegate(@NonNull Delegate delegate) {

View File

@@ -0,0 +1,39 @@
/*
* Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.display;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.TogglePreferenceController;
/** Feature provider for display settings */
public interface DisplayFeatureProvider {
/** Create toggle preference */
@Nullable
TogglePreferenceController createAdditionalPreference(@NonNull Context context);
/** Update toggle preference */
void updatePreference(@Nullable TogglePreferenceController togglePreferenceController);
/** Add toggle preference to PreferenceScreen */
void addToScreen(@Nullable TogglePreferenceController togglePreferenceController,
@NonNull PreferenceScreen screen);
}

View File

@@ -0,0 +1,44 @@
/*
* Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.display;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.TogglePreferenceController;
public class DisplayFeatureProviderImpl implements DisplayFeatureProvider {
@Override
@Nullable
public TogglePreferenceController createAdditionalPreference(@NonNull Context context) {
return null;
}
@Override
public void updatePreference(@Nullable TogglePreferenceController togglePreferenceController) {
}
@Override
public void addToScreen(@Nullable TogglePreferenceController togglePreferenceController,
@NonNull PreferenceScreen screen) {
}
}

View File

@@ -34,9 +34,11 @@ import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log; import android.util.Log;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.flags.Flags; import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
@@ -106,6 +108,9 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
@VisibleForTesting @VisibleForTesting
AdaptiveSleepBatterySaverPreferenceController mAdaptiveSleepBatterySaverPreferenceController; AdaptiveSleepBatterySaverPreferenceController mAdaptiveSleepBatterySaverPreferenceController;
@Nullable
TogglePreferenceController mAdditionalTogglePreferenceController;
public ScreenTimeoutSettings() { public ScreenTimeoutSettings() {
super(); super();
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
@@ -133,6 +138,8 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
com.android.settingslib.widget.preference.footer.R.layout.preference_footer); com.android.settingslib.widget.preference.footer.R.layout.preference_footer);
mPrivacyManager = SensorPrivacyManager.getInstance(context); mPrivacyManager = SensorPrivacyManager.getInstance(context);
mPrivacyChangedListener = (sensor, enabled) -> mAdaptiveSleepController.updatePreference(); mPrivacyChangedListener = (sensor, enabled) -> mAdaptiveSleepController.updatePreference();
mAdditionalTogglePreferenceController = FeatureFactory.getFeatureFactory()
.getDisplayFeatureProvider().createAdditionalPreference(context);
} }
@Override @Override
@@ -164,6 +171,8 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
mReceiver, new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED)); mReceiver, new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener); mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
mIsUserAuthenticated = false; mIsUserAuthenticated = false;
FeatureFactory.getFeatureFactory().getDisplayFeatureProvider().updatePreference(
mAdditionalTogglePreferenceController);
} }
@Override @Override
@@ -210,6 +219,9 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
mPrivacyPreference.setLayoutResource( mPrivacyPreference.setLayoutResource(
com.android.settingslib.widget.preference.footer.R.layout.preference_footer); com.android.settingslib.widget.preference.footer.R.layout.preference_footer);
FeatureFactory.getFeatureFactory().getDisplayFeatureProvider()
.addToScreen(mAdditionalTogglePreferenceController, screen);
if (isScreenAttentionAvailable(getContext())) { if (isScreenAttentionAvailable(getContext())) {
mAdaptiveSleepPermissionController.addToScreen(screen); mAdaptiveSleepPermissionController.addToScreen(screen);
mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen); mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen);

View File

@@ -29,6 +29,7 @@ import com.android.settings.connecteddevice.stylus.StylusFeatureProvider
import com.android.settings.dashboard.DashboardFeatureProvider import com.android.settings.dashboard.DashboardFeatureProvider
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider
import com.android.settings.display.DisplayFeatureProvider
import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider
import com.android.settings.fuelgauge.BatterySettingsFeatureProvider import com.android.settings.fuelgauge.BatterySettingsFeatureProvider
import com.android.settings.fuelgauge.BatteryStatusFeatureProvider import com.android.settings.fuelgauge.BatteryStatusFeatureProvider
@@ -176,6 +177,11 @@ abstract class FeatureFactory {
*/ */
abstract val privateSpaceLoginFeatureProvider: PrivateSpaceLoginFeatureProvider abstract val privateSpaceLoginFeatureProvider: PrivateSpaceLoginFeatureProvider
/**
* Gets implementation for Display feature.
*/
abstract val displayFeatureProvider: DisplayFeatureProvider
companion object { companion object {
private var _factory: FeatureFactory? = null private var _factory: FeatureFactory? = null

View File

@@ -45,6 +45,8 @@ import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider
import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProviderImpl import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProviderImpl
import com.android.settings.display.DisplayFeatureProvider
import com.android.settings.display.DisplayFeatureProviderImpl
import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl
import com.android.settings.fuelgauge.BatterySettingsFeatureProviderImpl import com.android.settings.fuelgauge.BatterySettingsFeatureProviderImpl
import com.android.settings.fuelgauge.BatteryStatusFeatureProviderImpl import com.android.settings.fuelgauge.BatteryStatusFeatureProviderImpl
@@ -190,4 +192,7 @@ open class FeatureFactoryImpl : FeatureFactory() {
override val privateSpaceLoginFeatureProvider: PrivateSpaceLoginFeatureProvider by lazy { override val privateSpaceLoginFeatureProvider: PrivateSpaceLoginFeatureProvider by lazy {
PrivateSpaceLoginFeatureProviderImpl() PrivateSpaceLoginFeatureProviderImpl()
} }
override val displayFeatureProvider: DisplayFeatureProvider by lazy {
DisplayFeatureProviderImpl()
}
} }

View File

@@ -59,11 +59,11 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
private static final List<Pair<Integer, Integer>> HEADER_IMAGE_PAIRS = private static final List<Pair<Integer, Integer>> HEADER_IMAGE_PAIRS =
ImmutableList.of( ImmutableList.of(
new Pair(R.string.private_space_notifications_hidden_title, new Pair(R.string.private_space_notifications_hidden_title,
R.drawable.privatespace_setup_flow_placeholder), R.drawable.private_space_setup_notification_illustration),
new Pair(R.string.private_space_share_photos_title, new Pair(R.string.private_space_share_photos_title,
R.drawable.privatespace_setup_flow_placeholder), R.drawable.private_space_setup_sharing_illustration),
new Pair(R.string.private_space_apps_installed_title, new Pair(R.string.private_space_apps_installed_title,
R.drawable.privatespace_setup_flow_placeholder)); R.drawable.private_space_setup_preinstalled_illustration));
private Runnable mUpdateScreenResources = private Runnable mUpdateScreenResources =
new Runnable() { new Runnable() {
@@ -116,7 +116,7 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
} }
mRootView = mRootView =
(GlifLayout) (GlifLayout)
inflater.inflate(R.layout.privatespace_advancing_screen, container, false); inflater.inflate(R.layout.private_space_advancing_screen, container, false);
mRootView.getHeaderTextView().setMaxLines(HEADER_TEXT_MAX_LINES); mRootView.getHeaderTextView().setMaxLines(HEADER_TEXT_MAX_LINES);
updateHeaderAndImage(); updateHeaderAndImage();
mHandler = new Handler(Looper.getMainLooper()); mHandler = new Handler(Looper.getMainLooper());
@@ -157,7 +157,7 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
private void updateHeaderAndImage() { private void updateHeaderAndImage() {
mRootView.setHeaderText(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).first); mRootView.setHeaderText(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).first);
((ImageView) mRootView.findViewById(R.id.placeholder_image)) ((ImageView) mRootView.findViewById(R.id.setup_advance_image))
.setImageResource(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).second); .setImageResource(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).second);
startFadeInAnimation(); startFadeInAnimation();
} }
@@ -166,7 +166,7 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
ValueAnimator textView = ObjectAnimator.ofFloat( ValueAnimator textView = ObjectAnimator.ofFloat(
mRootView.getHeaderTextView(), View.ALPHA, 0f, 1f); mRootView.getHeaderTextView(), View.ALPHA, 0f, 1f);
ValueAnimator imageView = ObjectAnimator.ofFloat( ValueAnimator imageView = ObjectAnimator.ofFloat(
mRootView.findViewById(R.id.placeholder_image), View.ALPHA, 0, 1f); mRootView.findViewById(R.id.setup_advance_image), View.ALPHA, 0, 1f);
AnimatorSet fadeIn = new AnimatorSet(); AnimatorSet fadeIn = new AnimatorSet();
fadeIn.playTogether(textView, imageView); fadeIn.playTogether(textView, imageView);
fadeIn.setDuration(ANIMATION_DURATION_MILLIS).start(); fadeIn.setDuration(ANIMATION_DURATION_MILLIS).start();
@@ -177,7 +177,7 @@ public class AutoAdvanceSetupFragment extends InstrumentedFragment {
ValueAnimator textView = ObjectAnimator.ofFloat( ValueAnimator textView = ObjectAnimator.ofFloat(
mRootView.getHeaderTextView(), View.ALPHA, 1f, 0f); mRootView.getHeaderTextView(), View.ALPHA, 1f, 0f);
ValueAnimator imageView = ObjectAnimator.ofFloat( ValueAnimator imageView = ObjectAnimator.ofFloat(
mRootView.findViewById(R.id.placeholder_image), View.ALPHA, 1f, 0f); mRootView.findViewById(R.id.setup_advance_image), View.ALPHA, 1f, 0f);
fadeOut.playTogether(textView, imageView); fadeOut.playTogether(textView, imageView);
fadeOut.setDuration(ANIMATION_DURATION_MILLIS).start(); fadeOut.setDuration(ANIMATION_DURATION_MILLIS).start();
fadeOut.addListener(new AnimatorListenerAdapter() { fadeOut.addListener(new AnimatorListenerAdapter() {

View File

@@ -48,7 +48,7 @@ public class PrivateSpaceEducation extends InstrumentedFragment {
} }
GlifLayout rootView = GlifLayout rootView =
(GlifLayout) (GlifLayout)
inflater.inflate(R.layout.privatespace_education_screen, container, false); inflater.inflate(R.layout.private_space_education_screen, container, false);
final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class); final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class);
mixin.setPrimaryButton( mixin.setPrimaryButton(
new FooterButton.Builder(getContext()) new FooterButton.Builder(getContext())

View File

@@ -56,7 +56,7 @@ public class PrivateSpaceSetLockFragment extends InstrumentedFragment {
} }
GlifLayout rootView = GlifLayout rootView =
(GlifLayout) (GlifLayout)
inflater.inflate(R.layout.privatespace_setlock_screen, container, false); inflater.inflate(R.layout.private_space_setlock_screen, container, false);
final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class); final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class);
mixin.setPrimaryButton( mixin.setPrimaryButton(
new FooterButton.Builder(getContext()) new FooterButton.Builder(getContext())

View File

@@ -52,7 +52,7 @@ public class SetupSuccessFragment extends InstrumentedFragment {
} }
GlifLayout rootView = GlifLayout rootView =
(GlifLayout) (GlifLayout)
inflater.inflate(R.layout.privatespace_setup_success, container, false); inflater.inflate(R.layout.private_space_setup_success, container, false);
final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class); final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class);
mixin.setPrimaryButton( mixin.setPrimaryButton(
new FooterButton.Builder(getContext()) new FooterButton.Builder(getContext())

View File

@@ -20,12 +20,12 @@ import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import android.webkit.IWebViewUpdateService; import android.webkit.IWebViewUpdateService;
import android.webkit.UserPackage; import android.webkit.UserPackage;
import android.webkit.WebViewFactory; import android.webkit.WebViewFactory;
import android.webkit.WebViewProviderInfo; import android.webkit.WebViewProviderInfo;
import android.webkit.WebViewUpdateManager;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -44,8 +44,12 @@ public class WebViewUpdateServiceWrapper {
*/ */
public PackageInfo getCurrentWebViewPackage() { public PackageInfo getCurrentWebViewPackage() {
try { try {
return WebViewFactory.getUpdateService().getCurrentWebViewPackage(); if (android.webkit.Flags.updateServiceIpcWrapper()) {
} catch (RemoteException e) { return WebViewUpdateManager.getInstance().getCurrentWebViewPackage();
} else {
return WebViewFactory.getUpdateService().getCurrentWebViewPackage();
}
} catch (Exception e) {
Log.e(TAG, e.toString()); Log.e(TAG, e.toString());
} }
return null; return null;
@@ -59,8 +63,13 @@ public class WebViewUpdateServiceWrapper {
public List<ApplicationInfo> getValidWebViewApplicationInfos(Context context) { public List<ApplicationInfo> getValidWebViewApplicationInfos(Context context) {
WebViewProviderInfo[] providers = null; WebViewProviderInfo[] providers = null;
try { try {
providers = WebViewFactory.getUpdateService().getValidWebViewPackages(); if (android.webkit.Flags.updateServiceIpcWrapper()) {
} catch (RemoteException e) { providers = context.getSystemService(WebViewUpdateManager.class)
.getValidWebViewPackages();
} else {
providers = WebViewFactory.getUpdateService().getValidWebViewPackages();
}
} catch (Exception e) {
} }
List<ApplicationInfo> pkgs = new ArrayList<>(); List<ApplicationInfo> pkgs = new ArrayList<>();
for (WebViewProviderInfo provider : providers) { for (WebViewProviderInfo provider : providers) {
@@ -80,10 +89,15 @@ public class WebViewUpdateServiceWrapper {
*/ */
public boolean setWebViewProvider(String packageName) { public boolean setWebViewProvider(String packageName) {
try { try {
return packageName.equals( if (android.webkit.Flags.updateServiceIpcWrapper()) {
WebViewFactory.getUpdateService().changeProviderAndSetting(packageName)); return packageName.equals(
} catch (RemoteException e) { WebViewUpdateManager.getInstance().changeProviderAndSetting(packageName));
Log.e(TAG, "RemoteException when trying to change provider to " + packageName, e); } else {
return packageName.equals(
WebViewFactory.getUpdateService().changeProviderAndSetting(packageName));
}
} catch (Exception e) {
Log.e(TAG, "Exception when trying to change provider to " + packageName, e);
} }
return false; return false;
} }
@@ -112,18 +126,23 @@ public class WebViewUpdateServiceWrapper {
*/ */
@Nullable @Nullable
public String getDefaultWebViewPackageName() { public String getDefaultWebViewPackageName() {
WebViewProviderInfo provider = null;
try { try {
IWebViewUpdateService service = WebViewFactory.getUpdateService(); if (android.webkit.Flags.updateServiceIpcWrapper()) {
if (service != null) { WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
WebViewProviderInfo provider = service.getDefaultWebViewPackage(); if (manager != null) {
if (provider != null) { provider = manager.getDefaultWebViewPackage();
return provider.packageName; }
} else {
IWebViewUpdateService service = WebViewFactory.getUpdateService();
if (service != null) {
provider = service.getDefaultWebViewPackage();
} }
} }
} catch (RemoteException e) { } catch (Exception e) {
Log.e(TAG, "RemoteException when trying to fetch default WebView package Name", e); Log.e(TAG, "Exception when trying to fetch default WebView package Name", e);
} }
return null; return provider != null ? provider.packageName : null;
} }
static final int PACKAGE_FLAGS = PackageManager.MATCH_ANY_USER; static final int PACKAGE_FLAGS = PackageManager.MATCH_ANY_USER;

View File

@@ -33,6 +33,7 @@ import com.android.settings.dashboard.DashboardFeatureProvider;
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider; import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider;
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProviderImpl; import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProviderImpl;
import com.android.settings.display.DisplayFeatureProvider;
import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider;
import com.android.settings.fuelgauge.BatteryStatusFeatureProvider; import com.android.settings.fuelgauge.BatteryStatusFeatureProvider;
@@ -101,6 +102,7 @@ public class FakeFeatureFactory extends FeatureFactory {
public OnboardingFeatureProvider mOnboardingFeatureProvider; public OnboardingFeatureProvider mOnboardingFeatureProvider;
public FastPairFeatureProvider mFastPairFeatureProvider; public FastPairFeatureProvider mFastPairFeatureProvider;
public PrivateSpaceLoginFeatureProvider mPrivateSpaceLoginFeatureProvider; public PrivateSpaceLoginFeatureProvider mPrivateSpaceLoginFeatureProvider;
public DisplayFeatureProvider mDisplayFeatureProvider;
/** /**
* Call this in {@code @Before} method of the test class to use fake factory. * Call this in {@code @Before} method of the test class to use fake factory.
@@ -149,6 +151,7 @@ public class FakeFeatureFactory extends FeatureFactory {
mOnboardingFeatureProvider = mock(OnboardingFeatureProvider.class); mOnboardingFeatureProvider = mock(OnboardingFeatureProvider.class);
mFastPairFeatureProvider = mock(FastPairFeatureProvider.class); mFastPairFeatureProvider = mock(FastPairFeatureProvider.class);
mPrivateSpaceLoginFeatureProvider = mock(PrivateSpaceLoginFeatureProvider.class); mPrivateSpaceLoginFeatureProvider = mock(PrivateSpaceLoginFeatureProvider.class);
mDisplayFeatureProvider = mock(DisplayFeatureProvider.class);
} }
@Override @Override
@@ -331,5 +334,10 @@ public class FakeFeatureFactory extends FeatureFactory {
public PrivateSpaceLoginFeatureProvider getPrivateSpaceLoginFeatureProvider() { public PrivateSpaceLoginFeatureProvider getPrivateSpaceLoginFeatureProvider() {
return mPrivateSpaceLoginFeatureProvider; return mPrivateSpaceLoginFeatureProvider;
} }
@Override
public DisplayFeatureProvider getDisplayFeatureProvider() {
return mDisplayFeatureProvider;
}
} }

View File

@@ -30,6 +30,7 @@ import com.android.settings.connecteddevice.stylus.StylusFeatureProvider
import com.android.settings.dashboard.DashboardFeatureProvider import com.android.settings.dashboard.DashboardFeatureProvider
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider
import com.android.settings.display.DisplayFeatureProvider
import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider
import com.android.settings.fuelgauge.BatterySettingsFeatureProvider import com.android.settings.fuelgauge.BatterySettingsFeatureProvider
import com.android.settings.fuelgauge.BatteryStatusFeatureProvider import com.android.settings.fuelgauge.BatteryStatusFeatureProvider
@@ -146,4 +147,6 @@ class FakeFeatureFactory : FeatureFactory() {
get() = TODO("Not yet implemented") get() = TODO("Not yet implemented")
override val privateSpaceLoginFeatureProvider: PrivateSpaceLoginFeatureProvider override val privateSpaceLoginFeatureProvider: PrivateSpaceLoginFeatureProvider
get() = TODO("Not yet implemented") get() = TODO("Not yet implemented")
override val displayFeatureProvider: DisplayFeatureProvider
get() = TODO("Not yet implemented")
} }

View File

@@ -217,33 +217,33 @@ public class CredentialManagerPreferenceControllerTest {
assertThat(controller.isHiddenDueToNoProviderSet()).isFalse(); assertThat(controller.isHiddenDueToNoProviderSet()).isFalse();
assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE); assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
// Ensure that we stay under 5 providers. // Ensure that we stay under 5 providers (one is reserved for primary).
assertThat(controller.togglePackageNameEnabled("com.android.provider1")).isTrue(); assertThat(controller.togglePackageNameEnabled("com.android.provider1")).isTrue();
assertThat(controller.togglePackageNameEnabled("com.android.provider2")).isTrue(); assertThat(controller.togglePackageNameEnabled("com.android.provider2")).isTrue();
assertThat(controller.togglePackageNameEnabled("com.android.provider3")).isTrue(); assertThat(controller.togglePackageNameEnabled("com.android.provider3")).isTrue();
assertThat(controller.togglePackageNameEnabled("com.android.provider4")).isTrue(); assertThat(controller.togglePackageNameEnabled("com.android.provider4")).isTrue();
assertThat(controller.togglePackageNameEnabled("com.android.provider5")).isTrue(); assertThat(controller.togglePackageNameEnabled("com.android.provider5")).isFalse();
assertThat(controller.togglePackageNameEnabled("com.android.provider6")).isFalse(); assertThat(controller.togglePackageNameEnabled("com.android.provider6")).isFalse();
// Check that they are all actually registered. // Check that they are all actually registered.
Set<String> enabledProviders = controller.getEnabledProviders(); Set<String> enabledProviders = controller.getEnabledProviders();
assertThat(enabledProviders.size()).isEqualTo(5); assertThat(enabledProviders.size()).isEqualTo(4);
assertThat(enabledProviders.contains("com.android.provider1")).isTrue(); assertThat(enabledProviders.contains("com.android.provider1")).isTrue();
assertThat(enabledProviders.contains("com.android.provider2")).isTrue(); assertThat(enabledProviders.contains("com.android.provider2")).isTrue();
assertThat(enabledProviders.contains("com.android.provider3")).isTrue(); assertThat(enabledProviders.contains("com.android.provider3")).isTrue();
assertThat(enabledProviders.contains("com.android.provider4")).isTrue(); assertThat(enabledProviders.contains("com.android.provider4")).isTrue();
assertThat(enabledProviders.contains("com.android.provider5")).isTrue(); assertThat(enabledProviders.contains("com.android.provider5")).isFalse();
assertThat(enabledProviders.contains("com.android.provider6")).isFalse(); assertThat(enabledProviders.contains("com.android.provider6")).isFalse();
// Check that the settings string has the right component names. // Check that the settings string has the right component names.
List<String> enabledServices = controller.getEnabledSettings(); List<String> enabledServices = controller.getEnabledSettings();
assertThat(enabledServices.size()).isEqualTo(6); assertThat(enabledServices.size()).isEqualTo(5);
assertThat(enabledServices.contains("com.android.provider1/ClassA")).isTrue(); assertThat(enabledServices.contains("com.android.provider1/ClassA")).isTrue();
assertThat(enabledServices.contains("com.android.provider1/ClassB")).isTrue(); assertThat(enabledServices.contains("com.android.provider1/ClassB")).isTrue();
assertThat(enabledServices.contains("com.android.provider2/ClassA")).isTrue(); assertThat(enabledServices.contains("com.android.provider2/ClassA")).isTrue();
assertThat(enabledServices.contains("com.android.provider3/ClassA")).isTrue(); assertThat(enabledServices.contains("com.android.provider3/ClassA")).isTrue();
assertThat(enabledServices.contains("com.android.provider4/ClassA")).isTrue(); assertThat(enabledServices.contains("com.android.provider4/ClassA")).isTrue();
assertThat(enabledServices.contains("com.android.provider5/ClassA")).isTrue(); assertThat(enabledServices.contains("com.android.provider5/ClassA")).isFalse();
assertThat(enabledServices.contains("com.android.provider6/ClassA")).isFalse(); assertThat(enabledServices.contains("com.android.provider6/ClassA")).isFalse();
// Toggle the provider disabled. // Toggle the provider disabled.
@@ -251,22 +251,22 @@ public class CredentialManagerPreferenceControllerTest {
// Check that the provider was removed from the list of providers. // Check that the provider was removed from the list of providers.
Set<String> currentlyEnabledProviders = controller.getEnabledProviders(); Set<String> currentlyEnabledProviders = controller.getEnabledProviders();
assertThat(currentlyEnabledProviders.size()).isEqualTo(4); assertThat(currentlyEnabledProviders.size()).isEqualTo(3);
assertThat(currentlyEnabledProviders.contains("com.android.provider1")).isTrue(); assertThat(currentlyEnabledProviders.contains("com.android.provider1")).isTrue();
assertThat(currentlyEnabledProviders.contains("com.android.provider2")).isFalse(); assertThat(currentlyEnabledProviders.contains("com.android.provider2")).isFalse();
assertThat(currentlyEnabledProviders.contains("com.android.provider3")).isTrue(); assertThat(currentlyEnabledProviders.contains("com.android.provider3")).isTrue();
assertThat(currentlyEnabledProviders.contains("com.android.provider4")).isTrue(); assertThat(currentlyEnabledProviders.contains("com.android.provider4")).isTrue();
assertThat(currentlyEnabledProviders.contains("com.android.provider5")).isTrue(); assertThat(currentlyEnabledProviders.contains("com.android.provider5")).isFalse();
assertThat(currentlyEnabledProviders.contains("com.android.provider6")).isFalse(); assertThat(currentlyEnabledProviders.contains("com.android.provider6")).isFalse();
// Check that the provider was removed from the list of services stored in the setting. // Check that the provider was removed from the list of services stored in the setting.
List<String> currentlyEnabledServices = controller.getEnabledSettings(); List<String> currentlyEnabledServices = controller.getEnabledSettings();
assertThat(currentlyEnabledServices.size()).isEqualTo(5); assertThat(currentlyEnabledServices.size()).isEqualTo(4);
assertThat(currentlyEnabledServices.contains("com.android.provider1/ClassA")).isTrue(); assertThat(currentlyEnabledServices.contains("com.android.provider1/ClassA")).isTrue();
assertThat(currentlyEnabledServices.contains("com.android.provider1/ClassB")).isTrue(); assertThat(currentlyEnabledServices.contains("com.android.provider1/ClassB")).isTrue();
assertThat(currentlyEnabledServices.contains("com.android.provider3/ClassA")).isTrue(); assertThat(currentlyEnabledServices.contains("com.android.provider3/ClassA")).isTrue();
assertThat(currentlyEnabledServices.contains("com.android.provider4/ClassA")).isTrue(); assertThat(currentlyEnabledServices.contains("com.android.provider4/ClassA")).isTrue();
assertThat(currentlyEnabledServices.contains("com.android.provider5/ClassA")).isTrue(); assertThat(currentlyEnabledServices.contains("com.android.provider5/ClassA")).isFalse();
assertThat(currentlyEnabledServices.contains("com.android.provider6/ClassA")).isFalse(); assertThat(currentlyEnabledServices.contains("com.android.provider6/ClassA")).isFalse();
} }
@@ -528,6 +528,17 @@ public class CredentialManagerPreferenceControllerTest {
assertThat(thumbnail.getIntrinsicWidth()).isEqualTo(getIconSize()); assertThat(thumbnail.getIntrinsicWidth()).isEqualTo(getIconSize());
} }
@Test
public void testProviderLimitReached() {
// The limit is 5 with one slot reserved for primary.
assertThat(CredentialManagerPreferenceController.hasProviderLimitBeenReached(0)).isFalse();
assertThat(CredentialManagerPreferenceController.hasProviderLimitBeenReached(1)).isFalse();
assertThat(CredentialManagerPreferenceController.hasProviderLimitBeenReached(2)).isFalse();
assertThat(CredentialManagerPreferenceController.hasProviderLimitBeenReached(3)).isFalse();
assertThat(CredentialManagerPreferenceController.hasProviderLimitBeenReached(4)).isTrue();
assertThat(CredentialManagerPreferenceController.hasProviderLimitBeenReached(5)).isTrue();
}
private int getIconSize() { private int getIconSize() {
final Resources resources = mContext.getResources(); final Resources resources = mContext.getResources();
return (int) resources.getDimension(android.R.dimen.app_icon_size); return (int) resources.getDimension(android.R.dimen.app_icon_size);

View File

@@ -114,50 +114,21 @@ public class PrimaryProviderPreferenceTest {
} }
@Test @Test
public void ensureButtonsClicksCallDelegate_newDesign_buttonsHidden() { public void ensureButtonsClicksCallDelegate_newDesign_buttonsCompactMode() {
if (!PrimaryProviderPreference.shouldUseNewSettingsUi()) { if (!PrimaryProviderPreference.shouldUseNewSettingsUi()) {
return; return;
} }
PrimaryProviderPreference ppp = createTestPreferenceWithNewLayout(); PrimaryProviderPreference ppp = createTestPreferenceWithNewLayout();
int initialPaddingLeft = ppp.getButtonFrameView().getPaddingLeft();
// Test that the buttons are visible. // If we show the buttons the left padding should be updated.
assertThat(ppp.getButtonFrameView()).isNotNull(); ppp.setButtonsCompactMode(true);
assertThat(ppp.getButtonFrameView().getVisibility()).isEqualTo(View.GONE); assertThat(ppp.getButtonFrameView().getPaddingLeft()).isNotEqualTo(initialPaddingLeft);
assertThat(mReceivedChangeButtonClicked).isFalse();
// If we show the buttons the visiblility should be updated. // If we hide the buttons the left padding should be updated.
ppp.setButtonsVisible(true); ppp.setButtonsCompactMode(false);
assertThat(ppp.getButtonFrameView().getVisibility()).isEqualTo(View.VISIBLE); assertThat(ppp.getButtonFrameView().getPaddingLeft()).isEqualTo(initialPaddingLeft);
// If we hide the buttons the visibility should be updated.
ppp.setButtonsVisible(false);
assertThat(ppp.getButtonFrameView().getVisibility()).isEqualTo(View.GONE);
}
@Test
public void ensureButtonsClicksCallDelegate_oldDesign() {
if (PrimaryProviderPreference.shouldUseNewSettingsUi()) {
return;
}
PrimaryProviderPreference ppp = createTestPreference("preference_widget_gear");
// Test that clicking the preference results in the delegate being
// called.
assertThat(mReceivedOpenButtonClicked).isFalse();
ppp.getOnPreferenceClickListener().onPreferenceClick(ppp);
assertThat(mReceivedOpenButtonClicked).isTrue();
// Test that the gear button is present and visible.
assertThat(ppp.getGearView()).isNotNull();
assertThat(ppp.getGearView().getVisibility()).isEqualTo(View.VISIBLE);
// Test that clicking the gear button results in the delegate being
// called.
assertThat(mReceivedChangeButtonClicked).isFalse();
ppp.getGearView().performClick();
assertThat(mReceivedChangeButtonClicked).isTrue();
} }
private PrimaryProviderPreference createTestPreferenceWithNewLayout() { private PrimaryProviderPreference createTestPreferenceWithNewLayout() {

View File

@@ -33,6 +33,7 @@ import com.android.settings.dashboard.DashboardFeatureProvider;
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider; import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider;
import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProviderImpl; import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProviderImpl;
import com.android.settings.display.DisplayFeatureProvider;
import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider;
import com.android.settings.fuelgauge.BatteryStatusFeatureProvider; import com.android.settings.fuelgauge.BatteryStatusFeatureProvider;
@@ -100,6 +101,7 @@ public class FakeFeatureFactory extends FeatureFactory {
public OnboardingFeatureProvider mOnboardingFeatureProvider; public OnboardingFeatureProvider mOnboardingFeatureProvider;
public FastPairFeatureProvider mFastPairFeatureProvider; public FastPairFeatureProvider mFastPairFeatureProvider;
public PrivateSpaceLoginFeatureProvider mPrivateSpaceLoginFeatureProvider; public PrivateSpaceLoginFeatureProvider mPrivateSpaceLoginFeatureProvider;
public DisplayFeatureProvider mDisplayFeatureProvider;
/** Call this in {@code @Before} method of the test class to use fake factory. */ /** Call this in {@code @Before} method of the test class to use fake factory. */
public static FakeFeatureFactory setupForTest() { public static FakeFeatureFactory setupForTest() {
@@ -150,6 +152,7 @@ public class FakeFeatureFactory extends FeatureFactory {
mOnboardingFeatureProvider = mock(OnboardingFeatureProvider.class); mOnboardingFeatureProvider = mock(OnboardingFeatureProvider.class);
mFastPairFeatureProvider = mock(FastPairFeatureProvider.class); mFastPairFeatureProvider = mock(FastPairFeatureProvider.class);
mPrivateSpaceLoginFeatureProvider = mock(PrivateSpaceLoginFeatureProvider.class); mPrivateSpaceLoginFeatureProvider = mock(PrivateSpaceLoginFeatureProvider.class);
mDisplayFeatureProvider = mock(DisplayFeatureProvider.class);
} }
@Override @Override
@@ -332,4 +335,9 @@ public class FakeFeatureFactory extends FeatureFactory {
public PrivateSpaceLoginFeatureProvider getPrivateSpaceLoginFeatureProvider() { public PrivateSpaceLoginFeatureProvider getPrivateSpaceLoginFeatureProvider() {
return mPrivateSpaceLoginFeatureProvider; return mPrivateSpaceLoginFeatureProvider;
} }
@Override
public DisplayFeatureProvider getDisplayFeatureProvider() {
return mDisplayFeatureProvider;
}
} }