diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-07-07 05:25:55 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-07-07 05:25:55 +0000 |
commit | d611359dbeb189c9cc436c5b5c5572d3f718a3da (patch) | |
tree | 707ae35946cdb7ee11a6b9c9f474762a55a397c8 | |
parent | cae41d831be4ff8cc4e0725d28b0d3aa8e11727a (diff) | |
parent | c7f82c1561900d245e2800f5e3beb76be5752ef4 (diff) | |
download | wifi-d611359dbeb189c9cc436c5b5c5572d3f718a3da.tar.gz |
Snap for 10453563 from c7f82c1561900d245e2800f5e3beb76be5752ef4 to mainline-tzdata5-release
Change-Id: Ib9f5df134c87b60ee4037f647c6d1fac554c7685
25 files changed, 222 insertions, 137 deletions
diff --git a/libs/WifiTrackerLib/res/values-ar/strings.xml b/libs/WifiTrackerLib/res/values-ar/strings.xml index 2b4a3fd03..298ecfe2a 100644 --- a/libs/WifiTrackerLib/res/values-ar/strings.xml +++ b/libs/WifiTrackerLib/res/values-ar/strings.xml @@ -19,7 +19,7 @@ <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string> <string name="wifitrackerlib_checking_for_internet_access" msgid="4787495471423429472">"جارٍ التأكّد من الاتصال بالإنترنت..."</string> <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"الاتصال التلقائي غير مُفعَّل."</string> - <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"تم الحفظ من قِبل <xliff:g id="NAME">%1$s</xliff:g>."</string> + <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"تم الحفظ من قِبل <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"لن يتم الاتصال بالإنترنت تلقائيًا."</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"لا يتوفّر اتصال بالإنترنت"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"حدثت مشكلة في المصادقة."</string> diff --git a/libs/WifiTrackerLib/res/values-ca/arrays.xml b/libs/WifiTrackerLib/res/values-ca/arrays.xml index 8c28cf048..3d226f588 100644 --- a/libs/WifiTrackerLib/res/values-ca/arrays.xml +++ b/libs/WifiTrackerLib/res/values-ca/arrays.xml @@ -26,7 +26,7 @@ <item msgid="9055468790485684083">"S\'està connectant…"</item> <item msgid="6099499723199990208">"S\'està autenticant…"</item> <item msgid="6794055951297347103">"S\'està obtenint l\'adreça IP…"</item> - <item msgid="5450920562291300229">"Connectat"</item> + <item msgid="5450920562291300229">"Connectada"</item> <item msgid="6332116533879646145">"Suspesa"</item> <item msgid="294459081501073818">"S\'està desconnectant…"</item> <item msgid="1577368920272598676">"Desconnectada"</item> diff --git a/libs/WifiTrackerLib/res/values-ca/strings.xml b/libs/WifiTrackerLib/res/values-ca/strings.xml index fc28a37a1..5d1002fd3 100644 --- a/libs/WifiTrackerLib/res/values-ca/strings.xml +++ b/libs/WifiTrackerLib/res/values-ca/strings.xml @@ -21,7 +21,7 @@ <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Connexió automàtica desactivada"</string> <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Desada per <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"No es connectarà automàticament"</string> - <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"No hi ha accés a Internet"</string> + <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sense accés a Internet"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema d\'autenticació"</string> <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Comprova la contrasenya i torna-ho a provar"</string> <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Error de configuració d\'IP"</string> diff --git a/libs/WifiTrackerLib/res/values-cs/strings.xml b/libs/WifiTrackerLib/res/values-cs/strings.xml index 0472dc5f7..ed574bb8a 100644 --- a/libs/WifiTrackerLib/res/values-cs/strings.xml +++ b/libs/WifiTrackerLib/res/values-cs/strings.xml @@ -19,9 +19,9 @@ <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string> <string name="wifitrackerlib_checking_for_internet_access" msgid="4787495471423429472">"Kontrola přístupu k internetu…"</string> <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatické připojení je vypnuté"</string> - <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Uloženo uživatelem <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Uložil(a): <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nelze se automaticky připojit"</string> - <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Nejste připojeni k internetu"</string> + <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Není připojení k internetu"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problém s ověřením"</string> <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Zkontrolujte heslo a zkuste to znovu"</string> <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Selhání konfigurace protokolu IP"</string> diff --git a/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml b/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml index 9248e42fe..968ceaccf 100644 --- a/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml +++ b/libs/WifiTrackerLib/res/values-fr-rCA/strings.xml @@ -19,7 +19,7 @@ <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string> <string name="wifitrackerlib_checking_for_internet_access" msgid="4787495471423429472">"Recherche d\'un accès Internet…"</string> <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"La connexion automatique est désactivée"</string> - <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Enregistrés par <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Enregistré par <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Reconnexion automatique impossible"</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Aucun accès à Internet"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problème d\'authentification"</string> @@ -57,7 +57,7 @@ <string name="wifitrackerlib_wifi_security_short_eap_suiteb" msgid="6335062557041604336">"Suite-B-192"</string> <string name="wifitrackerlib_wifi_security_eap_suiteb" msgid="4715703239786225763">"WPA3-Enterprise 192 bits"</string> <string name="wifitrackerlib_wifi_security_short_wpa_wpa2" msgid="6770438383385707243">"WPA/WPA2"</string> - <string name="wifitrackerlib_wifi_security_wpa_wpa2" msgid="5767878305316110228">"WPA/WPA2-Personal"</string> + <string name="wifitrackerlib_wifi_security_wpa_wpa2" msgid="5767878305316110228">"WPA/WPA2-Personnel"</string> <string name="wifitrackerlib_wifi_security_short_wpa_wpa2_wpa3" msgid="4489424775550194618">"WPA/WPA2/WPA3"</string> <string name="wifitrackerlib_wifi_security_wpa_wpa2_wpa3" msgid="4154428413248489642">"WPA/WPA2/WPA3-Personal"</string> <string name="wifitrackerlib_wifi_security_wep" msgid="7714779033848180369">"WEP"</string> diff --git a/libs/WifiTrackerLib/res/values-hy/strings.xml b/libs/WifiTrackerLib/res/values-hy/strings.xml index 1a881b219..f1749bb5b 100644 --- a/libs/WifiTrackerLib/res/values-hy/strings.xml +++ b/libs/WifiTrackerLib/res/values-hy/strings.xml @@ -19,7 +19,7 @@ <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string> <string name="wifitrackerlib_checking_for_internet_access" msgid="4787495471423429472">"Ինտերնետի հասանելիության ստուգում…"</string> <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Ավտոմատ միացումն անջատված է"</string> - <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Ով է պահել՝ <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Պահված է՝ <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Չի միանա ավտոմատ"</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Ինտերնետ կապ չկա"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Նույնականացման խնդիր"</string> diff --git a/libs/WifiTrackerLib/res/values-iw/strings.xml b/libs/WifiTrackerLib/res/values-iw/strings.xml index c2366b405..500806c8a 100644 --- a/libs/WifiTrackerLib/res/values-iw/strings.xml +++ b/libs/WifiTrackerLib/res/values-iw/strings.xml @@ -19,7 +19,7 @@ <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string> <string name="wifitrackerlib_checking_for_internet_access" msgid="4787495471423429472">"מתבצעת בדיקה לצורך גישה לאינטרנט..."</string> <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"החיבור האוטומטי כבוי"</string> - <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"נשמרה על-ידי <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"נשמרה על-ידי: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"לא יתבצע חיבור באופן אוטומטי"</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"אין גישה לאינטרנט"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"בעיית אימות"</string> diff --git a/libs/WifiTrackerLib/res/values-kn/strings.xml b/libs/WifiTrackerLib/res/values-kn/strings.xml index 019f7d624..e47928534 100644 --- a/libs/WifiTrackerLib/res/values-kn/strings.xml +++ b/libs/WifiTrackerLib/res/values-kn/strings.xml @@ -23,7 +23,7 @@ <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವಿಲ್ಲ"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ದೃಢೀಕರಣದ ಸಮಸ್ಯೆ"</string> - <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ಪಾಸ್ವರ್ಡ್ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string> + <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ಪಾಸ್ವರ್ಡ್ ಪರಿಶೀಲಿಸಿ, ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string> <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP ಕಾನ್ಫಿಗರೇಶನ್ ವೈಫಲ್ಯ"</string> <string name="wifitrackerlib_wifi_disabled_transition_disable_indication" msgid="6416221593061166867">"ಪ್ರಸ್ತುತ ಭದ್ರತಾ ಸೆಟ್ಟಿಂಗ್ಗಳ ಜೊತೆ ಲಭ್ಯವಿಲ್ಲ"</string> <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string> @@ -34,7 +34,7 @@ <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string> <string name="wifitrackerlib_wifi_network_not_found" msgid="1308764769892463388">"ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string> <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string> - <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ಉಳಿಸಲಾಗಿದೆ"</string> + <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ಸೇವ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ಮೀಟರ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ಮೀಟರ್ ಮಾಡಲಾಗಿಲ್ಲ"</string> <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಮೂಲಕ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string> diff --git a/libs/WifiTrackerLib/res/values-or/arrays.xml b/libs/WifiTrackerLib/res/values-or/arrays.xml index 607552e7b..838ab874c 100644 --- a/libs/WifiTrackerLib/res/values-or/arrays.xml +++ b/libs/WifiTrackerLib/res/values-or/arrays.xml @@ -26,7 +26,7 @@ <item msgid="9055468790485684083">"ସଂଯୋଗ ହେଉଛି…"</item> <item msgid="6099499723199990208">"ପ୍ରାମାଣିକରଣ କରାଯାଉଛି…"</item> <item msgid="6794055951297347103">"IP ଠିକଣା ପ୍ରାପ୍ତ କରୁଛି…"</item> - <item msgid="5450920562291300229">"ସଂଯୋଗ ହୋଇଛି"</item> + <item msgid="5450920562291300229">"କନେକ୍ଟ କରାଯାଇଛି"</item> <item msgid="6332116533879646145">"ସାମୟିକ ଭାବରେ ବନ୍ଦ କରାଯାଇଛି"</item> <item msgid="294459081501073818">"ବିଚ୍ଛିନ୍ନ କରାଯାଉଛି…"</item> <item msgid="1577368920272598676">"ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି"</item> diff --git a/libs/WifiTrackerLib/res/values-or/strings.xml b/libs/WifiTrackerLib/res/values-or/strings.xml index 2cfe11bbe..9e992f962 100644 --- a/libs/WifiTrackerLib/res/values-or/strings.xml +++ b/libs/WifiTrackerLib/res/values-or/strings.xml @@ -34,7 +34,7 @@ <string name="wifitrackerlib_wifi_mbo_assoc_disallowed_cannot_connect" msgid="2692286425448897083">"ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="wifitrackerlib_wifi_network_not_found" msgid="1308764769892463388">"ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="wifitrackerlib_wifi_disconnected" msgid="3320414360982942679">"ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି"</string> - <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ସେଭ୍ କରାଯାଇଛି"</string> + <string name="wifitrackerlib_wifi_remembered" msgid="2406091442008343041">"ସେଭ କରାଯାଇଛି"</string> <string name="wifitrackerlib_wifi_metered_label" msgid="8818508951778620385">"ମିଟର ହୋଇଥିବା"</string> <string name="wifitrackerlib_wifi_unmetered_label" msgid="1902150402929678469">"ମିଟର ହୋଇନଥିବା"</string> <string name="wifitrackerlib_connected_via_app" msgid="7823921840931347560">"<xliff:g id="NAME">%1$s</xliff:g> ମାଧ୍ୟମରେ ସଂଯୋଗ କରାଯାଇଛି"</string> diff --git a/libs/WifiTrackerLib/res/values-pa/strings.xml b/libs/WifiTrackerLib/res/values-pa/strings.xml index ba9beec75..322e547c7 100644 --- a/libs/WifiTrackerLib/res/values-pa/strings.xml +++ b/libs/WifiTrackerLib/res/values-pa/strings.xml @@ -23,7 +23,7 @@ <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ"</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"ਕੋਈ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"ਪ੍ਰਮਾਣੀਕਰਨ ਸਮੱਸਿਆ"</string> - <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ਪਾਸਵਰਡ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string> + <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"ਪਾਸਵਰਡ ਦੀ ਜਾਂਚ ਕਰ ਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string> <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"IP ਸੰਰੂਪਣ ਅਸਫਲਤਾ"</string> <string name="wifitrackerlib_wifi_disabled_transition_disable_indication" msgid="6416221593061166867">"ਮੌਜੂਦਾ ਸੁਰੱਖਿਆ ਸੈਟਿੰਗਾਂ ਨਾਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string> <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"ਬੰਦ ਕੀਤਾ ਗਿਆ"</string> diff --git a/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml b/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml index 822b09180..351582278 100644 --- a/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml +++ b/libs/WifiTrackerLib/res/values-pt-rPT/arrays.xml @@ -26,7 +26,7 @@ <item msgid="9055468790485684083">"A ligar…"</item> <item msgid="6099499723199990208">"A autenticar…"</item> <item msgid="6794055951297347103">"A obter endereço IP…"</item> - <item msgid="5450920562291300229">"Ligado"</item> + <item msgid="5450920562291300229">"Ligada"</item> <item msgid="6332116533879646145">"Suspenso"</item> <item msgid="294459081501073818">"A desligar…"</item> <item msgid="1577368920272598676">"Desligado"</item> diff --git a/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml b/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml index 179435b6f..0ba5796f0 100644 --- a/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml +++ b/libs/WifiTrackerLib/res/values-pt-rPT/strings.xml @@ -23,7 +23,7 @@ <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Não é efetuada uma ligação automaticamente."</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Sem acesso à Internet."</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problema de autenticação"</string> - <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Verifique a palavra-passe e tente novamente."</string> + <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Verifique palavra-passe e tente de novo"</string> <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Falha de configuração de IP"</string> <string name="wifitrackerlib_wifi_disabled_transition_disable_indication" msgid="6416221593061166867">"Indisponível com as definições de segurança atuais"</string> <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Desativada"</string> diff --git a/libs/WifiTrackerLib/res/values-ru/strings.xml b/libs/WifiTrackerLib/res/values-ru/strings.xml index befda266b..b25060f77 100644 --- a/libs/WifiTrackerLib/res/values-ru/strings.xml +++ b/libs/WifiTrackerLib/res/values-ru/strings.xml @@ -21,9 +21,9 @@ <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Автоподключение отключено"</string> <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Сохранено: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Подключение не будет выполняться автоматически"</string> - <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Без доступа к Интернету"</string> + <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Без доступа к интернету"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Ошибка аутентификации"</string> - <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Похоже, вы указали неверный пароль. Повторите попытку."</string> + <string name="wifitrackerlib_wifi_check_password_try_again" msgid="2327777719175574699">"Неверный пароль. Повторите попытку."</string> <string name="wifitrackerlib_wifi_disabled_network_failure" msgid="3046956554224277166">"Ошибка конфигурации IP"</string> <string name="wifitrackerlib_wifi_disabled_transition_disable_indication" msgid="6416221593061166867">"Доступ закрыт согласно настройкам безопасности"</string> <string name="wifitrackerlib_wifi_disabled_generic" msgid="4278806060337007814">"Отключено"</string> diff --git a/libs/WifiTrackerLib/res/values-sk/strings.xml b/libs/WifiTrackerLib/res/values-sk/strings.xml index e3e495511..c757dc71c 100644 --- a/libs/WifiTrackerLib/res/values-sk/strings.xml +++ b/libs/WifiTrackerLib/res/values-sk/strings.xml @@ -19,7 +19,7 @@ <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string> <string name="wifitrackerlib_checking_for_internet_access" msgid="4787495471423429472">"Kontroluje sa dostupnosť internetového pripojenia..."</string> <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"Automatické pripojenie je vypnuté"</string> - <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Uložil používateľ <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"Uložila aplikácia <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"Nedôjde k automatickému pripojeniu"</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"Bez prístupu k internetu"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"Problém s overením"</string> diff --git a/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml b/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml index cbf3a82b8..5be532e2e 100644 --- a/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml +++ b/libs/WifiTrackerLib/res/values-zh-rCN/strings.xml @@ -19,7 +19,7 @@ <string name="wifitrackerlib_summary_separator" msgid="6613897475167609815">" / "</string> <string name="wifitrackerlib_checking_for_internet_access" msgid="4787495471423429472">"正在检查互联网访问权限…"</string> <string name="wifitrackerlib_auto_connect_disable" msgid="4714835547164460651">"自动连接已关闭"</string> - <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"已由<xliff:g id="NAME">%1$s</xliff:g>保存"</string> + <string name="wifitrackerlib_saved_network" msgid="5353460010746484376">"由<xliff:g id="NAME">%1$s</xliff:g>保存"</string> <string name="wifitrackerlib_wifi_no_internet_no_reconnect" msgid="6618216332537706908">"无法自动连接"</string> <string name="wifitrackerlib_wifi_no_internet" msgid="4998563744669636949">"无法访问互联网"</string> <string name="wifitrackerlib_wifi_disabled_password_failure" msgid="2850244218754633550">"身份验证出现问题"</string> diff --git a/libs/WifiTrackerLib/sdk_src/src/com/android/wifitrackerlib/NonSdkApiWrapper.java b/libs/WifiTrackerLib/sdk_src/src/com/android/wifitrackerlib/NonSdkApiWrapper.java index f0a7c7c87..52c51557b 100644 --- a/libs/WifiTrackerLib/sdk_src/src/com/android/wifitrackerlib/NonSdkApiWrapper.java +++ b/libs/WifiTrackerLib/sdk_src/src/com/android/wifitrackerlib/NonSdkApiWrapper.java @@ -23,7 +23,6 @@ import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.wifi.WifiInfo; -import android.os.Handler; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -75,19 +74,6 @@ class NonSdkApiWrapper { } /** - * Registers the system default network callback. - */ - static void registerSystemDefaultNetworkCallback( - @NonNull ConnectivityManager connectivityManager, - @NonNull ConnectivityManager.NetworkCallback callback, - @NonNull Handler handler) { - // registerSystemDefaultNetworkCallback does not have visibility to non-updatable modules, - // so we have to use the regular registerDefaultNetworkCallback here. - // TODO(b/230643853): See if we can add registerSystemDefaultNetworkCallback to the SDK. - connectivityManager.registerDefaultNetworkCallback(callback, handler); - } - - /** * Returns true if the WifiInfo is for the primary network, false otherwise. */ static boolean isPrimary(@NonNull WifiInfo wifiInfo) { diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java index a430a44f4..5f1abd9a5 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java @@ -21,6 +21,7 @@ import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static android.os.Build.VERSION_CODES; import android.annotation.TargetApi; +import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -101,7 +102,6 @@ public class BaseWifiTracker { private int mWifiState = WifiManager.WIFI_STATE_DISABLED; private boolean mIsInitialized = false; - private boolean mIsStopped = true; // Registered on the worker thread private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @@ -117,11 +117,7 @@ public class BaseWifiTracker { if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { mWifiState = intent.getIntExtra( WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED); - if (mWifiState == WifiManager.WIFI_STATE_ENABLED) { - mScanner.start(); - } else { - mScanner.stop(); - } + mScanner.onWifiStateChanged(mWifiState == WifiManager.WIFI_STATE_ENABLED); notifyOnWifiStateChanged(); handleWifiStateChangedAction(); } else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) { @@ -141,6 +137,7 @@ public class BaseWifiTracker { protected final WifiTrackerInjector mInjector; protected final Context mContext; + protected final @NonNull ActivityManager mActivityManager; protected final WifiManager mWifiManager; protected final ConnectivityManager mConnectivityManager; protected final ConnectivityDiagnosticsManager mConnectivityDiagnosticsManager; @@ -306,6 +303,7 @@ public class BaseWifiTracker { BaseWifiTrackerCallback listener, String tag) { mInjector = injector; + mActivityManager = context.getSystemService(ActivityManager.class); lifecycle.addObserver(new LifecycleObserver() { @OnLifecycleEvent(Lifecycle.Event.ON_START) @MainThread @@ -352,18 +350,24 @@ public class BaseWifiTracker { */ @MainThread public void onStart() { + if (isVerboseLoggingEnabled()) { + Log.v(mTag, "onStart"); + } + mScanner.onStart(); mWorkerHandler.post(() -> { - mIsStopped = false; IntentFilter filter = new IntentFilter(); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); filter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); mContext.registerReceiver(mBroadcastReceiver, filter, /* broadcastPermission */ null, mWorkerHandler); mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback, mWorkerHandler); + mConnectivityManager.registerDefaultNetworkCallback(mDefaultNetworkCallback, + mWorkerHandler); mConnectivityDiagnosticsManager.registerConnectivityDiagnosticsCallback(mNetworkRequest, mConnectivityDiagnosticsExecutor, mConnectivityDiagnosticsCallback); if (mSharedConnectivityManager != null && mSharedConnectivityCallback != null @@ -371,8 +375,6 @@ public class BaseWifiTracker { mSharedConnectivityManager.registerCallback(mSharedConnectivityExecutor, mSharedConnectivityCallback); } - NonSdkApiWrapper.registerSystemDefaultNetworkCallback( - mConnectivityManager, mDefaultNetworkCallback, mWorkerHandler); handleOnStart(); mIsInitialized = true; }); @@ -383,9 +385,11 @@ public class BaseWifiTracker { */ @MainThread public void onStop() { + if (isVerboseLoggingEnabled()) { + Log.v(mTag, "onStop"); + } + mScanner.onStop(); mWorkerHandler.post(() -> { - mIsStopped = true; - mScanner.stop(); try { mContext.unregisterReceiver(mBroadcastReceiver); mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); @@ -633,27 +637,28 @@ public class BaseWifiTracker { } /** - * Scanner to handle starting scans every SCAN_INTERVAL_MILLIS + * Helper class to handle starting scans every SCAN_INTERVAL_MILLIS. + * + * Scanning is only done when the activity is in the Started state and Wi-Fi is enabled. */ - @WorkerThread private class Scanner extends Handler { - private static final int SCAN_RETRY_TIMES = 3; - - private int mRetry = 0; - private boolean mIsActive; + private boolean mIsStartedState = false; + private boolean mIsWifiEnabled = false; private final WifiScanner.ScanListener mFirstScanListener = new WifiScanner.ScanListener() { @Override + @MainThread public void onPeriodChanged(int periodInMs) { // No-op. } @Override + @MainThread public void onResults(WifiScanner.ScanData[] results) { mWorkerHandler.post(() -> { - if (!mIsActive || mIsStopped) { + if (!shouldScan()) { return; } - if (sVerboseLogging) { + if (isVerboseLoggingEnabled()) { Log.v(mTag, "Received scan results from first scan request."); } List<ScanResult> scanResults = new ArrayList<>(); @@ -669,29 +674,32 @@ public class BaseWifiTracker { new Intent(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION) .putExtra(WifiManager.EXTRA_RESULTS_UPDATED, true)); // Now start scanning via WifiManager.startScan(). - postScan(); + scanLoop(); }); } @Override + @MainThread public void onFullResult(ScanResult fullScanResult) { // No-op. } @Override + @MainThread public void onSuccess() { // No-op. } @Override + @MainThread public void onFailure(int reason, String description) { mWorkerHandler.post(() -> { - if (!mIsActive || mIsStopped) { + if (!mIsWifiEnabled) { return; } Log.e(mTag, "Failed to scan! Reason: " + reason + ", "); // First scan failed, start scanning normally anyway. - postScan(); + scanLoop(); }); } }; @@ -700,14 +708,58 @@ public class BaseWifiTracker { super(looper); } - private void start() { - if (mIsActive || mIsStopped) { - return; + /** + * Called when the activity enters the Started state. + * When this happens, evaluate if we need to start scanning. + */ + @MainThread + private void onStart() { + mIsStartedState = true; + mWorkerHandler.post(this::possiblyStartScanning); + } + + /** + * Called when the activity exits the Started state. + * When this happens, stop scanning. + */ + @MainThread + private void onStop() { + mIsStartedState = false; + mWorkerHandler.post(this::stopScanning); + } + + /** + * Called whenever the Wi-Fi state changes. If the new state differs from the old state, + * then re-evaluate whether we need to start or stop scanning. + * @param enabled Whether Wi-Fi is enabled or not. + */ + @WorkerThread + private void onWifiStateChanged(boolean enabled) { + boolean oldEnabled = mIsWifiEnabled; + mIsWifiEnabled = enabled; + if (mIsWifiEnabled != oldEnabled) { + if (mIsWifiEnabled) { + possiblyStartScanning(); + } else { + stopScanning(); + } } - mIsActive = true; - if (isVerboseLoggingEnabled()) { - Log.v(mTag, "Scanner start"); + } + + /** + * Returns true if we should be scanning and false if not. + * Scanning should only happen when Wi-Fi is enabled and the activity is started. + */ + private boolean shouldScan() { + return mIsWifiEnabled && mIsStartedState; + } + + @WorkerThread + private void possiblyStartScanning() { + if (!shouldScan()) { + return; } + Log.i(mTag, "Scanning started"); if (BuildCompat.isAtLeastU()) { // Start off with a fast scan of 2.4GHz, 5GHz, and 6GHz RNR using WifiScanner. // After this is done, fall back to WifiManager.startScan() to get the rest of @@ -719,43 +771,56 @@ public class BaseWifiTracker { scanSettings.setRnrSetting(WifiScanner.WIFI_RNR_ENABLED); WifiScanner wifiScanner = mContext.getSystemService(WifiScanner.class); if (wifiScanner != null) { + wifiScanner.stopScan(mFirstScanListener); + if (isVerboseLoggingEnabled()) { + Log.v(mTag, "Issuing scan request from WifiScanner"); + } wifiScanner.startScan(scanSettings, mFirstScanListener); return; } else { Log.e(mTag, "Failed to retrieve WifiScanner!"); } } - postScan(); + scanLoop(); } - private void stop() { - mIsActive = false; - if (isVerboseLoggingEnabled()) { - Log.v(mTag, "Scanner stop"); - } - mRetry = 0; + @WorkerThread + private void stopScanning() { + Log.i(mTag, "Scanning stopped"); removeCallbacksAndMessages(null); } - private void postScan() { - if (!mIsActive || mIsStopped) { - Log.wtf(mTag, "Tried to run scan loop when we've already stopped!"); + @WorkerThread + private void scanLoop() { + if (!shouldScan()) { + Log.wtf(mTag, "Scan loop called even though we shouldn't be scanning!" + + " mIsWifiEnabled=" + mIsWifiEnabled + + " mIsStartedState=" + mIsStartedState); return; } - if (mWifiManager.startScan()) { - mRetry = 0; - } else if (++mRetry >= SCAN_RETRY_TIMES) { - // TODO(b/70983952): See if toast is needed here - if (isVerboseLoggingEnabled()) { - Log.v(mTag, "Scanner failed to start scan " + mRetry + " times!"); - } - mRetry = 0; + if (!isAppVisible()) { + Log.wtf(mTag, "Scan loop called even though app isn't visible anymore!" + + " mIsWifiEnabled=" + mIsWifiEnabled + + " mIsStartedState=" + mIsStartedState); return; } - postDelayed(this::postScan, mScanIntervalMillis); + if (isVerboseLoggingEnabled()) { + Log.v(mTag, "Issuing scan request from WifiManager"); + } + // Remove any pending scanLoops in case possiblyStartScanning was called more than once. + removeCallbacksAndMessages(null); + mWifiManager.startScan(); + postDelayed(this::scanLoop, mScanIntervalMillis); } } + private boolean isAppVisible() { + ActivityManager.RunningAppProcessInfo processInfo = + new ActivityManager.RunningAppProcessInfo(); + ActivityManager.getMyMemoryState(processInfo); + return processInfo.importance <= ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE; + } + /** * Posts onWifiStateChanged callback on the main thread. */ diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NonSdkApiWrapper.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NonSdkApiWrapper.java index 3bd206f5f..0a71bcbe8 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NonSdkApiWrapper.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/NonSdkApiWrapper.java @@ -25,7 +25,6 @@ import android.net.NetworkCapabilities; import android.net.TransportInfo; import android.net.vcn.VcnTransportInfo; import android.net.wifi.WifiInfo; -import android.os.Handler; import android.os.UserManager; import android.text.Annotation; import android.text.SpannableString; @@ -111,16 +110,6 @@ class NonSdkApiWrapper { } /** - * Registers the default network callback. - */ - static void registerSystemDefaultNetworkCallback( - @NonNull ConnectivityManager connectivityManager, - @NonNull ConnectivityManager.NetworkCallback callback, - @NonNull Handler handler) { - connectivityManager.registerSystemDefaultNetworkCallback(callback, handler); - } - - /** * Returns true if the WifiInfo is for the primary network, false otherwise. */ static boolean isPrimary(@NonNull WifiInfo wifiInfo) { diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java index e97a3f6f5..95ab2599c 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java @@ -962,7 +962,7 @@ public class StandardWifiEntry extends WifiEntry { } // TODO(b/227622961): Remove the suppression once the linter recognizes BuildCompat.isAtLeastT() - @SuppressLint("NewApi") + @SuppressLint({"NewApi", "SwitchIntDef"}) private synchronized String getScanResultDescription(ScanResult scanResult, long nowMs) { final StringBuilder description = new StringBuilder(); description.append(" \n{"); diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java index c2bc0ad7a..0c575f73b 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java @@ -238,6 +238,7 @@ public class WifiEntry { protected NetworkInfo mNetworkInfo; protected Network mNetwork; protected NetworkCapabilities mNetworkCapabilities; + protected NetworkCapabilities mDefaultNetworkCapabilities; protected ConnectivityDiagnosticsManager.ConnectivityReport mConnectivityReport; protected ConnectedInfo mConnectedInfo; @@ -249,7 +250,6 @@ public class WifiEntry { protected boolean mCalledDisconnect = false; protected boolean mIsDefaultNetwork; - protected boolean mIsCellDefaultNetwork; private Optional<ManageSubscriptionAction> mManageSubscriptionAction = Optional.empty(); @@ -334,11 +334,12 @@ public class WifiEntry { /** * Returns whether the level icon for this network should show an X or not. + * By default, this means any connected network that has no/low-quality internet access. */ public boolean shouldShowXLevelIcon() { return getConnectedState() != CONNECTED_STATE_DISCONNECTED && mConnectivityReport != null - && (!hasInternetAccess() || !mIsDefaultNetwork) + && (!hasInternetAccess() || isLowQuality()) && !canSignIn() && isPrimaryNetwork(); } @@ -364,10 +365,12 @@ public class WifiEntry { * Returns whether this network is the primary Wi-Fi network or not. */ public boolean isPrimaryNetwork() { - if (mWifiInfo == null) { + if (getConnectedState() == CONNECTED_STATE_DISCONNECTED) { + // In case we have mNetworkInfo but the state is disconnected. return false; } - return NonSdkApiWrapper.isPrimary(mWifiInfo); + return mNetworkInfo != null + || (mWifiInfo != null && NonSdkApiWrapper.isPrimary(mWifiInfo)); } /** @@ -380,8 +383,12 @@ public class WifiEntry { if (mNetworkCapabilities == null) { return false; } + if (mDefaultNetworkCapabilities == null) { + return false; + } return mNetworkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) - && mIsCellDefaultNetwork; + && mDefaultNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) + && !mDefaultNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN); } /** @@ -976,8 +983,7 @@ public class WifiEntry { @NonNull Network network, @NonNull NetworkCapabilities capabilities) { onNetworkCapabilitiesChanged(network, capabilities); - mIsCellDefaultNetwork = Utils.getWifiInfo(capabilities) == null - && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR); + mDefaultNetworkCapabilities = capabilities; mIsDefaultNetwork = network.equals(mNetwork); notifyOnUpdated(); } @@ -986,7 +992,7 @@ public class WifiEntry { * Notifies this WifiEntry that the default network was lost. */ synchronized void onDefaultNetworkLost() { - mIsCellDefaultNetwork = false; + mDefaultNetworkCapabilities = null; mIsDefaultNetwork = false; notifyOnUpdated(); } diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java index 81a458def..dc2a7b4dc 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java @@ -386,6 +386,7 @@ public class WifiPickerTracker extends BaseWifiTracker { for (WifiEntry entry : getAllWifiEntries()) { entry.onPrimaryWifiInfoChanged(primaryWifiInfo, networkInfo); } + updateWifiEntries(); } @WorkerThread diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java index fcd939e00..ebd86cb02 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/PasspointWifiEntryTest.java @@ -45,6 +45,7 @@ import android.os.test.TestLooper; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.MockitoSession; @@ -222,7 +223,7 @@ public class PasspointWifiEntryTest { } @Test - public void testShouldShowXLevelIcon_unvalidatedOrNotDefault_returnsTrue() { + public void testShouldShowXLevelIcon_unvalidatedOrLowQuality_returnsTrue() { when(mMockWifiInfo.isPasspointAp()).thenReturn(true); when(mMockWifiInfo.getPasspointFqdn()).thenReturn(FQDN); @@ -233,37 +234,27 @@ public class PasspointWifiEntryTest { // Disconnected should return false; assertThat(entry.shouldShowXLevelIcon()).isEqualTo(false); - // Not validated, Not Default + // Connected but validation attempt not complete, should not show X level icon yet. entry.onNetworkCapabilitiesChanged(mMockNetwork, mMockNetworkCapabilities); - - // Validation attempt not complete, should not show X level icon yet. assertThat(entry.shouldShowXLevelIcon()).isEqualTo(false); - // Validation attempt complete, should show X level icon now. + // Validation attempt complete, should show X level icon. ConnectivityDiagnosticsManager.ConnectivityReport connectivityReport = mock( ConnectivityDiagnosticsManager.ConnectivityReport.class); when(connectivityReport.getNetwork()).thenReturn(mMockNetwork); entry.updateConnectivityReport(connectivityReport); - - assertThat(entry.shouldShowXLevelIcon()).isEqualTo(true); - - // Not Validated, Default - entry.onDefaultNetworkCapabilitiesChanged(mMockNetwork, mMockNetworkCapabilities); - assertThat(entry.shouldShowXLevelIcon()).isEqualTo(true); - // Validated, Default + // Internet validated, should not show X level icon. when(mMockNetworkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) .thenReturn(true); entry.onNetworkCapabilitiesChanged(mMockNetwork, mMockNetworkCapabilities); - assertThat(entry.shouldShowXLevelIcon()).isEqualTo(false); - // Validated, Not Default - Network otherNetwork = mock(Network.class); - when(otherNetwork.getNetId()).thenReturn(2); - entry.onDefaultNetworkCapabilitiesChanged(otherNetwork, new NetworkCapabilities()); - + // Cell becomes default (i.e. low quality wifi), show X level icon. + entry.onDefaultNetworkCapabilitiesChanged(Mockito.mock(Network.class), + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build()); assertThat(entry.shouldShowXLevelIcon()).isEqualTo(true); } diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java index bd954a632..609b00c31 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java @@ -84,6 +84,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.MockitoSession; @@ -826,39 +827,29 @@ public class StandardWifiEntryTest { // Disconnected should return false; assertThat(entry.shouldShowXLevelIcon()).isEqualTo(false); - // Not validated, Not Default + // Connected but validation attempt not complete, should not show X level icon yet. when(mMockWifiInfo.getNetworkId()).thenReturn(networkId); when(mMockWifiInfo.getRssi()).thenReturn(TestUtils.GOOD_RSSI); - entry.onNetworkCapabilitiesChanged(mMockNetwork, mMockNetworkCapabilities); - - // Validation attempt not complete, should not show X level icon yet. assertThat(entry.shouldShowXLevelIcon()).isEqualTo(false); - // Validation attempt complete, should show X level icon now. + // Validation attempt complete, should show X level icon. ConnectivityDiagnosticsManager.ConnectivityReport connectivityReport = mock( ConnectivityDiagnosticsManager.ConnectivityReport.class); when(connectivityReport.getNetwork()).thenReturn(mMockNetwork); entry.updateConnectivityReport(connectivityReport); assertThat(entry.shouldShowXLevelIcon()).isEqualTo(true); - // Not Validated, Default - entry.onDefaultNetworkCapabilitiesChanged(mMockNetwork, mMockNetworkCapabilities); - - assertThat(entry.shouldShowXLevelIcon()).isEqualTo(true); - - // Validated, Default + // Internet validated, should not show X level icon. when(mMockNetworkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) .thenReturn(true); entry.onNetworkCapabilitiesChanged(mMockNetwork, mMockNetworkCapabilities); - assertThat(entry.shouldShowXLevelIcon()).isEqualTo(false); - // Validated, Not Default - Network otherNetwork = mock(Network.class); - when(otherNetwork.getNetId()).thenReturn(2); - entry.onDefaultNetworkCapabilitiesChanged(otherNetwork, new NetworkCapabilities()); - + // Cell becomes default (i.e. low quality wifi), show X level icon. + entry.onDefaultNetworkCapabilitiesChanged(Mockito.mock(Network.class), + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build()); assertThat(entry.shouldShowXLevelIcon()).isEqualTo(true); } diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java index 78675a742..96b3e5459 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java @@ -52,6 +52,7 @@ import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkCapabilities; +import android.net.NetworkInfo; import android.net.TransportInfo; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; @@ -213,6 +214,10 @@ public class WifiPickerTrackerTest { when(mMockContext.getSystemService(SharedConnectivityManager.class)) .thenReturn(mMockSharedConnectivityManager); when(mMockContext.getString(anyInt())).thenReturn(""); + when(mMockResources.getStringArray(R.array.wifitrackerlib_wifi_status)).thenReturn( + new String[]{"", "Scanning", "Connecting", "Authenticating", "Obtaining IP address", + "Connected", "Suspended", "Disconnecting", "Unsuccessful", "Blocked", + "Temporarily avoiding poor connection"}); BaseWifiTracker.mEnableSharedConnectivityFeature = true; } @@ -580,6 +585,45 @@ public class WifiPickerTrackerTest { } /** + * Tests that an L2 connected network (i.e. from NETWORK_STATE_CHANGED) will correctly be + * returned in getConnectedEntry() as the primary network. + */ + @Test + public void testGetConnectedEntry_networkL2Connected_returnsConnectedEntry() { + final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker(); + final WifiConfiguration config = new WifiConfiguration(); + config.SSID = "\"ssid\""; + config.networkId = 1; + when(mMockWifiManager.getPrivilegedConfiguredNetworks()) + .thenReturn(Collections.singletonList(config)); + when(mMockWifiManager.getScanResults()).thenReturn(Arrays.asList( + buildScanResult("ssid", "bssid", START_MILLIS))); + wifiPickerTracker.onStart(); + mTestLooper.dispatchAll(); + verify(mMockContext).registerReceiver( + mBroadcastReceiverCaptor.capture(), any(), any(), any()); + verify(mMockConnectivityManager).registerNetworkCallback( + any(), mNetworkCallbackCaptor.capture(), any()); + final WifiEntry entry = wifiPickerTracker.getWifiEntries().get(0); + + // Simulate an L2 connected network that's still authenticating. + when(mMockWifiInfo.getNetworkId()).thenReturn(1); + when(mMockWifiInfo.getRssi()).thenReturn(-50); + NetworkInfo mockNetworkInfo = mock(NetworkInfo.class); + when(mockNetworkInfo.getDetailedState()) + .thenReturn(NetworkInfo.DetailedState.AUTHENTICATING); + Intent networkStateChanged = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION); + networkStateChanged.putExtra(WifiManager.EXTRA_NETWORK_INFO, mockNetworkInfo); + mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, networkStateChanged); + + // Network should be returned in getConnectedWifiEntry() even though it's not L3 connected. + verify(mMockCallback, atLeastOnce()).onWifiEntriesChanged(); +// assertThat(wifiPickerTracker.getWifiEntries()).isEmpty(); + assertThat(wifiPickerTracker.getConnectedWifiEntry()).isEqualTo(entry); + assertThat(entry.isPrimaryNetwork()).isTrue(); + } + + /** * Tests that connecting to a network will update getConnectedEntry() to return the connected * WifiEntry if the framework times out and gives us an empty list of configs. */ @@ -788,7 +832,19 @@ public class WifiPickerTrackerTest { // Cell default + primary network validation should trigger low quality assertThat(wifiPickerTracker.getConnectedWifiEntry().getSummary()).isEqualTo(lowQuality); - // Lose the default network. Low quality should disappear, since cell isn't default anymore + // Cell + VPN is default should not trigger low quality, since the VPN underlying network is + // determined by the VPN app and not whether Wi-Fi is low quality or not. + mDefaultNetworkCallbackCaptor.getValue().onCapabilitiesChanged(Mockito.mock(Network.class), + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_VPN) + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build()); + assertThat(wifiPickerTracker.getConnectedWifiEntry().getSummary()).isNotEqualTo(lowQuality); + + // Set Cell to the default but then lose the default network. Low quality should disappear + // since cell default was lost. + mDefaultNetworkCallbackCaptor.getValue().onCapabilitiesChanged(Mockito.mock(Network.class), + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build()); mDefaultNetworkCallbackCaptor.getValue().onLost(mock(Network.class)); assertThat(wifiPickerTracker.getConnectedWifiEntry().isDefaultNetwork()).isFalse(); } |