summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/DocumentsUI/res/values-gu-rIN/strings.xml8
-rw-r--r--packages/DocumentsUI/res/values-pa-rIN/strings.xml8
-rw-r--r--packages/DocumentsUI/res/values-sq-rAL/strings.xml8
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java35
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/CopyService.java27
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java22
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java23
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java290
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java100
-rw-r--r--packages/Keyguard/res/values-sq-rAL/strings.xml2
-rw-r--r--packages/Keyguard/res/values/strings.xml2
-rw-r--r--packages/Keyguard/src/com/android/keyguard/EmergencyButton.java7
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java3
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java1
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java34
-rw-r--r--packages/PrintSpooler/res/values-sq-rAL/strings.xml4
-rw-r--r--packages/PrintSpooler/res/values/themes.xml5
-rw-r--r--packages/SettingsLib/res/values/strings.xml11
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java25
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java216
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java12
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java25
-rw-r--r--packages/SettingsProvider/res/values-sq-rAL/defaults.xml24
-rw-r--r--packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java8
-rw-r--r--packages/Shell/AndroidManifest.xml2
-rw-r--r--packages/SystemUI/res/drawable/ic_mic_26dp.xml24
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_ethernet.xml30
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_ethernet_fully.xml24
-rw-r--r--packages/SystemUI/res/layout/keyguard_bottom_area.xml2
-rw-r--r--packages/SystemUI/res/layout/signal_cluster_view.xml19
-rw-r--r--packages/SystemUI/res/values-af/strings.xml4
-rw-r--r--packages/SystemUI/res/values-am/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml28
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml4
-rw-r--r--packages/SystemUI/res/values-bn-rBD/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml4
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml4
-rw-r--r--packages/SystemUI/res/values-da/strings.xml4
-rw-r--r--packages/SystemUI/res/values-de/strings.xml4
-rw-r--r--packages/SystemUI/res/values-el/strings.xml4
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml4
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml4
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml4
-rw-r--r--packages/SystemUI/res/values-es/strings.xml4
-rw-r--r--packages/SystemUI/res/values-et-rEE/strings.xml4
-rw-r--r--packages/SystemUI/res/values-eu-rES/strings.xml4
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml4
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml4
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml4
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml4
-rw-r--r--packages/SystemUI/res/values-gl-rES/strings.xml4
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml4
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml4
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml4
-rw-r--r--packages/SystemUI/res/values-hy-rAM/strings.xml4
-rw-r--r--packages/SystemUI/res/values-in/strings.xml4
-rw-r--r--packages/SystemUI/res/values-is-rIS/strings.xml4
-rw-r--r--packages/SystemUI/res/values-it/strings.xml4
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ka-rGE/strings.xml4
-rw-r--r--packages/SystemUI/res/values-kk-rKZ/strings.xml4
-rw-r--r--packages/SystemUI/res/values-km-rKH/strings.xml4
-rw-r--r--packages/SystemUI/res/values-kn-rIN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ky-rKG/strings.xml4
-rw-r--r--packages/SystemUI/res/values-lo-rLA/strings.xml4
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml4
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml4
-rw-r--r--packages/SystemUI/res/values-mk-rMK/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ml-rIN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-mn-rMN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-mr-rIN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ms-rMY/strings.xml4
-rw-r--r--packages/SystemUI/res/values-my-rMM/strings.xml28
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ne-rNP/strings.xml4
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml4
-rw-r--r--packages/SystemUI/res/values-pa-rIN/strings.xml21
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml4
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml4
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml4
-rw-r--r--packages/SystemUI/res/values-si-rLK/strings.xml28
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml4
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml4
-rw-r--r--packages/SystemUI/res/values-sq-rAL/strings.xml33
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml4
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml4
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ta-rIN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-te-rIN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-th/strings.xml4
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml4
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml4
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml4
-rw-r--r--packages/SystemUI/res/values-ur-rPK/strings.xml4
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/strings.xml4
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml4
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml4
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml4
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml4
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml28
-rw-r--r--packages/SystemUI/res/values/strings.xml26
-rw-r--r--packages/SystemUI/src/com/android/systemui/EventLogConstants.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/assist/AssistManager.java (renamed from packages/SystemUI/src/com/android/systemui/assist/AssistGestureManager.java)27
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java73
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java46
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java144
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java66
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java65
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetIcons.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java68
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java52
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java76
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java23
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java40
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java61
-rw-r--r--packages/VpnDialogs/AndroidManifest.xml4
-rw-r--r--packages/WallpaperCropper/res/values/styles.xml4
136 files changed, 1845 insertions, 537 deletions
diff --git a/packages/DocumentsUI/res/values-gu-rIN/strings.xml b/packages/DocumentsUI/res/values-gu-rIN/strings.xml
index 41bd168..cac6021 100644
--- a/packages/DocumentsUI/res/values-gu-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-gu-rIN/strings.xml
@@ -65,9 +65,11 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો કૉપિ કરી રહ્યાં છે.</item>
</plurals>
<string name="copy_preparing" msgid="3896202461003039386">"કૉપિ માટે તૈયારી કરી રહ્યું છે…"</string>
- <!-- no translation found for copy_error_notification_title (5267616889076217261) -->
+ <plurals name="copy_error_notification_title" formatted="false" msgid="5267616889076217261">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો કૉપિ કરી શકાઈ નથી</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો કૉપિ કરી શકાઈ નથી</item>
+ </plurals>
<string name="notification_touch_for_details" msgid="4483108577842961665">"વિગતો જોવા માટે ટચ કરો"</string>
<string name="retry" msgid="7564024179122207376">"ફરી પ્રયાસ કરો"</string>
- <!-- no translation found for copy_failure_alert_content (3715575000297709082) -->
- <skip />
+ <string name="copy_failure_alert_content" msgid="3715575000297709082">"આ ફાઇલો કૉપિ કરી નહોતી: <xliff:g id="LIST">%1$s</xliff:g>"</string>
</resources>
diff --git a/packages/DocumentsUI/res/values-pa-rIN/strings.xml b/packages/DocumentsUI/res/values-pa-rIN/strings.xml
index 978ea5a..56e4aa8 100644
--- a/packages/DocumentsUI/res/values-pa-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-pa-rIN/strings.xml
@@ -65,9 +65,11 @@
<item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ਫਾਈਲਾਂ ਕਾਪੀ ਕਰ ਰਿਹਾ ਹੈ।</item>
</plurals>
<string name="copy_preparing" msgid="3896202461003039386">"ਕਾਪੀ ਲਈ ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ…"</string>
- <!-- no translation found for copy_error_notification_title (5267616889076217261) -->
+ <plurals name="copy_error_notification_title" formatted="false" msgid="5267616889076217261">
+ <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਦੀ ਪ੍ਰਤੀਲਿਪੀ ਨਹੀਂ ਬਣਾ ਸਕਿਆ</item>
+ <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਦੀ ਪ੍ਰਤੀਲਿਪੀ ਨਹੀਂ ਬਣਾ ਸਕਿਆ</item>
+ </plurals>
<string name="notification_touch_for_details" msgid="4483108577842961665">"ਵੇਰਵੇ ਵੇਖਣ ਲਈ ਸਪਰਸ਼ ਕਰੋ"</string>
<string name="retry" msgid="7564024179122207376">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
- <!-- no translation found for copy_failure_alert_content (3715575000297709082) -->
- <skip />
+ <string name="copy_failure_alert_content" msgid="3715575000297709082">"ਇਹਨਾਂ ਫ਼ਾਈਲਾਂ ਦੀ ਪ੍ਰਤੀਲਿਪੀ ਨਹੀਂ ਬਣਾਈ ਗਈ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
</resources>
diff --git a/packages/DocumentsUI/res/values-sq-rAL/strings.xml b/packages/DocumentsUI/res/values-sq-rAL/strings.xml
index 0e10e5d..37c063f 100644
--- a/packages/DocumentsUI/res/values-sq-rAL/strings.xml
+++ b/packages/DocumentsUI/res/values-sq-rAL/strings.xml
@@ -65,9 +65,11 @@
<item quantity="one">Po kopjon <xliff:g id="COUNT_0">%1$d</xliff:g> skedar.</item>
</plurals>
<string name="copy_preparing" msgid="3896202461003039386">"Po përgatitet për kopjimin…"</string>
- <!-- no translation found for copy_error_notification_title (5267616889076217261) -->
+ <plurals name="copy_error_notification_title" formatted="false" msgid="5267616889076217261">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> skedarë nuk mund të kopjoheshin</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> skedar nuk mund të kopjohej</item>
+ </plurals>
<string name="notification_touch_for_details" msgid="4483108577842961665">"Prek për të parë detajet"</string>
<string name="retry" msgid="7564024179122207376">"Provo përsëri"</string>
- <!-- no translation found for copy_failure_alert_content (3715575000297709082) -->
- <skip />
+ <string name="copy_failure_alert_content" msgid="3715575000297709082">"Këta skedarë nuk u kopjuan: <xliff:g id="LIST">%1$s</xliff:g>"</string>
</resources>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index e0f10fa..cb21131 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -101,6 +101,41 @@ abstract class BaseActivity extends Activity {
return showMenu;
}
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ boolean shown = super.onPrepareOptionsMenu(menu);
+
+ final RootInfo root = getCurrentRoot();
+ final DocumentInfo cwd = getCurrentDirectory();
+
+ final MenuItem sort = menu.findItem(R.id.menu_sort);
+ final MenuItem sortSize = menu.findItem(R.id.menu_sort_size);
+ final MenuItem grid = menu.findItem(R.id.menu_grid);
+ final MenuItem list = menu.findItem(R.id.menu_list);
+
+ final MenuItem advanced = menu.findItem(R.id.menu_advanced);
+ final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
+
+ mSearchManager.update(root);
+
+ // Search uses backend ranking; no sorting
+ sort.setVisible(cwd != null && !mSearchManager.isSearching());
+
+ State state = getDisplayState();
+ grid.setVisible(state.derivedMode != State.MODE_GRID);
+ list.setVisible(state.derivedMode != State.MODE_LIST);
+
+ // Only sort by size when visible
+ sortSize.setVisible(state.showSize);
+
+ advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
+ ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
+ fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
+ ? R.string.menu_file_size_hide : R.string.menu_file_size_show);
+
+ return shown;
+ }
+
void onStackRestored(boolean restored, boolean external) {}
void onRootPicked(RootInfo root) {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
index 2e0bece..202402f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
@@ -449,7 +449,7 @@ public class CopyService extends IntentService {
InputStream src = null;
OutputStream dst = null;
- boolean errorOccurred = false;
+ IOException copyError = null;
try {
srcFile = mSrcClient.openFile(srcUri, "r", canceller);
dstFile = mDstClient.openFile(dstUri, "w", canceller);
@@ -462,16 +462,14 @@ public class CopyService extends IntentService {
dst.write(buffer, 0, len);
makeProgress(len);
}
+
srcFile.checkError();
- dstFile.checkError();
} catch (IOException e) {
- errorOccurred = true;
- Log.e(TAG, "Error while copying " + srcUri.toString(), e);
+ copyError = e;
try {
- mFailedFiles.add(DocumentInfo.fromUri(getContentResolver(), srcUri));
- } catch (FileNotFoundException ignore) {
- Log.w(TAG, "Source file gone: " + srcUri, e);
- // The source file is gone.
+ dstFile.closeWithError(copyError.getMessage());
+ } catch (IOException closeError) {
+ Log.e(TAG, "Error closing destination", closeError);
}
} finally {
// This also ensures the file descriptors are closed.
@@ -479,7 +477,18 @@ public class CopyService extends IntentService {
IoUtils.closeQuietly(dst);
}
- if (errorOccurred || mIsCancelled) {
+ if (copyError != null) {
+ // Log errors.
+ Log.e(TAG, "Error while copying " + srcUri.toString(), copyError);
+ try {
+ mFailedFiles.add(DocumentInfo.fromUri(getContentResolver(), srcUri));
+ } catch (FileNotFoundException ignore) {
+ Log.w(TAG, "Source file gone: " + srcUri, copyError);
+ // The source file is gone.
+ }
+ }
+
+ if (copyError != null || mIsCancelled) {
// Clean up half-copied files.
canceller.cancel();
try {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index 92c9cd1..e58c637 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
@@ -442,32 +442,16 @@ public class DocumentsActivity extends BaseActivity {
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- final FragmentManager fm = getFragmentManager();
-
final RootInfo root = getCurrentRoot();
final DocumentInfo cwd = getCurrentDirectory();
final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
- final MenuItem sort = menu.findItem(R.id.menu_sort);
- final MenuItem sortSize = menu.findItem(R.id.menu_sort_size);
final MenuItem grid = menu.findItem(R.id.menu_grid);
final MenuItem list = menu.findItem(R.id.menu_list);
final MenuItem advanced = menu.findItem(R.id.menu_advanced);
final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
final MenuItem settings = menu.findItem(R.id.menu_settings);
- sort.setVisible(cwd != null);
- grid.setVisible(mState.derivedMode != State.MODE_GRID);
- list.setVisible(mState.derivedMode != State.MODE_LIST);
-
- mSearchManager.update(root);
-
- // Search uses backend ranking; no sorting
- sort.setVisible(mSearchManager.isSearching());
-
- // Only sort by size when visible
- sortSize.setVisible(mState.showSize);
-
boolean fileSizeVisible = !(mState.action == ACTION_MANAGE
|| mState.action == ACTION_BROWSE);
if (mState.action == ACTION_CREATE || mState.action == ACTION_OPEN_TREE) {
@@ -482,17 +466,13 @@ public class DocumentsActivity extends BaseActivity {
}
if (mState.action == ACTION_CREATE) {
+ final FragmentManager fm = getFragmentManager();
SaveFragment.get(fm).setSaveEnabled(cwd != null && cwd.isCreateSupported());
}
} else {
createDir.setVisible(false);
}
- advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
- ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
- fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
- ? R.string.menu_file_size_hide : R.string.menu_file_size_show);
-
advanced.setVisible(!(mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE));
fileSize.setVisible(fileSizeVisible);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java b/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java
index cad277d..1f62973 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java
@@ -185,30 +185,16 @@ public class StandaloneActivity extends BaseActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- super.onPrepareOptionsMenu(menu);
+ boolean shown = super.onPrepareOptionsMenu(menu);
final RootInfo root = getCurrentRoot();
final DocumentInfo cwd = getCurrentDirectory();
final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
- final MenuItem sort = menu.findItem(R.id.menu_sort);
- final MenuItem sortSize = menu.findItem(R.id.menu_sort_size);
- final MenuItem grid = menu.findItem(R.id.menu_grid);
- final MenuItem list = menu.findItem(R.id.menu_list);
final MenuItem advanced = menu.findItem(R.id.menu_advanced);
final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
final MenuItem settings = menu.findItem(R.id.menu_settings);
- grid.setVisible(mState.derivedMode != State.MODE_GRID);
- list.setVisible(mState.derivedMode != State.MODE_LIST);
-
- mSearchManager.update(root);
-
- sort.setVisible(cwd != null && !mSearchManager.isSearching());
-
- // Only sort by size when visible
- sortSize.setVisible(mState.showSize);
-
createDir.setVisible(cwd != null
&& cwd.isCreateSupported()
&& !mSearchManager.isSearching()
@@ -217,14 +203,9 @@ public class StandaloneActivity extends BaseActivity {
fileSize.setVisible(cwd != null);
advanced.setVisible(cwd != null);
- advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
- ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
- fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
- ? R.string.menu_file_size_hide : R.string.menu_file_size_show);
-
settings.setVisible((root.flags & Root.FLAG_HAS_SETTINGS) != 0);
- return true;
+ return shown;
}
@Override
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java
index 13f7daa..b1c84dd 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java
@@ -16,23 +16,21 @@
package com.android.documentsui;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.app.NotificationManager;
import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
+import android.content.pm.ProviderInfo;
+import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
-import android.os.ParcelFileDescriptor;
import android.os.Parcelable;
import android.os.RemoteException;
import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
import android.test.MoreAsserts;
import android.test.ServiceTestCase;
+import android.test.mock.MockContentResolver;
import android.util.Log;
import com.android.documentsui.model.DocumentInfo;
@@ -43,40 +41,93 @@ import com.google.common.collect.Lists;
import libcore.io.IoUtils;
import libcore.io.Streams;
-import org.mockito.Mockito;
-
+import java.io.File;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
public class CopyTest extends ServiceTestCase<CopyService> {
+ /**
+ * A test resolver that enables this test suite to listen for notifications that mark when copy
+ * operations are done.
+ */
+ class TestContentResolver extends MockContentResolver {
+ private CountDownLatch mReadySignal;
+ private CountDownLatch mNotificationSignal;
+
+ public TestContentResolver() {
+ mReadySignal = new CountDownLatch(1);
+ }
+
+ /**
+ * Wait for the given number of files to be copied to destination. Times out after 1 sec.
+ */
+ public void waitForChanges(int count) throws Exception {
+ // Wait for no more than 1 second by default.
+ waitForChanges(count, 1000);
+ }
+
+ /**
+ * Wait for files to be copied to destination.
+ *
+ * @param count Number of files to wait for.
+ * @param timeOut Timeout in ms. TimeoutException will be thrown if this function times out.
+ */
+ public void waitForChanges(int count, int timeOut) throws Exception {
+ mNotificationSignal = new CountDownLatch(count);
+ // Signal that the test is now waiting for files.
+ mReadySignal.countDown();
+ if (!mNotificationSignal.await(timeOut, TimeUnit.MILLISECONDS)) {
+ throw new TimeoutException("Timed out waiting for files to be copied.");
+ }
+ }
+
+ @Override
+ public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) {
+ // Wait until the test is ready to receive file notifications.
+ try {
+ mReadySignal.await();
+ } catch (InterruptedException e) {
+ Log.d(TAG, "Interrupted while waiting for file copy readiness");
+ Thread.currentThread().interrupt();
+ }
+ if (DocumentsContract.isDocumentUri(mContext, uri)) {
+ Log.d(TAG, "Notification: " + uri);
+ // Watch for document URI change notifications - this signifies the end of a copy.
+ mNotificationSignal.countDown();
+ }
+ }
+ };
+
public CopyTest() {
super(CopyService.class);
}
- private static String TAG = "CopyTest";
- // This must match the authority for the StubProvider.
private static String AUTHORITY = "com.android.documentsui.stubprovider";
+ private static String DST = "sd1";
+ private static String SRC = "sd0";
+ private static String TAG = "CopyTest";
private List<RootInfo> mRoots;
private Context mContext;
- private ContentResolver mResolver;
+ private TestContentResolver mResolver;
private ContentProviderClient mClient;
- private NotificationManager mNotificationManager;
+ private StubProvider mStorage;
+ private Context mSystemContext;
@Override
protected void setUp() throws Exception {
super.setUp();
- setupTestContext();
- mResolver = mContext.getContentResolver();
+ setupTestContext();
mClient = mResolver.acquireContentProviderClient(AUTHORITY);
// Reset the stub provider's storage.
- mClient.call("clear", "", null);
+ mStorage.clearCacheAndBuildRoots();
mRoots = Lists.newArrayList();
Uri queryUri = DocumentsContract.buildRootsUri(AUTHORITY);
@@ -84,9 +135,7 @@ public class CopyTest extends ServiceTestCase<CopyService> {
try {
cursor = mClient.query(queryUri, null, null, null, null);
while (cursor.moveToNext()) {
- final RootInfo root = RootInfo.fromRootsCursor(AUTHORITY, cursor);
- final String id = root.rootId;
- mRoots.add(root);
+ mRoots.add(RootInfo.fromRootsCursor(AUTHORITY, cursor));
}
} finally {
IoUtils.closeQuietly(cursor);
@@ -100,68 +149,94 @@ public class CopyTest extends ServiceTestCase<CopyService> {
super.tearDown();
}
- public List<Uri> setupTestFiles() throws Exception {
- Uri rootUri = DocumentsContract.buildDocumentUri(AUTHORITY, mRoots.get(0).documentId);
- List<Uri> testFiles = Lists.newArrayList(
- DocumentsContract.createDocument(mClient, rootUri, "text/plain", "test0.txt"),
- DocumentsContract.createDocument(mClient, rootUri, "text/plain", "test1.txt"),
- DocumentsContract.createDocument(mClient, rootUri, "text/plain", "test2.txt")
- );
- String testContent[] = {
- "The five boxing wizards jump quickly",
- "The quick brown fox jumps over the lazy dog",
- "Jackdaws love my big sphinx of quartz"
- };
- for (int i = 0; i < testFiles.size(); ++i) {
- ParcelFileDescriptor pfd = null;
- OutputStream out = null;
- try {
- pfd = mClient.openFile(testFiles.get(i), "w");
- out = new ParcelFileDescriptor.AutoCloseOutputStream(pfd);
- out.write(testContent[i].getBytes());
- } finally {
- IoUtils.closeQuietly(out);
- }
- }
- return testFiles;
- }
-
/**
* Test copying a single file.
*/
public void testCopyFile() throws Exception {
- Uri testFile = setupTestFiles().get(0);
+ String srcPath = "/test0.txt";
+ Uri testFile = mStorage.createFile(SRC, srcPath, "text/plain",
+ "The five boxing wizards jump quickly".getBytes());
+
+ assertDstFileCountEquals(0);
- // Just copy one file.
copyToDestination(Lists.newArrayList(testFile));
- // A call to NotificationManager.cancel marks the end of the copy operation.
- Mockito.verify(mNotificationManager, Mockito.timeout(1000)).cancel(Mockito.anyString(),
- Mockito.anyInt());
+ // 2 operations: file creation, then writing data.
+ mResolver.waitForChanges(2);
// Verify that one file was copied; check file contents.
assertDstFileCountEquals(1);
- assertCopied(testFile);
+ assertCopied(srcPath);
}
/**
* Test copying multiple files.
*/
public void testCopyMultipleFiles() throws Exception {
- List<Uri> testFiles = setupTestFiles();
+ String testContent[] = {
+ "The five boxing wizards jump quickly",
+ "The quick brown fox jumps over the lazy dog",
+ "Jackdaws love my big sphinx of quartz"
+ };
+ String srcPaths[] = {
+ "/test0.txt",
+ "/test1.txt",
+ "/test2.txt"
+ };
+ List<Uri> testFiles = Lists.newArrayList(
+ mStorage.createFile(SRC, srcPaths[0], "text/plain", testContent[0].getBytes()),
+ mStorage.createFile(SRC, srcPaths[1], "text/plain", testContent[1].getBytes()),
+ mStorage.createFile(SRC, srcPaths[2], "text/plain", testContent[2].getBytes()));
+
+ assertDstFileCountEquals(0);
+
// Copy all the test files.
copyToDestination(testFiles);
- // A call to NotificationManager.cancel marks the end of the copy operation.
- Mockito.verify(mNotificationManager, Mockito.timeout(1000)).cancel(Mockito.anyString(),
- Mockito.anyInt());
+ // 3 file creations, 3 file writes.
+ mResolver.waitForChanges(6);
assertDstFileCountEquals(3);
- for (Uri testFile : testFiles) {
- assertCopied(testFile);
+ for (String path : srcPaths) {
+ assertCopied(path);
}
}
+ public void testCopyEmptyDir() throws Exception {
+ String srcPath = "/emptyDir";
+ Uri testDir = mStorage.createFile(SRC, srcPath, DocumentsContract.Document.MIME_TYPE_DIR,
+ null);
+
+ assertDstFileCountEquals(0);
+
+ copyToDestination(Lists.newArrayList(testDir));
+
+ // Just 1 operation: Directory creation.
+ mResolver.waitForChanges(1);
+
+ assertDstFileCountEquals(1);
+
+ File dst = mStorage.getFile(DST, srcPath);
+ assertTrue(dst.isDirectory());
+ }
+
+ public void testReadErrors() throws Exception {
+ String srcPath = "/test0.txt";
+ Uri testFile = mStorage.createFile(SRC, srcPath, "text/plain",
+ "The five boxing wizards jump quickly".getBytes());
+
+ assertDstFileCountEquals(0);
+
+ mStorage.simulateReadErrors(true);
+
+ copyToDestination(Lists.newArrayList(testFile));
+
+ // 3 operations: file creation, writing, then deletion (due to failed copy).
+ mResolver.waitForChanges(3);
+
+ assertDstFileCountEquals(0);
+ }
+
/**
* Copies the given files to a pre-determined destination.
*
@@ -200,82 +275,55 @@ public class CopyTest extends ServiceTestCase<CopyService> {
assertEquals("Incorrect file count after copy", expected, count);
}
- /**
- * Verifies that the file pointed to by the given URI was correctly copied to the destination.
- */
- private void assertCopied(Uri src) throws Exception {
- Cursor cursor = null;
- String srcName = null;
- try {
- cursor = mClient.query(src, null, null, null, null);
- if (cursor.moveToFirst()) {
- srcName = getCursorString(cursor, Document.COLUMN_DISPLAY_NAME);
- }
- } finally {
- IoUtils.closeQuietly(cursor);
- }
- Uri dst = getDstFileUri(srcName);
+ private void assertCopied(String path) throws Exception {
+ File srcFile = mStorage.getFile(SRC, path);
+ File dstFile = mStorage.getFile(DST, path);
+ assertNotNull(dstFile);
- InputStream in0 = null;
- InputStream in1 = null;
+ FileInputStream src = null;
+ FileInputStream dst = null;
try {
- in0 = new ParcelFileDescriptor.AutoCloseInputStream(mClient.openFile(src, "r"));
- in1 = new ParcelFileDescriptor.AutoCloseInputStream(mClient.openFile(dst, "r"));
-
- byte[] buffer0 = Streams.readFully(in0);
- byte[] buffer1 = Streams.readFully(in1);
-
- MoreAsserts.assertEquals(buffer0, buffer1);
- } finally {
- IoUtils.closeQuietly(in0);
- IoUtils.closeQuietly(in1);
- }
- }
+ src = new FileInputStream(srcFile);
+ dst = new FileInputStream(dstFile);
+ byte[] srcbuf = Streams.readFully(src);
+ byte[] dstbuf = Streams.readFully(dst);
- /**
- * Generates a file URI from a given filename. This assumes the file already exists in the
- * destination root.
- */
- private Uri getDstFileUri(String filename) throws RemoteException {
- final Uri dstFileQuery = DocumentsContract.buildChildDocumentsUri(AUTHORITY,
- mRoots.get(1).documentId);
- Cursor cursor = null;
- try {
- // StubProvider doesn't seem to support query strings; filter the results manually.
- cursor = mClient.query(dstFileQuery, null, null, null, null);
- while (cursor.moveToNext()) {
- if (filename.equals(getCursorString(cursor, Document.COLUMN_DISPLAY_NAME))) {
- return DocumentsContract.buildDocumentUri(AUTHORITY,
- getCursorString(cursor, Document.COLUMN_DOCUMENT_ID));
- }
- }
+ MoreAsserts.assertEquals(srcbuf, dstbuf);
} finally {
- IoUtils.closeQuietly(cursor);
+ IoUtils.closeQuietly(src);
+ IoUtils.closeQuietly(dst);
}
- return null;
}
/**
* Sets up a ContextWrapper that substitutes a stub NotificationManager. This allows the test to
* listen for notification events, to gauge copy progress.
+ *
+ * @throws FileNotFoundException
*/
- private void setupTestContext() {
- mContext = getSystemContext();
- System.setProperty("dexmaker.dexcache", mContext.getCacheDir().getPath());
+ private void setupTestContext() throws FileNotFoundException {
+ mSystemContext = getSystemContext();
- mNotificationManager = Mockito.spy((NotificationManager) mContext
- .getSystemService(Context.NOTIFICATION_SERVICE));
-
- // Insert a stub NotificationManager that enables us to listen for when copying is complete.
- setContext(new ContextWrapper(mContext) {
+ // Set up the context with the test content resolver.
+ mResolver = new TestContentResolver();
+ mContext = new ContextWrapper(mSystemContext) {
@Override
- public Object getSystemService(String name) {
- if (Context.NOTIFICATION_SERVICE.equals(name)) {
- return mNotificationManager;
- } else {
- return super.getSystemService(name);
- }
+ public ContentResolver getContentResolver() {
+ return mResolver;
}
- });
+ };
+ setContext(mContext);
+
+ // Create a local stub provider and add it to the content resolver.
+ ProviderInfo info = new ProviderInfo();
+ info.authority = AUTHORITY;
+ info.exported = true;
+ info.grantUriPermissions = true;
+ info.readPermission = android.Manifest.permission.MANAGE_DOCUMENTS;
+ info.writePermission = android.Manifest.permission.MANAGE_DOCUMENTS;
+
+ mStorage = new StubProvider();
+ mStorage.attachInfo(mContext, info);
+ mResolver.addProvider(AUTHORITY, mStorage);
}
}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java b/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
index 438f6cd..8cef433 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
@@ -21,9 +21,10 @@ import android.content.SharedPreferences;
import android.content.pm.ProviderInfo;
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
-import android.database.MatrixCursor.RowBuilder;
import android.database.MatrixCursor;
+import android.database.MatrixCursor.RowBuilder;
import android.graphics.Point;
+import android.net.Uri;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.FileUtils;
@@ -32,15 +33,16 @@ import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
import android.provider.DocumentsContract.Root;
import android.provider.DocumentsProvider;
+import android.support.annotation.VisibleForTesting;
import android.util.Log;
import com.google.android.collect.Maps;
import libcore.io.IoUtils;
-import java.io.FileOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -70,6 +72,7 @@ public class StubProvider extends DocumentsProvider {
private String mAuthority;
private SharedPreferences mPrefs;
private Map<String, RootInfo> mRoots;
+ private boolean mSimulateReadErrors;
@Override
public void attachInfo(Context context, ProviderInfo info) {
@@ -83,7 +86,8 @@ public class StubProvider extends DocumentsProvider {
return true;
}
- private void clearCacheAndBuildRoots() {
+ @VisibleForTesting
+ public void clearCacheAndBuildRoots() {
final File cacheDir = getContext().getCacheDir();
removeRecursively(cacheDir);
mStorage.clear();
@@ -164,7 +168,7 @@ public class StubProvider extends DocumentsProvider {
} else {
try {
if (!file.createNewFile()) {
- throw new FileNotFoundException();
+ throw new IllegalStateException("The file " + file.getPath() + " already exists");
}
} catch (IOException e) {
throw new FileNotFoundException();
@@ -173,6 +177,10 @@ public class StubProvider extends DocumentsProvider {
final StubDocument document = new StubDocument(file, mimeType, parentDocument);
notifyParentChanged(document.parentId);
+ getContext().getContentResolver().notifyChange(
+ DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
+ null, false);
+
return document.documentId;
}
@@ -187,6 +195,9 @@ public class StubProvider extends DocumentsProvider {
document.rootInfo.size -= fileSize;
}
notifyParentChanged(document.parentId);
+ getContext().getContentResolver().notifyChange(
+ DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
+ null, false);
}
@Override
@@ -226,7 +237,17 @@ public class StubProvider extends DocumentsProvider {
throw new FileNotFoundException();
if ("r".equals(mode)) {
- return ParcelFileDescriptor.open(document.file, ParcelFileDescriptor.MODE_READ_ONLY);
+ ParcelFileDescriptor pfd = ParcelFileDescriptor.open(document.file,
+ ParcelFileDescriptor.MODE_READ_ONLY);
+ if (mSimulateReadErrors) {
+ pfd = new ParcelFileDescriptor(pfd) {
+ @Override
+ public void checkError() throws IOException {
+ throw new IOException("Test error");
+ }
+ };
+ }
+ return pfd;
}
if ("w".equals(mode)) {
return startWrite(document);
@@ -235,6 +256,11 @@ public class StubProvider extends DocumentsProvider {
throw new FileNotFoundException();
}
+ @VisibleForTesting
+ public void simulateReadErrors(boolean b) {
+ mSimulateReadErrors = b;
+ }
+
@Override
public AssetFileDescriptor openDocumentThumbnail(
String docId, Point sizeHint, CancellationSignal signal) throws FileNotFoundException {
@@ -281,11 +307,15 @@ public class StubProvider extends DocumentsProvider {
}
}
} catch (IOException e) {
+ Log.e(TAG, "Error on close", e);
closePipeWithErrorSilently(readPipe, e.getMessage());
} finally {
IoUtils.closeQuietly(inputStream);
IoUtils.closeQuietly(outputStream);
notifyParentChanged(document.parentId);
+ getContext().getContentResolver().notifyChange(
+ DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
+ null, false);
}
}
}.start();
@@ -302,7 +332,6 @@ public class StubProvider extends DocumentsProvider {
@Override
public Bundle call(String method, String arg, Bundle extras) {
- Log.d(TAG, "call: " + method + arg);
switch (method) {
case "clear":
clearCacheAndBuildRoots();
@@ -376,30 +405,51 @@ public class StubProvider extends DocumentsProvider {
}
}
- public File createFile(String rootId, File parent, String mimeType, String name)
- throws IOException {
- StubDocument parentDoc = null;
+ @VisibleForTesting
+ public Uri createFile(String rootId, String path, String mimeType, byte[] content)
+ throws FileNotFoundException, IOException {
+ StubDocument root = mRoots.get(rootId).rootDocument;
+ if (root == null) {
+ throw new FileNotFoundException("No roots with the ID " + rootId + " were found");
+ }
+ File file = new File(root.file, path.substring(1));
+ StubDocument parent = mStorage.get(getDocumentIdForFile(file.getParentFile()));
if (parent == null) {
- // Use the root dir as the parent, if one wasn't specified.
- parentDoc = mRoots.get(rootId).rootDocument;
- } else {
- // Verify that the parent exists and is a directory.
- parentDoc = mStorage.get(getDocumentIdForFile(parent));
- if (parentDoc == null) {
- throw new IllegalArgumentException("Parent file not found.");
+ parent = mStorage.get(createFile(rootId, file.getParentFile().getPath(),
+ DocumentsContract.Document.MIME_TYPE_DIR, null));
+ }
+
+ if (DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType)) {
+ if (!file.mkdirs()) {
+ throw new FileNotFoundException("Couldn't create directory " + file.getPath());
}
- if (!Document.MIME_TYPE_DIR.equals(parentDoc.mimeType)) {
- throw new IllegalArgumentException("Parent file must be a directory.");
+ } else {
+ if (!file.createNewFile()) {
+ throw new FileNotFoundException("Couldn't create file " + file.getPath());
}
+ // Add content to the file.
+ FileOutputStream fout = new FileOutputStream(file);
+ fout.write(content);
+ fout.close();
}
- File file = new File(parentDoc.file, name);
- if (Document.MIME_TYPE_DIR.equals(mimeType)) {
- file.mkdir();
- } else {
- file.createNewFile();
+ final StubDocument document = new StubDocument(file, mimeType, parent);
+ return DocumentsContract.buildDocumentUri(mAuthority, document.documentId);
+ }
+
+ @VisibleForTesting
+ public File getFile(String rootId, String path) throws FileNotFoundException {
+ StubDocument root = mRoots.get(rootId).rootDocument;
+ if (root == null) {
+ throw new FileNotFoundException("No roots with the ID " + rootId + " were found");
+ }
+ // Convert the path string into a path that's relative to the root.
+ File needle = new File(root.file, path.substring(1));
+
+ StubDocument found = mStorage.get(getDocumentIdForFile(needle));
+ if (found == null) {
+ return null;
}
- new StubDocument(file, mimeType, parentDoc);
- return file;
+ return found.file;
}
final class RootInfo {
diff --git a/packages/Keyguard/res/values-sq-rAL/strings.xml b/packages/Keyguard/res/values-sq-rAL/strings.xml
index d356588..f3943ea 100644
--- a/packages/Keyguard/res/values-sq-rAL/strings.xml
+++ b/packages/Keyguard/res/values-sq-rAL/strings.xml
@@ -108,6 +108,6 @@
<string name="kg_pin_accepted" msgid="1448241673570020097">"Kodi u pranua!"</string>
<string name="keyguard_carrier_default" msgid="8700650403054042153">"Nuk ka shërbim."</string>
<string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Butoni i metodës së ndërrimit të hyrjeve."</string>
- <string name="airplane_mode" msgid="3122107900897202805">"Modaliteti i aeroplanit"</string>
+ <string name="airplane_mode" msgid="3122107900897202805">"Modaliteti \"në aeroplan\""</string>
<string name="fingerprint_not_recognized" msgid="2690661881608146617">"Nuk njihet"</string>
</resources>
diff --git a/packages/Keyguard/res/values/strings.xml b/packages/Keyguard/res/values/strings.xml
index e060b4a..49ce427 100644
--- a/packages/Keyguard/res/values/strings.xml
+++ b/packages/Keyguard/res/values/strings.xml
@@ -96,8 +96,6 @@
<string name="keyguard_widget_24_hours_format" translatable="false">kk\uee01mm</string>
<string name="keyguard_accessibility_pattern_unlock">Pattern unlock.</string>
- <!-- Accessibility description of the face unlock. [CHAR_LIMIT=none] -->
- <string name="keyguard_accessibility_face_unlock">Face unlock.</string>
<!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
<string name="keyguard_accessibility_pin_unlock">Pin unlock.</string>
<!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
diff --git a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
index 25b1875..1cabcdf 100644
--- a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
+++ b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
@@ -18,6 +18,7 @@ package com.android.keyguard;
import android.content.Context;
import android.content.Intent;
+import android.content.res.Configuration;
import android.os.PowerManager;
import android.os.SystemClock;
import android.os.UserHandle;
@@ -104,6 +105,12 @@ public class EmergencyButton extends Button {
updateEmergencyCallButton();
}
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ updateEmergencyCallButton();
+ }
+
/**
* Shows the emergency dialer or returns the user to the existing call.
*/
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java
index 845d53a..929258d 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java
@@ -162,7 +162,8 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView
switchImeButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mCallback.userActivity(); // Leave the screen on a bit longer
- mImm.showInputMethodPicker();
+ // Do not show auxiliary subtypes in password lock screen.
+ mImm.showInputMethodPicker(false /* showAuxiliarySubtypes */);
}
});
}
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
index ae4baad..4d89a8d 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -260,7 +260,6 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
if (DEBUG) Log.d(TAG, "reportFailedPatternAttempt: #" + failedAttempts);
SecurityMode mode = mSecurityModel.getSecurityMode();
- final boolean usingPattern = mode == KeyguardSecurityModel.SecurityMode.Pattern;
final int currentUser = KeyguardUpdateMonitor.getCurrentUser();
final DevicePolicyManager dpm = mLockPatternUtils.getDevicePolicyManager();
final int failedAttemptsBeforeWipe =
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index b8d9053..d13d71c 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -58,13 +58,13 @@ import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
import android.hardware.fingerprint.FingerprintUtils;
import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
-import android.service.trust.TrustAgentService;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.util.SparseBooleanArray;
+import android.util.SparseIntArray;
import com.google.android.collect.Lists;
@@ -139,7 +139,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private BatteryStatus mBatteryStatus;
// Password attempts
- private int mFailedAttempts = 0;
+ private SparseIntArray mFailedAttempts = new SparseIntArray();
private boolean mClockVisible;
@@ -153,6 +153,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private SubscriptionManager mSubscriptionManager;
private List<SubscriptionInfo> mSubscriptionInfo;
private boolean mFingerprintDetectionRunning;
+ private TrustManager mTrustManager;
private final Handler mHandler = new Handler() {
@Override
@@ -549,7 +550,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
- mHandler.obtainMessage(MSG_FINGERPRINT_ERROR, errMsgId, 0, errString);
+ mHandler.obtainMessage(MSG_FINGERPRINT_ERROR, errMsgId, 0, errString).sendToTarget();
}
};
private CancellationSignal mFingerprintCancelSignal;
@@ -783,8 +784,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
e.printStackTrace();
}
- TrustManager trustManager = (TrustManager) context.getSystemService(Context.TRUST_SERVICE);
- trustManager.registerTrustListener(this);
+ mTrustManager = (TrustManager) context.getSystemService(Context.TRUST_SERVICE);
+ mTrustManager.registerTrustListener(this);
mFpm = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
updateFingerprintListeningState();
@@ -800,7 +801,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
private boolean shouldListenForFingerprint() {
- return mScreenOn && mKeyguardIsVisible && !mSwitchingUser;
+ return mScreenOn && mKeyguardIsVisible && !mSwitchingUser
+ && mTrustManager.hasUserAuthenticatedSinceBoot(ActivityManager.getCurrentUser());
}
private void startListeningForFingerprint() {
@@ -1260,28 +1262,20 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
return mDeviceProvisioned;
}
- public int getFailedUnlockAttempts() {
- return mFailedAttempts;
- }
-
public void clearFailedUnlockAttempts() {
- mFailedAttempts = 0;
+ mFailedAttempts.delete(sCurrentUser);
}
- public void clearFingerprintRecognized() {
- mUserFingerprintAuthenticated.clear();
+ public int getFailedUnlockAttempts() {
+ return mFailedAttempts.get(sCurrentUser, 0);
}
public void reportFailedUnlockAttempt() {
- mFailedAttempts++;
- }
-
- public boolean isClockVisible() {
- return mClockVisible;
+ mFailedAttempts.put(sCurrentUser, getFailedUnlockAttempts() + 1);
}
- public int getPhoneState() {
- return mPhoneState;
+ public void clearFingerprintRecognized() {
+ mUserFingerprintAuthenticated.clear();
}
public boolean isSimPinVoiceSecure() {
diff --git a/packages/PrintSpooler/res/values-sq-rAL/strings.xml b/packages/PrintSpooler/res/values-sq-rAL/strings.xml
index 01eb719..0fbde0e 100644
--- a/packages/PrintSpooler/res/values-sq-rAL/strings.xml
+++ b/packages/PrintSpooler/res/values-sq-rAL/strings.xml
@@ -66,8 +66,8 @@
<string name="failed_notification_title_template" msgid="2256217208186530973">"Printeri ndeshi në gabim gjatë punës: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
<string name="blocked_notification_title_template" msgid="1175435827331588646">"Printeri bllokoi <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
<plurals name="composite_notification_title_template" formatted="false" msgid="6940956968211733780">
- <item quantity="other"><xliff:g id="PRINT_JOB_NAME_1">%1$d</xliff:g> punë printimi</item>
- <item quantity="one"><xliff:g id="PRINT_JOB_NAME_0">%1$d</xliff:g> punë printimi</item>
+ <item quantity="other"><xliff:g id="PRINT_JOB_NAME_1">%1$d</xliff:g> punë për printim</item>
+ <item quantity="one"><xliff:g id="PRINT_JOB_NAME_0">%1$d</xliff:g> punë për printim</item>
</plurals>
<string name="cancel" msgid="4373674107267141885">"Anulo"</string>
<string name="restart" msgid="2472034227037808749">"Rifillo"</string>
diff --git a/packages/PrintSpooler/res/values/themes.xml b/packages/PrintSpooler/res/values/themes.xml
index 532b01f..db319e9 100644
--- a/packages/PrintSpooler/res/values/themes.xml
+++ b/packages/PrintSpooler/res/values/themes.xml
@@ -16,10 +16,7 @@
<resources>
- <style name="PrintActivity" parent="@android:style/Theme.Material">
- <item name="android:colorPrimary">@*android:color/material_blue_grey_900</item>
- <item name="android:colorPrimaryDark">@*android:color/material_blue_grey_950</item>
- <item name="android:colorAccent">@*android:color/material_deep_teal_500</item>
+ <style name="PrintActivity" parent="@android:style/Theme.Material.Settings">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 7797313..b702e35 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -78,6 +78,9 @@
<!-- Package name for Certinstaller app-->
<string name="certinstaller_package" translatable="false">com.android.certinstaller</string>
+ <!-- Summary for Connected wifi network without internet -->
+ <string name="wifi_connected_no_internet">Connected, no Internet</string>
+
<!-- Bluetooth settings. Message when a device is disconnected -->
<string name="bluetooth_disconnected">Disconnected</string>
<!-- Bluetooth settings. Message when disconnecting from a device -->
@@ -114,8 +117,10 @@
<string name="bluetooth_profile_pbap_summary">Use for contact sharing</string>
<!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
<string name="bluetooth_profile_pan_nap">Internet connection sharing</string>
- <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
<string name="bluetooth_profile_map">Message Access</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+ <string name="bluetooth_profile_sap">SIM Access</string>
<!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference when A2DP is connected. -->
<string name="bluetooth_a2dp_profile_summary_connected">Connected to media audio</string>
@@ -125,6 +130,8 @@
<string name="bluetooth_opp_profile_summary_connected">Connected to file transfer server</string>
<!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference when map is connected. -->
<string name="bluetooth_map_profile_summary_connected">Connected to map</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference when SAP is connected. -->
+ <string name="bluetooth_sap_profile_summary_connected">Connected to SAP</string>
<!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
<string name="bluetooth_opp_profile_summary_not_connected">Not connected to file transfer server</string>
<!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
@@ -140,6 +147,8 @@
<string name="bluetooth_pan_profile_summary_use_for">Use for Internet access</string>
<!-- Bluetooth settings. Connection options screen. The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
<string name="bluetooth_map_profile_summary_use_for">Use for map</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+ <string name="bluetooth_sap_profile_summary_use_for">Use for SIM access</string>
<!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
<string name="bluetooth_a2dp_profile_summary_use_for">Use for media audio</string>
<!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index dd2368f..7534b8e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -67,10 +67,6 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
private boolean mVisible;
- private int mPhonebookPermissionChoice;
-
- private int mMessagePermissionChoice;
-
private int mMessageRejectionCount;
private final Collection<Callback> mCallbacks = new ArrayList<Callback>();
@@ -556,6 +552,7 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
mConnectAfterPairing = false; // cancel auto-connect
setPhonebookPermissionChoice(ACCESS_UNKNOWN);
setMessagePermissionChoice(ACCESS_UNKNOWN);
+ setSimPermissionChoice(ACCESS_UNKNOWN);
mMessageRejectionCount = 0;
saveMessageRejectionCount();
}
@@ -732,6 +729,26 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
mDevice.setMessageAccessPermission(permission);
}
+ public int getSimPermissionChoice() {
+ int permission = mDevice.getSimAccessPermission();
+ if (permission == BluetoothDevice.ACCESS_ALLOWED) {
+ return ACCESS_ALLOWED;
+ } else if (permission == BluetoothDevice.ACCESS_REJECTED) {
+ return ACCESS_REJECTED;
+ }
+ return ACCESS_UNKNOWN;
+ }
+
+ void setSimPermissionChoice(int permissionChoice) {
+ int permission = BluetoothDevice.ACCESS_UNKNOWN;
+ if (permissionChoice == ACCESS_ALLOWED) {
+ permission = BluetoothDevice.ACCESS_ALLOWED;
+ } else if (permissionChoice == ACCESS_REJECTED) {
+ permission = BluetoothDevice.ACCESS_REJECTED;
+ }
+ mDevice.setSimAccessPermission(permission);
+ }
+
// Migrates data from old data store (in Settings app's shared preferences) to new (in Bluetooth
// app's shared preferences).
private void migrateMessagePermissionChoice() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
new file mode 100644
index 0000000..25c53e6
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothSap;
+import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothUuid;
+import android.content.Context;
+import android.os.ParcelUuid;
+import android.util.Log;
+
+import com.android.settingslib.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * SapProfile handles Bluetooth SAP profile.
+ */
+final class SapProfile implements LocalBluetoothProfile {
+ private static final String TAG = "SapProfile";
+ private static boolean V = true;
+
+ private BluetoothSap mService;
+ private boolean mIsProfileReady;
+
+ private final LocalBluetoothAdapter mLocalAdapter;
+ private final CachedBluetoothDeviceManager mDeviceManager;
+ private final LocalBluetoothProfileManager mProfileManager;
+
+ static final ParcelUuid[] UUIDS = {
+ BluetoothUuid.SAP,
+ };
+
+ static final String NAME = "SAP";
+
+ // Order of this profile in device profiles list
+ private static final int ORDINAL = 10;
+
+ // These callbacks run on the main thread.
+ private final class SapServiceListener
+ implements BluetoothProfile.ServiceListener {
+
+ public void onServiceConnected(int profile, BluetoothProfile proxy) {
+ if (V) Log.d(TAG,"Bluetooth service connected");
+ mService = (BluetoothSap) proxy;
+ // We just bound to the service, so refresh the UI for any connected SAP devices.
+ List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+ while (!deviceList.isEmpty()) {
+ BluetoothDevice nextDevice = deviceList.remove(0);
+ CachedBluetoothDevice device = mDeviceManager.findDevice(nextDevice);
+ // we may add a new device here, but generally this should not happen
+ if (device == null) {
+ Log.w(TAG, "SapProfile found new device: " + nextDevice);
+ device = mDeviceManager.addDevice(mLocalAdapter, mProfileManager, nextDevice);
+ }
+ device.onProfileStateChanged(SapProfile.this,
+ BluetoothProfile.STATE_CONNECTED);
+ device.refresh();
+ }
+
+ mProfileManager.callServiceConnectedListeners();
+ mIsProfileReady=true;
+ }
+
+ public void onServiceDisconnected(int profile) {
+ if (V) Log.d(TAG,"Bluetooth service disconnected");
+ mProfileManager.callServiceDisconnectedListeners();
+ mIsProfileReady=false;
+ }
+ }
+
+ public boolean isProfileReady() {
+ return mIsProfileReady;
+ }
+
+ SapProfile(Context context, LocalBluetoothAdapter adapter,
+ CachedBluetoothDeviceManager deviceManager,
+ LocalBluetoothProfileManager profileManager) {
+ mLocalAdapter = adapter;
+ mDeviceManager = deviceManager;
+ mProfileManager = profileManager;
+ mLocalAdapter.getProfileProxy(context, new SapServiceListener(),
+ BluetoothProfile.SAP);
+ }
+
+ public boolean isConnectable() {
+ return true;
+ }
+
+ public boolean isAutoConnectable() {
+ return true;
+ }
+
+ public boolean connect(BluetoothDevice device) {
+ if (mService == null) return false;
+ List<BluetoothDevice> sinks = mService.getConnectedDevices();
+ if (sinks != null) {
+ for (BluetoothDevice sink : sinks) {
+ mService.disconnect(sink);
+ }
+ }
+ return mService.connect(device);
+ }
+
+ public boolean disconnect(BluetoothDevice device) {
+ if (mService == null) return false;
+ List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+ if (!deviceList.isEmpty() && deviceList.get(0).equals(device)) {
+ if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON) {
+ mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+ }
+ return mService.disconnect(device);
+ } else {
+ return false;
+ }
+ }
+
+ public int getConnectionStatus(BluetoothDevice device) {
+ if (mService == null) return BluetoothProfile.STATE_DISCONNECTED;
+ List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+
+ return !deviceList.isEmpty() && deviceList.get(0).equals(device)
+ ? mService.getConnectionState(device)
+ : BluetoothProfile.STATE_DISCONNECTED;
+ }
+
+ public boolean isPreferred(BluetoothDevice device) {
+ if (mService == null) return false;
+ return mService.getPriority(device) > BluetoothProfile.PRIORITY_OFF;
+ }
+
+ public int getPreferred(BluetoothDevice device) {
+ if (mService == null) return BluetoothProfile.PRIORITY_OFF;
+ return mService.getPriority(device);
+ }
+
+ public void setPreferred(BluetoothDevice device, boolean preferred) {
+ if (mService == null) return;
+ if (preferred) {
+ if (mService.getPriority(device) < BluetoothProfile.PRIORITY_ON) {
+ mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+ }
+ } else {
+ mService.setPriority(device, BluetoothProfile.PRIORITY_OFF);
+ }
+ }
+
+ public List<BluetoothDevice> getConnectedDevices() {
+ if (mService == null) return new ArrayList<BluetoothDevice>(0);
+ return mService.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.STATE_CONNECTING,
+ BluetoothProfile.STATE_DISCONNECTING});
+ }
+
+ public String toString() {
+ return NAME;
+ }
+
+ public int getOrdinal() {
+ return ORDINAL;
+ }
+
+ public int getNameResource(BluetoothDevice device) {
+ return R.string.bluetooth_profile_sap;
+ }
+
+ public int getSummaryResourceForDevice(BluetoothDevice device) {
+ int state = getConnectionStatus(device);
+ switch (state) {
+ case BluetoothProfile.STATE_DISCONNECTED:
+ return R.string.bluetooth_sap_profile_summary_use_for;
+
+ case BluetoothProfile.STATE_CONNECTED:
+ return R.string.bluetooth_sap_profile_summary_connected;
+
+ default:
+ return Utils.getConnectionStateSummary(state);
+ }
+ }
+
+ public int getDrawableResource(BluetoothClass btClass) {
+ return R.drawable.ic_bt_cellphone;
+ }
+
+ protected void finalize() {
+ if (V) Log.d(TAG, "finalize()");
+ if (mService != null) {
+ try {
+ BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.SAP,
+ mService);
+ mService = null;
+ }catch (Throwable t) {
+ Log.w(TAG, "Error cleaning up SAP proxy", t);
+ }
+ }
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
index 1cf7248..c81f22a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
@@ -32,7 +32,6 @@ import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
-import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.StorageVolume;
@@ -349,6 +348,11 @@ public class StorageMeasurement {
final Message finished = mMeasurementHandler.obtainMessage(MeasurementHandler.MSG_COMPLETED,
details);
+ if (mVolume == null || !mVolume.isMountedReadable()) {
+ finished.sendToTarget();
+ return;
+ }
+
if (mSharedVolume != null && mSharedVolume.isMountedReadable()) {
final File basePath = mSharedVolume.getPathForUser(currentUser);
@@ -375,8 +379,10 @@ public class StorageMeasurement {
}
final File file = mVolume.getPath();
- details.totalSize = file.getTotalSpace();
- details.availSize = file.getFreeSpace();
+ if (file != null) {
+ details.totalSize = file.getTotalSpace();
+ details.availSize = file.getFreeSpace();
+ }
// Measure all apps hosted on this volume for all users
if (mVolume.getType() == VolumeInfo.TYPE_PRIVATE) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 2cc2db5..7eaa728 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -17,9 +17,13 @@
package com.android.settingslib.wifi;
import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkInfo.State;
+import android.net.wifi.IWifiManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.KeyMgmt;
@@ -27,6 +31,8 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.TextUtils;
+import android.os.RemoteException;
+import android.os.ServiceManager;
import android.util.Log;
import android.util.LruCache;
import android.content.pm.ApplicationInfo;
@@ -722,6 +728,25 @@ public class AccessPoint implements Comparable<AccessPoint> {
}
}
+ // Case when there is wifi connected without internet connectivity.
+ final ConnectivityManager cm = (ConnectivityManager)
+ context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (state == DetailedState.CONNECTED) {
+ IWifiManager wifiManager = IWifiManager.Stub.asInterface(
+ ServiceManager.getService(Context.WIFI_SERVICE));
+ Network nw;
+
+ try {
+ nw = wifiManager.getCurrentNetwork();
+ } catch (RemoteException e) {
+ nw = null;
+ }
+ NetworkCapabilities nc = cm.getNetworkCapabilities(nw);
+ if (nc != null && !nc.hasCapability(nc.NET_CAPABILITY_VALIDATED)) {
+ return context.getString(R.string.wifi_connected_no_internet);
+ }
+ }
+
String[] formats = context.getResources().getStringArray((ssid == null)
? R.array.wifi_status : R.array.wifi_status_with_ssid);
int index = state.ordinal();
diff --git a/packages/SettingsProvider/res/values-sq-rAL/defaults.xml b/packages/SettingsProvider/res/values-sq-rAL/defaults.xml
new file mode 100644
index 0000000..22443a5
--- /dev/null
+++ b/packages/SettingsProvider/res/values-sq-rAL/defaults.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="def_device_name" msgid="6309317409634339402">"%1$s %2$s"</string>
+ <string name="def_device_name_simple" msgid="9037785625140748221">"%1$s"</string>
+</resources>
diff --git a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
index 89f84fc..e453cf5 100644
--- a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
+++ b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
@@ -8,11 +8,11 @@ import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
+import android.util.ArraySet;
import android.util.Slog;
import java.io.File;
import java.io.IOException;
-import java.util.HashSet;
public class SharedStorageAgent extends FullBackupAgent {
static final String TAG = "SharedStorageAgent";
@@ -42,7 +42,7 @@ public class SharedStorageAgent extends FullBackupAgent {
if (DEBUG) Slog.i(TAG, "Backing up " + mVolumes.length + " shared volumes");
// Ignore all apps' getExternalFilesDir() content; it is backed up as part of
// each app-specific payload.
- HashSet<String> externalFilesDirFilter = new HashSet<String>();
+ ArraySet<String> externalFilesDirFilter = new ArraySet();
final File externalAndroidRoot = new File(Environment.getExternalStorageDirectory(),
Environment.DIRECTORY_ANDROID);
externalFilesDirFilter.add(externalAndroidRoot.getCanonicalPath());
@@ -53,7 +53,9 @@ public class SharedStorageAgent extends FullBackupAgent {
// shared/N/path/to/file
// The restore will then extract to the given volume
String domain = FullBackup.SHARED_PREFIX + i;
- fullBackupFileTree(null, domain, v.getPath(), externalFilesDirFilter, output);
+ fullBackupFileTree(null, domain, v.getPath(),
+ null /* manifestExcludes */,
+ externalFilesDirFilter /* systemExcludes */, output);
}
}
}
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 5b4b4fd..dda9358 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -121,7 +121,7 @@
<activity
android:name=".BugreportWarningActivity"
- android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert"
+ android:theme="@*android:style/Theme.Material.DayNight.Dialog.Alert"
android:finishOnCloseSystemDialogs="true"
android:excludeFromRecents="true"
android:exported="false" />
diff --git a/packages/SystemUI/res/drawable/ic_mic_26dp.xml b/packages/SystemUI/res/drawable/ic_mic_26dp.xml
new file mode 100644
index 0000000..83e4ba8
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_mic_26dp.xml
@@ -0,0 +1,24 @@
+<!--
+Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="26.0dp"
+ android:height="26.0dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M12.000000,14.000000c1.700000,0.000000 3.000000,-1.300000 3.000000,-3.000000l0.000000,-6.000000c0.000000,-1.700000 -1.300000,-3.000000 -3.000000,-3.000000c-1.700000,0.000000 -3.000000,1.300000 -3.000000,3.000000l0.000000,6.000000C9.000000,12.700000 10.300000,14.000000 12.000000,14.000000zM17.299999,11.000000c0.000000,3.000000 -2.500000,5.100000 -5.300000,5.100000c-2.800000,0.000000 -5.300000,-2.100000 -5.300000,-5.100000L5.000000,11.000000c0.000000,3.400000 2.700000,6.200000 6.000000,6.700000L11.000000,21.000000l2.000000,0.000000l0.000000,-3.300000c3.300000,-0.500000 6.000000,-3.300000 6.000000,-6.700000L17.299999,11.000001z"
+ android:fillColor="#FF000000"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_ethernet.xml b/packages/SystemUI/res/drawable/stat_sys_ethernet.xml
new file mode 100644
index 0000000..e765320
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_ethernet.xml
@@ -0,0 +1,30 @@
+<!--
+Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
+ android:width="18.77dp"
+ android:height="17dp"
+ android:viewportWidth="53.0"
+ android:viewportHeight="48.0">
+ <path
+ android:fillColor="?attr/singleToneColor"
+ android:pathData="M15.54 13.52l-3.08-2.55L1.64 24l10.82 13.04 3.08-2.55L6.84 24l8.7-10.48zM14 26h4v-4h-4v4zm20-4h-4v4h4v-4zm-12 4h4v-4h-4v4zm13.54-15.04l-3.08 2.55L41.16 24l-8.7 10.48 3.08 2.55L46.36 24 35.54 10.96z"/>
+ <path
+ android:fillColor="?attr/singleToneColor"
+ android:pathData="M49.000000,40.000000l4.000000,0.000000l0.000000,4.000000l-4.000000,0.000000z"/>
+ <path
+ android:fillColor="?attr/singleToneColor"
+ android:pathData="M49.000000,20.000000l4.000000,0.000000l0.000000,16.100000l-4.000000,0.000000z"/></vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_ethernet_fully.xml b/packages/SystemUI/res/drawable/stat_sys_ethernet_fully.xml
new file mode 100644
index 0000000..b7b154c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_ethernet_fully.xml
@@ -0,0 +1,24 @@
+<!--
+Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="18.77dp"
+ android:height="17dp"
+ android:viewportWidth="53.0"
+ android:viewportHeight="48.0">
+ <path
+ android:fillColor="?attr/singleToneColor"
+ android:pathData="M15.54 13.52l-3.08-2.55L1.64 24l10.82 13.04 3.08-2.55L6.84 24l8.7-10.48zM14 26h4v-4h-4v4zm20-4h-4v4h4v-4zm-12 4h4v-4h-4v4zm13.54-15.04l-3.08 2.55L41.16 24l-8.7 10.48 3.08 2.55L46.36 24 35.54 10.96z"/>
+</vector>
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 1057464..5d0367e 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -52,7 +52,7 @@
android:contentDescription="@string/accessibility_camera_button" />
<com.android.systemui.statusbar.KeyguardAffordanceView
- android:id="@+id/phone_button"
+ android:id="@+id/left_button"
android:layout_height="@dimen/keyguard_affordance_height"
android:layout_width="@dimen/keyguard_affordance_width"
android:layout_gravity="bottom|start"
diff --git a/packages/SystemUI/res/layout/signal_cluster_view.xml b/packages/SystemUI/res/layout/signal_cluster_view.xml
index c9edef8..69dcad2 100644
--- a/packages/SystemUI/res/layout/signal_cluster_view.xml
+++ b/packages/SystemUI/res/layout/signal_cluster_view.xml
@@ -34,6 +34,25 @@
android:src="@drawable/stat_sys_vpn_ic"
/>
<FrameLayout
+ android:id="@+id/ethernet_combo"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ >
+ <com.android.systemui.statusbar.AlphaOptimizedImageView
+ android:theme="@style/DualToneLightTheme"
+ android:id="@+id/ethernet"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ />
+ <com.android.systemui.statusbar.AlphaOptimizedImageView
+ android:theme="@style/DualToneDarkTheme"
+ android:id="@+id/ethernet_dark"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:alpha="0.0"
+ />
+ </FrameLayout>
+ <FrameLayout
android:id="@+id/wifi_combo"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 6689061..c14e15e 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX twee strepies."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX drie strepies."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-sein vol."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Geen sein nie."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Nie gekoppel nie."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Geen stawe."</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 54885e8..2a91534 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ሁለት አሞሌዎች።"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX ሦስት አሞሌዎች።"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX አመልካች ሙሉ ነው።"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"ምንም ምልክት የለም።"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"አልተገናኘም።"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"ዜሮ አሞሌዎች።"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 31e4ba0..5600042 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -125,6 +125,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏شريطا WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"‏أشرطة WiMAX الثلاثة."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"‏إشارة WiMAX كاملة."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"ليست هناك إشارة."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"غير متصل."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"ليست هناك أشرطة."</string>
@@ -362,23 +366,15 @@
<string name="disable_vpn" msgid="4435534311510272506">"تعطيل الشبكة الظاهرية الخاصة"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"‏قطع الاتصال بشبكة VPN"</string>
<string name="monitoring_description_device_owned" msgid="5780988291898461883">"تتم إدارة جهازك عن طريق <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nيمكن للمشرف مراقبة وإدارة كل من الإعدادات والدخول إلى الشركة والتطبيقات والبيانات المرتبطة بجهازك ومعلومات الموقع لجهازك. للمزيد من المعلومات، اتصل بالمشرف."</string>
- <!-- no translation found for monitoring_description_vpn (996222259035614736) -->
- <skip />
+ <string name="monitoring_description_vpn" msgid="996222259035614736">"‏لقد منحت تطبيقًا الإذن لإعداد اتصال شبكة ظاهرية خاصة (VPN).\n\nيمكن لهذا التطبيق مراقبة أنشطتك على الجهاز والشبكة، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب."</string>
<string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"‏تتم إدارة جهازك عن طريق <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nيمكن للمشرف مراقبة وإدارة كل من الإعدادات والدخول إلى الشركة والتطبيقات والبيانات المرتبطة بجهازك ومعلومات الموقع لجهازك.\n\nأنت متصل بشبكة ظاهرية خاصة (VPN)، يمكنها مراقبة أنشطة الشبكة، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nللمزيد من المعلومات، اتصل بالمشرف."</string>
- <!-- no translation found for monitoring_description_vpn_profile_owned (2054949132145039290) -->
- <skip />
- <!-- no translation found for legacy_vpn_name (6604123105765737830) -->
- <skip />
- <!-- no translation found for monitoring_description_app (6947928635272782570) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal (8506133233655324426) -->
- <skip />
- <!-- no translation found for monitoring_description_app_work (808687576155832307) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal_work (7711690793960304868) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_app_device_owned (4970443827043261703) -->
- <skip />
+ <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"‏تتم إدارة ملفك الشخصي للعمل عن طريق <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nبإمكان المشرف مراقبة أنشطتك على الشبكة، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nللمزيد من المعلومات، اتصل بالمشرف.\n\nأنت متصل أيضًا بشبكة ظاهرية خاصة (VPN)، يمكنها مراقبة أنشطتك على الشبكة."</string>
+ <string name="legacy_vpn_name" msgid="6604123105765737830">"شبكة ظاهرية خاصة"</string>
+ <string name="monitoring_description_app" msgid="6947928635272782570">"أنت متصل بـ <xliff:g id="APPLICATION">%1$s</xliff:g>، الذي يمكنه مراقبة أنشطتك على الشبكة، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب."</string>
+ <string name="monitoring_description_app_personal" msgid="8506133233655324426">"أنت متصل بـ <xliff:g id="APPLICATION">%1$s</xliff:g>، الذي يمكنه مراقبة أنشطتك الشخصية على الشبكة، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب."</string>
+ <string name="monitoring_description_app_work" msgid="808687576155832307">"تتم إدارة ملفك الشخصي للعمل عن طريق <xliff:g id="ORGANIZATION">%1$s</xliff:g>. وهذا الملف الشخصي للعمل متصل بـ <xliff:g id="APPLICATION">%2$s</xliff:g>، الذي يمكنه مراقبة أنشطتك على شبكة العمل، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nللمزيد من المعلومات، اتصل بالمشرف."</string>
+ <string name="monitoring_description_app_personal_work" msgid="7711690793960304868">"تتم إدارة ملفك الشخصي للعمل عن طريق <xliff:g id="ORGANIZATION">%1$s</xliff:g>. وهذا الملف الشخصي للعمل متصل بـ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>، الذي يمكنه مراقبة أنشطتك على شبكة العمل، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nأنت متصل أيضًا بـ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>، الذي يمكنه مراقبة أنشطتك الشخصية على الشبكة."</string>
+ <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"تتم إدارة جهازك عن طريق <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nيمكن للمشرف مراقبة وإدارة كل من الإعدادات والوصول إلى الشركة والتطبيقات والبيانات المرتبطة بجهازك ومعلومات الموقع لجهازك.\n\nأنت متصل بـ <xliff:g id="APPLICATION">%2$s</xliff:g>، الذي يمكنه مراقبة أنشطتك على الشبكة، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nللمزيد من المعلومات، اتصل بالمشرف."</string>
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"سيظل الجهاز مقفلاً إلى أن يتم إلغاء قفله يدويًا"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"الحصول على الإشعارات بشكل أسرع"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"الاطلاع عليها قبل إلغاء القفل"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index b5bb6d6..fdd9c04 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX е с две чертички."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX е с три чертички."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Сигналът за WiMAX е пълен."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Няма сигнал."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Няма връзка."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Нула чертички."</string>
diff --git a/packages/SystemUI/res/values-bn-rBD/strings.xml b/packages/SystemUI/res/values-bn-rBD/strings.xml
index d0788fe..a56b31b 100644
--- a/packages/SystemUI/res/values-bn-rBD/strings.xml
+++ b/packages/SystemUI/res/values-bn-rBD/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX এ দুইটি দণ্ড৷"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX এ তিনটি দণ্ড৷"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX এ সম্পূর্ণ সিগন্যাল৷"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"কোনো সিগন্যাল নেই৷"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"সংযুক্ত নয়৷"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"কোনো দণ্ড নেই৷"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index dd10a54..78de314 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dues barres de WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Tres barres de WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Senyal de WiMAX plena."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Sense senyal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Sense connexió."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Cap barra."</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 8661860..e8dc73c 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dvě čárky signálu sítě WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Tři čárky signálu sítě WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Plný signál sítě WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Není signál."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Nepřipojeno."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Žádná čárka."</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 7389da6..24306c6 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX to bjælker."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX tre bjælker."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-signal er fuldt."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Intet signal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Ikke tilsluttet."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nul bjælker."</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index d47fd21..65f30d0 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX - zwei Balken"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX - drei Balken"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Volle WiMAX-Signalstärke"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Kein Signal"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Nicht verbunden"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Kein Balken"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 321d5c7..03895ff 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Σήμα WiMAX δύο γραμμές."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Σήμα WiMAX τρεις γραμμές."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Πλήρες σήμα WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Δεν υπάρχει σήμα."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Δεν έχει συνδεθεί."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Μηδέν γραμμές."</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index aec742c..1ba8d60 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX two bars."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX three bars."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX signal full."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"No signal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Not connected."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Zero bars."</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index aec742c..1ba8d60 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX two bars."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX three bars."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX signal full."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"No signal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Not connected."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Zero bars."</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index aec742c..1ba8d60 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX two bars."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX three bars."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX signal full."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"No signal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Not connected."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Zero bars."</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index b45c97f..cdbdac4 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dos barras de WiMAX"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Tres barras de WiMAX"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Señal de WiMAX al máximo"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Sin señal"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"No conectado"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Cero barras"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 8cc515f..c4a1707 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dos barras de WiMAX"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Tres barras de WiMAX"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Señal de WiMAX al máximo"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"No hay señal"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Sin conexión"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Ninguna barra"</string>
diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml
index 9ebf651..14c6bac 100644
--- a/packages/SystemUI/res/values-et-rEE/strings.xml
+++ b/packages/SystemUI/res/values-et-rEE/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-i on kaks riba."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-i on kolm riba."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-i signaal on tugev."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Signaal puudub."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Ühendus puudub."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Null pulka."</string>
diff --git a/packages/SystemUI/res/values-eu-rES/strings.xml b/packages/SystemUI/res/values-eu-rES/strings.xml
index 69bf208..d616912 100644
--- a/packages/SystemUI/res/values-eu-rES/strings.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX sarearen bi barra."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX sarearen hiru barra."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX sarearen seinalea osoa."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ez dago seinalerik."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Konektatu gabe."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Barrarik ez."</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index f983deb..af59739 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏WiMAX دارای دو نوار است."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"‏WiMAX دارای سه نوار است."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"‏قدرت سیگنال WiMAX کامل است."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"فاقد سیگنال."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"متصل نیست."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"بدون میله."</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index c084cf9..0b9e198 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: kaksi palkkia."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX: kolme palkkia."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Vahva WiMAX-signaali."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ei signaalia."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Ei yhteyttä."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nolla palkkia."</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 2c3482f..dbd7592 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX : moyen"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Signal WiMAX : bon"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Signal WiMAX : excellent"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Aucun signal"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Non connecté"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Aucun signal"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 9adebe0..e157332 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX : moyen"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Signal WiMAX : bon"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Signal WiMAX : excellent"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Aucun signal"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Non connecté"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Aucun signal"</string>
diff --git a/packages/SystemUI/res/values-gl-rES/strings.xml b/packages/SystemUI/res/values-gl-rES/strings.xml
index d9c6b8e..88ddd12 100644
--- a/packages/SystemUI/res/values-gl-rES/strings.xml
+++ b/packages/SystemUI/res/values-gl-rES/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dúas barras de WiMAX"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Tres barras de WiMAX"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Sinal completo de WiMAX"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Sen sinal"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Non conectada"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Ningunha barra"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 54f776d..3125c47 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX दो बार."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX तीन बार."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX सि‍ग्‍नल पूर्ण."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"कोई सिग्नल नहीं."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"कनेक्ट नहीं है."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"शून्य बार."</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index bb80eba..2641883 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -122,6 +122,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX s dva stupca."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX s tri stupca."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Signal WiMAX potpun je."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Nema signala."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Nije povezano."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nijedan stupac."</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 492caae..fe5c7a2 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-jel: két sáv."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-jel: három sáv."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-jel: teljes."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Nincs jel."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Nincs csatlakozva."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nincs sáv."</string>
diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml
index e0f3041..8449506 100644
--- a/packages/SystemUI/res/values-hy-rAM/strings.xml
+++ b/packages/SystemUI/res/values-hy-rAM/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ի երկու գիծ:"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-ի երեք գիծ:"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-ի ազդանշանը լիքն է:"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ազդանշան չկա:"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Միացված չէ:"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Զրո գիծ:"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 872a2cf..b869d6c 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX dua batang."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX tiga batang."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Sinyal WiMAX penuh."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Tidak ada sinyal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Tidak tersambung."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"0 baris."</string>
diff --git a/packages/SystemUI/res/values-is-rIS/strings.xml b/packages/SystemUI/res/values-is-rIS/strings.xml
index 0b9ccba..dbd9c7d 100644
--- a/packages/SystemUI/res/values-is-rIS/strings.xml
+++ b/packages/SystemUI/res/values-is-rIS/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: Tvö strik."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX: Þrjú strik."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Fullur WiMAX-sendistyrkur."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ekkert merki."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Engin tenging."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Engin strik."</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 755e01a..7d179fa 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: due barre."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX: tre barre."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Massimo segnale WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Nessun segnale."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Non connesso."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nessuna barra."</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 854b3ec..535035c 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏שני פסים של WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"‏שלושה פסים של WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"‏אות ה-WiMAX מלא."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"אין אות."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"לא מחובר."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"אפס פסים."</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 1f261f8..31aad88 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX電波状態:レベル2"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX電波状態:レベル3"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX電波状態:フル"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"圏外です。"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"接続されていません。"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"レベル0"</string>
diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml
index 7632dc6..4db00f6 100644
--- a/packages/SystemUI/res/values-ka-rGE/strings.xml
+++ b/packages/SystemUI/res/values-ka-rGE/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ის ორი ზოლი."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-ის სამი ზოლი."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX სიგნალი სრულია."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"სიგნალი არ არის."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"არ არის დაკავშირებული."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"სიგნალი ნულ ზოლზეა."</string>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings.xml b/packages/SystemUI/res/values-kk-rKZ/strings.xml
index 5791e9a..b45f0e1 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX екі жолақ."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX үш жолақ."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX сигналы толық."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Сигнал жоқ."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Жалғанбаған."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Нөл жолақ."</string>
diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml
index 75d8413..719df7f 100644
--- a/packages/SystemUI/res/values-km-rKH/strings.xml
+++ b/packages/SystemUI/res/values-km-rKH/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ពីរ​កាំ។"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX បី​កាំ។"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"សញ្ញា WiMAX ពេញ។"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"គ្មាន​សញ្ញា។"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"មិន​បាន​តភ្ជាប់​។"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"សូន្យ​កាំ។"</string>
diff --git a/packages/SystemUI/res/values-kn-rIN/strings.xml b/packages/SystemUI/res/values-kn-rIN/strings.xml
index 4de3bb0..f3a1b3d 100644
--- a/packages/SystemUI/res/values-kn-rIN/strings.xml
+++ b/packages/SystemUI/res/values-kn-rIN/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ಎರಡು ಪಟ್ಟಿಗಳು."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX ಮೂರು ಪಟ್ಟಿಗಳು."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX ಸಿಗ್ನಲ್‌ ಪೂರ್ತಿ ಇದೆ."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"ಸಂಕೇತವಿಲ್ಲ."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"ಶೂನ್ಯ ಪಟ್ಟಿಗಳು."</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index e8bfda1..c1081e9 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 신호 막대가 두 개입니다."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX 신호 막대가 세 개입니다."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX 신호가 강합니다."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"신호가 없습니다."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"연결되지 않았습니다."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"신호 막대가 없습니다."</string>
diff --git a/packages/SystemUI/res/values-ky-rKG/strings.xml b/packages/SystemUI/res/values-ky-rKG/strings.xml
index e44f1e9..b019777 100644
--- a/packages/SystemUI/res/values-ky-rKG/strings.xml
+++ b/packages/SystemUI/res/values-ky-rKG/strings.xml
@@ -146,6 +146,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX эки таякча."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX үч таякча."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX сигналы толук."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Сигнал жок."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Туташуу жок."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Таякча жок."</string>
diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml
index 97e9361..6511f52 100644
--- a/packages/SystemUI/res/values-lo-rLA/strings.xml
+++ b/packages/SystemUI/res/values-lo-rLA/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ສອງຂີດ."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX ສາມຂີດ."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"ສັນ​ຍານ WiMAX ເຕັມ."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"ບໍ່ມີສັນຍານ."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"ບໍ່ໄດ້ເຊື່ອມຕໍ່."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"ບໍ່ມີຈັກຂີດ."</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 0fdf420..9fbf0f1 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dvi „WiMAX“ signalo juostos."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Trys „WiMAX“ signalo juostos."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"„WiMAX“ signalas stiprus."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Nėra signalo."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Neprijungta."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nė vienos juostos."</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index db42e96..e4c1884 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -122,6 +122,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX divas joslas."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX trīs joslas."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX signāls pilns."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Nav signāla."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Savienojums nav izveidots."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nulle joslu"</string>
diff --git a/packages/SystemUI/res/values-mk-rMK/strings.xml b/packages/SystemUI/res/values-mk-rMK/strings.xml
index 3d4fd39..ee827d8 100644
--- a/packages/SystemUI/res/values-mk-rMK/strings.xml
+++ b/packages/SystemUI/res/values-mk-rMK/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX две цртички."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX три цртички."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Полн сигнал на WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Нема сигнал."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Не е поврзана"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Нула цртички."</string>
diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml
index 247bae0..e43ffb4 100644
--- a/packages/SystemUI/res/values-ml-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ml-rIN/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX രണ്ട് ബാറുകൾ."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX മൂന്ന് ബാറുകൾ."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX മികച്ച സിഗ്‌നൽ."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"സിഗ്‌നൽ ഇല്ല."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"കണക്റ്റുചെയ്‌തിട്ടില്ല."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"ബാറുകളൊന്നുമില്ല."</string>
diff --git a/packages/SystemUI/res/values-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml
index ae76ad1..ce50758 100644
--- a/packages/SystemUI/res/values-mn-rMN/strings.xml
+++ b/packages/SystemUI/res/values-mn-rMN/strings.xml
@@ -119,6 +119,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX хоёр баганатай."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX гурван баганатай."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX дохио дүүрэн."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Дохио байхгүй."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Холбогдоогүй."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Тэг баганатай."</string>
diff --git a/packages/SystemUI/res/values-mr-rIN/strings.xml b/packages/SystemUI/res/values-mr-rIN/strings.xml
index ccf85d9..ec88792 100644
--- a/packages/SystemUI/res/values-mr-rIN/strings.xml
+++ b/packages/SystemUI/res/values-mr-rIN/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX दोन बार."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX तीन बार."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX सिग्नल पूर्ण."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"सिग्नल नाही."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"कनेक्ट केले नाही."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"शून्य बार."</string>
diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml
index 71a3b68..a7a8a56 100644
--- a/packages/SystemUI/res/values-ms-rMY/strings.xml
+++ b/packages/SystemUI/res/values-ms-rMY/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX dua bar."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX tiga bar."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Isyarat WiMAX penuh."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Tiada isyarat."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Tidak disambungkan."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Tiada bar."</string>
diff --git a/packages/SystemUI/res/values-my-rMM/strings.xml b/packages/SystemUI/res/values-my-rMM/strings.xml
index 5cf51b1..24f7b45 100644
--- a/packages/SystemUI/res/values-my-rMM/strings.xml
+++ b/packages/SystemUI/res/values-my-rMM/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"ဝိုင်မက်စ် ၂ ဘားရှိ"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"ဝိုင်မက်စ် ၃ ဘား"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"ဝိုင်မက်စ် အပြည့်ရှိ"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"အချက်ပြမှု မရှိပါ"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"ချိတ်ဆက်မထားပါ"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"၀ ဘား"</string>
@@ -358,23 +362,15 @@
<string name="disable_vpn" msgid="4435534311510272506">"VPN ကို ပိတ်ထားရန်"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"VPN ကို အဆက်ဖြတ်ရန်"</string>
<string name="monitoring_description_device_owned" msgid="5780988291898461883">"သင့်စက်ကိရိယာကို<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\nမှစီမံခန့်ခွဲထားပါသည်။သင့်စီမံခန့်ခွဲသူသည် ကြိုတင်ပြင်ဆင်မှုများ၊စုပေါင်းဝင်ရောက်ခွင့်၊အက်ပလီကေးရှင်းများ၊သင့်စက်ကိရိယာနှင့်ဆက်နွယ်နေသောအချက်အလက်နှင့်သင့်စက်ကိရိယာ ရဲ့နေရာအချက်အလက်များကိုကြီးကြပ်စောင့်ကြည့်နိုင်ပါသည်။အသေးစိတ်သိရှိလိုပါကသင်၏စီမံခန့်ခွဲသူကိုဆက်သွယ်ပါ။"</string>
- <!-- no translation found for monitoring_description_vpn (996222259035614736) -->
- <skip />
+ <string name="monitoring_description_vpn" msgid="996222259035614736">"သင်သည် အပ်ဖ်အား VPN ချိတ်ဆက်မှုကို တည်ဆောက်ရန် ခွင့်ပြုခဲ့သည်။ \n\n ဤအပ်ဖ်သည် အီးမေးလ်များ၊ အပ်ဖ်များနှင့် ဝက်ဘ်ဆိုက်များအပါအဝင် သင့်စက်ပစ္စည်းနှင့် ကွန်ရပ်လှုပ်ရှားမှုကို စောင့်ကြည့်နိုင်သည်။"</string>
<string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"သင့်စက်ကိရိယာကို<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n \n မှစီမံခန့်ခွဲထားပါသည်။သင့်စီမံခန့်ခွဲသူသည် ကြိုတင်ပြင်ဆင်မှုများ၊စုပေါင်းဝင်ရောက်ခွင့်၊အက်ပလီကေးရှင်းများ၊သင့်စက်ကိရိယာနှင့်ဆက်နွယ်နေသောအချက်အလက်နှင့်သင့်စက်ကိရိယာ ရဲ့နေရာအချက်အလက်များကိုကြီးကြပ်စောင့်ကြည့်နိုင်ပါသည်။ \n\n အီးမေးလ်များ၊အက်ပလီကေးရှင်းများနှင့် ဝက်ဘ်ဆိုက်များအပါအဝင်သင့်ကွန်ယက်လုပ်ဆောင်ချက်ကိုစောင့်ကြည့်နိုင်သည့် VPN ကိုချိတ်ဆက်ထားပြီဖြစ် သည်။\n\n အသေးစိတ်သိရှိလိုပါကသင်၏စီမံခန့်ခွဲသူကိုဆက်သွယ်ပါ။"</string>
- <!-- no translation found for monitoring_description_vpn_profile_owned (2054949132145039290) -->
- <skip />
- <!-- no translation found for legacy_vpn_name (6604123105765737830) -->
- <skip />
- <!-- no translation found for monitoring_description_app (6947928635272782570) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal (8506133233655324426) -->
- <skip />
- <!-- no translation found for monitoring_description_app_work (808687576155832307) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal_work (7711690793960304868) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_app_device_owned (4970443827043261703) -->
- <skip />
+ <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"သင့်အလုပ်ပရိုဖိုင်ကို <xliff:g id="ORGANIZATION">%1$s</xliff:g>မှ စီမံခန့်ခွဲပါသည်။ \n\nသင့်စီမံခန့်ခွဲသူသည် အီးမေးလ်များ၊ အပ်ဖ်များ၊ နှင့် ဝက်ဘ်ဆိုက်များအပါအဝင် သင့်ကွန်ရက်လှုပ်ရှားမှုကို စောင့်ကြည့်နိုင်သည်။ \n\nပိုမိုသော သတင်းအချက်အလက်အတွက်၊ သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။ \n\nသင်သည် VPN သို့လည်းဆက်သွယ်ထားပြီး၊ ၎င်းသည် သင့်ကွန်ရက်လှုပ်ရှားမှုကို စောင့်ကြည့်နိုင်ပါသည်။"</string>
+ <string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string>
+ <string name="monitoring_description_app" msgid="6947928635272782570">"သင်သည် <xliff:g id="APPLICATION">%1$s</xliff:g> သို့ချိတ်ဆက်ထားသည်၊ ၎င်းသည် အီးမေးလ်များ၊ အပ်ဖ်များနှင့် ဝက်ဘ်ဆိုက်များအပါအဝင် သင့်ကွန်ရက် လှုပ်ရှားမှုများကို စောင့်ကြည့်နိုင်သည်။"</string>
+ <string name="monitoring_description_app_personal" msgid="8506133233655324426">"သင်သည် <xliff:g id="APPLICATION">%1$s</xliff:g> သို့ချိတ်ဆက်ထားသည်၊ ၎င်းသည် အီးမေးလ်များ၊ အပ်ဖ်များနှင့် ဝက်ဘ်ဆိုက်များအပါအဝင် သင့်ကိုယ်ရေးကိုယ်တာကွန်ရပ် လှုပ်ရှားမှုကို စောင့်ကြည့်နိုင်သည်။"</string>
+ <string name="monitoring_description_app_work" msgid="808687576155832307">"သင့်အလုပ်ပရိုဖိုင်ကို <xliff:g id="ORGANIZATION">%1$s</xliff:g>မှ စီမံခန့်ခွဲပါသည်။ ၎င်းသည်<xliff:g id="APPLICATION">%2$s</xliff:g>သို့ချိတ်ဆက်ထားပြီး၊ အီးမေးလ်များ၊ အပ်ဖ်များနှင့် ဝက်ဘ်ဆိုက်များအပါအဝင် သင့်အလုပ်ကွန်ရက်ကို စောင့်ကြည့်နိုင်သည်။ \n\nပိုမိုသောသတင်းအချက်အလက်အတွက်၊ သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။"</string>
+ <string name="monitoring_description_app_personal_work" msgid="7711690793960304868">"သင့်အလုပ် ပရိုဖိုင်ကို <xliff:g id="ORGANIZATION">%1$s</xliff:g> မှစီမံခန့်ခွဲပါသည်။ ၎င်းသည် <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> သို့ချိတ်ဆက်ထားပြီး၊ အီးမေးလ်များ၊ အပ်ဖ်များနှင့် ဝက်ဘ်ဆိုက်များအပါအဝင် သင့်အလုပ်ကွန်ရက်လှုပ်ရှားမှုကို စောင့်ကြည့်နိုင်သည်။ \n\n သင်သည် <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> သို့လည်းချိတ်ဆက်ထားပြီး၊ ၎င်းသည် သင့်ကိုယ်ရေးကိုယ်တာကွန်ရက်လုပ်ရှားမှုကို စောင့်ကြည့်နိုင်သည်။"</string>
+ <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"သင့်စက်ကိရိယာကို <xliff:g id="ORGANIZATION">%1$s</xliff:g> မှစီမံခန့်ခွဲပါသည်။ \n\n သင်စီမံခန့်ခွဲသူသည် ကြိုတင်ပြင်ဆင်မှုများ၊ စုပေါင်းဝင်ရောက်ခွင့်၊ အပ်ဖ်များ၊ သင့်ကိရိယာနှင့် သက်ဆိုင်သော ဒေတာ၊ နှင့် သင့်ကိရိယာ၏ တည်နေရာအချိက်အလက်များကို စောင့်ကြည့်ပြီး စီမံခန့်ခွဲနိုင်သည်။ \n\nသင်သည် <xliff:g id="APPLICATION">%2$s</xliff:g> သို့ချိတ်ဆက်ထားသည်၊ ၎င်းသည် အီးမေးလ်းများ၊ အပ်ဖ်များ၊ နှင့် ဝက်ဘ်ဆိုက်များအပါအဝင် သင့်ကွန်ရက်လှုပ်ရှားမှုကို စောင့်ကြည့်နိုင်သည်။ \n\nပိုမိုသော သတင်းအချက်အလက်အတွက်၊ သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။"</string>
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"သင်က လက်ဖြင့် သော့မဖွင့်မချင်း ကိရိယာမှာ သော့ပိတ်လျက် ရှိနေမည်"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"အကြောင်းကြားချက်များ မြန်မြန်ရရန်"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"မဖွင့်ခင် ၎င်းတို့ကို ကြည့်ပါ"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 7551438..f416df9 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX – to stolper."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX – tre stolper."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Fullt WiMAX-signal."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ikke noe signal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Ikke tilkoblet."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Ingen stolper."</string>
diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml
index bdc777f..43c29a9 100644
--- a/packages/SystemUI/res/values-ne-rNP/strings.xml
+++ b/packages/SystemUI/res/values-ne-rNP/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"वाइम्याक्स दुईवटा बारहरू।"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"वाइम्याक्स तिनवटा बारहरू।"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"वाइम्याक्स सङ्केत भरिएका।"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"सङ्केत छैन।"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"जडान नगरिएको।"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"शून्य पट्टि।"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 155c112..c7c2d46 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: twee streepjes."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX: drie streepjes."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-signaal is op volle sterkte."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Geen signaal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Niet verbonden."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Geen streepjes."</string>
diff --git a/packages/SystemUI/res/values-pa-rIN/strings.xml b/packages/SystemUI/res/values-pa-rIN/strings.xml
index fee2593..723a4d4 100644
--- a/packages/SystemUI/res/values-pa-rIN/strings.xml
+++ b/packages/SystemUI/res/values-pa-rIN/strings.xml
@@ -362,20 +362,13 @@
<string name="monitoring_title" msgid="169206259253048106">"ਨੈਟਵਰਕ ਨਿਰੀਖਣ ਕਰ ਰਿਹਾ ਹੈ"</string>
<string name="disable_vpn" msgid="4435534311510272506">"VPN ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"VPN ਨੂੰ ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
- <!-- no translation found for monitoring_description_device_owned (5780988291898461883) -->
- <skip />
- <!-- no translation found for monitoring_description_profile_owned (8110044290898637925) -->
- <skip />
- <!-- no translation found for monitoring_description_device_and_profile_owned (1664428184778531249) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn (912328761766161919) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_device_owned (3090670777499161246) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_profile_owned (2224494839524715272) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_device_and_profile_owned (2198546817407897093) -->
- <skip />
+ <string name="monitoring_description_device_owned" msgid="5780988291898461883">"ਤੁਹਾਡੀ ਡਿਵਾਈਸ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।\n\nਤੁਹਾਡਾ ਪ੍ਰਬੰਧਕ ਸੈਟਿੰਗਾਂ, ਕਾਰਪੋਰੇਟ ਪਹੁੰਚ, ਐਪਸ, ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਨਾਲ ਸੰਬੰਧਿਤ ਡਾਟਾ ਅਤੇ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਦੀ ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਜਾਣਕਾਰੀ ਦਾ ਨਿਰੀਖਣ ਅਤੇ ਉਸਨੂੰ ਵਿਵਸਥਿਤ ਕਰ ਸਕਦਾ ਹੈ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣੇ ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
+ <string name="monitoring_description_profile_owned" msgid="8110044290898637925">"ਤੁਹਾਡੀ ਕੰਮ ਪ੍ਰੋਫਾਈਲ <xliff:g id="ORGANIZATION">%1$s</xliff:g>ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।\n\nਤੁਹਾਡਾ ਪ੍ਰਬੰਧਕ ਤੁਹਾਡੀ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰਨ ਵਿੱਚ ਸਮਰੱਥ ਹੈ, ਈਮੇਲਾਂ, ਐਪਸ ਅਤੇ ਸੁਰੱਖਿਅਤ ਵੈਬਸਾਈਟਾਂ ਸਮੇਤ।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣਾ ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
+ <string name="monitoring_description_device_and_profile_owned" msgid="1664428184778531249">"ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਇਸ ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>.\nਤੁਹਾਡੀ ਕੰਮਪ੍ਰੋਫਾਈਲ ਇਸ ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>.\n\nਤੁਹਾਡਾ ਪ੍ਰਬੰਧਕ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਅਤੇ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰ ਸਕਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ ਈਮੇਲਾਂ, ਐਪਸ ਅਤੇ ਸੁਰੱਖਿਅਤ ਵੈਬਸਾਈਟਾਂ।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣੇ ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
+ <string name="monitoring_description_vpn" msgid="912328761766161919">"ਤੁਸੀਂ ਇੱਕ ਐਪ ਨੂੰ ਇੱਕ VPN ਕਨੈਕਸ਼ਨ ਸੈਟ ਅਪ ਕਰਨ ਦੀ ਅਨੁਮਤੀ ਦਿੱਤੀ ਹੈ।\n\nਇਹ ਐਪ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਅਤੇ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰ ਸਕਦਾ ਹੈ, ਈਮੇਲਾਂ, ਐਪਸ ਅਤੇ ਸੁਰੱਖਿਅਤ ਵੈਬਸਾਈਟਾਂ ਸਮੇਤ।"</string>
+ <string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"ਤੁਹਾਡੀ ਡਿਵਾਈਸ <xliff:g id="ORGANIZATION">%1$s</xliff:g>ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।\n\nਪ੍ਰਬੰਧਕ ਸੈਟਿੰਗਾਂ, ਕਾਰਪੋਰੇਟ ਪਹੁੰਚ, ਐਪਸ, ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਨਾਲ ਸੰਬੰਧਿਤ ਡਾਟਾ ਅਤੇ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਦੀ ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਜਾਣਕਾਰੀ ਦਾ ਨਿਰੀਖਣ ਅਤੇ ਉਸਨੂੰ ਵਿਵਸਥਿਤ ਕਰ ਸਕਦਾ ਹੈ।\n\nਤੁਸੀਂ ਇੱਕ VPN ਨਾਲ ਵੀ ਕਨੈਕਟ ਕੀਤਾ ਹੈ, ਜੋ ਤੁਹਾਡੀ ਨਿੱਜੀ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰ ਸਕਦਾ ਹੈ, ਈਮੇਲਾਂ, ਐਪਸ ਅਤੇ ਵੈਬਸਾਈਟਾਂ ਸਮੇਤ।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣੇ ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
+ <string name="monitoring_description_vpn_profile_owned" msgid="2224494839524715272">"ਤੁਹਾਡੀ ਕੰਮ ਪ੍ਰੋਫਾਈਲ <xliff:g id="ORGANIZATION">%1$s</xliff:g>ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।\n\nਤੁਹਾਡਾ ਪ੍ਰਬੰਧਕ ਤੁਹਾਡੀ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰਨ ਵਿੱਚ ਸਮਰੱਥ ਹੈ, ਈਮੇਲਾਂ, ਐਪਸ ਅਤੇ ਸੁਰੱਖਿਅਤ ਵੈਬਸਾਈਟਾਂ ਸਮੇਤ।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣਾ ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।\n\nਤੁਸੀਂ ਇੱਕ VPN ਨਾਲ ਵੀ ਕਨੈਕਟ ਕੀਤਾ ਹੈ, ਜੋ ਤੁਹਾਡੀ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰ ਸਕਦਾ ਹੈ।"</string>
+ <string name="monitoring_description_vpn_device_and_profile_owned" msgid="2198546817407897093">"ਤੁਹਾਡੀ ਡਿਵਾਈਸ <xliff:g id="ORGANIZATION_0">%1$s</xliff:g>ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।\nਤੁਹਾਡੀ ਕੰਮ ਪ੍ਰੋਫਾਈਲ ਇਸ ਵੱਲੋਂ ਵਿਵਸਥਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>.\n\nਤੁਹਾਡਾ ਪ੍ਰਬੰਧਕ ਤੁਹਾਡੀ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰਨ ਵਿੱਚ ਸਮਰੱਥ ਹੈ ਜਿਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ ਈਮੇਲਾਂ, ਐਪਸ ਅਤੇ ਸੁਰੱਖਿਅਤ ਵੈਬਸਾਈਟਾਂ। \n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣੇ ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।\n\nਤੁਸੀਂ ਇੱਕ VPN ਨਾਲ ਵੀ ਕਨੈਕਟ ਕੀਤਾ ਹੈ, ਜੋ ਤੁਹਾਡੀ ਨਿੱਜੀ ਨੈਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰ ਸਕਦਾ ਹੈ"</string>
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ਡਿਵਾਈਸ ਲੌਕ ਰਹੇਗੀ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਮੈਨੂਅਲੀ ਅਨਲੌਕ ਨਹੀਂ ਕਰਦੇ"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"ਤੇਜ਼ੀ ਨਾਲ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"ਅਨਲੌਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੂੰ ਦੇਖੋ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index ac570f2..d495e0c 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: dwa paski"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX: trzy paski"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX: pełna moc sygnału"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Brak sygnału."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Nie połączono."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Zero pasków."</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 3586090..112d74e 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Duas barras de WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Três barras de WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Sinal WiMAX completo."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Sem sinal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Sem ligação."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Zero barras."</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 4ca6b2f..c778bd7 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Duas barras do WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Três barras do WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Sinal WiMAX completo."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Sem sinal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Sem conexão."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nenhuma barra."</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 88a2a4d..6ed4489 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -122,6 +122,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX două bare."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX trei bare."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX semnal complet."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Fără semnal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Neconectat."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nicio bară."</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 85884d2..8bde24f 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Сигнал WiMAX: два деления."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Сигнал WiMAX: три деления."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Надежный сигнал WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Нет сигнала"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Не подключено"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Нет сигнала"</string>
diff --git a/packages/SystemUI/res/values-si-rLK/strings.xml b/packages/SystemUI/res/values-si-rLK/strings.xml
index cb1935c..2786b9d 100644
--- a/packages/SystemUI/res/values-si-rLK/strings.xml
+++ b/packages/SystemUI/res/values-si-rLK/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX තීරු දෙකයි."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX තීරු තුනයි."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX සංඥාව පිරී ඇත."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"සංඥා නැත."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"සම්බන්ධ වී නැත."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"තීරු ශුන්‍යයි."</string>
@@ -358,23 +362,15 @@
<string name="disable_vpn" msgid="4435534311510272506">"VPN අබල කරන්න."</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"VPN විසන්ධි කරන්න"</string>
<string name="monitoring_description_device_owned" msgid="5780988291898461883">"ඔබේ උපාංගය කළමනාකරණය කරනු ලබන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි.\n\nඔබේ පරිපාලකට ඔබේ උපාංගය හා සම්බන්ධිත සැකසීම්, ආයතනික ප්‍රවේශය, යෙදුම්, දත්ත සහ ඔබේ උපාංගය තිබෙන ස්ථානයේ තොරතුරු නිරීක්ෂණය කිරීමට සහ කළමනාකරණය කිරීමට හැකිය. වැඩිදුර තොරතුරු සඳහා, ඔබගේ පරිපාලක අමතන්න."</string>
- <!-- no translation found for monitoring_description_vpn (996222259035614736) -->
- <skip />
+ <string name="monitoring_description_vpn" msgid="996222259035614736">"ඔබ VPN සම්බන්ධතාවක් පිහිටුවීමට යෙදුම් අවසරයක් දී ඇත.\n\nමෙම යෙදුමට ඔබේ ඊ-තැපැල්, යෙදුම්, සහ වෙබ් අඩවි ඇතුළු, ඔබගේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කිරීමට හැකිය."</string>
<string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"ඔබේ උපාංගය කළමනාකරණය කරනු ලබන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි.\n\nඔබේ පරිපාලකට ඔබේ උපාංගය හා සම්බන්ධිත සැකසීම්, ආයතනික ප්‍රවේශය, යෙදුම්, දත්ත සහ ඔබේ උපාංගය තිබෙන ස්ථානයේ තොරතුරු නිරීක්ෂණය කිරීමට සහ කළමනාකරණය කිරීමට හැකිය.\n\nඊ-තැපැල්, යෙදුම්, සහ වෙබ් අඩවි ඇතුළු ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කිරීමට හැකි VPN සම්බන්ධතාවයකටද, ඔබ සම්බන්ධව ඇත.\n\nවැඩිදුර තොරතුරු සඳහා, ඔබගේ පරිපාලක අමතන්න."</string>
- <!-- no translation found for monitoring_description_vpn_profile_owned (2054949132145039290) -->
- <skip />
- <!-- no translation found for legacy_vpn_name (6604123105765737830) -->
- <skip />
- <!-- no translation found for monitoring_description_app (6947928635272782570) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal (8506133233655324426) -->
- <skip />
- <!-- no translation found for monitoring_description_app_work (808687576155832307) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal_work (7711690793960304868) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_app_device_owned (4970443827043261703) -->
- <skip />
+ <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"ඔබේ කාර්ය පැතිකඩ කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි.\n\nඔබේ පරිපාලකට ඔබේ ඊ-තැපැල්, යෙදුම්, සහ ආරක්ෂාකාරී වෙබ් අඩවි ඇතුළු, ඔබගේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කිරීමට හැකියාව ඇත.\n\nවැඩිදුර තොරතුරු සඳහා, ඔබගේ පරිපාලක අමතන්න.\n\nඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කිරීමට හැකි VPN සම්බන්ධතාවයකටද, ඔබ සම්බන්ධව ඇත."</string>
+ <string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string>
+ <string name="monitoring_description_app" msgid="6947928635272782570">"ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION">%1$s</xliff:g> වෙත ඔබ සම්බන්ධ වී ඇත."</string>
+ <string name="monitoring_description_app_personal" msgid="8506133233655324426">"ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION">%1$s</xliff:g>, වෙත ඔබ සම්බන්ධ වී ඇත."</string>
+ <string name="monitoring_description_app_work" msgid="808687576155832307">"ඔබේ කාර්ය පැතිකඩ කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි. එය ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION">%2$s</xliff:g> වෙත ඔබ සම්බන්ධ වී ඇත.\n\nවැඩිදුර විස්තර සඳහා, ඔබේ ජාල පරිපාලක අමතන්න."</string>
+ <string name="monitoring_description_app_personal_work" msgid="7711690793960304868">"ඔබේ කාර්ය පැතිකඩ කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි. එය ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, වෙත ඔබ සම්බන්ධ වී ඇත.\n\nඔබ ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> වෙතද සම්බන්ධ වී ඇත."</string>
+ <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"ඔබේ උපාංගය කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි.\n\nඔබේ පරිපාලකට ඔබේ උපාංගය හා සම්බන්ධිත සැකසීම්, ආයතනික ප්‍රවේශය, යෙදුම්, දත්ත සහ ඔබේ උපාංගය තිබෙන ස්ථානයේ තොරතුරු නිරීක්ෂණය කිරීමට සහ කළමනාකරණය කිරීමට හැකිය.\n\nඔබ ඊ-තැපැල්, යෙදුම්, සහ වෙබ් අඩවි ඇතුළු ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කිරීමට හැකි <xliff:g id="APPLICATION">%2$s</xliff:g>, වෙතද සම්බන්ධව ඇත.\n\nවැඩිදුර තොරතුරු සඳහා, ඔබගේ පරිපාලක අමතන්න."</string>
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ඔබ අතින් අගුළු අරින තුරු උපකරණය අගුළු වැටි තිබේ"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"දැනුම්දීම් ඉක්මනින් ලබාගන්න"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"ඔබ අඟුළු හැරීමට කලින් ඒවා බලන්න"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index d19fd84..c1f0088 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dva stĺpce signálu siete WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Tri stĺpce signálu siete WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Plný signál siete WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Žiadny signál."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Nepripojené."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Žiadna čiarka."</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index df52c7b..bd77ac9 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX: dve črtici."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Signal WiMAX: tri črtice."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Poln signal WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ni signala."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Ni povezan."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Nič črtic."</string>
diff --git a/packages/SystemUI/res/values-sq-rAL/strings.xml b/packages/SystemUI/res/values-sq-rAL/strings.xml
index e70254c..38fdcfd 100644
--- a/packages/SystemUI/res/values-sq-rAL/strings.xml
+++ b/packages/SystemUI/res/values-sq-rAL/strings.xml
@@ -179,12 +179,12 @@
<string name="accessibility_quick_settings_airplane_on" msgid="6406141469157599296">"Modaliteti \"në aeroplan\" është i aktivizuar."</string>
<string name="accessibility_quick_settings_airplane_changed_off" msgid="66846307818850664">"Modaliteti \"në aeroplan\" është i çaktivizuar."</string>
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Modaliteti \"në aeroplan\" është i aktivizuar."</string>
- <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Mos shqetëso\" i aktivizuar, vetëm me prioritet."</string>
- <string name="accessibility_quick_settings_dnd_none_on" msgid="5910777408232088752">"\"Mos shqetëso\" i aktivizuar, asnjë ndërprerje."</string>
- <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Mos shqetëso\" i aktivizuar, vetëm alarmet."</string>
- <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Mos shqetëso\" i çaktivizuar."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Mos shqetëso\" i çaktivizuar."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Mos shqetëso\" i aktivizuar."</string>
+ <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Mos shqetëso\" është i aktivizuar, vetëm me prioritet."</string>
+ <string name="accessibility_quick_settings_dnd_none_on" msgid="5910777408232088752">"\"Mos shqetëso\" është i aktivizuar, asnjë ndërprerje."</string>
+ <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Mos shqetëso\" është i aktivizuar, vetëm alarmet."</string>
+ <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Mos shqetëso\" është i çaktivizuar."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Mos shqetëso\" është i çaktivizuar."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Mos shqetëso\" është i aktivizuar."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"\"Bluetooth-i\" është i çaktivizuar."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"\"Bluetooth-i\" është i aktivizuar."</string>
<string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"\"Bluetooth-i\" po lidhet."</string>
@@ -362,20 +362,13 @@
<string name="monitoring_title" msgid="169206259253048106">"Monitorimi i rrjetit"</string>
<string name="disable_vpn" msgid="4435534311510272506">"Çaktivizo VPN-në"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"Shkëput VPN-në"</string>
- <!-- no translation found for monitoring_description_device_owned (5780988291898461883) -->
- <skip />
- <!-- no translation found for monitoring_description_profile_owned (8110044290898637925) -->
- <skip />
- <!-- no translation found for monitoring_description_device_and_profile_owned (1664428184778531249) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn (912328761766161919) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_device_owned (3090670777499161246) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_profile_owned (2224494839524715272) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_device_and_profile_owned (2198546817407897093) -->
- <skip />
+ <string name="monitoring_description_device_owned" msgid="5780988291898461883">"Pajisja jote menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nAdministratori yt mund të monitorojë dhe të menaxhojë cilësimet, qasjen e korporatës, aplikacionet, të dhënat e lidhura me pajisjen tënde, si dhe informacionet e vendndodhjes së pajisjes tënde. Për më shumë informacione, kontakto me administratorin tënd."</string>
+ <string name="monitoring_description_profile_owned" msgid="8110044290898637925">"Profili yt i punës menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nAdministratori yt mund të monitorojë aktivitetin e rrjetit, duke përfshirë emailet, aplikacionet dhe sajtet e sigurta të uebit.\n\nPër më shumë informacione, kontakto me administratorin tënd."</string>
+ <string name="monitoring_description_device_and_profile_owned" msgid="1664428184778531249">"Pajisja jote menaxhohet nga:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>.\nProfili yt i punës menaxhohet nga:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>.\n\nAdministratori yt mund të monitorojë pajisjen tënde dhe aktivitetin e rrjetit, duke përfshirë emailet, aplikacionet dhe sajtet e sigurta të uebit.\n\nPër më shumë informacione, kontakto me administratorin."</string>
+ <string name="monitoring_description_vpn" msgid="912328761766161919">"I dhe leje një aplikacioni që të konfigurojë një lidhje VPN.\n\nKy aplikacion mund të monitorojë pajisjen tënde dhe aktivitetin e rrjetit, duke përfshirë emailet, aplikacionet dhe sajtet e sigurta të uebit."</string>
+ <string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"Pajisja jote menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nAdministratori yt mund të monitorojë dhe të menaxhojë cilësimet, qasjen e korporatës, aplikacionet, të dhënat e lidhura me pajisjen dhe informacionet e vendndodhjes së pajisjes.\n\nJe i lidhur me një rrjet VPN që mund të monitorojë aktivitetin tënd të rrjetit, duke përfshirë emailet, aplikacionet dhe sajtet e uebit.\n\nPër më shumë informacione, kontakto me administratorin."</string>
+ <string name="monitoring_description_vpn_profile_owned" msgid="2224494839524715272">"Profili yt i punës menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nAdministratori yt mund të monitorojë aktivitetin tënd të rrjetit, duke përfshirë emailet, aplikacionet dhe sajtet e sigurta të uebit.\n\nPër më shumë informacione, kontakto me administratorin tënd.\n\nJe i lidhur po ashtu me një rrjet VPN që mund të monitorojë aktivitetin tënd të rrjetit."</string>
+ <string name="monitoring_description_vpn_device_and_profile_owned" msgid="2198546817407897093">"Pajisja jote menaxhohet nga <xliff:g id="ORGANIZATION_0">%1$s</xliff:g>.\nProfili yt i punës menaxhohet nga:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>.\n\nAdministratori yt mund të monitorojë aktivitetin tënd të rrjetit, duke përfshirë emailet, aplikacionet dhe sajtet e sigurta të uebit.\n\nPër më shumë informacione, kontakto me administratorin tënd.\n\nJe i lidhur po ashtu me një rrjet VPN që mund të monitorojë aktivitetin e rrjetit tënd personal"</string>
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Pajisje do të qëndrojë e kyçur derisa ta shkyçësh manualisht"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"Merr njoftime më shpejt"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"Shikoji para se t\'i shkyçësh"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 71108c3..4e95771 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -122,6 +122,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX сигнал има две црте."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX сигнал има три црте."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX сигнал је најјачи."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Нема сигнала."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Није повезано."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Ниједна црта."</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index ae0f5b7..b6574be 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: två staplar."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX: tre staplar."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-signalen är full."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ingen signal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Inte ansluten."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Inga staplar."</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index ba54b3b..b6d0bf2 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Pau mbili za WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Pau tatu za WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Ishara ya WiMAX imejaa."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Hakuna mtandao"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Haijaunganishwa."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Vipima mtandao sufuri."</string>
diff --git a/packages/SystemUI/res/values-ta-rIN/strings.xml b/packages/SystemUI/res/values-ta-rIN/strings.xml
index 6aa8e59..7c5cea6 100644
--- a/packages/SystemUI/res/values-ta-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ta-rIN/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX இரண்டு கோடுகள்."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX மூன்று கோடுகள்."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX சிக்னல் முழுமையாக உள்ளது."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"சிக்னல் இல்லை."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"இணைக்கப்படவில்லை."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"கோடுகள் இல்லை."</string>
diff --git a/packages/SystemUI/res/values-te-rIN/strings.xml b/packages/SystemUI/res/values-te-rIN/strings.xml
index 0f0358e..7d3ea0d 100644
--- a/packages/SystemUI/res/values-te-rIN/strings.xml
+++ b/packages/SystemUI/res/values-te-rIN/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX రెండు బార్‌లు కలిగి ఉంది."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX మూడు బార్‌లు కలిగి ఉంది."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX సిగ్నల్ పూర్తిగా ఉంది."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"సిగ్నల్ లేదు."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"కనెక్ట్ చేయబడలేదు."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"సున్నా బార్‌లు."</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 10ba919..4af239e 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"สัญญาณ WiMAX สองขีด"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"สัญญาณ WiMAX สามขีด"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"สัญญาณ WiMAX เต็ม"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"ไม่มีสัญญาณ"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"ไม่ได้เชื่อมต่อ"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"ศูนย์ขีด"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 7c86a11..505b957 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX na dalawang bar."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX na tatlong bar."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Puno ang signal ng WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Walang signal."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Hindi nakakonekta."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Walang mga bar."</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index b77749f..c77fc05 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX iki çubuk."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX üç çubuk."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX sinyali tam."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Sinyal yok."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Bağlanmadı."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Sıfır çubuk."</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 8f2d3d5..2afef6b 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -123,6 +123,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Дві смужки сигналу WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Три смужки сигналу WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Максимальний сигнал WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Немає сигналу."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Не з’єднано."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Нуль смужок сигналу."</string>
diff --git a/packages/SystemUI/res/values-ur-rPK/strings.xml b/packages/SystemUI/res/values-ur-rPK/strings.xml
index 23f4e46..1e60c67 100644
--- a/packages/SystemUI/res/values-ur-rPK/strings.xml
+++ b/packages/SystemUI/res/values-ur-rPK/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏WiMAX دو بارز۔"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"‏WiMAX تین بارز۔"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"‏WiMAX سگنل پورا ہے۔"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"کوئی سگنل نہیں ہے۔"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"مربوط نہیں ہے۔"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"صفر بارز۔"</string>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index 09ef575..6f2454d 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Ikkita ustunli WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Uchta ustunli WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"To‘liq signalli WiMAX."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Signal yo‘q."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Ulanmagan."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Signal ustuni yo‘q."</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index b288688..7bab592 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX hai vạch."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX ba vạch."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Tín hiệu WiMAX đầy đủ."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Không có tín hiệu nào."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Chưa được kết nối."</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"0 vạch."</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 2972c10..9275dbd 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 信号强度为两格。"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX 信号强度为三格。"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX 信号满格。"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"无信号。"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"未连接。"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"信号强度为零格。"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index de00529..bcbcf98 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 訊號強度兩格。"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX 訊號強度三格。"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX 訊號滿格。"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"沒有訊號。"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"未連線。"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"訊號強度為零格。"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index aa0f8e6..84d6c5e 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 訊號兩格。"</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX 訊號三格。"</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX 訊號滿格。"</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"沒有訊號。"</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"尚未連線。"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"訊號強度零格。"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index a551c94..3bc7919 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -121,6 +121,10 @@
<string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Amabha amabili we-WiMAX."</string>
<string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Amabha amathathu we-WiMAX."</string>
<string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Isiginali ye-WiMAX egcwele."</string>
+ <!-- no translation found for accessibility_ethernet_disconnected (5896059303377589469) -->
+ <skip />
+ <!-- no translation found for accessibility_ethernet_connected (2692130313069182636) -->
+ <skip />
<string name="accessibility_no_signal" msgid="7064645320782585167">"Ayikho isignali."</string>
<string name="accessibility_not_connected" msgid="6395326276213402883">"Akuxhunyiwe"</string>
<string name="accessibility_zero_bars" msgid="3806060224467027887">"Amabha ayiqanda."</string>
@@ -358,23 +362,15 @@
<string name="disable_vpn" msgid="4435534311510272506">"Khubaza i-VPN"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"Nqamula i-VPN"</string>
<string name="monitoring_description_device_owned" msgid="5780988291898461883">"Idivayisi yakho iphethwe yi-<xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nUmlawuli wakho angaqapha aphinde aphathe izilungiselelo, ukufinyelela kwenkampani, izinhlelo zokusebenza, idatha ehlotshaniswa nedivayisi yakho, kanye nolwazi lwendawo yedivayisi yakho. Ukuze uthole olunye ulwazi xhumana nomlawuli wakho."</string>
- <!-- no translation found for monitoring_description_vpn (996222259035614736) -->
- <skip />
+ <string name="monitoring_description_vpn" msgid="996222259035614736">"Unikeze uhlelo lokusebenza imvume yokuthi lusethe ukuxhumeka kwe-VPN.\n\nLolu hlelo lokusebenza lungagada idivayisi yakho kanye nomsebenzi wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza namawebhusayithi."</string>
<string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"Idivayisi yakho iphethwe yi-<xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nUmlawuli wakho angaqapha aphinde aphathe izilungiselelo, ukufinyelela kwezinkampani, izinhlelo zokusebenza, idatha ehlotshaniswa nedivayisi yakho, kanye nolwazi lwendawo yedivayisi yakho.\n\nUxhumeke ku-VPN, engaqapha umsebenzi wakho wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi.\n\nUkuze uthole olunye ulwazi, xhumana nomlawuli wakho."</string>
- <!-- no translation found for monitoring_description_vpn_profile_owned (2054949132145039290) -->
- <skip />
- <!-- no translation found for legacy_vpn_name (6604123105765737830) -->
- <skip />
- <!-- no translation found for monitoring_description_app (6947928635272782570) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal (8506133233655324426) -->
- <skip />
- <!-- no translation found for monitoring_description_app_work (808687576155832307) -->
- <skip />
- <!-- no translation found for monitoring_description_app_personal_work (7711690793960304868) -->
- <skip />
- <!-- no translation found for monitoring_description_vpn_app_device_owned (4970443827043261703) -->
- <skip />
+ <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"Iphrofayela yakho yomsebenzi iphethwe yi-<xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nUmqondisi wakho unamandla wokuqaphela umsebenzi wenethiwekhi yakho ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi.\n\nUkuze uthole olunye ulwazi, xhumana nomqondisi wakho.\n\nFuthi uxhumeke ku-VPN, engaqaphela umsebenzi wenethiwekhi yakho."</string>
+ <string name="legacy_vpn_name" msgid="6604123105765737830">"I-VPN"</string>
+ <string name="monitoring_description_app" msgid="6947928635272782570">"Uxhumeke ku-<xliff:g id="APPLICATION">%1$s</xliff:g>, engaqaphela umsebenzi wenethiwekhi yakho ofaka ama-imeyili, izinhlelo zokusebenza namawebhusayithi."</string>
+ <string name="monitoring_description_app_personal" msgid="8506133233655324426">"Uxhumeke ku-<xliff:g id="APPLICATION">%1$s</xliff:g>, engaqaphela umsebenzi wakho womuntu siqu wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza namawebhusayithi."</string>
+ <string name="monitoring_description_app_work" msgid="808687576155832307">"Iphrofayela yakho yomsebenzi iphethwe yi-<xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ixhumeke ku-<xliff:g id="APPLICATION">%2$s</xliff:g>, engaqaphela umsebenzi wakho wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza namawebhusayithi.\n\nUkuze uthole olunye ulwazi, xhumana nomqondisi wakho."</string>
+ <string name="monitoring_description_app_personal_work" msgid="7711690793960304868">"Iphrofayela yakho yomsebenzi iphethwe yi-<xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ixhumeke ku-<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, engaqaphela umsebenzi wakho wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza namawebhusayithi.\n\nFuthi uxhumeke ku-<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, engaqaphela umsebenzi wenethiwekhi yakho yomuntu siqu."</string>
+ <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"Idivayisi yakho iphethwe yi-<xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nUmqondisi wakho angaqaphela aphinde aphathe izilungiselelo, ukufinyelela kwezinkampani, izinhlelo zokusebenza, idatha ehlotshaniswa nedivayisi yakho, nolwazi lendawo yedivayisi yakho.\n\nUxhumeke ku-<xliff:g id="APPLICATION">%2$s</xliff:g>, engaqaphela umsebenzi wakho wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza namawebhusayithi.\n\nUkuze uthole olunye ulwazi, xhumana nomqondisi wakho."</string>
<string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Idivayisi izohlala ikhiyekile uze uyivule ngokwenza"</string>
<string name="hidden_notifications_title" msgid="7139628534207443290">"Thola izaziso ngokushesha"</string>
<string name="hidden_notifications_text" msgid="2326409389088668981">"Ibone ngaphambi kokuthi uyivule"</string>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 00b8df2..8466a5a 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -205,6 +205,8 @@
<string name="accessibility_camera_button">Camera</string>
<!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_phone_button">Phone</string>
+ <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_voice_assist_button">Voice Assist</string>
<!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_unlock_button">Unlock</string>
<!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
@@ -212,6 +214,8 @@
<!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
<string name="phone_label">open phone</string>
<!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+ <string name="voice_assist_label">open voice assist</string>
+ <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
<string name="camera_label">open camera</string>
<!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
<string name="recents_caption_resize">Select new task layout</string>
@@ -293,6 +297,11 @@
<!-- Content description of the WiMAX signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_wimax_signal_full">WiMAX signal full.</string>
+ <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ethernet_disconnected">Ethernet disconnected.</string>
+ <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_ethernet_connected">Ethernet connected.</string>
+
<!-- Content description of an item with no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_no_signal">No signal.</string>
<!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
@@ -748,11 +757,14 @@
<!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
<string name="keyguard_unlock">Swipe up to unlock</string>
- <!-- Shows when people have clicked at the left edge of the screen to explain how to open the phone. In right-to-left languages, this is the opposite direction. [CHAR LIMIT=60] -->
- <string name="phone_hint">Swipe right for phone</string>
+ <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+ <string name="phone_hint">Swipe from icon for phone</string>
- <!-- Shows when people have clicked at the right edge of the screen to explain how to open the phone. In right-to-left languages, this is the opposite direction. [CHAR LIMIT=60] -->
- <string name="camera_hint">Swipe left for camera</string>
+ <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+ <string name="voice_hint">Swipe from icon for voice assist</string>
+
+ <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+ <string name="camera_hint">Swipe from icon for camera</string>
<!-- Interruption level: None. [CHAR LIMIT=40] -->
<string name="interruption_level_none">Total silence</string>
@@ -946,6 +958,12 @@
<!-- Button label for ending zen mode in the volume dialog -->
<string name="volume_zen_end_now">End now</string>
+ <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_volume_expand">Expand</string>
+
+ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_volume_collapse">Collapse</string>
+
<!-- Screen pinning dialog title. -->
<string name="screen_pinning_title">Screen is pinned</string>
<!-- Screen pinning dialog description. -->
diff --git a/packages/SystemUI/src/com/android/systemui/EventLogConstants.java b/packages/SystemUI/src/com/android/systemui/EventLogConstants.java
index c8af2d4..43a1be1 100644
--- a/packages/SystemUI/src/com/android/systemui/EventLogConstants.java
+++ b/packages/SystemUI/src/com/android/systemui/EventLogConstants.java
@@ -34,4 +34,10 @@ public class EventLogConstants {
public static final int SYSUI_LOCKSCREEN_GESTURE_TAP_LOCK = 6;
/** The user tapped a notification, needs to tap again to launch. */
public static final int SYSUI_LOCKSCREEN_GESTURE_TAP_NOTIFICATION_ACTIVATE = 7;
+ /** The user swiped down to open quick settings, from keyguard. */
+ public static final int SYSUI_LOCKSCREEN_GESTURE_SWIPE_DOWN_QS = 8;
+ /** The user swiped down to open quick settings, from shade. */
+ public static final int SYSUI_SHADE_GESTURE_SWIPE_DOWN_QS = 9;
+ /** The user tapped on the status bar to open quick settings, from shade. */
+ public static final int SYSUI_TAP_TO_OPEN_QS = 10;
}
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistGestureManager.java b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
index d9f2324..d1f8963 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistGestureManager.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
@@ -33,11 +33,11 @@ import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
/**
- * Class to manage everything around the assist gesture.
+ * Class to manage everything related to assist in SystemUI.
*/
-public class AssistGestureManager {
+public class AssistManager {
- private static final String TAG = "AssistGestureManager";
+ private static final String TAG = "AssistManager";
private static final String ASSIST_ICON_METADATA_NAME =
"com.android.systemui.action_assist_icon";
@@ -77,7 +77,7 @@ public class AssistGestureManager {
}
};
- public AssistGestureManager(PhoneStatusBar bar, Context context) {
+ public AssistManager(PhoneStatusBar bar, Context context) {
mContext = context;
mBar = bar;
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
@@ -194,6 +194,14 @@ public class AssistGestureManager {
}
}
+ public void launchVoiceAssistFromKeyguard() {
+ try {
+ mVoiceInteractionManagerService.launchVoiceAssistFromKeyguard();
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to call launchVoiceAssistFromKeyguard", e);
+ }
+ }
+
private boolean getVoiceInteractorSupportsAssistGesture() {
try {
return mVoiceInteractionManagerService.activeServiceSupportsAssist();
@@ -203,7 +211,16 @@ public class AssistGestureManager {
}
}
- private ComponentName getVoiceInteractorComponentName() {
+ public boolean canVoiceAssistBeLaunchedFromKeyguard() {
+ try {
+ return mVoiceInteractionManagerService.activeServiceSupportsLaunchFromKeyguard();
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to call activeServiceSupportsLaunchFromKeyguard", e);
+ return false;
+ }
+ }
+
+ public ComponentName getVoiceInteractorComponentName() {
try {
return mVoiceInteractionManagerService.getActiveServiceComponentName();
} catch (RemoteException e) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index 1001feb..ad97f91 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -39,7 +39,6 @@ import com.android.systemui.R;
import com.android.systemui.recents.misc.DebugTrigger;
import com.android.systemui.recents.misc.ReferenceCountedTrigger;
import com.android.systemui.recents.misc.SystemServicesProxy;
-import com.android.systemui.recents.misc.Utilities;
import com.android.systemui.recents.model.RecentsTaskLoadPlan;
import com.android.systemui.recents.model.RecentsTaskLoader;
import com.android.systemui.recents.model.Task;
@@ -392,15 +391,6 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(SearchManager.INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED);
registerReceiver(mSystemBroadcastReceiver, filter);
-
- // Private API calls to make the shadows look better
- try {
- Utilities.setShadowProperty("ambientRatio", String.valueOf(1.5f));
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
}
/** Inflates the debug overlay if debug mode is enabled. */
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java b/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
index 84544ff..e810410 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
@@ -22,27 +22,11 @@ import android.graphics.Matrix;
import android.graphics.Rect;
import android.view.View;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.ArrayList;
/* Common code */
public class Utilities {
- // Reflection methods for altering shadows
- private static Method sPropertyMethod;
- static {
- try {
- Class<?> c = Class.forName("android.view.DisplayListCanvas");
- sPropertyMethod = c.getDeclaredMethod("setProperty", String.class, String.class);
- if (!sPropertyMethod.isAccessible()) sPropertyMethod.setAccessible(true);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- }
- }
-
/** Scales a rect about its centroid */
public static void scaleRectAboutCenter(Rect r, float scale) {
if (scale != 1.0f) {
@@ -163,12 +147,6 @@ public class Utilities {
(1f - overlayAlpha) * Color.blue(overlayColor)));
}
- /** Sets some private shadow properties. */
- public static void setShadowProperty(String property, String value)
- throws IllegalAccessException, InvocationTargetException {
- sPropertyMethod.invoke(null, property, value);
- }
-
/**
* Cancels an animation ensuring that if it has listeners, onCancel and onEnd
* are not called.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 26c3b4e..588ec26 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -238,6 +238,8 @@ public abstract class BaseStatusBar extends SystemUI implements
protected DismissView mDismissView;
protected EmptyShadeView mEmptyShadeView;
+ private NotificationClicker mNotificationClicker = new NotificationClicker();
+
@Override // NotificationData.Environment
public boolean isDeviceProvisioned() {
return mDeviceProvisioned;
@@ -1292,13 +1294,7 @@ public abstract class BaseStatusBar extends SystemUI implements
row.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
}
- PendingIntent contentIntent = sbn.getNotification().contentIntent;
- if (contentIntent != null) {
- final View.OnClickListener listener = makeClicker(contentIntent, sbn.getKey());
- row.setOnClickListener(listener);
- } else {
- row.setOnClickListener(null);
- }
+ mNotificationClicker.register(row, sbn);
// set up the adaptive layout
View contentViewLocal = null;
@@ -1559,35 +1555,38 @@ public abstract class BaseStatusBar extends SystemUI implements
}
}
- public NotificationClicker makeClicker(PendingIntent intent, String notificationKey) {
- return new NotificationClicker(intent, notificationKey);
- }
+ private final class NotificationClicker implements View.OnClickListener {
+ public void onClick(final View v) {
+ if (!(v instanceof ExpandableNotificationRow)) {
+ Log.e(TAG, "NotificationClicker called on a view that is not a notification row.");
+ return;
+ }
- protected class NotificationClicker implements View.OnClickListener {
- private PendingIntent mIntent;
- private final String mNotificationKey;
+ final ExpandableNotificationRow row = (ExpandableNotificationRow) v;
+ final StatusBarNotification sbn = row.getStatusBarNotification();
+ if (sbn == null) {
+ Log.e(TAG, "NotificationClicker called on an unclickable notification,");
+ return;
+ }
- public NotificationClicker(PendingIntent intent, String notificationKey) {
- mIntent = intent;
- mNotificationKey = notificationKey;
- }
+ final PendingIntent intent = sbn.getNotification().contentIntent;
+ final String notificationKey = sbn.getKey();
- public void onClick(final View v) {
if (NOTIFICATION_CLICK_DEBUG) {
- Log.d(TAG, "Clicked on content of " + mNotificationKey);
+ Log.d(TAG, "Clicked on content of " + notificationKey);
}
final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
- final boolean afterKeyguardGone = mIntent.isActivity()
- && PreviewInflater.wouldLaunchResolverActivity(mContext, mIntent.getIntent(),
+ final boolean afterKeyguardGone = intent.isActivity()
+ && PreviewInflater.wouldLaunchResolverActivity(mContext, intent.getIntent(),
mCurrentUserId);
dismissKeyguardThenExecute(new OnDismissAction() {
public boolean onDismiss() {
- if (mHeadsUpManager != null && mHeadsUpManager.isHeadsUp(mNotificationKey)) {
+ if (mHeadsUpManager != null && mHeadsUpManager.isHeadsUp(notificationKey)) {
// Release the HUN notification to the shade.
//
// In most cases, when FLAG_AUTO_CANCEL is set, the notification will
// become canceled shortly by NoMan, but we can't assume that.
- mHeadsUpManager.releaseImmediately(mNotificationKey);
+ mHeadsUpManager.releaseImmediately(notificationKey);
}
new Thread() {
@Override
@@ -1606,9 +1605,9 @@ public abstract class BaseStatusBar extends SystemUI implements
} catch (RemoteException e) {
}
- if (mIntent != null) {
+ if (intent != null) {
try {
- mIntent.send();
+ intent.send();
} catch (PendingIntent.CanceledException e) {
// the stack trace isn't very helpful here.
// Just log the exception message.
@@ -1616,14 +1615,14 @@ public abstract class BaseStatusBar extends SystemUI implements
// TODO: Dismiss Keyguard.
}
- if (mIntent.isActivity()) {
+ if (intent.isActivity()) {
overrideActivityPendingAppTransition(keyguardShowing
&& !afterKeyguardGone);
}
}
try {
- mBarService.onNotificationClick(mNotificationKey);
+ mBarService.onNotificationClick(notificationKey);
} catch (RemoteException ex) {
// system process is dead if we're here.
}
@@ -1635,10 +1634,19 @@ public abstract class BaseStatusBar extends SystemUI implements
true /* force */, true /* delayed */);
visibilityChanged(false);
- return mIntent != null && mIntent.isActivity();
+ return intent != null && intent.isActivity();
}
}, afterKeyguardGone);
}
+
+ public void register(ExpandableNotificationRow row, StatusBarNotification sbn) {
+ final PendingIntent contentIntent = sbn.getNotification().contentIntent;
+ if (contentIntent != null) {
+ row.setOnClickListener(this);
+ } else {
+ row.setOnClickListener(null);
+ }
+ }
}
public void animateCollapsePanels(int flags, boolean force) {
@@ -2037,13 +2045,8 @@ public abstract class BaseStatusBar extends SystemUI implements
publicContentView.reapply(mContext, entry.getPublicContentView(), mOnClickHandler);
}
// update the contentIntent
- final PendingIntent contentIntent = notification.getNotification().contentIntent;
- if (contentIntent != null) {
- final View.OnClickListener listener = makeClicker(contentIntent, notification.getKey());
- entry.row.setOnClickListener(listener);
- } else {
- entry.row.setOnClickListener(null);
- }
+ mNotificationClicker.register(entry.row, notification);
+
entry.row.setStatusBarNotification(notification);
entry.row.notifyContentUpdated();
entry.row.resetHeight();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
index e632cc8..17e2cb5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
@@ -59,13 +59,6 @@ public abstract class ExpandableView extends FrameLayout {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int ownMaxHeight = mMaxViewHeight;
- int heightMode = MeasureSpec.getMode(heightMeasureSpec);
- boolean hasFixedHeight = heightMode == MeasureSpec.EXACTLY;
- boolean isHeightLimited = heightMode == MeasureSpec.AT_MOST;
- if (hasFixedHeight || isHeightLimited) {
- int size = MeasureSpec.getSize(heightMeasureSpec);
- ownMaxHeight = Math.min(ownMaxHeight, size);
- }
int newHeightSpec = MeasureSpec.makeMeasureSpec(ownMaxHeight, MeasureSpec.AT_MOST);
int maxChildHeight = 0;
int childCount = getChildCount();
@@ -92,8 +85,7 @@ public abstract class ExpandableView extends FrameLayout {
mMatchParentViews.add(child);
}
}
- int ownHeight = hasFixedHeight ? ownMaxHeight :
- isHeightLimited ? Math.min(ownMaxHeight, maxChildHeight) : maxChildHeight;
+ int ownHeight = Math.min(ownMaxHeight, maxChildHeight);
newHeightSpec = MeasureSpec.makeMeasureSpec(ownHeight, MeasureSpec.EXACTLY);
for (View child : mMatchParentViews) {
child.measure(getChildMeasureSpec(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
index b2bb021..f6629dd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
@@ -53,18 +53,21 @@ public class SignalClusterView
private boolean mNoSimsVisible = false;
private boolean mVpnVisible = false;
+ private boolean mEthernetVisible = false;
+ private int mEthernetIconId = 0;
private boolean mWifiVisible = false;
private int mWifiStrengthId = 0;
private boolean mIsAirplaneMode = false;
private int mAirplaneIconId = 0;
private int mAirplaneContentDescription;
private String mWifiDescription;
+ private String mEthernetDescription;
private ArrayList<PhoneState> mPhoneStates = new ArrayList<PhoneState>();
private int mIconTint = Color.WHITE;
private float mDarkIntensity;
- ViewGroup mWifiGroup;
- ImageView mVpn, mWifi, mAirplane, mNoSims, mWifiDark, mNoSimsDark;
+ ViewGroup mEthernetGroup, mWifiGroup;
+ ImageView mVpn, mEthernet, mWifi, mAirplane, mNoSims, mEthernetDark, mWifiDark, mNoSimsDark;
View mWifiAirplaneSpacer;
View mWifiSignalSpacer;
LinearLayout mMobileSignalGroup;
@@ -116,6 +119,9 @@ public class SignalClusterView
super.onAttachedToWindow();
mVpn = (ImageView) findViewById(R.id.vpn);
+ mEthernetGroup = (ViewGroup) findViewById(R.id.ethernet_combo);
+ mEthernet = (ImageView) findViewById(R.id.ethernet);
+ mEthernetDark = (ImageView) findViewById(R.id.ethernet_dark);
mWifiGroup = (ViewGroup) findViewById(R.id.wifi_combo);
mWifi = (ImageView) findViewById(R.id.wifi_signal);
mWifiDark = (ImageView) findViewById(R.id.wifi_signal_dark);
@@ -136,6 +142,8 @@ public class SignalClusterView
@Override
protected void onDetachedFromWindow() {
mVpn = null;
+ mEthernetGroup = null;
+ mEthernet = null;
mWifiGroup = null;
mWifi = null;
mAirplane = null;
@@ -183,6 +191,15 @@ public class SignalClusterView
}
@Override
+ public void setEthernetIndicators(boolean visible, int icon, String contentDescription) {
+ mEthernetVisible = visible;
+ mEthernetIconId = icon;
+ mEthernetDescription = contentDescription;
+
+ apply();
+ }
+
+ @Override
public void setNoSims(boolean show) {
mNoSimsVisible = show;
}
@@ -234,6 +251,9 @@ public class SignalClusterView
public boolean dispatchPopulateAccessibilityEventInternal(AccessibilityEvent event) {
// Standard group layout onPopulateAccessibilityEvent() implementations
// ignore content description, so populate manually
+ if (mEthernetVisible && mEthernetGroup != null &&
+ mEthernetGroup.getContentDescription() != null)
+ event.getText().add(mEthernetGroup.getContentDescription());
if (mWifiVisible && mWifiGroup != null && mWifiGroup.getContentDescription() != null)
event.getText().add(mWifiGroup.getContentDescription());
for (PhoneState state : mPhoneStates) {
@@ -246,6 +266,10 @@ public class SignalClusterView
public void onRtlPropertiesChanged(int layoutDirection) {
super.onRtlPropertiesChanged(layoutDirection);
+ if (mEthernet != null) {
+ mEthernet.setImageDrawable(null);
+ }
+
if (mWifi != null) {
mWifi.setImageDrawable(null);
}
@@ -277,6 +301,21 @@ public class SignalClusterView
mVpn.setVisibility(mVpnVisible ? View.VISIBLE : View.GONE);
if (DEBUG) Log.d(TAG, String.format("vpn: %s", mVpnVisible ? "VISIBLE" : "GONE"));
+
+ if (mEthernetVisible) {
+ mEthernet.setImageResource(mEthernetIconId);
+ mEthernetDark.setImageResource(mEthernetIconId);
+ mEthernetGroup.setContentDescription(mEthernetDescription);
+ mEthernetGroup.setVisibility(View.VISIBLE);
+ } else {
+ mEthernetGroup.setVisibility(View.GONE);
+ }
+
+ if (DEBUG) Log.d(TAG,
+ String.format("ethernet: %s",
+ (mEthernetVisible ? "VISIBLE" : "GONE")));
+
+
if (mWifiVisible) {
mWifi.setImageResource(mWifiStrengthId);
mWifiDark.setImageResource(mWifiStrengthId);
@@ -327,7 +366,7 @@ public class SignalClusterView
mNoSimsDark.setVisibility(mNoSimsVisible ? View.VISIBLE : View.GONE);
boolean anythingVisible = mNoSimsVisible || mWifiVisible || mIsAirplaneMode
- || anyMobileVisible || mVpnVisible;
+ || anyMobileVisible || mVpnVisible || mEthernetVisible;
setPaddingRelative(0, 0, anythingVisible ? mEndPadding : mEndPaddingNothingVisible, 0);
}
@@ -345,6 +384,7 @@ public class SignalClusterView
setTint(mAirplane, mIconTint);
applyDarkIntensity(mDarkIntensity, mNoSims, mNoSimsDark);
applyDarkIntensity(mDarkIntensity, mWifi, mWifiDark);
+ applyDarkIntensity(mDarkIntensity, mEthernet, mEthernetDark);
for (int i = 0; i < mPhoneStates.size(); i++) {
mPhoneStates.get(i).setIconTint(mIconTint, mDarkIntensity);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
index 23810f9..ee5eb38 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
@@ -25,4 +25,5 @@ import android.content.Intent;
*/
public interface ActivityStarter {
public void startActivity(Intent intent, boolean dismissShade);
+ void preventNextAnimation();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
index 8343497..8bffdc9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
@@ -131,6 +131,10 @@ public class KeyguardAffordanceHelper {
mCenterIcon = mCallback.getCenterIcon();
mRightIcon = mCallback.getRightIcon();
mRightIcon.setIsLeft(false);
+ updatePreviews();
+ }
+
+ public void updatePreviews() {
mLeftIcon.setPreviewView(mCallback.getLeftPreview());
mRightIcon.setPreviewView(mCallback.getRightPreview());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index fabc1a6..efc3ea0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -25,17 +25,13 @@ import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
-import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
-import android.hardware.fingerprint.FingerprintManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserHandle;
-import android.os.Vibrator;
import android.provider.MediaStore;
-import android.provider.Settings;
import android.telecom.TelecomManager;
import android.util.AttributeSet;
import android.util.Log;
@@ -54,6 +50,7 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
import com.android.systemui.R;
+import com.android.systemui.assist.AssistManager;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.KeyguardAffordanceView;
import com.android.systemui.statusbar.KeyguardIndicationController;
@@ -85,12 +82,12 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
private static final long TRANSIENT_FP_ERROR_TIMEOUT = 1300;
private KeyguardAffordanceView mCameraImageView;
- private KeyguardAffordanceView mPhoneImageView;
+ private KeyguardAffordanceView mLeftAffordanceView;
private LockIcon mLockIcon;
private TextView mIndicationText;
private ViewGroup mPreviewContainer;
- private View mPhonePreview;
+ private View mLeftPreview;
private View mCameraPreview;
private ActivityStarter mActivityStarter;
@@ -104,6 +101,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
private final Interpolator mLinearOutSlowInInterpolator;
private boolean mPrewarmSent;
+ private boolean mLeftIsVoiceAssist;
+ private AssistManager mAssistManager;
public KeyguardBottomAreaView(Context context) {
this(context, null);
@@ -133,8 +132,12 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
label = getResources().getString(R.string.unlock_label);
} else if (host == mCameraImageView) {
label = getResources().getString(R.string.camera_label);
- } else if (host == mPhoneImageView) {
- label = getResources().getString(R.string.phone_label);
+ } else if (host == mLeftAffordanceView) {
+ if (mLeftIsVoiceAssist) {
+ label = getResources().getString(R.string.voice_assist_label);
+ } else {
+ label = getResources().getString(R.string.phone_label);
+ }
}
info.addAction(new AccessibilityAction(ACTION_CLICK, label));
}
@@ -149,8 +152,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
} else if (host == mCameraImageView) {
launchCamera();
return true;
- } else if (host == mPhoneImageView) {
- launchPhone();
+ } else if (host == mLeftAffordanceView) {
+ launchLeftAffordance();
return true;
}
}
@@ -164,29 +167,28 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
mLockPatternUtils = new LockPatternUtils(mContext);
mPreviewContainer = (ViewGroup) findViewById(R.id.preview_container);
mCameraImageView = (KeyguardAffordanceView) findViewById(R.id.camera_button);
- mPhoneImageView = (KeyguardAffordanceView) findViewById(R.id.phone_button);
+ mLeftAffordanceView = (KeyguardAffordanceView) findViewById(R.id.left_button);
mLockIcon = (LockIcon) findViewById(R.id.lock_icon);
mIndicationText = (TextView) findViewById(R.id.keyguard_indication_text);
watchForCameraPolicyChanges();
updateCameraVisibility();
- updatePhoneVisibility();
mUnlockMethodCache = UnlockMethodCache.getInstance(getContext());
mUnlockMethodCache.addListener(this);
mLockIcon.update();
setClipChildren(false);
setClipToPadding(false);
mPreviewInflater = new PreviewInflater(mContext, new LockPatternUtils(mContext));
- inflatePreviews();
+ inflateCameraPreview();
mLockIcon.setOnClickListener(this);
mLockIcon.setOnLongClickListener(this);
mCameraImageView.setOnClickListener(this);
- mPhoneImageView.setOnClickListener(this);
+ mLeftAffordanceView.setOnClickListener(this);
initAccessibility();
}
private void initAccessibility() {
mLockIcon.setAccessibilityDelegate(mAccessibilityDelegate);
- mPhoneImageView.setAccessibilityDelegate(mAccessibilityDelegate);
+ mLeftAffordanceView.setAccessibilityDelegate(mAccessibilityDelegate);
mCameraImageView.setAccessibilityDelegate(mAccessibilityDelegate);
}
@@ -247,9 +249,26 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
mCameraImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
}
- private void updatePhoneVisibility() {
- boolean visible = isPhoneVisible();
- mPhoneImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
+ private void updateLeftAffordanceIcon() {
+ mLeftIsVoiceAssist = canLaunchVoiceAssist();
+ int drawableId;
+ int contentDescription;
+ if (mLeftIsVoiceAssist) {
+ mLeftAffordanceView.setVisibility(View.VISIBLE);
+ drawableId = R.drawable.ic_mic_26dp;
+ contentDescription = R.string.accessibility_voice_assist_button;
+ } else {
+ boolean visible = isPhoneVisible();
+ mLeftAffordanceView.setVisibility(visible ? View.VISIBLE : View.GONE);
+ drawableId = R.drawable.ic_phone_24dp;
+ contentDescription = R.string.accessibility_phone_button;
+ }
+ mLeftAffordanceView.setImageDrawable(mContext.getDrawable(drawableId));
+ mLeftAffordanceView.setContentDescription(mContext.getString(contentDescription));
+ }
+
+ public boolean isLeftVoiceAssist() {
+ return mLeftIsVoiceAssist;
}
private boolean isPhoneVisible() {
@@ -287,9 +306,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
@Override
public void onStateChanged(boolean accessibilityEnabled, boolean touchExplorationEnabled) {
mCameraImageView.setClickable(touchExplorationEnabled);
- mPhoneImageView.setClickable(touchExplorationEnabled);
+ mLeftAffordanceView.setClickable(touchExplorationEnabled);
mCameraImageView.setFocusable(accessibilityEnabled);
- mPhoneImageView.setFocusable(accessibilityEnabled);
+ mLeftAffordanceView.setFocusable(accessibilityEnabled);
mLockIcon.update();
}
@@ -297,8 +316,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
public void onClick(View v) {
if (v == mCameraImageView) {
launchCamera();
- } else if (v == mPhoneImageView) {
- launchPhone();
+ } else if (v == mLeftAffordanceView) {
+ launchLeftAffordance();
} if (v == mLockIcon) {
if (!mAccessibilityController.isAccessibilityEnabled()) {
handleTrustCircleClick();
@@ -363,6 +382,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
@Override
public void run() {
mContext.startActivityAsUser(intent, UserHandle.CURRENT);
+ mActivityStarter.preventNextAnimation();
}
});
} else {
@@ -373,7 +393,35 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
}
- public void launchPhone() {
+ public void launchLeftAffordance() {
+ if (mLeftIsVoiceAssist) {
+ launchVoiceAssist();
+ } else {
+ launchPhone();
+ }
+ }
+
+ private void launchVoiceAssist() {
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ mAssistManager.launchVoiceAssistFromKeyguard();
+ mActivityStarter.preventNextAnimation();
+ }
+ };
+ if (mPhoneStatusBar.isKeyguardCurrentlySecure()) {
+ AsyncTask.execute(runnable);
+ } else {
+ mPhoneStatusBar.executeRunnableDismissingKeyguard(runnable, false /* dismissShade */,
+ false /* afterKeyguardGone */);
+ }
+ }
+
+ private boolean canLaunchVoiceAssist() {
+ return mAssistManager.canVoiceAssistBeLaunchedFromKeyguard();
+ }
+
+ private void launchPhone() {
final TelecomManager tm = TelecomManager.from(mContext);
if (tm.isInCall()) {
AsyncTask.execute(new Runnable() {
@@ -397,19 +445,19 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
}
}
- public KeyguardAffordanceView getPhoneView() {
- return mPhoneImageView;
+ public KeyguardAffordanceView getLeftView() {
+ return mLeftAffordanceView;
}
- public KeyguardAffordanceView getCameraView() {
+ public KeyguardAffordanceView getRightView() {
return mCameraImageView;
}
- public View getPhonePreview() {
- return mPhonePreview;
+ public View getLeftPreview() {
+ return mLeftPreview;
}
- public View getCameraPreview() {
+ public View getRightPreview() {
return mCameraPreview;
}
@@ -432,23 +480,35 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
updateCameraVisibility();
}
- private void inflatePreviews() {
- mPhonePreview = mPreviewInflater.inflatePreview(PHONE_INTENT);
+ private void inflateCameraPreview() {
mCameraPreview = mPreviewInflater.inflatePreview(getCameraIntent());
- if (mPhonePreview != null) {
- mPreviewContainer.addView(mPhonePreview);
- mPhonePreview.setVisibility(View.INVISIBLE);
- }
if (mCameraPreview != null) {
mPreviewContainer.addView(mCameraPreview);
mCameraPreview.setVisibility(View.INVISIBLE);
}
}
+ private void updateLeftPreview() {
+ View previewBefore = mLeftPreview;
+ if (previewBefore != null) {
+ mPreviewContainer.removeView(previewBefore);
+ }
+ if (mLeftIsVoiceAssist) {
+ mLeftPreview = mPreviewInflater.inflatePreviewFromService(
+ mAssistManager.getVoiceInteractorComponentName());
+ } else {
+ mLeftPreview = mPreviewInflater.inflatePreview(PHONE_INTENT);
+ }
+ if (mLeftPreview != null) {
+ mPreviewContainer.addView(mLeftPreview);
+ mLeftPreview.setVisibility(View.INVISIBLE);
+ }
+ }
+
public void startFinishDozeAnimation() {
long delay = 0;
- if (mPhoneImageView.getVisibility() == View.VISIBLE) {
- startFinishDozeAnimationElement(mPhoneImageView, delay);
+ if (mLeftAffordanceView.getVisibility() == View.VISIBLE) {
+ startFinishDozeAnimationElement(mLeftAffordanceView, delay);
delay += DOZE_ANIMATION_STAGGER_DELAY;
}
startFinishDozeAnimationElement(mLockIcon, delay);
@@ -543,4 +603,14 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
KeyguardIndicationController keyguardIndicationController) {
mIndicationController = keyguardIndicationController;
}
+
+ public void setAssistManager(AssistManager assistManager) {
+ mAssistManager = assistManager;
+ updateLeftAffordance();
+ }
+
+ public void updateLeftAffordance() {
+ updateLeftAffordanceIcon();
+ updateLeftPreview();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index c62ad66..7077a17 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -144,7 +144,7 @@ public class NavigationBarView extends LinearLayout {
@Override
public void onClick(View view) {
((InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE))
- .showInputMethodPicker();
+ .showInputMethodPicker(true /* showAuxiliarySubtypes */);
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index a8ecc42..f77ac4b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -39,6 +39,7 @@ import android.view.animation.Interpolator;
import android.widget.FrameLayout;
import android.widget.TextView;
+import com.android.internal.logging.MetricsLogger;
import com.android.keyguard.KeyguardStatusView;
import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
@@ -73,6 +74,10 @@ public class NotificationPanelView extends PanelView implements
private static final float HEADER_RUBBERBAND_FACTOR = 2.05f;
private static final float LOCK_ICON_ACTIVE_SCALE = 1.2f;
+ private static final String COUNTER_PANEL_OPEN = "panel_open";
+ private static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs";
+ private static final String COUNTER_PANEL_OPEN_PEEK = "panel_open_peek";
+
public static final long DOZE_ANIMATION_DURATION = 700;
private KeyguardAffordanceHelper mAfforanceHelper;
@@ -541,6 +546,8 @@ public class NotificationPanelView extends PanelView implements
initDownStates(event);
if (mHeadsUpTouchHelper.onInterceptTouchEvent(event)) {
mIsExpansionFromHeadsUp = true;
+ MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
+ MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1);
return true;
}
if (!isFullyCollapsed() && onQsIntercept(event)) {
@@ -617,7 +624,7 @@ public class NotificationPanelView extends PanelView implements
case MotionEvent.ACTION_UP:
trackMovement(event);
if (mQsTracking) {
- flingQsWithCurrentVelocity(
+ flingQsWithCurrentVelocity(y,
event.getActionMasked() == MotionEvent.ACTION_CANCEL);
mQsTracking = false;
}
@@ -655,9 +662,24 @@ public class NotificationPanelView extends PanelView implements
super.requestDisallowInterceptTouchEvent(disallowIntercept);
}
- private void flingQsWithCurrentVelocity(boolean isCancelMotionEvent) {
+ private void flingQsWithCurrentVelocity(float y, boolean isCancelMotionEvent) {
+ float vel = getCurrentVelocity();
+ final boolean expandsQs = flingExpandsQs(vel);
+ if (expandsQs) {
+ logQsSwipeDown(y);
+ }
+ flingSettings(vel, expandsQs && !isCancelMotionEvent);
+ }
+
+ private void logQsSwipeDown(float y) {
float vel = getCurrentVelocity();
- flingSettings(vel, flingExpandsQs(vel) && !isCancelMotionEvent);
+ final int gesture = mStatusBarState == StatusBarState.KEYGUARD
+ ? EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DOWN_QS
+ : EventLogConstants.SYSUI_SHADE_GESTURE_SWIPE_DOWN_QS;
+ EventLogTags.writeSysuiLockscreenGesture(
+ gesture,
+ (int) ((y - mInitialTouchY) / mStatusBar.getDisplayDensity()),
+ (int) (vel / mStatusBar.getDisplayDensity()));
}
private boolean flingExpandsQs(float vel) {
@@ -699,6 +721,7 @@ public class NotificationPanelView extends PanelView implements
return true;
}
if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed()) {
+ MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
updateVerticalPanelPosition(event.getX());
}
super.onTouchEvent(event);
@@ -738,6 +761,7 @@ public class NotificationPanelView extends PanelView implements
if (mTwoFingerQsExpandPossible && event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN
&& event.getPointerCount() == 2
&& event.getY(event.getActionIndex()) < mStatusBarMinHeight) {
+ MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_QS, 1);
mQsExpandImmediate = true;
requestPanelHeightUpdate();
@@ -799,6 +823,7 @@ public class NotificationPanelView extends PanelView implements
}
final float y = event.getY(pointerIndex);
final float x = event.getX(pointerIndex);
+ final float h = y - mInitialTouchY;
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
@@ -826,7 +851,6 @@ public class NotificationPanelView extends PanelView implements
break;
case MotionEvent.ACTION_MOVE:
- final float h = y - mInitialTouchY;
setQsExpansion(h + mInitialHeightOnTouch);
if (h >= getFalsingThreshold()) {
mQsTouchAboveFalsingThreshold = true;
@@ -842,9 +866,10 @@ public class NotificationPanelView extends PanelView implements
float fraction = getQsExpansionFraction();
if ((fraction != 0f || y >= mInitialTouchY)
&& (fraction != 1f || y <= mInitialTouchY)) {
- flingQsWithCurrentVelocity(
+ flingQsWithCurrentVelocity(y,
event.getActionMasked() == MotionEvent.ACTION_CANCEL);
} else {
+ logQsSwipeDown(y);
mScrollYOverride = -1;
}
if (mVelocityTracker != null) {
@@ -952,6 +977,10 @@ public class NotificationPanelView extends PanelView implements
} else {
mKeyguardStatusBar.setAlpha(1f);
mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE);
+ if (keyguardShowing && oldState != mStatusBarState) {
+ mKeyguardBottomArea.updateLeftAffordance();
+ mAfforanceHelper.updatePreviews();
+ }
}
resetVerticalPanelPosition();
updateQsState();
@@ -1815,6 +1844,9 @@ public class NotificationPanelView extends PanelView implements
if (mQsExpanded) {
flingSettings(0 /* vel */, false /* expand */);
} else if (mQsExpansionEnabled) {
+ EventLogTags.writeSysuiLockscreenGesture(
+ EventLogConstants.SYSUI_TAP_TO_OPEN_QS,
+ 0, 0);
flingSettings(0 /* vel */, true /* expand */);
}
}
@@ -1831,7 +1863,7 @@ public class NotificationPanelView extends PanelView implements
if (start) {
EventLogTags.writeSysuiLockscreenGesture(
EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DIALER, lengthDp, velocityDp);
- mKeyguardBottomArea.launchPhone();
+ mKeyguardBottomArea.launchLeftAffordance();
} else {
EventLogTags.writeSysuiLockscreenGesture(
EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_CAMERA, lengthDp, velocityDp);
@@ -1912,15 +1944,19 @@ public class NotificationPanelView extends PanelView implements
if (rightIcon) {
mStatusBar.onCameraHintStarted();
} else {
- mStatusBar.onPhoneHintStarted();
+ if (mKeyguardBottomArea.isLeftVoiceAssist()) {
+ mStatusBar.onVoiceAssistHintStarted();
+ } else {
+ mStatusBar.onPhoneHintStarted();
+ }
}
}
@Override
public KeyguardAffordanceView getLeftIcon() {
return getLayoutDirection() == LAYOUT_DIRECTION_RTL
- ? mKeyguardBottomArea.getCameraView()
- : mKeyguardBottomArea.getPhoneView();
+ ? mKeyguardBottomArea.getRightView()
+ : mKeyguardBottomArea.getLeftView();
}
@Override
@@ -1931,22 +1967,22 @@ public class NotificationPanelView extends PanelView implements
@Override
public KeyguardAffordanceView getRightIcon() {
return getLayoutDirection() == LAYOUT_DIRECTION_RTL
- ? mKeyguardBottomArea.getPhoneView()
- : mKeyguardBottomArea.getCameraView();
+ ? mKeyguardBottomArea.getLeftView()
+ : mKeyguardBottomArea.getRightView();
}
@Override
public View getLeftPreview() {
return getLayoutDirection() == LAYOUT_DIRECTION_RTL
- ? mKeyguardBottomArea.getCameraPreview()
- : mKeyguardBottomArea.getPhonePreview();
+ ? mKeyguardBottomArea.getRightPreview()
+ : mKeyguardBottomArea.getLeftPreview();
}
@Override
public View getRightPreview() {
return getLayoutDirection() == LAYOUT_DIRECTION_RTL
- ? mKeyguardBottomArea.getPhonePreview()
- : mKeyguardBottomArea.getCameraPreview();
+ ? mKeyguardBottomArea.getLeftPreview()
+ : mKeyguardBottomArea.getRightPreview();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
index f3d4c7f..d5209ea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
@@ -80,6 +80,14 @@ public class PanelBar extends FrameLayout {
}
}
+ public void setBouncerShowing(boolean showing) {
+ if (mPanelHolder != null) {
+ mPanelHolder.setImportantForAccessibility(
+ showing ? IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
+ : IMPORTANT_FOR_ACCESSIBILITY_AUTO);
+ }
+ }
+
public float getBarHeight() {
return getMeasuredHeight();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index 85f312c..38812ce 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -46,6 +46,7 @@ import java.io.PrintWriter;
public abstract class PanelView extends FrameLayout {
public static final boolean DEBUG = PanelBar.DEBUG;
public static final String TAG = PanelView.class.getSimpleName();
+
private final void logf(String fmt, Object... args) {
Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args));
}
@@ -77,6 +78,7 @@ public abstract class PanelView extends FrameLayout {
private boolean mTouchStartedInEmptyArea;
private boolean mMotionAborted;
private boolean mUpwardsWhenTresholdReached;
+ private boolean mAnimatingOnDown;
private ValueAnimator mHeightAnimator;
private ObjectAnimator mPeekAnimator;
@@ -459,8 +461,8 @@ public abstract class PanelView extends FrameLayout {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
mStatusBar.userActivity();
- if (mHeightAnimator != null && !mHintAnimationRunning ||
- mPeekPending || mPeekAnimator != null) {
+ mAnimatingOnDown = mHeightAnimator != null;
+ if (mAnimatingOnDown && mClosing && !mHintAnimationRunning || mPeekPending || mPeekAnimator != null) {
cancelHeightAnimator();
cancelPeek();
mTouchSlopExceeded = true;
@@ -501,8 +503,10 @@ public abstract class PanelView extends FrameLayout {
case MotionEvent.ACTION_MOVE:
final float h = y - mInitialTouchY;
trackMovement(event);
- if (scrolledToBottom || mTouchStartedInEmptyArea) {
- if (h < -mTouchSlop && h < -Math.abs(x - mInitialTouchX)) {
+ if (scrolledToBottom || mTouchStartedInEmptyArea || mAnimatingOnDown) {
+ float hAbs = Math.abs(h);
+ if ((h < -mTouchSlop || (mAnimatingOnDown && hAbs > mTouchSlop))
+ && hAbs > Math.abs(x - mInitialTouchX)) {
cancelHeightAnimator();
startExpandMotion(x, y, true /* startTracking */, mExpandedHeight);
return true;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 1c46d42..351977b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -76,6 +76,7 @@ import android.view.Display;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
+import android.view.ThreadedRenderer;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
@@ -101,7 +102,7 @@ import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
import com.android.systemui.Prefs;
import com.android.systemui.R;
-import com.android.systemui.assist.AssistGestureManager;
+import com.android.systemui.assist.AssistManager;
import com.android.systemui.doze.DozeHost;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.keyguard.KeyguardViewMediator;
@@ -323,7 +324,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private int mNavigationIconHints = 0;
private HandlerThread mHandlerThread;
- private AssistGestureManager mAssistGestureManager;
+ private AssistManager mAssistManager;
// ensure quick settings is disabled until the current user makes it through the setup wizard
private boolean mUserSetup = false;
@@ -645,8 +646,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
new NavigationBarView.OnVerticalChangedListener() {
@Override
public void onVerticalChanged(boolean isVertical) {
- if (mAssistGestureManager != null) {
- mAssistGestureManager.onConfigurationChanged();
+ if (mAssistManager != null) {
+ mAssistManager.onConfigurationChanged();
}
mNotificationPanel.setQsScrimEnabled(!isVertical);
}
@@ -662,6 +663,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// no window manager? good luck with that
}
+ mAssistManager = new AssistManager(this, context);
+
// figure out which pixel-format to use for the status bar.
mPixelFormat = PixelFormat.OPAQUE;
@@ -720,6 +723,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mKeyguardBottomArea =
(KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
mKeyguardBottomArea.setActivityStarter(this);
+ mKeyguardBottomArea.setAssistManager(mAssistManager);
mKeyguardIndicationController = new KeyguardIndicationController(mContext,
(KeyguardIndicationTextView) mStatusBarWindow.findViewById(
R.id.keyguard_indication_text));
@@ -841,7 +845,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mBroadcastReceiver.onReceive(mContext,
new Intent(pm.isScreenOn() ? Intent.ACTION_SCREEN_ON : Intent.ACTION_SCREEN_OFF));
- mAssistGestureManager = new AssistGestureManager(this, context);
// receive broadcasts
IntentFilter filter = new IntentFilter();
@@ -857,6 +860,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// listen for USER_SETUP_COMPLETE setting (per-user)
resetUserSetupObserver();
+ // disable profiling bars, since they overlap and clutter the output on app windows
+ ThreadedRenderer.overrideProperty("disableProfileBars", "true");
+
+ // Private API call to make the shadows look better for Recents
+ ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f));
+
return mStatusBarView;
}
@@ -964,7 +973,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
public void invokeAssistGesture(boolean vibrate) {
mHandler.removeCallbacks(mInvokeAssist);
- mAssistGestureManager.onGestureInvoked(vibrate);
+ mAssistManager.onGestureInvoked(vibrate);
}
public int getStatusBarHeight() {
@@ -1044,7 +1053,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mNavigationBarView.getBackButton().setLongClickable(true);
mNavigationBarView.getBackButton().setOnLongClickListener(mLongPressBackRecentsListener);
mNavigationBarView.getHomeButton().setOnTouchListener(mHomeActionListener);
- mAssistGestureManager.onConfigurationChanged();
+ mAssistManager.onConfigurationChanged();
}
// For small-screen devices (read: phones) that lack hardware navigation buttons
@@ -1805,6 +1814,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
startActivityDismissingKeyguard(intent, false, dismissShade);
}
+ @Override
+ public void preventNextAnimation() {
+ overrideActivityPendingAppTransition(true /* keyguardShowing */);
+ }
+
public void setQsExpanded(boolean expanded) {
mStatusBarWindowManager.setQsExpanded(expanded);
}
@@ -1924,6 +1938,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return mHeadsUpManager.isSnoozed(sbn.getPackageName());
}
+ public boolean isKeyguardCurrentlySecure() {
+ return !mUnlockMethodCache.isCurrentlyInsecure();
+ }
+
/**
* All changes to the status bar and notifications funnel through here and are batched.
*/
@@ -2650,6 +2668,23 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
final boolean afterKeyguardGone = PreviewInflater.wouldLaunchResolverActivity(
mContext, intent, mCurrentUserId);
final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
+ Runnable runnable = new Runnable() {
+ public void run() {
+ intent.setFlags(
+ Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ mContext.startActivityAsUser(
+ intent, new UserHandle(UserHandle.USER_CURRENT));
+ overrideActivityPendingAppTransition(
+ keyguardShowing && !afterKeyguardGone);
+ }
+ };
+ executeRunnableDismissingKeyguard(runnable, dismissShade, afterKeyguardGone);
+ }
+
+ public void executeRunnableDismissingKeyguard(final Runnable runnable,
+ final boolean dismissShade,
+ final boolean afterKeyguardGone) {
+ final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
dismissKeyguardThenExecute(new OnDismissAction() {
@Override
public boolean onDismiss() {
@@ -2660,12 +2695,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
ActivityManagerNative.getDefault()
.keyguardWaitingForActivityDrawn();
}
- intent.setFlags(
- Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- mContext.startActivityAsUser(
- intent, new UserHandle(UserHandle.USER_CURRENT));
- overrideActivityPendingAppTransition(
- keyguardShowing && !afterKeyguardGone);
+ if (runnable != null) {
+ runnable.run();
+ }
} catch (RemoteException e) {
}
}
@@ -3019,7 +3051,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mHandlerThread = null;
}
mContext.unregisterReceiver(mBroadcastReceiver);
- mAssistGestureManager.destroy();
+ mAssistManager.destroy();
}
private boolean mDemoModeAllowed;
@@ -3467,6 +3499,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mKeyguardIndicationController.showTransientIndication(R.string.camera_hint);
}
+ public void onVoiceAssistHintStarted() {
+ mKeyguardIndicationController.showTransientIndication(R.string.voice_hint);
+ }
+
public void onPhoneHintStarted() {
mKeyguardIndicationController.showTransientIndication(R.string.phone_hint);
}
@@ -3579,6 +3615,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
@Override
public void setBouncerShowing(boolean bouncerShowing) {
super.setBouncerShowing(bouncerShowing);
+ mStatusBarView.setBouncerShowing(bouncerShowing);
disable(mDisabledUnmodified1, mDisabledUnmodified2, true /* animate */);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java
index 63fcbc5..8f86e2d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java
@@ -35,4 +35,9 @@ public class AccessibilityContentDescriptions {
};
static final int WIFI_NO_CONNECTION = R.string.accessibility_no_wifi;
+
+ static final int[] ETHERNET_CONNECTION_VALUES = {
+ R.string.accessibility_ethernet_disconnected,
+ R.string.accessibility_ethernet_connected,
+ };
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetIcons.java
new file mode 100644
index 0000000..b391bd9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetIcons.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.policy;
+
+import com.android.systemui.R;
+
+class EthernetIcons {
+ static final int[][] ETHERNET_ICONS = {
+ { R.drawable.stat_sys_ethernet },
+ { R.drawable.stat_sys_ethernet_fully },
+ };
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java
new file mode 100644
index 0000000..9c044c4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.statusbar.policy;
+
+import android.content.Context;
+import android.net.NetworkCapabilities;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.statusbar.policy.NetworkController.NetworkSignalChangedCallback;
+import com.android.systemui.statusbar.policy.NetworkControllerImpl.SignalCluster;
+
+import java.util.List;
+import java.util.Objects;
+
+
+public class EthernetSignalController extends
+ SignalController<SignalController.State, SignalController.IconGroup> {
+
+ public EthernetSignalController(Context context,
+ List<NetworkSignalChangedCallback> signalCallbacks,
+ List<SignalCluster> signalClusters, NetworkControllerImpl networkController) {
+ super("EthernetSignalController", context, NetworkCapabilities.TRANSPORT_ETHERNET,
+ signalCallbacks, signalClusters, networkController);
+ mCurrentState.iconGroup = mLastState.iconGroup = new IconGroup(
+ "Ethernet Icons",
+ EthernetIcons.ETHERNET_ICONS,
+ null,
+ AccessibilityContentDescriptions.ETHERNET_CONNECTION_VALUES,
+ 0, 0, 0, 0,
+ AccessibilityContentDescriptions.ETHERNET_CONNECTION_VALUES[0]);
+ }
+
+ @Override
+ public void notifyListeners() {
+ boolean ethernetVisible = mCurrentState.connected;
+ String contentDescription = getStringIfExists(getContentDescription());
+
+ // TODO: wire up data transfer using WifiSignalPoller.
+ int signalClustersLength = mSignalClusters.size();
+ for (int i = 0; i < signalClustersLength; i++) {
+ mSignalClusters.get(i).setEthernetIndicators(ethernetVisible, getCurrentIconId(),
+ contentDescription);
+ }
+ }
+
+ @Override
+ public SignalController.State cleanState() {
+ return new SignalController.State();
+ }
+
+ public void setConnected(boolean connected) {
+ mCurrentState.connected = connected;
+ notifyListenersIfNecessary();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java
index f2b2f66..a7fdadc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java
@@ -162,7 +162,7 @@ public class MobileDataControllerImpl implements NetworkController.MobileDataCon
usage.warningLevel = DEFAULT_WARNING_LEVEL;
}
if (usage != null) {
- usage.carrier = mNetworkController.getMobileNetworkName();
+ usage.carrier = mNetworkController.getMobileDataNetworkName();
}
return usage;
} catch (RemoteException e) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index c3c6b12..22bf47c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -84,6 +84,7 @@ public class MobileSignalController extends SignalController<
mapIconSets();
mLastState.networkName = mCurrentState.networkName = mNetworkNameDefault;
+ mLastState.networkNameData = mCurrentState.networkNameData = mNetworkNameDefault;
mLastState.enabled = mCurrentState.enabled = hasMobileData;
mLastState.iconGroup = mCurrentState.iconGroup = mDefaultIcons;
// Get initial data sim state.
@@ -294,6 +295,7 @@ public class MobileSignalController extends SignalController<
if (action.equals(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION)) {
updateNetworkName(intent.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_SPN, false),
intent.getStringExtra(TelephonyIntents.EXTRA_SPN),
+ intent.getStringExtra(TelephonyIntents.EXTRA_DATA_SPN),
intent.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_PLMN, false),
intent.getStringExtra(TelephonyIntents.EXTRA_PLMN));
notifyListenersIfNecessary();
@@ -322,14 +324,18 @@ public class MobileSignalController extends SignalController<
/**
* Updates the network's name based on incoming spn and plmn.
*/
- void updateNetworkName(boolean showSpn, String spn, boolean showPlmn, String plmn) {
+ void updateNetworkName(boolean showSpn, String spn, String dataSpn,
+ boolean showPlmn, String plmn) {
if (CHATTY) {
- Log.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn + " spn=" + spn
+ Log.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn
+ + " spn=" + spn + " dataSpn=" + dataSpn
+ " showPlmn=" + showPlmn + " plmn=" + plmn);
}
StringBuilder str = new StringBuilder();
+ StringBuilder strData = new StringBuilder();
if (showPlmn && plmn != null) {
str.append(plmn);
+ strData.append(plmn);
}
if (showSpn && spn != null) {
if (str.length() != 0) {
@@ -342,6 +348,17 @@ public class MobileSignalController extends SignalController<
} else {
mCurrentState.networkName = mNetworkNameDefault;
}
+ if (showSpn && dataSpn != null) {
+ if (strData.length() != 0) {
+ strData.append(mNetworkNameSeparator);
+ }
+ strData.append(dataSpn);
+ }
+ if (strData.length() != 0) {
+ mCurrentState.networkNameData = strData.toString();
+ } else {
+ mCurrentState.networkNameData = mNetworkNameDefault;
+ }
}
/**
@@ -492,6 +509,7 @@ public class MobileSignalController extends SignalController<
static class MobileState extends SignalController.State {
String networkName;
+ String networkNameData;
boolean dataSim;
boolean dataConnected;
boolean isEmergency;
@@ -505,6 +523,7 @@ public class MobileSignalController extends SignalController<
MobileState state = (MobileState) s;
dataSim = state.dataSim;
networkName = state.networkName;
+ networkNameData = state.networkNameData;
dataConnected = state.dataConnected;
inetForNetwork = state.inetForNetwork;
isEmergency = state.isEmergency;
@@ -518,6 +537,7 @@ public class MobileSignalController extends SignalController<
builder.append(',');
builder.append("dataSim=").append(dataSim).append(',');
builder.append("networkName=").append(networkName).append(',');
+ builder.append("networkNameData=").append(networkNameData).append(',');
builder.append("dataConnected=").append(dataConnected).append(',');
builder.append("inetForNetwork=").append(inetForNetwork).append(',');
builder.append("isEmergency=").append(isEmergency).append(',');
@@ -529,6 +549,7 @@ public class MobileSignalController extends SignalController<
public boolean equals(Object o) {
return super.equals(o)
&& Objects.equals(((MobileState) o).networkName, networkName)
+ && Objects.equals(((MobileState) o).networkNameData, networkNameData)
&& ((MobileState) o).dataSim == dataSim
&& ((MobileState) o).dataConnected == dataConnected
&& ((MobileState) o).isEmergency == isEmergency
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 9adf028..df133e4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -73,6 +73,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
// Subcontrollers.
@VisibleForTesting
final WifiSignalController mWifiSignalController;
+
+ @VisibleForTesting
+ final EthernetSignalController mEthernetSignalController;
+
@VisibleForTesting
final Map<Integer, MobileSignalController> mMobileSignalControllers =
new HashMap<Integer, MobileSignalController>();
@@ -154,6 +158,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
mWifiSignalController = new WifiSignalController(mContext, mHasMobileDataFeature,
mSignalsChangedCallbacks, mSignalClusters, this);
+ mEthernetSignalController = new EthernetSignalController(mContext, mSignalsChangedCallbacks,
+ mSignalClusters, this);
+
// AIRPLANE_MODE_CHANGED is sent at boot; we've probably already missed it
updateAirplaneMode(true /* force callback */);
}
@@ -239,9 +246,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
return mDefaultSignalController;
}
- public String getMobileNetworkName() {
+ public String getMobileDataNetworkName() {
MobileSignalController controller = getDataController();
- return controller != null ? controller.getState().networkName : "";
+ return controller != null ? controller.getState().networkNameData : "";
}
public boolean isEmergencyOnly() {
@@ -281,6 +288,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
R.string.accessibility_airplane_mode);
cluster.setNoSims(mHasNoSims);
mWifiSignalController.notifyListeners();
+ mEthernetSignalController.notifyListeners();
for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
mobileSignalController.notifyListeners();
}
@@ -291,6 +299,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
cb.onAirplaneModeChanged(mAirplaneMode);
cb.onNoSimVisibleChanged(mHasNoSims);
mWifiSignalController.notifyListeners();
+ mEthernetSignalController.notifyListeners();
for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
mobileSignalController.notifyListeners();
}
@@ -501,6 +510,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
mobileSignalController.notifyListeners();
}
mWifiSignalController.notifyListeners();
+ mEthernetSignalController.notifyListeners();
}
/**
@@ -560,6 +570,11 @@ public class NetworkControllerImpl extends BroadcastReceiver
}
mWifiSignalController.setInetCondition(
mValidatedTransports.get(mWifiSignalController.getTransportType()) ? 1 : 0);
+
+ mEthernetSignalController.setConnected(
+ mConnectedTransports.get(mEthernetSignalController.getTransportType()));
+ mEthernetSignalController.setInetCondition(
+ mValidatedTransports.get(mEthernetSignalController.getTransportType()) ? 1 : 0);
}
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
@@ -586,6 +601,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
}
mWifiSignalController.dump(pw);
+ mEthernetSignalController.dump(pw);
+
mAccessPoints.dump(pw);
}
@@ -731,6 +748,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
void setSubs(List<SubscriptionInfo> subs);
void setNoSims(boolean show);
+ void setEthernetIndicators(boolean visible, int icon, String contentDescription);
+
void setIsAirplaneMode(boolean is, int airplaneIcon, int contentDescription);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java
index 5d89e2f..4269c19 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java
@@ -21,6 +21,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -50,6 +51,15 @@ public class PreviewInflater {
public View inflatePreview(Intent intent) {
WidgetInfo info = getWidgetInfo(intent);
+ return inflatePreview(info);
+ }
+
+ public View inflatePreviewFromService(ComponentName componentName) {
+ WidgetInfo info = getWidgetInfoFromService(componentName);
+ return inflatePreview(info);
+ }
+
+ private KeyguardPreviewContainer inflatePreview(WidgetInfo info) {
if (info == null) {
return null;
}
@@ -77,8 +87,36 @@ public class PreviewInflater {
return widgetView;
}
- private WidgetInfo getWidgetInfo(Intent intent) {
+ private WidgetInfo getWidgetInfoFromService(ComponentName componentName) {
+ PackageManager packageManager = mContext.getPackageManager();
+ // Look for the preview specified in the service meta-data
+ try {
+ Bundle metaData = packageManager.getServiceInfo(
+ componentName, PackageManager.GET_META_DATA).metaData;
+ return getWidgetInfoFromMetaData(componentName.getPackageName(), metaData);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(TAG, "Failed to load preview; " + componentName.flattenToShortString()
+ + " not found", e);
+ }
+ return null;
+ }
+
+ private WidgetInfo getWidgetInfoFromMetaData(String contextPackage,
+ Bundle metaData) {
+ if (metaData == null) {
+ return null;
+ }
+ int layoutId = metaData.getInt(META_DATA_KEYGUARD_LAYOUT);
+ if (layoutId == 0) {
+ return null;
+ }
WidgetInfo info = new WidgetInfo();
+ info.contextPackage = contextPackage;
+ info.layoutId = layoutId;
+ return info;
+ }
+
+ private WidgetInfo getWidgetInfo(Intent intent) {
PackageManager packageManager = mContext.getPackageManager();
final List<ResolveInfo> appList = packageManager.queryIntentActivitiesAsUser(
intent, PackageManager.MATCH_DEFAULT_ONLY, KeyguardUpdateMonitor.getCurrentUser());
@@ -94,16 +132,8 @@ public class PreviewInflater {
if (resolved == null || resolved.activityInfo == null) {
return null;
}
- if (resolved.activityInfo.metaData == null || resolved.activityInfo.metaData.isEmpty()) {
- return null;
- }
- int layoutId = resolved.activityInfo.metaData.getInt(META_DATA_KEYGUARD_LAYOUT);
- if (layoutId == 0) {
- return null;
- }
- info.contextPackage = resolved.activityInfo.packageName;
- info.layoutId = layoutId;
- return info;
+ return getWidgetInfoFromMetaData(resolved.activityInfo.packageName,
+ resolved.activityInfo.metaData);
}
public static boolean wouldLaunchResolverActivity(Context ctx, Intent intent,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
index c204814..f3322a1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
@@ -153,7 +153,11 @@ public abstract class SignalController<T extends SignalController.State,
return getIcons().mSbDarkIcons[mCurrentState.inetCondition][mCurrentState.level];
}
} else if (mCurrentState.enabled) {
- return getIcons().mSbDiscState;
+ if (light) {
+ return getIcons().mSbDiscState;
+ } else {
+ return getIcons().mSbDarkDiscState;
+ }
} else {
return getIcons().mSbNullState;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
index 202063a..de28ac7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
@@ -582,7 +582,7 @@ public class StackScrollAlgorithm {
return row.getIntrinsicHeight();
} else if (child instanceof ExpandableView) {
ExpandableView expandableView = (ExpandableView) child;
- return expandableView.getActualHeight();
+ return expandableView.getIntrinsicHeight();
}
return child == null? mCollapsedSize : child.getHeight();
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
index 9434036..7115897 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
@@ -16,6 +16,9 @@
package com.android.systemui.volume;
+import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
@@ -32,6 +35,7 @@ import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.media.AudioSystem;
+import android.os.Debug;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -43,6 +47,8 @@ import android.util.SparseBooleanArray;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
+import android.view.View.AccessibilityDelegate;
+import android.view.View.OnAttachStateChangeListener;
import android.view.View.OnClickListener;
import android.view.View.OnLayoutChangeListener;
import android.view.View.OnTouchListener;
@@ -50,6 +56,9 @@ import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.Window;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener;
import android.view.animation.DecelerateInterpolator;
import android.widget.ImageButton;
import android.widget.LinearLayout;
@@ -97,6 +106,7 @@ public class VolumeDialog {
private final ZenFooter mZenFooter;
private final LayoutTransition mLayoutTransition;
private final Object mSafetyWarningLock = new Object();
+ private final Accessibility mAccessibility = new Accessibility();
private boolean mShowing;
private boolean mExpanded;
@@ -174,6 +184,8 @@ public class VolumeDialog {
mZenFooter = (ZenFooter) mDialog.findViewById(R.id.volume_zen_footer);
mZenFooter.init(zenModeController);
+ mAccessibility.init();
+
controller.addCallback(mControllerCallbackH, mHandler);
controller.getState();
}
@@ -409,10 +421,13 @@ public class VolumeDialog {
protected void rescheduleTimeoutH() {
mHandler.removeMessages(H.DISMISS);
- final int timeout = computeTimeoutH();
- if (D.BUG) Log.d(TAG, "rescheduleTimeout " + timeout);
- mHandler.sendMessageDelayed(mHandler
- .obtainMessage(H.DISMISS, Events.DISMISS_REASON_TIMEOUT, 0), timeout);
+ int timeout = -1;
+ if (!mAccessibility.mFeedbackEnabled) {
+ timeout = computeTimeoutH();
+ mHandler.sendMessageDelayed(mHandler
+ .obtainMessage(H.DISMISS, Events.DISMISS_REASON_TIMEOUT, 0), timeout);
+ }
+ if (D.BUG) Log.d(TAG, "rescheduleTimeout " + timeout + " " + Debug.getCaller());
mController.userActivity();
}
@@ -475,6 +490,8 @@ public class VolumeDialog {
if (res == mExpandButtonRes) return;
mExpandButtonRes = res;
mExpandButton.setImageResource(res);
+ mExpandButton.setContentDescription(mContext.getString(mExpanded ?
+ R.string.accessibility_volume_collapse : R.string.accessibility_volume_expand));
}
private boolean isVisibleH(VolumeRow row, boolean isActive) {
@@ -632,6 +649,7 @@ public class VolumeDialog {
: (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes)
? Events.ICON_STATE_UNMUTE
: Events.ICON_STATE_UNKNOWN;
+ row.icon.setContentDescription(ss.name);
// update slider
updateVolumeRowSliderH(row, zenMuted);
@@ -931,6 +949,56 @@ public class VolumeDialog {
}
}
+ private final class Accessibility {
+ private AccessibilityManager mMgr;
+ private boolean mFeedbackEnabled;
+
+ public void init() {
+ mMgr = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
+ mDialogView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
+ @Override
+ public void onViewDetachedFromWindow(View v) {
+ // noop
+ }
+
+ @Override
+ public void onViewAttachedToWindow(View v) {
+ updateFeedbackEnabled();
+ }
+ });
+ mDialogView.setAccessibilityDelegate(new AccessibilityDelegate() {
+ @Override
+ public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
+ AccessibilityEvent event) {
+ rescheduleTimeoutH();
+ return super.onRequestSendAccessibilityEvent(host, child, event);
+ }
+ });
+ mMgr.addAccessibilityStateChangeListener(new AccessibilityStateChangeListener() {
+ @Override
+ public void onAccessibilityStateChanged(boolean enabled) {
+ updateFeedbackEnabled();
+ }
+ });
+ updateFeedbackEnabled();
+ }
+
+ private void updateFeedbackEnabled() {
+ mFeedbackEnabled = computeFeedbackEnabled();
+ }
+
+ private boolean computeFeedbackEnabled() {
+ final List<AccessibilityServiceInfo> services =
+ mMgr.getEnabledAccessibilityServiceList(FEEDBACK_ALL_MASK);
+ for (AccessibilityServiceInfo asi : services) {
+ if ((asi.feedbackType & FEEDBACK_ALL_MASK) != 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
private static class VolumeRow {
private View view;
private View space;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 5d40eed..29f461e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -234,6 +234,11 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
mPhoneStateListener.onDataActivity(dataActivity);
}
+ public void setCarrierNetworkChange(boolean enable) {
+ Log.d(TAG, "setCarrierNetworkChange(" + enable + ")");
+ mPhoneStateListener.onCarrierNetworkChange(enable);
+ }
+
protected void verifyHasNoSims(boolean hasNoSimsVisible) {
ArgumentCaptor<Boolean> hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class);
@@ -273,24 +278,34 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
}
protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon) {
- ArgumentCaptor<Integer> iconArg = ArgumentCaptor.forClass(Integer.class);
+ verifyLastMobileDataIndicators(visible, icon, icon, typeIcon);
+ }
+
+ protected void verifyLastMobileDataIndicators(boolean visible, int strengthIcon,
+ int darkStrengthIcon, int typeIcon) {
+ ArgumentCaptor<Integer> strengthIconArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<Integer> darkStrengthIconArg = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);
// TODO: Verify all fields.
Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setMobileDataIndicators(
- visibleArg.capture(), iconArg.capture(), iconArg.capture(), typeIconArg.capture(),
+ visibleArg.capture(), strengthIconArg.capture(), darkStrengthIconArg.capture(),
+ typeIconArg.capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
ArgumentCaptor.forClass(Integer.class).capture());
- assertEquals("Signal icon in status bar", icon, (int) iconArg.getValue());
+ assertEquals("Signal strength icon in status bar", strengthIcon,
+ (int) strengthIconArg.getValue());
+ assertEquals("Signal strength icon (dark mode) in status bar", darkStrengthIcon,
+ (int) darkStrengthIconArg.getValue());
assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
assertEquals("Visibility in status bar", visible, (boolean) visibleArg.getValue());
}
protected void assertNetworkNameEquals(String expected) {
- assertEquals("Network name", expected, mNetworkController.getMobileNetworkName());
+ assertEquals("Network name", expected, mNetworkController.getMobileDataNetworkName());
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java
new file mode 100644
index 0000000..82ced9f
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java
@@ -0,0 +1,40 @@
+package com.android.systemui.statusbar.policy;
+
+import android.net.NetworkCapabilities;
+
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
+
+public class NetworkControllerEthernetTest extends NetworkControllerBaseTest {
+
+ public void testEthernetIcons() {
+ verifyLastEthernetIcon(false, 0);
+
+ setEthernetState(true, false); // Connected, unvalidated.
+ verifyLastEthernetIcon(true, EthernetIcons.ETHERNET_ICONS[0][0]);
+
+ setEthernetState(true, true); // Connected, validated.
+ verifyLastEthernetIcon(true, EthernetIcons.ETHERNET_ICONS[1][0]);
+
+ setEthernetState(true, false); // Connected, unvalidated.
+ verifyLastEthernetIcon(true, EthernetIcons.ETHERNET_ICONS[0][0]);
+
+ setEthernetState(false, false); // Disconnected.
+ verifyLastEthernetIcon(false, 0);
+ }
+
+ protected void setEthernetState(boolean connected, boolean validated) {
+ setConnectivity(validated ? 100 : 0, NetworkCapabilities.TRANSPORT_ETHERNET, connected);
+ }
+
+ protected void verifyLastEthernetIcon(boolean visible, int icon) {
+ ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> iconArg = ArgumentCaptor.forClass(Integer.class);
+
+ Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setEthernetIndicators(
+ visibleArg.capture(), iconArg.capture(),
+ ArgumentCaptor.forClass(String.class).capture());
+ assertEquals("Ethernet visible, in status bar", visible, (boolean) visibleArg.getValue());
+ assertEquals("Ethernet icon, in status bar", icon, (int) iconArg.getValue());
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
index aefb1bb..389ad6f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
@@ -396,4 +396,65 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
false /* dataOut */);
}
+
+ public void testCarrierNetworkChange_carrierNetworkChangeWhileConnected() {
+ int strength = SignalStrength.SIGNAL_STRENGTH_GREAT;
+
+ setupDefaultSignal();
+ setLevel(strength);
+
+ // API call is made
+ setCarrierNetworkChange(true /* enabled */);
+
+ // Boolean value is set, but we still have a signal, should be showing normal
+ verifyLastMobileDataIndicators(true /* visible */,
+ TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
+ DEFAULT_ICON /* typeIcon */);
+
+ // Lose voice but still have data
+ setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE);
+ verifyLastMobileDataIndicators(true /* visible */,
+ TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
+ DEFAULT_ICON /* typeIcon */);
+
+ // Voice but no data
+ setVoiceRegState(ServiceState.STATE_IN_SERVICE);
+ setDataRegState(ServiceState.STATE_OUT_OF_SERVICE);
+ verifyLastMobileDataIndicators(true /* visible */,
+ TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
+ DEFAULT_ICON /* typeIcon */);
+ }
+
+ public void testCarrierNetworkChange_carrierNetworkChangeWhileDisconnected() {
+ int strength = SignalStrength.SIGNAL_STRENGTH_GREAT;
+
+ setupDefaultSignal();
+ setLevel(strength);
+
+ // Verify baseline
+ verifyLastMobileDataIndicators(true /* visible */,
+ TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
+ DEFAULT_ICON /* typeIcon */);
+
+ // API call is made and all connectivity lost
+ setCarrierNetworkChange(true /* enabled */);
+ setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE);
+ setDataRegState(ServiceState.STATE_OUT_OF_SERVICE);
+
+ // Out of service and carrier network change is true, show special indicator
+ verifyLastMobileDataIndicators(true /* visible */,
+ TelephonyIcons.TELEPHONY_CARRIER_NETWORK_CHANGE[0][0] /* strengthIcon */,
+ TelephonyIcons.TELEPHONY_CARRIER_NETWORK_CHANGE_DARK[0][0] /* darkStrengthIcon */,
+ 0 /* typeIcon */);
+
+ // Revert back
+ setCarrierNetworkChange(false /* enabled */);
+ setVoiceRegState(ServiceState.STATE_IN_SERVICE);
+ setDataRegState(ServiceState.STATE_IN_SERVICE);
+
+ // Verify back in previous state
+ verifyLastMobileDataIndicators(true /* visible */,
+ TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
+ DEFAULT_ICON /* typeIcon */);
+ }
}
diff --git a/packages/VpnDialogs/AndroidManifest.xml b/packages/VpnDialogs/AndroidManifest.xml
index 375c5d8..32e1e6d 100644
--- a/packages/VpnDialogs/AndroidManifest.xml
+++ b/packages/VpnDialogs/AndroidManifest.xml
@@ -24,7 +24,7 @@
<application android:label="VpnDialogs"
android:allowBackup="false" >
<activity android:name=".ConfirmDialog"
- android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert">
+ android:theme="@*android:style/Theme.Material.DayNight.Dialog.Alert">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
@@ -32,7 +32,7 @@
</activity>
<activity android:name=".ManageDialog"
- android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert"
+ android:theme="@*android:style/Theme.Material.DayNight.Dialog.Alert"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
diff --git a/packages/WallpaperCropper/res/values/styles.xml b/packages/WallpaperCropper/res/values/styles.xml
index a34b25a..e438c84 100644
--- a/packages/WallpaperCropper/res/values/styles.xml
+++ b/packages/WallpaperCropper/res/values/styles.xml
@@ -15,13 +15,13 @@
-->
<resources>
- <style name="Theme.WallpaperCropper" parent="@android:style/Theme.DeviceDefault">
+ <style name="Theme.WallpaperCropper" parent="@android:style/Theme.Material.DayNight">
<item name="android:actionBarStyle">@style/WallpaperCropperActionBar</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowActionBarOverlay">true</item>
</style>
- <style name="WallpaperCropperActionBar" parent="android:style/Widget.DeviceDefault.ActionBar">
+ <style name="WallpaperCropperActionBar" parent="@android:style/Widget.Material.ActionBar">
<item name="android:displayOptions">showCustom</item>
<item name="android:background">#88000000</item>
</style>