Merge "Slightly transparent notification header to match visuals of the dropdown handle"
diff --git a/CleanSpec.mk b/CleanSpec.mk
index d0aa368..d48904c 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -110,6 +110,7 @@
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/nfc/)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/wifi/java)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/wifi/java)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/)
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/cmds/dumpstate/dumpstate.c b/cmds/dumpstate/dumpstate.c
index 0b08c5e..30aed33 100644
--- a/cmds/dumpstate/dumpstate.c
+++ b/cmds/dumpstate/dumpstate.c
@@ -72,6 +72,7 @@
     printf("Command line: %s\n", strtok(cmdline_buf, "\n"));
     printf("\n");
 
+    run_command("UPTIME", 10, "uptime", NULL);
     dump_file("MEMORY INFO", "/proc/meminfo");
     run_command("CPU INFO", 10, "top", "-n", "1", "-d", "1", "-m", "30", "-t", NULL);
     run_command("PROCRANK", 20, "procrank", NULL);
@@ -81,8 +82,6 @@
     dump_file("ZONEINFO", "/proc/zoneinfo");
     dump_file("PAGETYPEINFO", "/proc/pagetypeinfo");
     dump_file("BUDDYINFO", "/proc/buddyinfo");
-    dump_file("QTAGUID CTRL INFO", "/proc/net/xt_qtaguid/ctrl");
-    run_command("QTAGUID STATS INFO", 10, "su", "root", "cat", "/proc/net/xt_qtaguid/stats", NULL);
 
     if (screenshot_path[0]) {
         LOGI("taking screenshot\n");
@@ -114,6 +113,11 @@
     run_command("RADIO LOG", 20, "logcat", "-b", "radio", "-v", "threadtime", "-d", "*:v", NULL);
 
     run_command("NETWORK INTERFACES", 10, "su", "root", "netcfg", NULL);
+    dump_file("NETWORK DEV INFO", "/proc/net/dev");
+    dump_file("QTAGUID NETWORK INTERFACES INFO", "/proc/net/xt_qtaguid/iface_stat_all");
+    dump_file("QTAGUID CTRL INFO", "/proc/net/xt_qtaguid/ctrl");
+    run_command("QTAGUID STATS INFO", 10, "su", "root", "cat", "/proc/net/xt_qtaguid/stats", NULL);
+
     dump_file("NETWORK ROUTES", "/proc/net/route");
     dump_file("NETWORK ROUTES IPV6", "/proc/net/ipv6_route");
     dump_file("ARP CACHE", "/proc/net/arp");
diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java
index 9ba1fdb..4b4d308 100644
--- a/core/java/android/provider/CalendarContract.java
+++ b/core/java/android/provider/CalendarContract.java
@@ -292,7 +292,9 @@
      */
     protected interface CalendarColumns {
         /**
-         * The color of the calendar
+         * The color of the calendar. This should only be updated by the sync
+         * adapter, not other apps, as changing a calendar's color can adversely
+         * affect its display.
          * <P>Type: INTEGER (color value)</P>
          */
         public static final String CALENDAR_COLOR = "calendar_color";
@@ -551,7 +553,6 @@
      * <ul>
      * <li>{@link #NAME}</li>
      * <li>{@link #CALENDAR_DISPLAY_NAME}</li>
-     * <li>{@link #CALENDAR_COLOR}</li>
      * <li>{@link #VISIBLE}</li>
      * <li>{@link #SYNC_EVENTS}</li>
      * </ul>
@@ -559,6 +560,7 @@
      * <ul>
      * <li>{@link #ACCOUNT_NAME}</li>
      * <li>{@link #ACCOUNT_TYPE}</li>
+     * <li>{@link #CALENDAR_COLOR}</li>
      * <li>{@link #_SYNC_ID}</li>
      * <li>{@link #DIRTY}</li>
      * <li>{@link #OWNER_ACCOUNT}</li>
@@ -785,7 +787,8 @@
         public static final String EVENT_LOCATION = "eventLocation";
 
         /**
-         * A secondary color for the individual event. Column name.
+         * A secondary color for the individual event. Reserved for future use.
+         * Column name.
          * <P>Type: INTEGER</P>
          */
         public static final String EVENT_COLOR = "eventColor";
diff --git a/core/java/android/server/BluetoothAdapterStateMachine.java b/core/java/android/server/BluetoothAdapterStateMachine.java
index ac46ee2..d26364e 100644
--- a/core/java/android/server/BluetoothAdapterStateMachine.java
+++ b/core/java/android/server/BluetoothAdapterStateMachine.java
@@ -434,6 +434,10 @@
                         if (mPublicState == BluetoothAdapter.STATE_TURNING_OFF) {
                             transitionTo(mHotOff);
                             finishSwitchingOff();
+                            if (!mContext.getResources().getBoolean
+                            (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
+                                deferMessage(obtainMessage(TURN_COLD));
+                            }
                         }
                     } else {
                         if (mPublicState != BluetoothAdapter.STATE_TURNING_ON) {
@@ -486,16 +490,6 @@
             }
             return retValue;
         }
-
-        private void finishSwitchingOff() {
-            mBluetoothService.finishDisable();
-            if (mContext.getResources().getBoolean
-                (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
-                broadcastState(BluetoothAdapter.STATE_OFF);
-            } else {
-                deferMessage(obtainMessage(TURN_COLD));
-            }
-        }
     }
 
     private class BluetoothOn extends State {
@@ -656,12 +650,10 @@
                     //$FALL-THROUGH$ all devices are already disconnected
                 case ALL_DEVICES_DISCONNECTED:
                     removeMessages(DEVICES_DISCONNECT_TIMEOUT);
-                    mBluetoothService.finishDisable();
-                    broadcastState(BluetoothAdapter.STATE_OFF);
+                    finishSwitchingOff();
                     break;
                 case DEVICES_DISCONNECT_TIMEOUT:
-                    mBluetoothService.finishDisable();
-                    broadcastState(BluetoothAdapter.STATE_OFF);
+                    finishSwitchingOff();
                     Log.e(TAG, "Devices fail to disconnect, reseting...");
                     transitionTo(mHotOff);
                     deferMessage(obtainMessage(TURN_COLD));
@@ -695,6 +687,12 @@
         }
     }
 
+    private void finishSwitchingOff() {
+        mBluetoothService.finishDisable();
+        broadcastState(BluetoothAdapter.STATE_OFF);
+        mBluetoothService.cleanupAfterFinishDisable();
+    }
+
     private void shutoffBluetooth() {
         mBluetoothService.shutoffBluetooth();
         mEventLoop.stop();
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index f0fb4e0..63da926 100755
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -390,8 +390,7 @@
     }
 
     /**
-     * The Bluetooth has been turned off, but hot. Do bonding, profile,
-     * and internal cleanup
+     * The Bluetooth has been turned off, but hot. Do bonding, profile cleanup
      */
     synchronized void finishDisable() {
         // mark in progress bondings as cancelled
@@ -409,8 +408,17 @@
         Intent intent = new Intent(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
         intent.putExtra(BluetoothAdapter.EXTRA_SCAN_MODE, BluetoothAdapter.SCAN_MODE_NONE);
         mContext.sendBroadcast(intent, BLUETOOTH_PERM);
+    }
 
+    /**
+     * Local clean up after broadcasting STATE_OFF intent
+     */
+    synchronized void cleanupAfterFinishDisable() {
         mAdapterProperties.clear();
+
+        for (Integer srHandle : mServiceRecordToPid.keySet()) {
+            removeServiceRecordNative(srHandle);
+        }
         mServiceRecordToPid.clear();
 
         mProfilesConnected = 0;
@@ -1526,6 +1534,8 @@
     public void removeServiceRecord(int handle) {
         mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM,
                                                 "Need BLUETOOTH permission");
+        // Since this is a binder call check if Bluetooth is off
+        if (getBluetoothStateInternal() == BluetoothAdapter.STATE_OFF) return;
         Message message = mHandler.obtainMessage(MESSAGE_REMOVE_SERVICE_RECORD);
         message.obj = new Pair<Integer, Integer>(handle, Binder.getCallingPid());
         mHandler.sendMessage(message);
@@ -1533,8 +1543,7 @@
 
     private synchronized void checkAndRemoveRecord(int handle, int pid) {
         Pair<Integer, IBinder> pidPair = mServiceRecordToPid.get(handle);
-        Integer owner = pidPair.first;
-        if (owner != null && pid == owner.intValue()) {
+        if (pidPair != null && pid == pidPair.first) {
             if (DBG) Log.d(TAG, "Removing service record " +
                 Integer.toHexString(handle) + " for pid " + pid);
             mServiceRecordToPid.remove(handle);
diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java
index 312303d..25af3fa 100644
--- a/core/java/android/widget/ActivityChooserView.java
+++ b/core/java/android/widget/ActivityChooserView.java
@@ -23,12 +23,10 @@
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.database.DataSetObserver;
-import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.View.MeasureSpec;
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
 import android.view.ViewTreeObserver.OnGlobalLayoutListener;
@@ -299,10 +297,12 @@
 
         ListPopupWindow popupWindow = getListPopupWindow();
         if (!popupWindow.isShowing()) {
-            if (mIsSelectingDefaultActivity) {
-                mAdapter.setShowDefaultActivity(true);
+            final boolean defaultActivityButtonShown =
+                mDefaultActivityButton.getVisibility() == VISIBLE;
+            if (mIsSelectingDefaultActivity || !defaultActivityButtonShown) {
+                mAdapter.setShowDefaultActivity(true, defaultActivityButtonShown);
             } else {
-                mAdapter.setShowDefaultActivity(false);
+                mAdapter.setShowDefaultActivity(false, false);
             }
             final int contentWidth = Math.min(mAdapter.measureContentWidth(), mListPopupMaxWidth);
             popupWindow.setContentWidth(contentWidth);
@@ -476,8 +476,10 @@
                             mAdapter.getDataModel().setDefaultActivity(position);
                         }
                     } else {
-                        // The first item in the model is default action => adjust index
-                        Intent launchIntent  = mAdapter.getDataModel().chooseActivity(position + 1);
+                        // If the default target is not shown in the list, the first
+                        // item in the model is default action => adjust index
+                        position = mAdapter.getShowDefaultActivity() ? position : position + 1;
+                        Intent launchIntent = mAdapter.getDataModel().chooseActivity(position);
                         if (launchIntent != null) {
                             mContext.startActivity(launchIntent);
                         }
@@ -553,6 +555,8 @@
 
         private boolean mShowDefaultActivity;
 
+        private boolean mHighlightDefaultActivity;
+
         private boolean mShowFooterView;
 
         public void setDataModel(ActivityChooserModel dataModel) {
@@ -640,7 +644,7 @@
                     TextView titleView = (TextView) convertView.findViewById(R.id.title);
                     titleView.setText(activity.loadLabel(packageManager));
                     // Highlight the default.
-                    if (mShowDefaultActivity && position == 0) {
+                    if (mShowDefaultActivity && position == 0 && mHighlightDefaultActivity) {
                         convertView.setActivated(true);
                     } else {
                         convertView.setActivated(false);
@@ -709,11 +713,18 @@
             return mDataModel;
         }
 
-        public void setShowDefaultActivity(boolean showDefaultActivity) {
-            if (mShowDefaultActivity != showDefaultActivity) {
+        public void setShowDefaultActivity(boolean showDefaultActivity,
+                boolean highlightDefaultActivity) {
+            if (mShowDefaultActivity != showDefaultActivity
+                    || mHighlightDefaultActivity != highlightDefaultActivity) {
                 mShowDefaultActivity = showDefaultActivity;
+                mHighlightDefaultActivity = highlightDefaultActivity;
                 notifyDataSetChanged();
             }
         }
+
+        public boolean getShowDefaultActivity() {
+            return mShowDefaultActivity;
+        }
     }
 }
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index af820ac..8db6592 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -8945,7 +8945,7 @@
         final boolean isPassword = hasPasswordTransformationMethod();
         if (!isPassword) {
             CharSequence text = getTextForAccessibility();
-            if (TextUtils.isEmpty(text)) {
+            if (!TextUtils.isEmpty(text)) {
                 event.getText().add(text);
             }
         }
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_camera_activated.png b/core/res/res/drawable-hdpi/ic_lockscreen_camera_activated.png
index a94d1b9e..19c8eb2 100644
--- a/core/res/res/drawable-hdpi/ic_lockscreen_camera_activated.png
+++ b/core/res/res/drawable-hdpi/ic_lockscreen_camera_activated.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_camera_normal.png b/core/res/res/drawable-hdpi/ic_lockscreen_camera_normal.png
index 36d766d..c79a245 100644
--- a/core/res/res/drawable-hdpi/ic_lockscreen_camera_normal.png
+++ b/core/res/res/drawable-hdpi/ic_lockscreen_camera_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_missed_call.png b/core/res/res/drawable-hdpi/stat_notify_missed_call.png
index 74f5df7..f205471 100644
--- a/core/res/res/drawable-hdpi/stat_notify_missed_call.png
+++ b/core/res/res/drawable-hdpi/stat_notify_missed_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png b/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png
index 97ddb3c..716ba9d 100644
--- a/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png
+++ b/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim1.png b/core/res/res/drawable-hdpi/stat_sys_download_anim1.png
index 71ea925..3e27c52 100644
--- a/core/res/res/drawable-hdpi/stat_sys_download_anim1.png
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_bluetooth.png b/core/res/res/drawable-hdpi/stat_sys_tether_bluetooth.png
index 11869af..9451174 100644
--- a/core/res/res/drawable-hdpi/stat_sys_tether_bluetooth.png
+++ b/core/res/res/drawable-hdpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_general.png b/core/res/res/drawable-hdpi/stat_sys_tether_general.png
index f1606ba..79d5756 100644
--- a/core/res/res/drawable-hdpi/stat_sys_tether_general.png
+++ b/core/res/res/drawable-hdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_usb.png b/core/res/res/drawable-hdpi/stat_sys_tether_usb.png
index a05ab3e..cae1bd1 100644
--- a/core/res/res/drawable-hdpi/stat_sys_tether_usb.png
+++ b/core/res/res/drawable-hdpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_wifi.png b/core/res/res/drawable-hdpi/stat_sys_tether_wifi.png
index 576bd77..0b8dbf5 100644
--- a/core/res/res/drawable-hdpi/stat_sys_tether_wifi.png
+++ b/core/res/res/drawable-hdpi/stat_sys_tether_wifi.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png
index 9ec9f2e..2754428 100644
--- a/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png
index 486c1ed..3590062 100644
--- a/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_camera_activated.png b/core/res/res/drawable-mdpi/ic_lockscreen_camera_activated.png
index 1437798..862f33b 100644
--- a/core/res/res/drawable-mdpi/ic_lockscreen_camera_activated.png
+++ b/core/res/res/drawable-mdpi/ic_lockscreen_camera_activated.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_camera_normal.png b/core/res/res/drawable-mdpi/ic_lockscreen_camera_normal.png
index b718258..30df0a3 100644
--- a/core/res/res/drawable-mdpi/ic_lockscreen_camera_normal.png
+++ b/core/res/res/drawable-mdpi/ic_lockscreen_camera_normal.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_notify_missed_call.png b/core/res/res/drawable-mdpi/stat_notify_missed_call.png
index 9583a6b..f2ff56e 100644
--- a/core/res/res/drawable-mdpi/stat_notify_missed_call.png
+++ b/core/res/res/drawable-mdpi/stat_notify_missed_call.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png b/core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png
index 11b6a5a..3bf0d35 100644
--- a/core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png
+++ b/core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_bluetooth.png b/core/res/res/drawable-mdpi/stat_sys_tether_bluetooth.png
index b318b9c..f42dae0 100644
--- a/core/res/res/drawable-mdpi/stat_sys_tether_bluetooth.png
+++ b/core/res/res/drawable-mdpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_general.png b/core/res/res/drawable-mdpi/stat_sys_tether_general.png
index 952ff6b..0655161 100644
--- a/core/res/res/drawable-mdpi/stat_sys_tether_general.png
+++ b/core/res/res/drawable-mdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_usb.png b/core/res/res/drawable-mdpi/stat_sys_tether_usb.png
index 3206557..2e2b8ca 100644
--- a/core/res/res/drawable-mdpi/stat_sys_tether_usb.png
+++ b/core/res/res/drawable-mdpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_wifi.png b/core/res/res/drawable-mdpi/stat_sys_tether_wifi.png
index 45a95f8..869ad35 100644
--- a/core/res/res/drawable-mdpi/stat_sys_tether_wifi.png
+++ b/core/res/res/drawable-mdpi/stat_sys_tether_wifi.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_activated.png b/core/res/res/drawable-xhdpi/ic_lockscreen_camera_activated.png
index d545883..760ef2d 100644
--- a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_activated.png
+++ b/core/res/res/drawable-xhdpi/ic_lockscreen_camera_activated.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_normal.png b/core/res/res/drawable-xhdpi/ic_lockscreen_camera_normal.png
index 8de7b84..093bc05 100644
--- a/core/res/res/drawable-xhdpi/ic_lockscreen_camera_normal.png
+++ b/core/res/res/drawable-xhdpi/ic_lockscreen_camera_normal.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_notify_missed_call.png b/core/res/res/drawable-xhdpi/stat_notify_missed_call.png
index 4fab796..8719eff 100644
--- a/core/res/res/drawable-xhdpi/stat_notify_missed_call.png
+++ b/core/res/res/drawable-xhdpi/stat_notify_missed_call.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_notify_wifi_in_range.png b/core/res/res/drawable-xhdpi/stat_notify_wifi_in_range.png
index 3a2e070..1909183 100644
--- a/core/res/res/drawable-xhdpi/stat_notify_wifi_in_range.png
+++ b/core/res/res/drawable-xhdpi/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_phone_call.png b/core/res/res/drawable-xhdpi/stat_sys_phone_call.png
index 5aee387..e7a3981 100644
--- a/core/res/res/drawable-xhdpi/stat_sys_phone_call.png
+++ b/core/res/res/drawable-xhdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_tether_bluetooth.png b/core/res/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
index c3e2acf..3f57d1c 100644
--- a/core/res/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
+++ b/core/res/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_tether_general.png b/core/res/res/drawable-xhdpi/stat_sys_tether_general.png
index a1c200e..34b0cb3 100644
--- a/core/res/res/drawable-xhdpi/stat_sys_tether_general.png
+++ b/core/res/res/drawable-xhdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_tether_usb.png b/core/res/res/drawable-xhdpi/stat_sys_tether_usb.png
index a3008b8..36afe48 100644
--- a/core/res/res/drawable-xhdpi/stat_sys_tether_usb.png
+++ b/core/res/res/drawable-xhdpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_tether_wifi.png b/core/res/res/drawable-xhdpi/stat_sys_tether_wifi.png
index 1fd3139..dc48646 100644
--- a/core/res/res/drawable-xhdpi/stat_sys_tether_wifi.png
+++ b/core/res/res/drawable-xhdpi/stat_sys_tether_wifi.png
Binary files differ
diff --git a/core/tests/bandwidthtests/src/com/android/bandwidthtest/util/BandwidthTestUtil.java b/core/tests/bandwidthtests/src/com/android/bandwidthtest/util/BandwidthTestUtil.java
index 7dea9e3..577767c 100644
--- a/core/tests/bandwidthtests/src/com/android/bandwidthtest/util/BandwidthTestUtil.java
+++ b/core/tests/bandwidthtests/src/com/android/bandwidthtest/util/BandwidthTestUtil.java
@@ -117,17 +117,24 @@
 
     /**
      * Post a given file for a given device and timestamp to the server.
-     * @param postUrl {@link String} url used to upload files
+     * @param server {@link String} url of test server
      * @param deviceId {@link String} device id that is uploading
      * @param timestamp {@link String} timestamp
      * @param file {@link File} to upload
      * @return true if it succeeded
      */
-    public static boolean postFileToServer(String postUrl, String deviceId, String timestamp,
+    public static boolean postFileToServer(String server, String deviceId, String timestamp,
             File file) {
         try {
+            Log.d(LOG_TAG, "Uploading begining");
             HttpClient httpClient = new DefaultHttpClient();
-            HttpPost postRequest = new HttpPost(postUrl);
+            String uri = server;
+            if (!uri.endsWith("/")) {
+                uri += "/";
+            }
+            uri += "upload";
+            Log.d(LOG_TAG, "Upload url:" + uri);
+            HttpPost postRequest = new HttpPost(uri);
             Part[] parts = {
                     new StringPart("device_id", deviceId),
                     new StringPart("timestamp", timestamp),
diff --git a/data/sounds/AudioPackage7.mk b/data/sounds/AudioPackage7.mk
index 4f23716..16171dc 100755
--- a/data/sounds/AudioPackage7.mk
+++ b/data/sounds/AudioPackage7.mk
@@ -9,21 +9,18 @@
 
 PRODUCT_COPY_FILES += \
 	$(LOCAL_PATH)/alarms/ogg/Cesium.ogg:system/media/audio/alarms/Cesium.ogg \
-	$(LOCAL_PATH)/alarms/ogg/Plutonium.ogg:system/media/audio/alarms/Plutonium.ogg \
-	$(LOCAL_PATH)/alarms/ogg/Scandium.ogg:system/media/audio/alarms/Scandium.ogg \
-	$(LOCAL_PATH)/alarms/ogg/Curium.ogg:system/media/audio/alarms/Curium.ogg \
 	$(LOCAL_PATH)/alarms/ogg/Fermium.ogg:system/media/audio/alarms/Fermium.ogg \
-	$(LOCAL_PATH)/alarms/ogg/Nobelium.ogg:system/media/audio/alarms/Nobelium.ogg \
-	$(LOCAL_PATH)/alarms/ogg/Copernicium.ogg:system/media/audio/alarms/Copernicium.ogg \
 	$(LOCAL_PATH)/alarms/ogg/Hassium.ogg:system/media/audio/alarms/Hassium.ogg \
 	$(LOCAL_PATH)/alarms/ogg/Neptunium.ogg:system/media/audio/alarms/Neptunium.ogg \
+	$(LOCAL_PATH)/alarms/ogg/Nobelium.ogg:system/media/audio/alarms/Nobelium.ogg \
+	$(LOCAL_PATH)/alarms/ogg/Plutonium.ogg:system/media/audio/alarms/Plutonium.ogg \
 	$(LOCAL_PATH)/effects/ogg/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.ogg \
-	$(LOCAL_PATH)/effects/ogg/KeypressStandard_24.ogg:system/media/audio/ui/KeypressStandard.ogg \
-	$(LOCAL_PATH)/effects/ogg/KeypressSpacebar_24.ogg:system/media/audio/ui/KeypressSpacebar.ogg \
-	$(LOCAL_PATH)/effects/ogg/KeypressDelete_24.ogg:system/media/audio/ui/KeypressDelete.ogg \
-	$(LOCAL_PATH)/effects/ogg/KeypressReturn_24.ogg:system/media/audio/ui/KeypressReturn.ogg \
+	$(LOCAL_PATH)/effects/ogg/KeypressStandard_49.ogg:system/media/audio/ui/KeypressStandard.ogg \
+	$(LOCAL_PATH)/effects/ogg/KeypressSpacebar_49.ogg:system/media/audio/ui/KeypressSpacebar.ogg \
+	$(LOCAL_PATH)/effects/ogg/KeypressDelete_49.ogg:system/media/audio/ui/KeypressDelete.ogg \
+	$(LOCAL_PATH)/effects/ogg/KeypressReturn_49.ogg:system/media/audio/ui/KeypressReturn.ogg \
 	$(LOCAL_PATH)/effects/ogg/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \
-	$(LOCAL_PATH)/effects/ogg/CameraShutter.ogg:system/media/audio/ui/camera_click.ogg \
+	$(LOCAL_PATH)/effects/ogg/camera_click.ogg:system/media/audio/ui/camera_click.ogg \
 	$(LOCAL_PATH)/effects/ogg/LowBattery.ogg:system/media/audio/ui/LowBattery.ogg \
 	$(LOCAL_PATH)/effects/ogg/Dock.ogg:system/media/audio/ui/Dock.ogg \
 	$(LOCAL_PATH)/effects/ogg/Undock.ogg:system/media/audio/ui/Undock.ogg \
@@ -41,15 +38,12 @@
 	$(LOCAL_PATH)/ringtones/ogg/Andromeda.ogg:system/media/audio/ringtones/Andromeda.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Aquila.ogg:system/media/audio/ringtones/Aquila.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/ArgoNavis.ogg:system/media/audio/ringtones/ArgoNavis.ogg \
-	$(LOCAL_PATH)/ringtones/ogg/Bootes.ogg:system/media/audio/ringtones/Bootes.ogg \
-	$(LOCAL_PATH)/ringtones/ogg/CanisMajor.ogg:system/media/audio/ringtones/CanisMajor.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Carina.ogg:system/media/audio/ringtones/Carina.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Cassiopeia.ogg:system/media/audio/ringtones/Cassiopeia.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Centaurus.ogg:system/media/audio/ringtones/Centaurus.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Cygnus.ogg:system/media/audio/ringtones/Cygnus.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Draco.ogg:system/media/audio/ringtones/Draco.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Hydra.ogg:system/media/audio/ringtones/Hydra.ogg \
-	$(LOCAL_PATH)/ringtones/ogg/Lyra.ogg:system/media/audio/ringtones/Lyra.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Machina.ogg:system/media/audio/ringtones/Machina.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Orion.ogg:system/media/audio/ringtones/Orion.ogg \
 	$(LOCAL_PATH)/ringtones/ogg/Pegasus.ogg:system/media/audio/ringtones/Pegasus.ogg \
diff --git a/data/sounds/alarms/ogg/Fermium.ogg b/data/sounds/alarms/ogg/Fermium.ogg
index 6940442..fecc2ba 100644
--- a/data/sounds/alarms/ogg/Fermium.ogg
+++ b/data/sounds/alarms/ogg/Fermium.ogg
Binary files differ
diff --git a/data/sounds/alarms/ogg/Hassium.ogg b/data/sounds/alarms/ogg/Hassium.ogg
index 86b2b71..260bf7d 100644
--- a/data/sounds/alarms/ogg/Hassium.ogg
+++ b/data/sounds/alarms/ogg/Hassium.ogg
Binary files differ
diff --git a/data/sounds/alarms/ogg/Neptunium.ogg b/data/sounds/alarms/ogg/Neptunium.ogg
index 1a99141..b1ea741 100644
--- a/data/sounds/alarms/ogg/Neptunium.ogg
+++ b/data/sounds/alarms/ogg/Neptunium.ogg
Binary files differ
diff --git a/data/sounds/alarms/ogg/Nobelium.ogg b/data/sounds/alarms/ogg/Nobelium.ogg
index 4309bc6..1f94d1e 100644
--- a/data/sounds/alarms/ogg/Nobelium.ogg
+++ b/data/sounds/alarms/ogg/Nobelium.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/CameraShutter.ogg b/data/sounds/effects/ogg/CameraShutter.ogg
deleted file mode 100644
index 1b67dac..0000000
--- a/data/sounds/effects/ogg/CameraShutter.ogg
+++ /dev/null
Binary files differ
diff --git a/data/sounds/effects/ogg/Dock.ogg b/data/sounds/effects/ogg/Dock.ogg
index caa8eeb..cfe4405 100644
--- a/data/sounds/effects/ogg/Dock.ogg
+++ b/data/sounds/effects/ogg/Dock.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/Effect_Tick.ogg b/data/sounds/effects/ogg/Effect_Tick.ogg
index a997fe1..b379019 100644
--- a/data/sounds/effects/ogg/Effect_Tick.ogg
+++ b/data/sounds/effects/ogg/Effect_Tick.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressDelete_14.ogg
similarity index 70%
copy from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
copy to data/sounds/effects/ogg/KeypressDelete_14.ogg
index 9f17dd2..aa4349d 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressDelete_14.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressDelete_24.ogg b/data/sounds/effects/ogg/KeypressDelete_24.ogg
deleted file mode 100644
index 2503c3e..0000000
--- a/data/sounds/effects/ogg/KeypressDelete_24.ogg
+++ /dev/null
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressDelete_49.ogg
similarity index 70%
copy from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
copy to data/sounds/effects/ogg/KeypressDelete_49.ogg
index 9f17dd2..aa4349d 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressDelete_49.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressReturn_14.ogg
similarity index 69%
copy from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
copy to data/sounds/effects/ogg/KeypressReturn_14.ogg
index 9f17dd2..2244a42 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressReturn_14.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressReturn_24.ogg b/data/sounds/effects/ogg/KeypressReturn_24.ogg
deleted file mode 100644
index 342eb12..0000000
--- a/data/sounds/effects/ogg/KeypressReturn_24.ogg
+++ /dev/null
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressReturn_49.ogg
similarity index 69%
copy from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
copy to data/sounds/effects/ogg/KeypressReturn_49.ogg
index 9f17dd2..2244a42 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressReturn_49.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressSpacebar_14.ogg
similarity index 70%
rename from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
rename to data/sounds/effects/ogg/KeypressSpacebar_14.ogg
index 9f17dd2..56ea15e 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressSpacebar_14.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressSpacebar_49.ogg
similarity index 70%
copy from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
copy to data/sounds/effects/ogg/KeypressSpacebar_49.ogg
index 9f17dd2..56ea15e 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressSpacebar_49.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressStandard_14.ogg
similarity index 70%
copy from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
copy to data/sounds/effects/ogg/KeypressStandard_14.ogg
index 9f17dd2..8df7214 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressStandard_14.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressStandard_24.ogg b/data/sounds/effects/ogg/KeypressStandard_24.ogg
deleted file mode 100644
index 80d7d6d1..0000000
--- a/data/sounds/effects/ogg/KeypressStandard_24.ogg
+++ /dev/null
Binary files differ
diff --git a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg b/data/sounds/effects/ogg/KeypressStandard_49.ogg
similarity index 70%
copy from data/sounds/effects/ogg/KeypressSpacebar_24.ogg
copy to data/sounds/effects/ogg/KeypressStandard_49.ogg
index 9f17dd2..8df7214 100644
--- a/data/sounds/effects/ogg/KeypressSpacebar_24.ogg
+++ b/data/sounds/effects/ogg/KeypressStandard_49.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/Lock.ogg b/data/sounds/effects/ogg/Lock.ogg
index 471258a..ed845be 100644
--- a/data/sounds/effects/ogg/Lock.ogg
+++ b/data/sounds/effects/ogg/Lock.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/LowBattery.ogg b/data/sounds/effects/ogg/LowBattery.ogg
old mode 100755
new mode 100644
index 370c86c..710e385
--- a/data/sounds/effects/ogg/LowBattery.ogg
+++ b/data/sounds/effects/ogg/LowBattery.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/Media_Volume.ogg b/data/sounds/effects/ogg/Media_Volume.ogg
index b06656f..2248e49 100644
--- a/data/sounds/effects/ogg/Media_Volume.ogg
+++ b/data/sounds/effects/ogg/Media_Volume.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/Undock.ogg b/data/sounds/effects/ogg/Undock.ogg
index 28918f7..f00fa76 100644
--- a/data/sounds/effects/ogg/Undock.ogg
+++ b/data/sounds/effects/ogg/Undock.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/Unlock.ogg b/data/sounds/effects/ogg/Unlock.ogg
index 1cd537b..0a47b5c 100644
--- a/data/sounds/effects/ogg/Unlock.ogg
+++ b/data/sounds/effects/ogg/Unlock.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/VideoRecord.ogg b/data/sounds/effects/ogg/VideoRecord.ogg
index 28455c9..d2dee03 100644
--- a/data/sounds/effects/ogg/VideoRecord.ogg
+++ b/data/sounds/effects/ogg/VideoRecord.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/VideoStop.ogg b/data/sounds/effects/ogg/VideoStop.ogg
new file mode 100644
index 0000000..f16ed13
--- /dev/null
+++ b/data/sounds/effects/ogg/VideoStop.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/VolumeIncremental.ogg b/data/sounds/effects/ogg/VolumeIncremental.ogg
new file mode 100644
index 0000000..c540607
--- /dev/null
+++ b/data/sounds/effects/ogg/VolumeIncremental.ogg
Binary files differ
diff --git a/data/sounds/effects/ogg/camera_click.ogg b/data/sounds/effects/ogg/camera_click.ogg
old mode 100755
new mode 100644
index bfb2a68..44b6683
--- a/data/sounds/effects/ogg/camera_click.ogg
+++ b/data/sounds/effects/ogg/camera_click.ogg
Binary files differ
diff --git a/data/sounds/effects/wav/CameraClick.wav b/data/sounds/effects/wav/CameraClick.wav
index 9fe75f2..1077f410 100644
--- a/data/sounds/effects/wav/CameraClick.wav
+++ b/data/sounds/effects/wav/CameraClick.wav
Binary files differ
diff --git a/data/sounds/effects/wav/CameraFocus.wav b/data/sounds/effects/wav/CameraFocus.wav
new file mode 100644
index 0000000..cbe6b37
--- /dev/null
+++ b/data/sounds/effects/wav/CameraFocus.wav
Binary files differ
diff --git a/data/sounds/effects/wav/Dock.wav b/data/sounds/effects/wav/Dock.wav
index 7ec64a8..864a7dd8 100644
--- a/data/sounds/effects/wav/Dock.wav
+++ b/data/sounds/effects/wav/Dock.wav
Binary files differ
diff --git a/data/sounds/effects/wav/Effect_Tick.wav b/data/sounds/effects/wav/Effect_Tick.wav
index 6af2dc1..6a56ad7 100644
--- a/data/sounds/effects/wav/Effect_Tick.wav
+++ b/data/sounds/effects/wav/Effect_Tick.wav
Binary files differ
diff --git a/data/sounds/effects/wav/Lock.wav b/data/sounds/effects/wav/Lock.wav
index fead37f..1655a89 100644
--- a/data/sounds/effects/wav/Lock.wav
+++ b/data/sounds/effects/wav/Lock.wav
Binary files differ
diff --git a/data/sounds/effects/wav/LowBattery.wav b/data/sounds/effects/wav/LowBattery.wav
index 5d8b48d..876a564 100644
--- a/data/sounds/effects/wav/LowBattery.wav
+++ b/data/sounds/effects/wav/LowBattery.wav
Binary files differ
diff --git a/data/sounds/effects/wav/Media_Volume.wav b/data/sounds/effects/wav/Media_Volume.wav
new file mode 100644
index 0000000..54eb638
--- /dev/null
+++ b/data/sounds/effects/wav/Media_Volume.wav
Binary files differ
diff --git a/data/sounds/effects/wav/NFCFailure.wav b/data/sounds/effects/wav/NFCFailure.wav
new file mode 100644
index 0000000..8715f87
--- /dev/null
+++ b/data/sounds/effects/wav/NFCFailure.wav
Binary files differ
diff --git a/data/sounds/effects/wav/NFCInitiated.wav b/data/sounds/effects/wav/NFCInitiated.wav
new file mode 100644
index 0000000..2f20869
--- /dev/null
+++ b/data/sounds/effects/wav/NFCInitiated.wav
Binary files differ
diff --git a/data/sounds/effects/wav/NFCSuccess.wav b/data/sounds/effects/wav/NFCSuccess.wav
new file mode 100644
index 0000000..39e5da7
--- /dev/null
+++ b/data/sounds/effects/wav/NFCSuccess.wav
Binary files differ
diff --git a/data/sounds/effects/wav/Undock.wav b/data/sounds/effects/wav/Undock.wav
index 79abb4e..3696a24 100644
--- a/data/sounds/effects/wav/Undock.wav
+++ b/data/sounds/effects/wav/Undock.wav
Binary files differ
diff --git a/data/sounds/effects/wav/Unlock.wav b/data/sounds/effects/wav/Unlock.wav
index 33b80ff..2229d03 100644
--- a/data/sounds/effects/wav/Unlock.wav
+++ b/data/sounds/effects/wav/Unlock.wav
Binary files differ
diff --git a/data/sounds/effects/wav/VideoRecord.wav b/data/sounds/effects/wav/VideoRecord.wav
index f431023..b2ca16a 100644
--- a/data/sounds/effects/wav/VideoRecord.wav
+++ b/data/sounds/effects/wav/VideoRecord.wav
Binary files differ
diff --git a/data/sounds/effects/wav/VideoStop.wav b/data/sounds/effects/wav/VideoStop.wav
new file mode 100644
index 0000000..8ff2f6d
--- /dev/null
+++ b/data/sounds/effects/wav/VideoStop.wav
Binary files differ
diff --git a/data/sounds/effects/wav/VideoTransmitBegin.wav b/data/sounds/effects/wav/VideoTransmitBegin.wav
new file mode 100644
index 0000000..0ed14de
--- /dev/null
+++ b/data/sounds/effects/wav/VideoTransmitBegin.wav
Binary files differ
diff --git a/data/sounds/effects/wav/VideoTransmitEnd.wav b/data/sounds/effects/wav/VideoTransmitEnd.wav
new file mode 100644
index 0000000..3c8523e
--- /dev/null
+++ b/data/sounds/effects/wav/VideoTransmitEnd.wav
Binary files differ
diff --git a/data/sounds/effects/wav/VolumeIncremental.wav b/data/sounds/effects/wav/VolumeIncremental.wav
new file mode 100644
index 0000000..0a64981
--- /dev/null
+++ b/data/sounds/effects/wav/VolumeIncremental.wav
Binary files differ
diff --git a/data/sounds/notifications/ogg/Antares.ogg b/data/sounds/notifications/ogg/Antares.ogg
index 409c684..92e9d09 100644
--- a/data/sounds/notifications/ogg/Antares.ogg
+++ b/data/sounds/notifications/ogg/Antares.ogg
Binary files differ
diff --git a/data/sounds/notifications/ogg/Betelgeuse.ogg b/data/sounds/notifications/ogg/Betelgeuse.ogg
index 488d1e8..aca85e9 100644
--- a/data/sounds/notifications/ogg/Betelgeuse.ogg
+++ b/data/sounds/notifications/ogg/Betelgeuse.ogg
Binary files differ
diff --git a/data/sounds/notifications/ogg/Deneb.ogg b/data/sounds/notifications/ogg/Deneb.ogg
index b84eae3..aac686a 100644
--- a/data/sounds/notifications/ogg/Deneb.ogg
+++ b/data/sounds/notifications/ogg/Deneb.ogg
Binary files differ
diff --git a/data/sounds/notifications/ogg/Hojus.ogg b/data/sounds/notifications/ogg/Hojus.ogg
index 65b780c..5bc1265 100644
--- a/data/sounds/notifications/ogg/Hojus.ogg
+++ b/data/sounds/notifications/ogg/Hojus.ogg
Binary files differ
diff --git a/data/sounds/notifications/ogg/Lalande.ogg b/data/sounds/notifications/ogg/Lalande.ogg
index eda9c9d..42c6271 100644
--- a/data/sounds/notifications/ogg/Lalande.ogg
+++ b/data/sounds/notifications/ogg/Lalande.ogg
Binary files differ
diff --git a/data/sounds/notifications/ogg/Mira.ogg b/data/sounds/notifications/ogg/Mira.ogg
index f5a6e94..c66dae1 100644
--- a/data/sounds/notifications/ogg/Mira.ogg
+++ b/data/sounds/notifications/ogg/Mira.ogg
Binary files differ
diff --git a/data/sounds/notifications/ogg/Proxima.ogg b/data/sounds/notifications/ogg/Proxima.ogg
index 53bf899..a9e5a80 100644
--- a/data/sounds/notifications/ogg/Proxima.ogg
+++ b/data/sounds/notifications/ogg/Proxima.ogg
Binary files differ
diff --git a/data/sounds/notifications/ogg/Upsilon.ogg b/data/sounds/notifications/ogg/Upsilon.ogg
index e970422..e3ac386 100644
--- a/data/sounds/notifications/ogg/Upsilon.ogg
+++ b/data/sounds/notifications/ogg/Upsilon.ogg
Binary files differ
diff --git a/data/sounds/ringtones/ogg/Carina.ogg b/data/sounds/ringtones/ogg/Carina.ogg
index aeb9b36..e8a66b4 100644
--- a/data/sounds/ringtones/ogg/Carina.ogg
+++ b/data/sounds/ringtones/ogg/Carina.ogg
Binary files differ
diff --git a/data/sounds/ringtones/ogg/Cassiopeia.ogg b/data/sounds/ringtones/ogg/Cassiopeia.ogg
index b871940..c8e2fe2 100644
--- a/data/sounds/ringtones/ogg/Cassiopeia.ogg
+++ b/data/sounds/ringtones/ogg/Cassiopeia.ogg
Binary files differ
diff --git a/data/sounds/ringtones/ogg/Sceptrum.ogg b/data/sounds/ringtones/ogg/Sceptrum.ogg
index e94abe0..f2d3ed4 100644
--- a/data/sounds/ringtones/ogg/Sceptrum.ogg
+++ b/data/sounds/ringtones/ogg/Sceptrum.ogg
Binary files differ
diff --git a/data/sounds/ringtones/ogg/Solarium.ogg b/data/sounds/ringtones/ogg/Solarium.ogg
index 8dac71e..8c9d307 100644
--- a/data/sounds/ringtones/ogg/Solarium.ogg
+++ b/data/sounds/ringtones/ogg/Solarium.ogg
Binary files differ
diff --git a/data/sounds/ringtones/ogg/UrsaMinor.ogg b/data/sounds/ringtones/ogg/UrsaMinor.ogg
index a90d1de..30d2cd1 100644
--- a/data/sounds/ringtones/ogg/UrsaMinor.ogg
+++ b/data/sounds/ringtones/ogg/UrsaMinor.ogg
Binary files differ
diff --git a/data/sounds/ringtones/ogg/Vespa.ogg b/data/sounds/ringtones/ogg/Vespa.ogg
index f637831..692a7f9 100644
--- a/data/sounds/ringtones/ogg/Vespa.ogg
+++ b/data/sounds/ringtones/ogg/Vespa.ogg
Binary files differ
diff --git a/docs/html/guide/topics/resources/more-resources.jd b/docs/html/guide/topics/resources/more-resources.jd
index 5f4d5c2..972eab9 100644
--- a/docs/html/guide/topics/resources/more-resources.jd
+++ b/docs/html/guide/topics/resources/more-resources.jd
@@ -698,7 +698,7 @@
 TypedArray icons = res.{@link android.content.res.Resources#obtainTypedArray(int) obtainTypedArray}(R.array.icons);
 Drawable drawable = icons.{@link android.content.res.TypedArray#getDrawable(int) getDrawable}(0);
 
-TypedArray colors = res.{@link android.content.res.Resources#obtainTypedArray(int) obtainTypedArray}(R.array.icons);
+TypedArray colors = res.{@link android.content.res.Resources#obtainTypedArray(int) obtainTypedArray}(R.array.colors);
 int color = colors.{@link android.content.res.TypedArray#getColor(int,int) getColor}(0,0);
 </pre>
 </dd> <!-- end example -->
diff --git a/include/ui/Rect.h b/include/ui/Rect.h
index 4e65a2d..9e98bc5 100644
--- a/include/ui/Rect.h
+++ b/include/ui/Rect.h
@@ -27,7 +27,7 @@
 class Rect : public ARect
 {
 public:
-    typedef int32_t value_type;
+    typedef ARect::value_type value_type;
 
     // we don't provide copy-ctor and operator= on purpose
     // because we want the compiler generated versions
diff --git a/libs/hwui/Rect.h b/libs/hwui/Rect.h
index 71951b7..edc90e1 100644
--- a/libs/hwui/Rect.h
+++ b/libs/hwui/Rect.h
@@ -28,7 +28,19 @@
 // Structs
 ///////////////////////////////////////////////////////////////////////////////
 
-struct Rect {
+class Rect {
+    static inline float min(float a, float b) { return (a<b) ? a : b; }
+    static inline float max(float a, float b) { return (a>b) ? a : b; }
+    Rect intersectWith(float l, float t, float r, float b) const {
+        Rect tmp;
+        tmp.left    = max(left, l);
+        tmp.top     = max(top, t);
+        tmp.right   = min(right, r);
+        tmp.bottom  = min(bottom, b);
+        return tmp;
+    }
+
+public:
     float left;
     float top;
     float right;
@@ -37,6 +49,9 @@
     // Used by Region
     typedef float value_type;
 
+    // we don't provide copy-ctor and operator= on purpose
+    // because we want the compiler generated versions
+
     inline Rect():
             left(0),
             top(0),
@@ -58,24 +73,6 @@
             bottom(height) {
     }
 
-    inline Rect(const Rect& r) {
-        set(r);
-    }
-
-    inline Rect(Rect& r) {
-        set(r);
-    }
-
-    Rect& operator=(const Rect& r) {
-        set(r);
-        return *this;
-    }
-
-    Rect& operator=(Rect& r) {
-        set(r);
-        return *this;
-    }
-
     friend int operator==(const Rect& a, const Rect& b) {
         return !memcmp(&a, &b, sizeof(a));
     }
@@ -89,7 +86,9 @@
     }
 
     inline bool isEmpty() const {
-        return left >= right || top >= bottom;
+        // this is written in such way this it'll handle NANs to return
+        // true (empty)
+        return !((left < right) && (top < bottom));
     }
 
     inline void setEmpty() {
@@ -115,27 +114,18 @@
         return bottom - top;
     }
 
-    bool intersects(float left, float top, float right, float bottom) const {
-        return left < right && top < bottom &&
-                this->left < this->right && this->top < this->bottom &&
-                this->left < right && left < this->right &&
-                this->top < bottom && top < this->bottom;
+    bool intersects(float l, float t, float r, float b) const {
+        return !intersectWith(l,t,r,b).isEmpty();
     }
 
     bool intersects(const Rect& r) const {
         return intersects(r.left, r.top, r.right, r.bottom);
     }
 
-    bool intersect(float left, float top, float right, float bottom) {
-        if (left < right && top < bottom && !this->isEmpty() &&
-                this->left < right && left < this->right &&
-                this->top < bottom && top < this->bottom) {
-
-            if (this->left < left) this->left = left;
-            if (this->top < top) this->top = top;
-            if (this->right > right) this->right = right;
-            if (this->bottom > bottom) this->bottom = bottom;
-
+    bool intersect(float l, float t, float r, float b) {
+        Rect tmp(intersectWith(l,t,r,b));
+        if (!tmp.isEmpty()) {
+            set(tmp);
             return true;
         }
         return false;
@@ -182,7 +172,7 @@
         LOGD("Rect[l=%f t=%f r=%f b=%f]", left, top, right, bottom);
     }
 
-}; // struct Rect
+}; // class Rect
 
 }; // namespace uirenderer
 }; // namespace android
diff --git a/libs/ui/Region.cpp b/libs/ui/Region.cpp
index a060a5f..8dab291 100644
--- a/libs/ui/Region.cpp
+++ b/libs/ui/Region.cpp
@@ -479,6 +479,11 @@
         const Region& lhs,
         const Rect& rhs, int dx, int dy)
 {
+    if (!rhs.isValid()) {
+        LOGE("Region::boolean_operation(op=%d) invalid Rect={%d,%d,%d,%d}",
+                op, rhs.left, rhs.top, rhs.right, rhs.bottom);
+    }
+
 #if VALIDATE_WITH_CORECG || VALIDATE_REGIONS
     boolean_operation(op, dst, lhs, Region(rhs), dx, dy);
 #else
diff --git a/native/include/android/rect.h b/native/include/android/rect.h
index 3e81f53..64d487d 100644
--- a/native/include/android/rect.h
+++ b/native/include/android/rect.h
@@ -23,6 +23,9 @@
 #endif
 
 typedef struct ARect {
+#ifdef __cplusplus
+    typedef int32_t value_type;
+#endif
     int32_t left;
     int32_t top;
     int32_t right;
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
index 5eb3639..54bc4e3 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
@@ -593,7 +593,8 @@
         if (mActivityDescriptions.size() > 0) {
             if (DEBUG) Log.v(TAG, "Showing " + mActivityDescriptions.size() + " apps");
             updateUiElements(getResources().getConfiguration());
-            final ArrayList<ActivityDescription> descriptions = mActivityDescriptions;
+            final ArrayList<ActivityDescription> descriptions =
+                new ArrayList<ActivityDescription>(mActivityDescriptions);
             loadActivityDescription(descriptions.get(0), 0);
             applyActivityDescription(descriptions.get(0), 0, false);
             if (descriptions.size() > 1) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 8a40cec..0dfc4f7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -84,6 +84,7 @@
     int mDataTypeIconId;
     boolean mDataActive;
     int mMobileActivityIconId; // overlay arrows for data direction
+    int mLastSignalLevel;
 
     String mContentDescriptionPhoneSignal;
     String mContentDescriptionWifi;
@@ -283,7 +284,8 @@
         @Override
         public void onSignalStrengthsChanged(SignalStrength signalStrength) {
             if (DEBUG) {
-                Slog.d(TAG, "onSignalStrengthsChanged signalStrength=" + signalStrength);
+                Slog.d(TAG, "onSignalStrengthsChanged signalStrength=" + signalStrength + 
+                    ((signalStrength == null) ? "" : (" level=" + signalStrength.getLevel())));
             }
             mSignalStrength = signalStrength;
             updateTelephonySignalStrength();
@@ -316,16 +318,12 @@
 
         @Override
         public void onDataConnectionStateChanged(int state, int networkType) {
-            if (DEBUG || CHATTY) {
+            if (DEBUG) {
                 Slog.d(TAG, "onDataConnectionStateChanged: state=" + state
                         + " type=" + networkType);
             }
             mDataState = state;
             mDataNetType = networkType;
-            if (state < 0) {
-                // device without a data connection
-                mSignalStrength = null;
-            }
             updateDataNetType();
             updateDataIcon();
             refreshViews();
@@ -391,11 +389,12 @@
 
     private final void updateTelephonySignalStrength() {
         if (!hasService()) {
-            //Slog.d(TAG, "updateTelephonySignalStrength: no service");
+            if (CHATTY) Slog.d(TAG, "updateTelephonySignalStrength: !hasService()");
             mPhoneSignalIconId = R.drawable.stat_sys_signal_0;
             mDataSignalIconId = R.drawable.stat_sys_signal_0;
         } else {
             if (mSignalStrength == null) {
+                if (CHATTY) Slog.d(TAG, "updateTelephonySignalStrength: mSignalStrength == null");
                 mPhoneSignalIconId = R.drawable.stat_sys_signal_0;
                 mDataSignalIconId = R.drawable.stat_sys_signal_0;
                 mContentDescriptionPhoneSignal = mContext.getString(
@@ -403,7 +402,7 @@
             } else {
                 int iconLevel;
                 int[] iconList;
-                iconLevel = mSignalStrength.getLevel();
+                mLastSignalLevel = iconLevel = mSignalStrength.getLevel();
                 if (isCdma()) {
                     if (isCdmaEri()) {
                         iconList = TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[mInetCondition];
@@ -978,8 +977,10 @@
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("Network Controller state:");
+        pw.println("NetworkController state:");
         pw.println("  - telephony ------");
+        pw.print("  hasService()=");
+        pw.println(hasService());
         pw.print("  mHspaDataDistinguishable=");
         pw.println(mHspaDataDistinguishable);
         pw.print("  mDataConnected=");
@@ -998,6 +999,10 @@
         pw.println(TelephonyManager.getNetworkTypeName(mDataNetType));
         pw.print("  mServiceState=");
         pw.println(mServiceState);
+        pw.print("  mSignalStrength=");
+        pw.println(mSignalStrength);
+        pw.print("  mLastSignalLevel=");
+        pw.println(mLastSignalLevel);
         pw.print("  mNetworkName=");
         pw.println(mNetworkName);
         pw.print("  mNetworkNameDefault=");
@@ -1037,7 +1042,7 @@
 
 
         pw.println("  - Bluetooth ----");
-        pw.print(" mBtReverseTethered=");
+        pw.print("  mBtReverseTethered=");
         pw.println(mBluetoothTethered);
 
         pw.println("  - connectivity ------");
@@ -1071,6 +1076,7 @@
         pw.println(getResourceName(mLastCombinedSignalIconId));
         pw.print("  mLastLabel=");
         pw.print(mLastLabel);
+        pw.println("");
     }
 
     private String getResourceName(int resId) {
diff --git a/policy/src/com/android/internal/policy/impl/GlobalActions.java b/policy/src/com/android/internal/policy/impl/GlobalActions.java
index ec31028..8569143 100644
--- a/policy/src/com/android/internal/policy/impl/GlobalActions.java
+++ b/policy/src/com/android/internal/policy/impl/GlobalActions.java
@@ -118,18 +118,18 @@
      */
     private AlertDialog createDialog() {
         mSilentModeToggle = new ToggleAction(
-                R.drawable.ic_lock_silent_mode,
-                R.drawable.ic_lock_silent_mode_off,
+                R.drawable.ic_audio_vol_mute,
+                R.drawable.ic_audio_vol,
                 R.string.global_action_toggle_silent_mode,
                 R.string.global_action_silent_mode_on_status,
                 R.string.global_action_silent_mode_off_status) {
 
             void willCreate() {
-                // XXX: FIXME: switch to ic_lock_vibrate_mode when available
+                // XXX: FIXME: Add vibrate indicator when available
                 mEnabledIconResId = (Settings.System.getInt(mContext.getContentResolver(),
                         Settings.System.VIBRATE_IN_SILENT, 1) == 1)
-                    ? R.drawable.ic_lock_silent_mode_vibrate
-                    : R.drawable.ic_lock_silent_mode;
+                    ? R.drawable.ic_audio_vol_mute
+                    : R.drawable.ic_audio_vol_mute;
             }
 
             void onToggle(boolean on) {
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index e0a2adc..8b58d42 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -319,7 +319,7 @@
             String id = Settings.Secure.getString(context.getContentResolver(),
                     Settings.Secure.ANDROID_ID);
             if (id != null && id.length() > 0) {
-                String name = new String("android_").concat(id);
+                String name = new String("android-").concat(id);
                 SystemProperties.set("net.hostname", name);
             }
         }