From c81085a320fef03d23536ef159816554271ad36b Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 3 Jun 2013 09:11:49 -0700 Subject: [PATCH 1/5] Import translations. DO NOT MERGE Change-Id: I455b359698e9bf43d7065374241783fa1f06faca Auto-generated-cl: translation import --- core/res/res/values-ca/strings.xml | 6 +-- core/res/res/values-de/strings.xml | 2 +- core/res/res/values-zh-rCN/strings.xml | 54 +++++++++++++------------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 21f43570cd74b..77f89d1ac16f1 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -565,8 +565,8 @@ "Permet que l\'aplicació pugui canviar l\'estat de connectivitat de la xarxa." "Canvia la connectivitat d\'ancoratge a xarxa" "Permet que l\'aplicació canviï l\'estat de la connectivitat de la xarxa d\'ancoratge." - "canviar la configuració d\'ús de dades de referència" - "Permet que l\'aplicació canviï la configuració d\'ús de les dades de fons." + "canviar la configuració d\'ús de dades en segon pla" + "Permet que l\'aplicació canviï la configuració d\'ús de les dades en segon pla." "veure connexions Wi-Fi" "Permet que l\'aplicació visualitzi informació sobre les xarxes Wi-Fi, com ara si la Wi-Fi està activada i el nom dels dispositius Wi-Fi connectats." "connectar-se a xarxes Wi-Fi i desconnectar-se" @@ -1400,7 +1400,7 @@ "S\'ha superat el límit de dades mòbils" "S\'ha superat el límit de dades Wi-Fi" "%s per sobre del límit especif." - "Dades de referència restringides" + "Dades en segon pla restringides" "Toca per eliminar la restricció." "Certificat de seguretat" "Aquest certificat és vàlid." diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 0bed8256b0d5e..d45c1b0cd35cf 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -938,7 +938,7 @@ "Vor 1 Monat" "Vor mehr als 1 Monat" - "Vor 1 Sekunde" + "vor 1 Sekunde" "vor %d Sekunden" diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index b13196245b1ea..d8f8a8b5d05d2 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -451,17 +451,17 @@ "允许安装位置信息提供程序" "创建用于测试的模拟位置源或安装新的位置提供程序。此权限可让该应用覆盖由其他位置源(如 GPS)或位置提供程序返回的位置和/或状态信息。" "精确位置(基于 GPS 和网络)" - "允许该应用通过全球定位系统 (GPS) 或网络位置信息源(例如基站和 Wi-Fi)获取您的精确位置信息。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的位置,这可能会消耗更多电量。" + "允许该应用通过全球定位系统 (GPS) 或网络位置信息源(例如基站和 WLAN)获取您的精确位置信息。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的位置,这可能会消耗更多电量。" "大致位置(基于网络)" - "允许该应用获取您的大致位置信息。这类位置信息来自于使用网络位置信息源(例如基站和 Wi-Fi)的位置服务。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的大概位置。" + "允许该应用获取您的大致位置信息。这类位置信息来自于使用网络位置信息源(例如基站和 WLAN)的位置服务。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的大概位置。" "访问 SurfaceFlinger" "允许应用使用 SurfaceFlinger 低级功能。" "读取帧缓冲区" "允许应用读取帧缓冲区的内容。" - "配置 Wi-Fi 显示设备" - "允许应用配置并连接到 Wi-Fi 显示设备。" - "控制 Wi-Fi 显示设备" - "允许应用控制 Wi-Fi 显示设备的基础功能。" + "配置 WLAN 显示设备" + "允许应用配置并连接到 WLAN 显示设备。" + "控制 WLAN 显示设备" + "允许应用控制 WLAN 显示设备的基础功能。" "更改您的音频设置" "允许该应用修改全局音频设置,例如音量和用于输出的扬声器。" "录音" @@ -567,13 +567,13 @@ "允许应用更改绑定网络连接的状态。" "更改后台数据使用设置" "允许应用更改后台数据使用设置。" - "查看 Wi-Fi 连接" - "允许该应用查看 Wi-Fi 网络的相关信息,例如是否启用了 Wi-Fi 以及连接的 Wi-Fi 设备的名称。" - "连接 Wi-Fi 和断开连接" - "允许该应用与 Wi-Fi 接入点建立和断开连接,以及更改 Wi-Fi 网络的设备配置。" - "允许接收 Wi-Fi 多播" - "允许该应用使用多播地址接收发送到 Wi-Fi 网络上所有设备(而不仅仅是您的平板电脑)的数据包。该操作的耗电量比非多播模式要大。" - "允许该应用使用多播地址接收发送到 Wi-Fi 网络上所有设备(而不仅仅是您的手机)的数据包。该操作的耗电量比非多播模式要大。" + "查看 WLAN 连接" + "允许该应用查看 WLAN 网络的相关信息,例如是否启用了 WLAN 以及连接的 WLAN 设备的名称。" + "连接 WLAN 和断开连接" + "允许该应用与 WLAN 接入点建立和断开连接,以及更改 WLAN 网络的设备配置。" + "允许接收 WLAN 多播" + "允许该应用使用多播地址接收发送到 WLAN 网络上所有设备(而不仅仅是您的平板电脑)的数据包。该操作的耗电量比非多播模式要大。" + "允许该应用使用多播地址接收发送到 WLAN 网络上所有设备(而不仅仅是您的手机)的数据包。该操作的耗电量比非多播模式要大。" "访问蓝牙设置" "允许应用配置本地蓝牙平板电脑,以及发现远程设备并进行配对。" "允许应用配置本地蓝牙手机,以及发现远程设备并进行配对。" @@ -1128,23 +1128,23 @@ "铃声" "未知铃声" - "有可用的 Wi-Fi 网络" - "有可用的 Wi-Fi 网络" + "有可用的 WLAN 网络" + "有可用的 WLAN 网络" - "打开可用的 Wi-Fi 网络" - "打开可用的 Wi-Fi 网络" + "打开可用的 WLAN 网络" + "打开可用的 WLAN 网络" - "登录到 Wi-Fi 网络" + "登录到 WLAN 网络" "登录网络" - "无法连接到 Wi-Fi" + "无法连接到 WLAN" " 互联网连接状况不佳。" - "Wi-Fi Direct" - "启动 Wi-Fi Direct。此操作将会关闭 Wi-Fi 客户端/热点。" - "无法启动 Wi-Fi Direct。" - "已启用 Wi-Fi Direct" + "WLAN Direct" + "启动 WLAN Direct。此操作将会关闭 WLAN 客户端/热点。" + "无法启动 WLAN Direct。" + "已启用 WLAN Direct" "通过触摸进行设置" "接受" "拒绝" @@ -1154,8 +1154,8 @@ "收件人:" "键入所需的 PIN:" "PIN:" - "平板电脑连接到“%1$s”时会暂时断开与 Wi-Fi 的连接" - "手机连接到%1$s时会暂时断开与 Wi-Fi 的连接。" + "平板电脑连接到“%1$s”时会暂时断开与 WLAN 的连接" + "手机连接到%1$s时会暂时断开与 WLAN 的连接。" "插入字符" "正在发送短信" "<b>%1$s</b>在发送大量短信。是否允许该应用继续发送短信?" @@ -1393,12 +1393,12 @@ "2G-3G 数据已停用" "4G 数据已停用" "移动数据已停用" - "Wi-Fi 数据网络已停用" + "WLAN 数据网络已停用" "触摸可启用。" "已超出 2G-3G 数据流量限制" "已超出 4G 数据使用上限" "已超出移动数据流量上限" - "超出了 Wi-Fi 数据流量上限" + "超出了 WLAN 数据流量上限" "超出规定上限 %s。" "后台数据受限制" "触摸可去除限制。" From 85eae9c1aac420d230f0e53637811cd43b7c2649 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 4 Jun 2013 14:09:31 -0700 Subject: [PATCH 2/5] Create missing Uids when recording network stats. Bug: 5543387 Change-Id: I138c8d2f84e6fd737f2f6ef0945e75ca31256e3d --- core/java/com/android/internal/os/BatteryStatsImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index a2e8d497b4383..6375dbe6cf898 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -1579,9 +1579,7 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i = 0; i < size; i++) { entry = uidStats.getValues(i, entry); - final Uid u = mUidStats.get(entry.uid); - if (u == null) continue; - + final Uid u = getUidStatsLocked(entry.uid); u.mStartedTcpBytesReceived = entry.rxBytes; u.mStartedTcpBytesSent = entry.txBytes; u.mTcpBytesReceivedAtLastUnplug = u.mCurrentTcpBytesReceived; From 3f77c59688fba1ac73498b73b36acad6e140932f Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Tue, 4 Jun 2013 15:40:50 -0700 Subject: [PATCH 3/5] Import translations. DO NOT MERGE Change-Id: I9a9d3071332508b3efbb0bed4eeb435cdc5ba3d9 Auto-generated-cl: translation import --- core/res/res/values-de/strings.xml | 2 +- core/res/res/values-es/strings.xml | 2 +- core/res/res/values-sl/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index d45c1b0cd35cf..8443d7f88e98f 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -602,7 +602,7 @@ "Begriffe lesen, die Sie zum Wörterbuch hinzugefügt haben" "Ermöglicht der App, alle Wörter, Namen und Ausdrücke zu lesen, die ein Nutzer in seinem Wörterbuch gespeichert hat." "Wörter zu meinem Wörterbuch hinzufügen" - "Ermöglicht der App, dem Nutzerwörterbuch neue Einträge hinzuzufügen" + "Ermöglicht der App, neue Einträge zum Nutzerwörterbuch hinzuzufügen" "Zugriff auf geschützten Speicher testen" "Zugriff auf geschützten Speicher testen" "Ermöglicht der App, eine Berechtigung für USB-Speicher zu testen, die künftig auf neuen Geräten verfügbar sein wird" diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 0ab7fca9cb744..67a6755715eea 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -925,7 +925,7 @@ "MENU+" "espacio" "intro" - "suprimir" + "eliminar" "Buscar" "Buscar" "Consulta" diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 80cb710befe17..40ee9f1313a52 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -607,7 +607,7 @@ "preskus dostopa do zaščitene shrambe" "Aplikaciji omogoča preskušanje dovoljenja za shrambo USB, ki bo na voljo v prihodnjih napravah." "Aplikaciji omogoča preskušanje dovoljenja za kartico SD, ki bo na voljo v prihodnjih napravah." - "spr. ali bris. vseb. pomn. USB" + "spreminjanje ali brisanje vsebine shrambe USB" "spreminjanje ali brisanje vsebine kartice SD" "Programu omogoča zapisovanje v pomnilnik USB." "Programu omogoča pisanje na kartico SD." From 5087b7f27c27ea582644a9cba07ae127930a7ab5 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Fri, 31 May 2013 17:59:11 -0700 Subject: [PATCH 4/5] Fix regression in long-press home behavior on tablets. Some config.xml resources have values that vary based on the configuration. A previous change caused initialization to occur at a time when the configuration is was not yet available. This change fixes the problem. Bug: 8891502 Change-Id: Ia768dc2308cc6ae5f11812c6bce6a6e116cfd759 --- .../policy/impl/PhoneWindowManager.java | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index a4275a3d1f5b6..b0cd11ae9cee0 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -885,20 +885,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_lidNavigationAccessibility); mLidControlsSleep = mContext.getResources().getBoolean( com.android.internal.R.bool.config_lidControlsSleep); - - mLongPressOnHomeBehavior = mContext.getResources().getInteger( - com.android.internal.R.integer.config_longPressOnHomeBehavior); - if (mLongPressOnHomeBehavior < LONG_PRESS_HOME_NOTHING || - mLongPressOnHomeBehavior > LONG_PRESS_HOME_ASSIST) { - mLongPressOnHomeBehavior = LONG_PRESS_HOME_NOTHING; - } - - mDoubleTapOnHomeBehavior = mContext.getResources().getInteger( - com.android.internal.R.integer.config_doubleTapOnHomeBehavior); - if (mDoubleTapOnHomeBehavior < DOUBLE_TAP_HOME_NOTHING || - mDoubleTapOnHomeBehavior > DOUBLE_TAP_HOME_RECENT_SYSTEM_UI) { - mDoubleTapOnHomeBehavior = LONG_PRESS_HOME_NOTHING; - } + readConfigurationDependentBehaviors(); // register for dock events IntentFilter filter = new IntentFilter(); @@ -952,6 +939,27 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } + /** + * Read values from config.xml that may be overridden depending on + * the configuration of the device. + * eg. Disable long press on home goes to recents on sw600dp. + */ + private void readConfigurationDependentBehaviors() { + mLongPressOnHomeBehavior = mContext.getResources().getInteger( + com.android.internal.R.integer.config_longPressOnHomeBehavior); + if (mLongPressOnHomeBehavior < LONG_PRESS_HOME_NOTHING || + mLongPressOnHomeBehavior > LONG_PRESS_HOME_ASSIST) { + mLongPressOnHomeBehavior = LONG_PRESS_HOME_NOTHING; + } + + mDoubleTapOnHomeBehavior = mContext.getResources().getInteger( + com.android.internal.R.integer.config_doubleTapOnHomeBehavior); + if (mDoubleTapOnHomeBehavior < DOUBLE_TAP_HOME_NOTHING || + mDoubleTapOnHomeBehavior > DOUBLE_TAP_HOME_RECENT_SYSTEM_UI) { + mDoubleTapOnHomeBehavior = LONG_PRESS_HOME_NOTHING; + } + } + @Override public void setInitialDisplaySize(Display display, int width, int height, int density) { if (display.getDisplayId() != Display.DEFAULT_DISPLAY) { @@ -1332,6 +1340,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { int navigationPresence) { mHaveBuiltInKeyboard = (keyboardPresence & PRESENCE_INTERNAL) != 0; + readConfigurationDependentBehaviors(); readLidState(); applyLidSwitchState(); From d270028c1015aefb7c538d07c8c5b23bb43ac980 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 5 Jun 2013 14:53:33 -0700 Subject: [PATCH 5/5] Maybe fix issue #9296868: Crash in system process There were some paths in LocationManagerService where mRecivers was being accessed/modified without the lock held. Update method names to indicate they need to be called with lock held to make it more clear in the future when such a problem may happen. Change-Id: Ie2a9d019155ac7cedd1db298caca75b8fe382ca7 --- .../server/LocationManagerService.java | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index c4ed4655147e8..f784030d94c66 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -685,19 +685,21 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public void locationCallbackFinished(ILocationListener listener) { - //Do not use getReceiver here as that will add the ILocationListener to + //Do not use getReceiverLocked here as that will add the ILocationListener to //the receiver list if it is not found. If it is not found then the //LocationListener was removed when it had a pending broadcast and should //not be added back. - IBinder binder = listener.asBinder(); - Receiver receiver = mReceivers.get(binder); - if (receiver != null) { - synchronized (receiver) { - // so wakelock calls will succeed - long identity = Binder.clearCallingIdentity(); - receiver.decrementPendingBroadcastsLocked(); - Binder.restoreCallingIdentity(identity); - } + synchronized (mLock) { + IBinder binder = listener.asBinder(); + Receiver receiver = mReceivers.get(binder); + if (receiver != null) { + synchronized (receiver) { + // so wakelock calls will succeed + long identity = Binder.clearCallingIdentity(); + receiver.decrementPendingBroadcastsLocked(); + Binder.restoreCallingIdentity(identity); + } + } } } @@ -1179,7 +1181,8 @@ public class LocationManagerService extends ILocationManager.Stub { } } - private Receiver getReceiver(ILocationListener listener, int pid, int uid, String packageName) { + private Receiver getReceiverLocked(ILocationListener listener, int pid, int uid, + String packageName) { IBinder binder = listener.asBinder(); Receiver receiver = mReceivers.get(binder); if (receiver == null) { @@ -1196,7 +1199,7 @@ public class LocationManagerService extends ILocationManager.Stub { return receiver; } - private Receiver getReceiver(PendingIntent intent, int pid, int uid, String packageName) { + private Receiver getReceiverLocked(PendingIntent intent, int pid, int uid, String packageName) { Receiver receiver = mReceivers.get(intent); if (receiver == null) { receiver = new Receiver(null, intent, pid, uid, packageName); @@ -1260,7 +1263,7 @@ public class LocationManagerService extends ILocationManager.Stub { } } - private Receiver checkListenerOrIntent(ILocationListener listener, PendingIntent intent, + private Receiver checkListenerOrIntentLocked(ILocationListener listener, PendingIntent intent, int pid, int uid, String packageName) { if (intent == null && listener == null) { throw new IllegalArgumentException("need either listener or intent"); @@ -1268,9 +1271,9 @@ public class LocationManagerService extends ILocationManager.Stub { throw new IllegalArgumentException("cannot register both listener and intent"); } else if (intent != null) { checkPendingIntent(intent); - return getReceiver(intent, pid, uid, packageName); + return getReceiverLocked(intent, pid, uid, packageName); } else { - return getReceiver(listener, pid, uid, packageName); + return getReceiverLocked(listener, pid, uid, packageName); } } @@ -1292,9 +1295,10 @@ public class LocationManagerService extends ILocationManager.Stub { // We don't check for MODE_IGNORED here; we will do that when we go to deliver // a location. checkLocationAccess(uid, packageName, allowedResolutionLevel); - Receiver recevier = checkListenerOrIntent(listener, intent, pid, uid, packageName); synchronized (mLock) { + Receiver recevier = checkListenerOrIntentLocked(listener, intent, pid, uid, + packageName); requestLocationUpdatesLocked(sanitizedRequest, recevier, pid, uid, packageName); } } finally { @@ -1341,16 +1345,17 @@ public class LocationManagerService extends ILocationManager.Stub { final int pid = Binder.getCallingPid(); final int uid = Binder.getCallingUid(); - Receiver receiver = checkListenerOrIntent(listener, intent, pid, uid, packageName); - // providers may use public location API's, need to clear identity - long identity = Binder.clearCallingIdentity(); - try { - synchronized (mLock) { + synchronized (mLock) { + Receiver receiver = checkListenerOrIntentLocked(listener, intent, pid, uid, packageName); + + // providers may use public location API's, need to clear identity + long identity = Binder.clearCallingIdentity(); + try { removeUpdatesLocked(receiver); + } finally { + Binder.restoreCallingIdentity(identity); } - } finally { - Binder.restoreCallingIdentity(identity); } }