summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.xml30
-rw-r--r--core/java/android/webkit/ZoomManager.java10
-rw-r--r--core/java/android/widget/FastScroller.java2
-rw-r--r--core/java/com/android/internal/app/AlertController.java14
-rw-r--r--core/res/res/anim/animator_fade_in.xml26
-rw-r--r--core/res/res/anim/animator_fade_out.xml26
-rw-r--r--core/res/res/anim/fragment_close_enter.xml39
-rw-r--r--core/res/res/anim/fragment_close_exit.xml39
-rw-r--r--core/res/res/anim/fragment_next_enter.xml28
-rw-r--r--core/res/res/anim/fragment_next_exit.xml28
-rw-r--r--core/res/res/anim/fragment_open_enter.xml38
-rw-r--r--core/res/res/anim/fragment_open_exit.xml38
-rw-r--r--core/res/res/anim/fragment_prev_enter.xml28
-rw-r--r--core/res/res/anim/fragment_prev_exit.xml28
-rw-r--r--core/res/res/animator/fade_in.xml2
-rw-r--r--core/res/res/animator/fade_out.xml2
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_off.pngbin1693 -> 1332 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_off_disable.pngbin1170 -> 1309 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_off_disable_focused.pngbin1568 -> 1429 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_off_pressed.pngbin2413 -> 3135 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_off_selected.pngbin2378 -> 3337 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_on.pngbin2115 -> 2556 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_on_disable.pngbin1417 -> 2018 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_on_disable_focused.pngbin1788 -> 2100 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_on_pressed.pngbin2586 -> 3603 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_check_on_selected.pngbin2546 -> 3764 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_circle_disable.pngbin1447 -> 2727 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_circle_disable_focused.pngbin2559 -> 2330 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_circle_normal.pngbin1960 -> 2824 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_circle_pressed.pngbin2634 -> 4396 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_circle_selected.pngbin2654 -> 4463 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_close_normal.pngbin1884 -> 2220 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_close_pressed.pngbin2737 -> 2831 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_close_selected.pngbin2807 -> 3043 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_normal.9.pngbin962 -> 1854 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_normal_disable.9.pngbin567 -> 3601 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.pngbin892 -> 1781 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_pressed.9.pngbin1469 -> 1913 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_selected.9.pngbin1512 -> 1507 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_small_normal.9.pngbin894 -> 1698 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.pngbin541 -> 1649 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.pngbin830 -> 1720 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_small_pressed.9.pngbin1301 -> 1508 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_default_small_selected.9.pngbin1323 -> 1439 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_dropdown_disabled.9.pngbin1374 -> 3406 bytes
-rw-r--r--core/res/res/drawable-hdpi/btn_dropdown_disabled_focused.9.pngbin1775 -> 3483 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_dropdown_normal.9.pngbin1840 -> 2652 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_dropdown_pressed.9.pngbin3199 -> 7337 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/btn_dropdown_selected.9.pngbin3231 -> 8223 bytes
-rw-r--r--core/res/res/drawable-hdpi/dialog_full_holo_dark.9.pngbin9201 -> 7891 bytes
-rw-r--r--core/res/res/drawable-hdpi/dialog_full_holo_light.9.pngbin8827 -> 6865 bytes
-rw-r--r--core/res/res/drawable-hdpi/expander_ic_maximized.9.pngbin2534 -> 2955 bytes
-rw-r--r--core/res/res/drawable-hdpi/expander_ic_minimized.9.pngbin2505 -> 2993 bytes
-rw-r--r--core/res/res/drawable-hdpi/ic_menu_help.pngbin3926 -> 971 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/list_selector_background_disabled.9.pngbin597 -> 537 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/list_selector_background_focus.9.pngbin1943 -> 6207 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/list_selector_background_longpress.9.pngbin374 -> 2311 bytes
-rwxr-xr-x[-rw-r--r--]core/res/res/drawable-hdpi/list_selector_background_pressed.9.pngbin402 -> 5453 bytes
-rw-r--r--core/res/res/drawable-hdpi/menu_background.9.pngbin227 -> 199 bytes
-rw-r--r--core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.pngbin2888 -> 203 bytes
-rw-r--r--core/res/res/drawable-hdpi/panel_background.9.pngbin2135 -> 2066 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_bottom_bright.9.pngbin1231 -> 1670 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_bottom_dark.9.pngbin1336 -> 1681 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_bottom_medium.9.pngbin1329 -> 3485 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_center_bright.9.pngbin240 -> 1110 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_center_dark.9.pngbin255 -> 253 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_center_medium.9.pngbin156 -> 2912 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_full_bright.9.pngbin2009 -> 2039 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_full_dark.9.pngbin2218 -> 1939 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_top_bright.9.pngbin1192 -> 1588 bytes
-rw-r--r--core/res/res/drawable-hdpi/popup_top_dark.9.pngbin1339 -> 1595 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off.pngbin1172 -> 529 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_disable.pngbin903 -> 518 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_disable_focused.pngbin1073 -> 694 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_pressed.pngbin1630 -> 1372 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_off_selected.pngbin1598 -> 1460 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on.pngbin1390 -> 1519 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_disable.pngbin973 -> 874 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_disable_focused.pngbin1138 -> 1303 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_pressed.pngbin1680 -> 1646 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_check_on_selected.pngbin1661 -> 1724 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_circle_disable.pngbin938 -> 1757 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_circle_disable_focused.pngbin1436 -> 1558 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_circle_normal.pngbin1249 -> 1874 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_circle_pressed.pngbin1613 -> 2245 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_circle_selected.pngbin1645 -> 2294 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_close_normal.pngbin1259 -> 1258 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_close_pressed.pngbin1726 -> 1333 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_close_selected.pngbin1716 -> 1387 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_normal.9.pngbin763 -> 683 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_normal_disable.9.pngbin474 -> 663 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.pngbin673 -> 713 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_pressed.9.pngbin1083 -> 713 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_selected.9.pngbin1099 -> 504 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_small_normal.9.pngbin679 -> 1508 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.pngbin456 -> 1487 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.pngbin648 -> 1506 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_small_pressed.9.pngbin936 -> 1413 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_default_small_selected.9.pngbin964 -> 1391 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_dropdown_disabled.9.pngbin901 -> 1819 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_dropdown_disabled_focused.9.pngbin1118 -> 1951 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_dropdown_normal.9.pngbin1290 -> 2144 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_dropdown_pressed.9.pngbin2025 -> 4180 bytes
-rw-r--r--core/res/res/drawable-mdpi/btn_dropdown_selected.9.pngbin2014 -> 4630 bytes
-rw-r--r--core/res/res/drawable-mdpi/dialog_full_holo_dark.9.pngbin5278 -> 4557 bytes
-rw-r--r--core/res/res/drawable-mdpi/dialog_full_holo_light.9.pngbin4995 -> 4032 bytes
-rw-r--r--core/res/res/drawable-mdpi/expander_ic_maximized.9.pngbin1150 -> 1929 bytes
-rw-r--r--core/res/res/drawable-mdpi/expander_ic_minimized.9.pngbin1167 -> 1982 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_bullet_key_permission.pngbin597 -> 885 bytes
-rw-r--r--core/res/res/drawable-mdpi/ic_menu_help.pngbin5304 -> 721 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_selector_background_disabled.9.pngbin449 -> 213 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_selector_background_focus.9.pngbin1760 -> 2553 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_selector_background_longpress.9.pngbin266 -> 1051 bytes
-rw-r--r--core/res/res/drawable-mdpi/list_selector_background_pressed.9.pngbin275 -> 2230 bytes
-rw-r--r--core/res/res/drawable-mdpi/menu_background.9.pngbin359 -> 186 bytes
-rw-r--r--core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.pngbin247 -> 167 bytes
-rw-r--r--core/res/res/drawable-mdpi/panel_background.9.pngbin1332 -> 1610 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_bottom_bright.9.pngbin881 -> 1515 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_bottom_dark.9.pngbin975 -> 1498 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-mdpi/popup_bottom_medium.9.pngbin960 -> 3307 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_center_bright.9.pngbin196 -> 1096 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_center_dark.9.pngbin209 -> 211 bytes
-rw-r--r--[-rwxr-xr-x]core/res/res/drawable-mdpi/popup_center_medium.9.pngbin148 -> 2896 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_full_bright.9.pngbin1251 -> 1663 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_full_dark.9.pngbin1332 -> 1631 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_top_bright.9.pngbin701 -> 1496 bytes
-rw-r--r--core/res/res/drawable-mdpi/popup_top_dark.9.pngbin815 -> 1650 bytes
-rw-r--r--core/res/res/layout-xlarge/alert_dialog_holo.xml13
-rw-r--r--core/res/res/layout/alert_dialog_holo.xml13
-rw-r--r--core/res/res/layout/dialog_custom_title_holo.xml43
-rw-r--r--core/res/res/layout/dialog_title_holo.xml50
-rw-r--r--core/res/res/layout/dialog_title_icons_holo.xml69
-rw-r--r--core/res/res/values-es-rUS-xlarge/strings.xml2
-rwxr-xr-xcore/res/res/values/attrs.xml6
-rw-r--r--core/res/res/values/colors.xml4
-rw-r--r--core/res/res/values/public.xml3
-rw-r--r--core/res/res/values/styles.xml22
-rw-r--r--core/res/res/values/themes.xml9
-rw-r--r--data/fonts/AndroidClock.ttfbin3004 -> 2400 bytes
-rw-r--r--data/fonts/AndroidClock_Highlight.ttfbin2872 -> 2420 bytes
-rw-r--r--libs/hwui/PathCache.cpp14
-rw-r--r--media/java/android/media/MediaPlayer.java6
-rw-r--r--media/libmedia/mediaplayer.cpp4
-rw-r--r--media/libstagefright/AwesomePlayer.cpp38
-rw-r--r--media/libstagefright/NuCachedSource2.cpp4
-rw-r--r--media/libstagefright/include/AwesomePlayer.h4
-rw-r--r--media/libstagefright/include/NuCachedSource2.h4
-rw-r--r--media/libstagefright/matroska/MatroskaExtractor.cpp334
-rw-r--r--media/libstagefright/matroska/mkvparser.cpp3
-rw-r--r--media/libstagefright/matroska/mkvparser.hpp2
-rw-r--r--packages/SystemUI/res/layout-xlarge/status_bar.xml6
-rw-r--r--packages/SystemUI/res/values/strings.xml2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java43
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/HeightReceiver.java103
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java40
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindow.java15
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java33
-rw-r--r--services/java/com/android/server/WifiService.java4
-rw-r--r--tests/appwidgets/AppWidgetHostTest/src/com/android/tests/appwidgethost/AppWidgetHostActivity.java16
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/BitmapFactory.java3
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java6
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java117
-rw-r--r--tools/layoutlib/bridge/src/com/android/internal/util/XmlUtils_Delegate.java70
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java12
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java1
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeRenderSession.java4
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java5
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeInflater.java6
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java20
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java4
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java12
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/ResourceHelper.java19
-rw-r--r--tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java1
-rw-r--r--wifi/java/android/net/wifi/SupplicantStateTracker.java13
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java20
178 files changed, 1068 insertions, 550 deletions
diff --git a/api/current.xml b/api/current.xml
index f80701b0385a..8b0c5559cb33 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -1475,7 +1475,7 @@
type="int"
transient="false"
volatile="false"
- value="17432591"
+ value="17432589"
static="true"
final="true"
deprecated="not deprecated"
@@ -1508,29 +1508,7 @@
type="int"
transient="false"
volatile="false"
- value="17432593"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="animator_fade_in"
- type="int"
- transient="false"
- volatile="false"
- value="17432589"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
-<field name="animator_fade_out"
- type="int"
- transient="false"
- volatile="false"
- value="17432590"
+ value="17432591"
static="true"
final="true"
deprecated="not deprecated"
@@ -1585,7 +1563,7 @@
type="int"
transient="false"
volatile="false"
- value="17432592"
+ value="17432590"
static="true"
final="true"
deprecated="not deprecated"
@@ -1607,7 +1585,7 @@
type="int"
transient="false"
volatile="false"
- value="17432594"
+ value="17432592"
static="true"
final="true"
deprecated="not deprecated"
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index 2fd5bb11b864..b4a33de232c3 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -150,6 +150,12 @@ class ZoomManager {
private static float MINIMUM_SCALE_INCREMENT = 0.01f;
/*
+ * The touch points could be changed even the fingers stop moving.
+ * We use the following to filter out the zooming jitters.
+ */
+ private static float MINIMUM_SCALE_WITHOUT_JITTER = 0.05f;
+
+ /*
* The following member variables are only to be used for animating zoom. If
* mZoomScale is non-zero then we are in the middle of a zoom animation. The
* other variables are used as a cache (e.g. inverse) or as a way to store
@@ -684,6 +690,10 @@ class ZoomManager {
} else {
scale = Math.max(scale, mActualScale * 0.8f);
}
+ // if the scale change is too small, regard it as jitter and skip it.
+ if (Math.abs(scale - mActualScale) < MINIMUM_SCALE_WITHOUT_JITTER) {
+ return false;
+ }
setZoomCenter(detector.getFocusX(), detector.getFocusY());
setZoomScale(scale, false);
mWebView.invalidate();
diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java
index c06fe64538fa..d4ef044c6a18 100644
--- a/core/java/android/widget/FastScroller.java
+++ b/core/java/android/widget/FastScroller.java
@@ -606,7 +606,7 @@ class FastScroller {
final int positionsInSection = nextSectionPos - sectionPos;
final View child = mList.getChildAt(0);
- final float incrementalPos = firstVisibleItem +
+ final float incrementalPos = child == null ? 0 : firstVisibleItem +
(float) (mList.getPaddingTop() - child.getTop()) / child.getHeight();
final float posWithinSection = (incrementalPos - sectionPos) / positionsInSection;
int result = (int) ((section + posWithinSection) / sectionCount * trackHeight);
diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java
index e38432071c67..a139d31faed3 100644
--- a/core/java/com/android/internal/app/AlertController.java
+++ b/core/java/com/android/internal/app/AlertController.java
@@ -412,9 +412,17 @@ public class AlertController {
/* Only display the divider if we have a title and a
* custom view or a message.
*/
- if (hasTitle && ((mMessage != null) || (mView != null))) {
- View divider = mWindow.findViewById(R.id.titleDivider);
- divider.setVisibility(View.VISIBLE);
+ if (hasTitle) {
+ View divider = null;
+ if (mMessage != null || mView != null || mListView != null) {
+ divider = mWindow.findViewById(R.id.titleDivider);
+ } else {
+ divider = mWindow.findViewById(R.id.titleDividerTop);
+ }
+
+ if (divider != null) {
+ divider.setVisibility(View.VISIBLE);
+ }
}
setBackground(topPanel, contentPanel, customPanel, hasButtons, a, hasTitle, buttonPanel);
diff --git a/core/res/res/anim/animator_fade_in.xml b/core/res/res/anim/animator_fade_in.xml
deleted file mode 100644
index cff98cf1dfb9..000000000000
--- a/core/res/res/anim/animator_fade_in.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@interpolator/accelerate_quad"
- android:valueFrom="0"
- android:valueTo="1"
- android:propertyName="alpha"
- android:duration="@android:integer/config_mediumAnimTime"
-/>
diff --git a/core/res/res/anim/animator_fade_out.xml b/core/res/res/anim/animator_fade_out.xml
deleted file mode 100644
index 6a3d5eee4691..000000000000
--- a/core/res/res/anim/animator_fade_out.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@interpolator/accelerate_quad"
- android:valueFrom="1.0"
- android:valueTo="0.0"
- android:propertyName="alpha"
- android:duration="@android:integer/config_mediumAnimTime"
-/>
diff --git a/core/res/res/anim/fragment_close_enter.xml b/core/res/res/anim/fragment_close_enter.xml
deleted file mode 100644
index c0abbc599e54..000000000000
--- a/core/res/res/anim/fragment_close_enter.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:zAdjustment="normal">
- <objectAnimator
- android:interpolator="@interpolator/decelerate_quint"
- android:valueFrom="0.975" android:valueTo="1.0"
- android:valueType="floatType"
- android:propertyName="scaleY"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/decelerate_quint"
- android:valueFrom="0.975" android:valueTo="1.0"
- android:valueType="floatType"
- android:propertyName="scaleX"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="0.0" android:valueTo="1.0"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityDefaultDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/anim/fragment_close_exit.xml b/core/res/res/anim/fragment_close_exit.xml
deleted file mode 100644
index 9a5708c578c1..000000000000
--- a/core/res/res/anim/fragment_close_exit.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:zAdjustment="top">
- <objectAnimator
- android:interpolator="@interpolator/decelerate_quint"
- android:valueFrom="1.0" android:valueTo="1.075"
- android:valueType="floatType"
- android:propertyName="scaleY"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/decelerate_quint"
- android:valueFrom="1.0" android:valueTo="1.075"
- android:valueType="floatType"
- android:propertyName="scaleX"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="1.0" android:valueTo="0.0"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityDefaultDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/anim/fragment_next_enter.xml b/core/res/res/anim/fragment_next_enter.xml
deleted file mode 100644
index 13b15f318e46..000000000000
--- a/core/res/res/anim/fragment_next_enter.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:zAdjustment="top">
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="0"
- android:valueTo="1"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityDefaultDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/anim/fragment_next_exit.xml b/core/res/res/anim/fragment_next_exit.xml
deleted file mode 100644
index 503b7ad2338a..000000000000
--- a/core/res/res/anim/fragment_next_exit.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:zAdjustment="normal">
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="1"
- android:valueTo="0"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityShortDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/anim/fragment_open_enter.xml b/core/res/res/anim/fragment_open_enter.xml
deleted file mode 100644
index 6b16cb43400c..000000000000
--- a/core/res/res/anim/fragment_open_enter.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android">
- <objectAnimator
- android:interpolator="@interpolator/decelerate_quint"
- android:valueFrom="1.125" android:valueTo="1.0"
- android:valueType="floatType"
- android:propertyName="scaleY"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/decelerate_quint"
- android:valueFrom="1.125" android:valueTo="1.0"
- android:valueType="floatType"
- android:propertyName="scaleX"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="0.0" android:valueTo="1.0"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityDefaultDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/anim/fragment_open_exit.xml b/core/res/res/anim/fragment_open_exit.xml
deleted file mode 100644
index d77ee8ee5efb..000000000000
--- a/core/res/res/anim/fragment_open_exit.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android">
- <objectAnimator
- android:interpolator="@interpolator/linear"
- android:valueFrom="1.0" android:valueTo="0.975"
- android:valueType="floatType"
- android:propertyName="scaleY"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/linear"
- android:valueFrom="1.0" android:valueTo="0.975"
- android:valueType="floatType"
- android:propertyName="scaleX"
- android:duration="@android:integer/config_activityDefaultDur"/>
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="1.0" android:valueTo="0.0"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityDefaultDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/anim/fragment_prev_enter.xml b/core/res/res/anim/fragment_prev_enter.xml
deleted file mode 100644
index 13b15f318e46..000000000000
--- a/core/res/res/anim/fragment_prev_enter.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:zAdjustment="top">
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="0"
- android:valueTo="1"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityDefaultDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/anim/fragment_prev_exit.xml b/core/res/res/anim/fragment_prev_exit.xml
deleted file mode 100644
index 503b7ad2338a..000000000000
--- a/core/res/res/anim/fragment_prev_exit.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:zAdjustment="normal">
- <objectAnimator
- android:interpolator="@interpolator/decelerate_cubic"
- android:valueFrom="1"
- android:valueTo="0"
- android:valueType="floatType"
- android:propertyName="alpha"
- android:duration="@android:integer/config_activityShortDur"/>
-</set> \ No newline at end of file
diff --git a/core/res/res/animator/fade_in.xml b/core/res/res/animator/fade_in.xml
index 2a28b4d541ec..cff98cf1dfb9 100644
--- a/core/res/res/animator/fade_in.xml
+++ b/core/res/res/animator/fade_in.xml
@@ -18,7 +18,7 @@
-->
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@anim/accelerate_interpolator"
+ android:interpolator="@interpolator/accelerate_quad"
android:valueFrom="0"
android:valueTo="1"
android:propertyName="alpha"
diff --git a/core/res/res/animator/fade_out.xml b/core/res/res/animator/fade_out.xml
index 4db6591f189b..6a3d5eee4691 100644
--- a/core/res/res/animator/fade_out.xml
+++ b/core/res/res/animator/fade_out.xml
@@ -18,7 +18,7 @@
-->
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@anim/accelerate_interpolator"
+ android:interpolator="@interpolator/accelerate_quad"
android:valueFrom="1.0"
android:valueTo="0.0"
android:propertyName="alpha"
diff --git a/core/res/res/drawable-hdpi/btn_check_off.png b/core/res/res/drawable-hdpi/btn_check_off.png
index aad9ef7800fd..bb62e6fd9f08 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_off.png
+++ b/core/res/res/drawable-hdpi/btn_check_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disable.png b/core/res/res/drawable-hdpi/btn_check_off_disable.png
index eaee9e0bec4d..b346381b4b78 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_off_disable.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png b/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png
index 6d2c2938a5a5..8663369cfa48 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed.png b/core/res/res/drawable-hdpi/btn_check_off_pressed.png
index 1c442e9b45b9..67e49dffbdce 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_off_pressed.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_selected.png b/core/res/res/drawable-hdpi/btn_check_off_selected.png
index b852b2cb2f06..1791d1f86618 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_off_selected.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on.png b/core/res/res/drawable-hdpi/btn_check_on.png
index cd5c1814344a..15cd25ee582f 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_on.png
+++ b/core/res/res/drawable-hdpi/btn_check_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disable.png b/core/res/res/drawable-hdpi/btn_check_on_disable.png
index b4fc51a1bf34..e3fe32303cd8 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_on_disable.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png b/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png
index bf346471edd5..fa41bb7ce54a 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed.png b/core/res/res/drawable-hdpi/btn_check_on_pressed.png
index fa5c7a23d932..906e283d29ad 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_on_pressed.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_selected.png b/core/res/res/drawable-hdpi/btn_check_on_selected.png
index a6a21adc1e02..eb496a8dbd65 100644..100755
--- a/core/res/res/drawable-hdpi/btn_check_on_selected.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_disable.png b/core/res/res/drawable-hdpi/btn_circle_disable.png
index d829716f89db..39652a855800 100644..100755
--- a/core/res/res/drawable-hdpi/btn_circle_disable.png
+++ b/core/res/res/drawable-hdpi/btn_circle_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_disable_focused.png b/core/res/res/drawable-hdpi/btn_circle_disable_focused.png
index c1b5b6e4091b..1aa7ffe69b11 100644..100755
--- a/core/res/res/drawable-hdpi/btn_circle_disable_focused.png
+++ b/core/res/res/drawable-hdpi/btn_circle_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_normal.png b/core/res/res/drawable-hdpi/btn_circle_normal.png
index bf3fb5a05626..6011219dc7a7 100644..100755
--- a/core/res/res/drawable-hdpi/btn_circle_normal.png
+++ b/core/res/res/drawable-hdpi/btn_circle_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_pressed.png b/core/res/res/drawable-hdpi/btn_circle_pressed.png
index 50e22e610490..4942e50d8219 100644..100755
--- a/core/res/res/drawable-hdpi/btn_circle_pressed.png
+++ b/core/res/res/drawable-hdpi/btn_circle_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_selected.png b/core/res/res/drawable-hdpi/btn_circle_selected.png
index cfc68fb62ba0..fe49a4040def 100644..100755
--- a/core/res/res/drawable-hdpi/btn_circle_selected.png
+++ b/core/res/res/drawable-hdpi/btn_circle_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_close_normal.png b/core/res/res/drawable-hdpi/btn_close_normal.png
index 38b49f1a392c..47f11e5bf67f 100644..100755
--- a/core/res/res/drawable-hdpi/btn_close_normal.png
+++ b/core/res/res/drawable-hdpi/btn_close_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_close_pressed.png b/core/res/res/drawable-hdpi/btn_close_pressed.png
index aa9ea49f00c5..5b96b4e091be 100644..100755
--- a/core/res/res/drawable-hdpi/btn_close_pressed.png
+++ b/core/res/res/drawable-hdpi/btn_close_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_close_selected.png b/core/res/res/drawable-hdpi/btn_close_selected.png
index 870c670f7236..e27d6847e784 100644..100755
--- a/core/res/res/drawable-hdpi/btn_close_selected.png
+++ b/core/res/res/drawable-hdpi/btn_close_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal.9.png b/core/res/res/drawable-hdpi/btn_default_normal.9.png
index 329ce6e331d2..803651bcd4ee 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_normal.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png b/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png
index a518c6bcec68..f4f01c754628 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png b/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png
index 71a05b75e55e..5376db245791 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_pressed.9.png b/core/res/res/drawable-hdpi/btn_default_pressed.9.png
index d9d02bf81998..4312c27f4d6d 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_pressed.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_selected.9.png b/core/res/res/drawable-hdpi/btn_default_selected.9.png
index ab7c6124c967..06b7790ffcab 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_selected.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal.9.png
index baafed647bc7..6d3ea9a24639 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_small_normal.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png
index 175197bb2ec7..2646ba03f6b8 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png
index ec1feff39597..013210c35980 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png b/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png
index c1f9a0f20113..24cefd4a44d6 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_selected.9.png b/core/res/res/drawable-hdpi/btn_default_small_selected.9.png
index 0ea3f4050cca..bedbceb08d90 100644..100755
--- a/core/res/res/drawable-hdpi/btn_default_small_selected.9.png
+++ b/core/res/res/drawable-hdpi/btn_default_small_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_disabled.9.png b/core/res/res/drawable-hdpi/btn_dropdown_disabled.9.png
index c6503c7cc131..0d25b6e196c3 100644
--- a/core/res/res/drawable-hdpi/btn_dropdown_disabled.9.png
+++ b/core/res/res/drawable-hdpi/btn_dropdown_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_disabled_focused.9.png b/core/res/res/drawable-hdpi/btn_dropdown_disabled_focused.9.png
index 152de8b54440..e21fd75fdd01 100644
--- a/core/res/res/drawable-hdpi/btn_dropdown_disabled_focused.9.png
+++ b/core/res/res/drawable-hdpi/btn_dropdown_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png b/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png
index 9392495ce94b..f10402fd4df2 100644..100755
--- a/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png
+++ b/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png b/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png
index beaba45415b5..366c6e0b8786 100644..100755
--- a/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png
+++ b/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png b/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png
index ec51fc9e019d..f063c8d27184 100644..100755
--- a/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png
+++ b/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/dialog_full_holo_dark.9.png b/core/res/res/drawable-hdpi/dialog_full_holo_dark.9.png
index f0b204179a56..3b9e0cfd2090 100644
--- a/core/res/res/drawable-hdpi/dialog_full_holo_dark.9.png
+++ b/core/res/res/drawable-hdpi/dialog_full_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/dialog_full_holo_light.9.png b/core/res/res/drawable-hdpi/dialog_full_holo_light.9.png
index 5b93be7098ee..0665b08feba7 100644
--- a/core/res/res/drawable-hdpi/dialog_full_holo_light.9.png
+++ b/core/res/res/drawable-hdpi/dialog_full_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_ic_maximized.9.png b/core/res/res/drawable-hdpi/expander_ic_maximized.9.png
index 04943aa7f390..2ec27afa7725 100644
--- a/core/res/res/drawable-hdpi/expander_ic_maximized.9.png
+++ b/core/res/res/drawable-hdpi/expander_ic_maximized.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_ic_minimized.9.png b/core/res/res/drawable-hdpi/expander_ic_minimized.9.png
index 7bddbcef5dbd..0c19bb782a60 100644
--- a/core/res/res/drawable-hdpi/expander_ic_minimized.9.png
+++ b/core/res/res/drawable-hdpi/expander_ic_minimized.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_help.png b/core/res/res/drawable-hdpi/ic_menu_help.png
index 4300e86f0390..01a77da43c22 100644
--- a/core/res/res/drawable-hdpi/ic_menu_help.png
+++ b/core/res/res/drawable-hdpi/ic_menu_help.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png b/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png
index ab377d8f0377..9e1c42a675ba 100644..100755
--- a/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png
+++ b/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_focus.9.png b/core/res/res/drawable-hdpi/list_selector_background_focus.9.png
index 94a9fbad8129..5563c80d1e98 100644..100755
--- a/core/res/res/drawable-hdpi/list_selector_background_focus.9.png
+++ b/core/res/res/drawable-hdpi/list_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png b/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png
index bd74426710b7..72d3a08484f9 100644..100755
--- a/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png
+++ b/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png b/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png
index d18d6f76d802..7568b30c22e2 100644..100755
--- a/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png
+++ b/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_background.9.png b/core/res/res/drawable-hdpi/menu_background.9.png
index 60f073192d1f..f4c9e08c6a43 100644
--- a/core/res/res/drawable-hdpi/menu_background.9.png
+++ b/core/res/res/drawable-hdpi/menu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png b/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png
index 09eac9b4895f..a3cec110ef42 100644
--- a/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png
+++ b/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_background.9.png b/core/res/res/drawable-hdpi/panel_background.9.png
index bfe57136f063..03175d44f0c0 100644
--- a/core/res/res/drawable-hdpi/panel_background.9.png
+++ b/core/res/res/drawable-hdpi/panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_bright.9.png b/core/res/res/drawable-hdpi/popup_bottom_bright.9.png
index cca47d384f02..6e5fbb5ab262 100644
--- a/core/res/res/drawable-hdpi/popup_bottom_bright.9.png
+++ b/core/res/res/drawable-hdpi/popup_bottom_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_dark.9.png b/core/res/res/drawable-hdpi/popup_bottom_dark.9.png
index 62a0bd0b27e1..3434b2dc35a9 100644
--- a/core/res/res/drawable-hdpi/popup_bottom_dark.9.png
+++ b/core/res/res/drawable-hdpi/popup_bottom_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_medium.9.png b/core/res/res/drawable-hdpi/popup_bottom_medium.9.png
index 6ebb4f759fbb..673a5095c44a 100644
--- a/core/res/res/drawable-hdpi/popup_bottom_medium.9.png
+++ b/core/res/res/drawable-hdpi/popup_bottom_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_bright.9.png b/core/res/res/drawable-hdpi/popup_center_bright.9.png
index 756e9edc7e96..c2a739c42a8d 100644
--- a/core/res/res/drawable-hdpi/popup_center_bright.9.png
+++ b/core/res/res/drawable-hdpi/popup_center_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_dark.9.png b/core/res/res/drawable-hdpi/popup_center_dark.9.png
index 77b4524c1d84..9d2bfb155d80 100644
--- a/core/res/res/drawable-hdpi/popup_center_dark.9.png
+++ b/core/res/res/drawable-hdpi/popup_center_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_medium.9.png b/core/res/res/drawable-hdpi/popup_center_medium.9.png
index de4be2a54a85..4375bf2d6b27 100644
--- a/core/res/res/drawable-hdpi/popup_center_medium.9.png
+++ b/core/res/res/drawable-hdpi/popup_center_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_full_bright.9.png b/core/res/res/drawable-hdpi/popup_full_bright.9.png
index 6c30bec0a5c3..6b8aa9d521be 100644
--- a/core/res/res/drawable-hdpi/popup_full_bright.9.png
+++ b/core/res/res/drawable-hdpi/popup_full_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_full_dark.9.png b/core/res/res/drawable-hdpi/popup_full_dark.9.png
index fc8c00e7be1f..2884abeabe18 100644
--- a/core/res/res/drawable-hdpi/popup_full_dark.9.png
+++ b/core/res/res/drawable-hdpi/popup_full_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_top_bright.9.png b/core/res/res/drawable-hdpi/popup_top_bright.9.png
index ddd30ab5b3ec..76c35ec9e81b 100644
--- a/core/res/res/drawable-hdpi/popup_top_bright.9.png
+++ b/core/res/res/drawable-hdpi/popup_top_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_top_dark.9.png b/core/res/res/drawable-hdpi/popup_top_dark.9.png
index 144d0fc6d619..f3173301c22f 100644
--- a/core/res/res/drawable-hdpi/popup_top_dark.9.png
+++ b/core/res/res/drawable-hdpi/popup_top_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off.png b/core/res/res/drawable-mdpi/btn_check_off.png
index 56d3861542ea..251ddff37b1a 100644
--- a/core/res/res/drawable-mdpi/btn_check_off.png
+++ b/core/res/res/drawable-mdpi/btn_check_off.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disable.png b/core/res/res/drawable-mdpi/btn_check_off_disable.png
index e012afd28ddd..45e6804ed7f5 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disable.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disable_focused.png b/core/res/res/drawable-mdpi/btn_check_off_disable_focused.png
index 0837bbdb89f7..193acd2f37b3 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disable_focused.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_pressed.png b/core/res/res/drawable-mdpi/btn_check_off_pressed.png
index 984dfd750d30..807901c772c3 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_pressed.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_selected.png b/core/res/res/drawable-mdpi/btn_check_off_selected.png
index 20842d41c8f1..dbc3bebafcc7 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_selected.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on.png b/core/res/res/drawable-mdpi/btn_check_on.png
index 791ac1d92c32..4c83e2eb4af0 100644
--- a/core/res/res/drawable-mdpi/btn_check_on.png
+++ b/core/res/res/drawable-mdpi/btn_check_on.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disable.png b/core/res/res/drawable-mdpi/btn_check_on_disable.png
index 6cb02f3e4674..f1bf17844cef 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disable.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disable_focused.png b/core/res/res/drawable-mdpi/btn_check_on_disable_focused.png
index 8a73b33f0df5..ea232eed8261 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disable_focused.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_pressed.png b/core/res/res/drawable-mdpi/btn_check_on_pressed.png
index 300d64afecb9..0de8a4c50ced 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_pressed.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_selected.png b/core/res/res/drawable-mdpi/btn_check_on_selected.png
index 0b36adbe2712..20294f3e7443 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_selected.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_circle_disable.png b/core/res/res/drawable-mdpi/btn_circle_disable.png
index 33b74a66c07f..29e227c989e9 100644
--- a/core/res/res/drawable-mdpi/btn_circle_disable.png
+++ b/core/res/res/drawable-mdpi/btn_circle_disable.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_circle_disable_focused.png b/core/res/res/drawable-mdpi/btn_circle_disable_focused.png
index 005ad8dcaeae..c5aa3c5618b2 100644
--- a/core/res/res/drawable-mdpi/btn_circle_disable_focused.png
+++ b/core/res/res/drawable-mdpi/btn_circle_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_circle_normal.png b/core/res/res/drawable-mdpi/btn_circle_normal.png
index fc5af1c9fc50..6358351352b7 100644
--- a/core/res/res/drawable-mdpi/btn_circle_normal.png
+++ b/core/res/res/drawable-mdpi/btn_circle_normal.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_circle_pressed.png b/core/res/res/drawable-mdpi/btn_circle_pressed.png
index 8f40afdfcb30..dc07a61630c3 100644
--- a/core/res/res/drawable-mdpi/btn_circle_pressed.png
+++ b/core/res/res/drawable-mdpi/btn_circle_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_circle_selected.png b/core/res/res/drawable-mdpi/btn_circle_selected.png
index c74fac227a23..6eb2ff5471a0 100644
--- a/core/res/res/drawable-mdpi/btn_circle_selected.png
+++ b/core/res/res/drawable-mdpi/btn_circle_selected.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_close_normal.png b/core/res/res/drawable-mdpi/btn_close_normal.png
index 4c6e79dc8881..eca5828bf818 100644
--- a/core/res/res/drawable-mdpi/btn_close_normal.png
+++ b/core/res/res/drawable-mdpi/btn_close_normal.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_close_pressed.png b/core/res/res/drawable-mdpi/btn_close_pressed.png
index fc983afdcf06..3c745bbeb20a 100644
--- a/core/res/res/drawable-mdpi/btn_close_pressed.png
+++ b/core/res/res/drawable-mdpi/btn_close_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_close_selected.png b/core/res/res/drawable-mdpi/btn_close_selected.png
index f2bf91a2d716..c41f039b3487 100644
--- a/core/res/res/drawable-mdpi/btn_close_selected.png
+++ b/core/res/res/drawable-mdpi/btn_close_selected.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_normal.9.png b/core/res/res/drawable-mdpi/btn_default_normal.9.png
index a2d5ccd20c59..7ff74b2586a3 100644
--- a/core/res/res/drawable-mdpi/btn_default_normal.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_normal_disable.9.png b/core/res/res/drawable-mdpi/btn_default_normal_disable.9.png
index edd3a3eb22cc..d3e11b5d47a0 100644
--- a/core/res/res/drawable-mdpi/btn_default_normal_disable.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png b/core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png
index f506179795bf..843ca7a92f16 100644
--- a/core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_pressed.9.png b/core/res/res/drawable-mdpi/btn_default_pressed.9.png
index 033bf89cb8f9..74fd58b5004e 100644
--- a/core/res/res/drawable-mdpi/btn_default_pressed.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_selected.9.png b/core/res/res/drawable-mdpi/btn_default_selected.9.png
index 1e900bf1a03e..415b14569b8c 100644
--- a/core/res/res/drawable-mdpi/btn_default_selected.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_small_normal.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal.9.png
index bcedd5f0ff38..5dddd4640d9c 100644
--- a/core/res/res/drawable-mdpi/btn_default_small_normal.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_small_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png
index ac6260f906c8..6ab5c4a20e03 100644
--- a/core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png
index 4ee1b3fb17a7..c65bace36acd 100644
--- a/core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_small_pressed.9.png b/core/res/res/drawable-mdpi/btn_default_small_pressed.9.png
index 25e38f4e7635..43e82f977878 100644
--- a/core/res/res/drawable-mdpi/btn_default_small_pressed.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_small_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_default_small_selected.9.png b/core/res/res/drawable-mdpi/btn_default_small_selected.9.png
index cc209c6a21c5..7a376a97f0d6 100644
--- a/core/res/res/drawable-mdpi/btn_default_small_selected.9.png
+++ b/core/res/res/drawable-mdpi/btn_default_small_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_dropdown_disabled.9.png b/core/res/res/drawable-mdpi/btn_dropdown_disabled.9.png
index f7464c7a9276..72915b5597a0 100644
--- a/core/res/res/drawable-mdpi/btn_dropdown_disabled.9.png
+++ b/core/res/res/drawable-mdpi/btn_dropdown_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_dropdown_disabled_focused.9.png b/core/res/res/drawable-mdpi/btn_dropdown_disabled_focused.9.png
index ffe219f2c7af..438c06a685f0 100644
--- a/core/res/res/drawable-mdpi/btn_dropdown_disabled_focused.9.png
+++ b/core/res/res/drawable-mdpi/btn_dropdown_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_dropdown_normal.9.png b/core/res/res/drawable-mdpi/btn_dropdown_normal.9.png
index f6e9a19b3239..8540501d801c 100644
--- a/core/res/res/drawable-mdpi/btn_dropdown_normal.9.png
+++ b/core/res/res/drawable-mdpi/btn_dropdown_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png b/core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png
index 3bdf52d4627f..9a50396b00ae 100644
--- a/core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png
+++ b/core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_dropdown_selected.9.png b/core/res/res/drawable-mdpi/btn_dropdown_selected.9.png
index 087956e4b402..a0a3fef9677f 100644
--- a/core/res/res/drawable-mdpi/btn_dropdown_selected.9.png
+++ b/core/res/res/drawable-mdpi/btn_dropdown_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/dialog_full_holo_dark.9.png b/core/res/res/drawable-mdpi/dialog_full_holo_dark.9.png
index a71af8d45429..bd5f9e0d281f 100644
--- a/core/res/res/drawable-mdpi/dialog_full_holo_dark.9.png
+++ b/core/res/res/drawable-mdpi/dialog_full_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/dialog_full_holo_light.9.png b/core/res/res/drawable-mdpi/dialog_full_holo_light.9.png
index 4017bf71cc83..45e97120dc13 100644
--- a/core/res/res/drawable-mdpi/dialog_full_holo_light.9.png
+++ b/core/res/res/drawable-mdpi/dialog_full_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/expander_ic_maximized.9.png b/core/res/res/drawable-mdpi/expander_ic_maximized.9.png
index 465cabd7e929..d5c32766cece 100644
--- a/core/res/res/drawable-mdpi/expander_ic_maximized.9.png
+++ b/core/res/res/drawable-mdpi/expander_ic_maximized.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/expander_ic_minimized.9.png b/core/res/res/drawable-mdpi/expander_ic_minimized.9.png
index 9967ecbd6c1e..4515b42177bb 100644
--- a/core/res/res/drawable-mdpi/expander_ic_minimized.9.png
+++ b/core/res/res/drawable-mdpi/expander_ic_minimized.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_bullet_key_permission.png b/core/res/res/drawable-mdpi/ic_bullet_key_permission.png
index ccb010f4c03d..68ad03952405 100644
--- a/core/res/res/drawable-mdpi/ic_bullet_key_permission.png
+++ b/core/res/res/drawable-mdpi/ic_bullet_key_permission.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_menu_help.png b/core/res/res/drawable-mdpi/ic_menu_help.png
index 7c55dfd6936b..12ca235fd2c7 100644
--- a/core/res/res/drawable-mdpi/ic_menu_help.png
+++ b/core/res/res/drawable-mdpi/ic_menu_help.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_selector_background_disabled.9.png b/core/res/res/drawable-mdpi/list_selector_background_disabled.9.png
index 60f19fe459eb..43c36cb9e1d2 100644
--- a/core/res/res/drawable-mdpi/list_selector_background_disabled.9.png
+++ b/core/res/res/drawable-mdpi/list_selector_background_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_selector_background_focus.9.png b/core/res/res/drawable-mdpi/list_selector_background_focus.9.png
index 421e734e2905..53a7eaccbee3 100644
--- a/core/res/res/drawable-mdpi/list_selector_background_focus.9.png
+++ b/core/res/res/drawable-mdpi/list_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_selector_background_longpress.9.png b/core/res/res/drawable-mdpi/list_selector_background_longpress.9.png
index 78176673d570..0818761cb2c8 100644
--- a/core/res/res/drawable-mdpi/list_selector_background_longpress.9.png
+++ b/core/res/res/drawable-mdpi/list_selector_background_longpress.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/list_selector_background_pressed.9.png b/core/res/res/drawable-mdpi/list_selector_background_pressed.9.png
index 1531d9dd2728..8bd86b2b81b3 100644
--- a/core/res/res/drawable-mdpi/list_selector_background_pressed.9.png
+++ b/core/res/res/drawable-mdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/menu_background.9.png b/core/res/res/drawable-mdpi/menu_background.9.png
index 9f16df9aa778..41a3d343961a 100644
--- a/core/res/res/drawable-mdpi/menu_background.9.png
+++ b/core/res/res/drawable-mdpi/menu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png b/core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png
index da3011b1c3c8..1ddf0919b800 100644
--- a/core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png
+++ b/core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/panel_background.9.png b/core/res/res/drawable-mdpi/panel_background.9.png
index 2305be4648c6..822b6c632637 100644
--- a/core/res/res/drawable-mdpi/panel_background.9.png
+++ b/core/res/res/drawable-mdpi/panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_bottom_bright.9.png b/core/res/res/drawable-mdpi/popup_bottom_bright.9.png
index e8e203b3dcb8..e7b713dd3ec4 100644
--- a/core/res/res/drawable-mdpi/popup_bottom_bright.9.png
+++ b/core/res/res/drawable-mdpi/popup_bottom_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_bottom_dark.9.png b/core/res/res/drawable-mdpi/popup_bottom_dark.9.png
index 76a2a7fec8b9..88ce336131b4 100644
--- a/core/res/res/drawable-mdpi/popup_bottom_dark.9.png
+++ b/core/res/res/drawable-mdpi/popup_bottom_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_bottom_medium.9.png b/core/res/res/drawable-mdpi/popup_bottom_medium.9.png
index dee6d6bb0e56..e5aaad0b4839 100755..100644
--- a/core/res/res/drawable-mdpi/popup_bottom_medium.9.png
+++ b/core/res/res/drawable-mdpi/popup_bottom_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_center_bright.9.png b/core/res/res/drawable-mdpi/popup_center_bright.9.png
index c817338db553..a25935616ce2 100644
--- a/core/res/res/drawable-mdpi/popup_center_bright.9.png
+++ b/core/res/res/drawable-mdpi/popup_center_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_center_dark.9.png b/core/res/res/drawable-mdpi/popup_center_dark.9.png
index 79ffdaa87dd5..9378dbf9f113 100644
--- a/core/res/res/drawable-mdpi/popup_center_dark.9.png
+++ b/core/res/res/drawable-mdpi/popup_center_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_center_medium.9.png b/core/res/res/drawable-mdpi/popup_center_medium.9.png
index ba2e9bf747b9..885403cacdc0 100755..100644
--- a/core/res/res/drawable-mdpi/popup_center_medium.9.png
+++ b/core/res/res/drawable-mdpi/popup_center_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_full_bright.9.png b/core/res/res/drawable-mdpi/popup_full_bright.9.png
index d33ff2b90f16..d7fb3dbbea35 100644
--- a/core/res/res/drawable-mdpi/popup_full_bright.9.png
+++ b/core/res/res/drawable-mdpi/popup_full_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_full_dark.9.png b/core/res/res/drawable-mdpi/popup_full_dark.9.png
index 2305be4648c6..7b9f2918acde 100644
--- a/core/res/res/drawable-mdpi/popup_full_dark.9.png
+++ b/core/res/res/drawable-mdpi/popup_full_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_top_bright.9.png b/core/res/res/drawable-mdpi/popup_top_bright.9.png
index 727a94824fd8..72d82f0003fe 100644
--- a/core/res/res/drawable-mdpi/popup_top_bright.9.png
+++ b/core/res/res/drawable-mdpi/popup_top_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/popup_top_dark.9.png b/core/res/res/drawable-mdpi/popup_top_dark.9.png
index af511f2f5d73..616d80f91b4b 100644
--- a/core/res/res/drawable-mdpi/popup_top_dark.9.png
+++ b/core/res/res/drawable-mdpi/popup_top_dark.9.png
Binary files differ
diff --git a/core/res/res/layout-xlarge/alert_dialog_holo.xml b/core/res/res/layout-xlarge/alert_dialog_holo.xml
index 2ae8db774d9e..2ebe7cd5af58 100644
--- a/core/res/res/layout-xlarge/alert_dialog_holo.xml
+++ b/core/res/res/layout-xlarge/alert_dialog_holo.xml
@@ -23,10 +23,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:paddingTop="9dip"
- android:paddingBottom="3dip"
- android:paddingLeft="3dip"
- android:paddingRight="1dip"
android:majorWeightMin="0.45"
android:minorWeightMin="0.72">
@@ -35,6 +31,15 @@
android:layout_height="wrap_content"
android:minHeight="64dip"
android:orientation="vertical">
+ <ImageView android:id="@+id/titleDividerTop"
+ android:layout_width="match_parent"
+ android:layout_height="4dip"
+ android:visibility="gone"
+ android:scaleType="fitXY"
+ android:gravity="fill_horizontal"
+ android:paddingLeft="16dip"
+ android:paddingRight="16dip"
+ android:src="@android:drawable/divider_strong_holo" />
<LinearLayout android:id="@+id/title_template"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/core/res/res/layout/alert_dialog_holo.xml b/core/res/res/layout/alert_dialog_holo.xml
index 07a2853cba78..187504ec539d 100644
--- a/core/res/res/layout/alert_dialog_holo.xml
+++ b/core/res/res/layout/alert_dialog_holo.xml
@@ -23,10 +23,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:paddingTop="9dip"
- android:paddingBottom="3dip"
- android:paddingLeft="3dip"
- android:paddingRight="1dip"
android:majorWeightMin="0.65"
android:minorWeightMin="0.9">
@@ -35,6 +31,15 @@
android:layout_height="wrap_content"
android:minHeight="64dip"
android:orientation="vertical">
+ <ImageView android:id="@+id/titleDividerTop"
+ android:layout_width="match_parent"
+ android:layout_height="4dip"
+ android:visibility="gone"
+ android:scaleType="fitXY"
+ android:gravity="fill_horizontal"
+ android:paddingLeft="16dip"
+ android:paddingRight="16dip"
+ android:src="@android:drawable/divider_strong_holo" />
<LinearLayout android:id="@+id/title_template"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/core/res/res/layout/dialog_custom_title_holo.xml b/core/res/res/layout/dialog_custom_title_holo.xml
new file mode 100644
index 000000000000..854873f02e7e
--- /dev/null
+++ b/core/res/res/layout/dialog_custom_title_holo.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<!--
+This is an custom layout for a dialog.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
+ <FrameLayout android:id="@android:id/title_container"
+ android:layout_width="match_parent"
+ android:layout_height="24dip"
+ android:layout_weight="0"
+ style="?android:attr/windowTitleBackgroundStyle">
+ </FrameLayout>
+ <FrameLayout
+ android:layout_width="match_parent" android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:foreground="?android:attr/windowContentOverlay">
+ <FrameLayout android:id="@android:id/content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingTop="6dip"
+ android:paddingBottom="10dip"
+ android:paddingLeft="10dip"
+ android:paddingRight="10dip" />
+ </FrameLayout>
+</LinearLayout>
diff --git a/core/res/res/layout/dialog_title_holo.xml b/core/res/res/layout/dialog_title_holo.xml
new file mode 100644
index 000000000000..534dd8dac96f
--- /dev/null
+++ b/core/res/res/layout/dialog_title_holo.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2011, 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.
+*/
+
+This is an optimized layout for a screen, with the minimum set of features
+enabled.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
+ <TextView android:id="@android:id/title" style="?android:attr/windowTitleStyle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="60dip"
+ android:paddingLeft="32dip"
+ android:paddingRight="32dip"
+ android:gravity="center_vertical|left" />
+ <ImageView android:id="@+id/titleDivider"
+ android:layout_width="match_parent"
+ android:layout_height="4dip"
+ android:scaleType="fitXY"
+ android:gravity="fill_horizontal"
+ android:paddingLeft="16dip"
+ android:paddingRight="16dip"
+ android:src="@android:drawable/divider_strong_holo" />
+ <FrameLayout
+ android:layout_width="match_parent" android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:foreground="?android:attr/windowContentOverlay">
+ <FrameLayout android:id="@android:id/content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+ </FrameLayout>
+</LinearLayout>
diff --git a/core/res/res/layout/dialog_title_icons_holo.xml b/core/res/res/layout/dialog_title_icons_holo.xml
new file mode 100644
index 000000000000..a3cd3afa5575
--- /dev/null
+++ b/core/res/res/layout/dialog_title_icons_holo.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<!--
+This is an optimized layout for a screen, with the minimum set of features
+enabled.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:fitsSystemWindows="true">
+
+ <LinearLayout android:id="@+id/title_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:minHeight="60dip"
+ android:paddingLeft="32dip"
+ android:paddingRight="32dip">
+ <ImageView android:id="@+id/left_icon"
+ android:layout_width="32dip"
+ android:layout_height="32dip"
+ android:scaleType="fitCenter"
+ android:layout_marginRight="8dip" />
+ <TextView android:id="@android:id/title"
+ style="?android:attr/windowTitleStyle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0" />
+ <ImageView android:id="@+id/right_icon"
+ android:layout_width="32dip"
+ android:layout_height="32dip"
+ android:scaleType="fitCenter"
+ android:layout_marginLeft="8dip" />
+ </LinearLayout>
+
+ <ImageView android:id="@+id/titleDivider"
+ android:layout_width="match_parent"
+ android:layout_height="4dip"
+ android:scaleType="fitXY"
+ android:gravity="fill_horizontal"
+ android:paddingLeft="16dip"
+ android:paddingRight="16dip"
+ android:src="@android:drawable/divider_strong_holo" />
+
+ <FrameLayout
+ android:layout_width="match_parent" android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:foreground="?android:attr/windowContentOverlay">
+ <FrameLayout android:id="@android:id/content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+ </FrameLayout>
+</LinearLayout>
diff --git a/core/res/res/values-es-rUS-xlarge/strings.xml b/core/res/res/values-es-rUS-xlarge/strings.xml
index cef8d1271d70..4743ac5daf1c 100644
--- a/core/res/res/values-es-rUS-xlarge/strings.xml
+++ b/core/res/res/values-es-rUS-xlarge/strings.xml
@@ -301,6 +301,8 @@
<!-- XL -->
<string name="websearch" msgid="904596193450917688">"Búsqueda web"</string>
<!-- XL -->
+ <string name="status_bar_notification_info_overflow" msgid="1081154808901480710">"100+"</string>
+ <!-- XL -->
<string name="permlab_mediaStorageWrite" product="default" msgid="5585262071354704256">"modificar/eliminar los contenidos del almacenamientos de medios internos"</string>
<!-- XL -->
<string name="permdesc_mediaStorageWrite" product="default" msgid="2372999661142345443">"Permite que una aplicación modifique los contenidos del almacenamiento interno de medios."</string>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index b8b9e6c2754f..fb269a69a9b7 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -634,6 +634,12 @@
<!-- Theme to use for dialogs spawned from this theme. -->
<attr name="dialogTheme" format="reference" />
+ <!-- Window decor layout to use in dialog mode with icons -->
+ <attr name="dialogTitleIconsDecorLayout" format="reference" />
+ <!-- Window decor layout to use in dialog mode with custom titles -->
+ <attr name="dialogCustomTitleDecorLayout" format="reference" />
+ <!-- Window decor layout to use in dialog mode with title only -->
+ <attr name="dialogTitleDecorLayout" format="reference" />
<!-- Theme to use for alert dialogs spawned from this theme. -->
<attr name="alertDialogTheme" format="reference" />
<!-- Icon drawable to use for alerts -->
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 2e87883416b4..1a6f404d62ff 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -91,7 +91,7 @@
<color name="search_url_text_selected">@android:color/black</color>
<color name="search_url_text_pressed">@android:color/black</color>
<color name="search_widget_corpus_item_background">@android:color/lighter_gray</color>
-
+
<!-- SlidingTab -->
<color name="sliding_tab_text_color_active">@android:color/black</color>
<color name="sliding_tab_text_color_shadow">@android:color/black</color>
@@ -105,7 +105,7 @@
<!-- keyguard clock -->
<color name="lockscreen_clock_background">#b3ffffff</color>
- <color name="lockscreen_clock_foreground">#40000000</color>
+ <color name="lockscreen_clock_foreground">#7affffff</color>
<color name="lockscreen_clock_am_pm">#ff9a9a9a</color>
<color name="lockscreen_owner_info">#ff9a9a9a</color>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index c2a848dce96a..e124d9df1de4 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1458,9 +1458,6 @@
sinusoidal pattern. -->
<public type="interpolator" name="cycle" />
- <public type="anim" name="animator_fade_in" />
- <public type="anim" name="animator_fade_out" />
-
<!-- Acceleration curve matching a cubic ease in function. -->
<public type="anim" name="accelerate_cubic_interpolator" />
<!-- Acceleration curve matching a cubic ease out function. -->
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 96e60f29f191..5709f58a9129 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -81,14 +81,14 @@
<item name="wallpaperIntraOpenExitAnimation">@anim/wallpaper_intra_open_exit</item>
<item name="wallpaperIntraCloseEnterAnimation">@anim/wallpaper_intra_close_enter</item>
<item name="wallpaperIntraCloseExitAnimation">@anim/wallpaper_intra_close_exit</item>
- <item name="fragmentOpenEnterAnimation">@anim/fragment_open_enter</item>
- <item name="fragmentOpenExitAnimation">@anim/fragment_open_exit</item>
- <item name="fragmentCloseEnterAnimation">@anim/fragment_close_enter</item>
- <item name="fragmentCloseExitAnimation">@anim/fragment_close_exit</item>
- <item name="fragmentNextEnterAnimation">@anim/fragment_next_enter</item>
- <item name="fragmentNextExitAnimation">@anim/fragment_next_exit</item>
- <item name="fragmentPrevEnterAnimation">@anim/fragment_prev_enter</item>
- <item name="fragmentPrevExitAnimation">@anim/fragment_prev_exit</item>
+ <item name="fragmentOpenEnterAnimation">@animator/fragment_open_enter</item>
+ <item name="fragmentOpenExitAnimation">@animator/fragment_open_exit</item>
+ <item name="fragmentCloseEnterAnimation">@animator/fragment_close_enter</item>
+ <item name="fragmentCloseExitAnimation">@animator/fragment_close_exit</item>
+ <item name="fragmentNextEnterAnimation">@animator/fragment_next_enter</item>
+ <item name="fragmentNextExitAnimation">@animator/fragment_next_exit</item>
+ <item name="fragmentPrevEnterAnimation">@animator/fragment_prev_enter</item>
+ <item name="fragmentPrevExitAnimation">@animator/fragment_prev_exit</item>
</style>
<!-- Standard animations for a non-full-screen window or activity. -->
@@ -1512,8 +1512,8 @@
<style name="Widget.Holo.ProgressBar.Horizontal" parent="Widget.ProgressBar.Horizontal">
<item name="android:progressDrawable">@android:drawable/progress_horizontal_holo_dark</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal_holo</item>
- <item name="android:minHeight">24dip</item>
- <item name="android:maxHeight">24dip</item>
+ <item name="android:minHeight">16dip</item>
+ <item name="android:maxHeight">16dip</item>
</style>
<style name="Widget.Holo.ProgressBar.Small" parent="Widget.ProgressBar.Small">
@@ -1728,7 +1728,7 @@
<style name="Widget.Holo.Light.Button" parent="Widget.Button">
<item name="android:background">@android:drawable/btn_default_holo_light</item>
- <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
<item name="android:textColor">@android:color/primary_text_holo_light</item>
<item name="android:minHeight">48dip</item>
<item name="android:paddingLeft">32dip</item>
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index ed8b20d7e6f6..94a58f0785ce 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -142,6 +142,9 @@
<!-- Dialog attributes -->
<item name="alertDialogStyle">@android:style/AlertDialog</item>
<item name="dialogTheme">@android:style/Theme.Dialog</item>
+ <item name="dialogTitleIconsDecorLayout">@layout/dialog_title_icons</item>
+ <item name="dialogCustomTitleDecorLayout">@layout/dialog_custom_title</item>
+ <item name="dialogTitleDecorLayout">@layout/dialog_title</item>
<item name="alertDialogTheme">@android:style/Theme.Dialog.Alert</item>
<item name="alertDialogCenterButtons">true</item>
<item name="alertDialogIcon">@android:drawable/ic_dialog_alert</item>
@@ -807,6 +810,9 @@
<!-- Dialog attributes -->
<item name="alertDialogStyle">@android:style/AlertDialog.Holo</item>
<item name="dialogTheme">@android:style/Theme.Holo.Dialog</item>
+ <item name="dialogTitleIconsDecorLayout">@layout/dialog_title_icons_holo</item>
+ <item name="dialogCustomTitleDecorLayout">@layout/dialog_custom_title_holo</item>
+ <item name="dialogTitleDecorLayout">@layout/dialog_title_holo</item>
<item name="alertDialogTheme">@android:style/Theme.Holo.Dialog.Alert</item>
<item name="alertDialogCenterButtons">false</item>
<item name="alertDialogIcon">@android:drawable/ic_dialog_alert_holo_dark</item>
@@ -1065,6 +1071,9 @@
<!-- Dialog attributes -->
<item name="alertDialogStyle">@android:style/AlertDialog.Holo.Light</item>
<item name="dialogTheme">@android:style/Theme.Holo.Light.Dialog</item>
+ <item name="dialogTitleIconsDecorLayout">@layout/dialog_title_icons_holo</item>
+ <item name="dialogCustomTitleDecorLayout">@layout/dialog_custom_title_holo</item>
+ <item name="dialogTitleDecorLayout">@layout/dialog_title_holo</item>
<item name="alertDialogTheme">@android:style/Theme.Holo.Light.Dialog.Alert</item>
<item name="alertDialogIcon">@android:drawable/ic_dialog_alert_holo_light</item>
diff --git a/data/fonts/AndroidClock.ttf b/data/fonts/AndroidClock.ttf
index 24a7f087234b..03e36cb66903 100644
--- a/data/fonts/AndroidClock.ttf
+++ b/data/fonts/AndroidClock.ttf
Binary files differ
diff --git a/data/fonts/AndroidClock_Highlight.ttf b/data/fonts/AndroidClock_Highlight.ttf
index 1e14a8f726a1..8fb31bae8d3a 100644
--- a/data/fonts/AndroidClock_Highlight.ttf
+++ b/data/fonts/AndroidClock_Highlight.ttf
Binary files differ
diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp
index 8740a64601ae..3184598d48c4 100644
--- a/libs/hwui/PathCache.cpp
+++ b/libs/hwui/PathCache.cpp
@@ -197,10 +197,16 @@ PathTexture* PathCache::addTexture(const PathCacheEntry& entry,
bitmap.eraseColor(0);
SkPaint pathPaint(*paint);
- if (!pathPaint.getXfermode()) {
- SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrc_Mode);
- pathPaint.setXfermode(mode)->safeUnref();
- }
+
+ // Make sure the paint is opaque, color, alpha, filter, etc.
+ // will be applied later when compositing the alpha8 texture
+ pathPaint.setColor(0xff000000);
+ pathPaint.setAlpha(255);
+ pathPaint.setColorFilter(NULL);
+ pathPaint.setMaskFilter(NULL);
+ pathPaint.setShader(NULL);
+ SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrc_Mode);
+ pathPaint.setXfermode(mode)->safeUnref();
SkCanvas canvas(bitmap);
canvas.translate(-bounds.fLeft + offset, -bounds.fTop + offset);
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 01134f2111aa..f61ac0f794b8 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -1300,9 +1300,9 @@ public class MediaPlayer
return;
case MEDIA_INFO:
- // For PV specific code values (msg.arg2) look in
- // opencore/pvmi/pvmf/include/pvmf_return_codes.h
- Log.i(TAG, "Info (" + msg.arg1 + "," + msg.arg2 + ")");
+ if (msg.arg1 != MEDIA_INFO_VIDEO_TRACK_LAGGING) {
+ Log.i(TAG, "Info (" + msg.arg1 + "," + msg.arg2 + ")");
+ }
if (mOnInfoListener != null) {
mOnInfoListener.onInfo(mMediaPlayer, msg.arg1, msg.arg2);
}
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index a098d6953a53..87c8fe432336 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -607,7 +607,9 @@ void MediaPlayer::notify(int msg, int ext1, int ext2)
case MEDIA_INFO:
// ext1: Media framework error code.
// ext2: Implementation dependant error code.
- LOGW("info/warning (%d, %d)", ext1, ext2);
+ if (ext1 != MEDIA_INFO_VIDEO_TRACK_LAGGING) {
+ LOGW("info/warning (%d, %d)", ext1, ext2);
+ }
break;
case MEDIA_SEEK_COMPLETE:
LOGV("Received seek complete");
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 914e409c35b1..4cfe28ec37c9 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -179,6 +179,8 @@ AwesomePlayer::AwesomePlayer()
mStreamDoneEventPending = false;
mBufferingEvent = new AwesomeEvent(this, &AwesomePlayer::onBufferingUpdate);
mBufferingEventPending = false;
+ mVideoLagEvent = new AwesomeEvent(this, &AwesomePlayer::onVideoLagUpdate);
+ mVideoEventPending = false;
mCheckAudioStatusEvent = new AwesomeEvent(
this, &AwesomePlayer::onCheckAudioStatus);
@@ -205,6 +207,8 @@ void AwesomePlayer::cancelPlayerEvents(bool keepBufferingGoing) {
mStreamDoneEventPending = false;
mQueue.cancelEvent(mCheckAudioStatusEvent->eventID());
mAudioStatusEventPending = false;
+ mQueue.cancelEvent(mVideoLagEvent->eventID());
+ mVideoLagEventPending = false;
if (!keepBufferingGoing) {
mQueue.cancelEvent(mBufferingEvent->eventID());
@@ -530,6 +534,28 @@ void AwesomePlayer::ensureCacheIsFetching_l() {
}
}
+void AwesomePlayer::onVideoLagUpdate() {
+ Mutex::Autolock autoLock(mLock);
+ if (!mVideoLagEventPending) {
+ return;
+ }
+ mVideoLagEventPending = false;
+
+ int64_t audioTimeUs = mAudioPlayer->getMediaTimeUs();
+ int64_t videoLateByUs = audioTimeUs - mVideoTimeUs;
+
+ if (videoLateByUs > 300000ll) {
+ LOGV("video late by %lld ms.", videoLateByUs / 1000ll);
+
+ notifyListener_l(
+ MEDIA_INFO,
+ MEDIA_INFO_VIDEO_TRACK_LAGGING,
+ videoLateByUs / 1000ll);
+ }
+
+ postVideoLagEvent_l();
+}
+
void AwesomePlayer::onBufferingUpdate() {
Mutex::Autolock autoLock(mLock);
if (!mBufferingEventPending) {
@@ -788,6 +814,10 @@ status_t AwesomePlayer::play_l() {
if (mVideoSource != NULL) {
// Kick off video playback
postVideoEvent_l();
+
+ if (mAudioSource != NULL && mVideoSource != NULL) {
+ postVideoLagEvent_l();
+ }
}
if (deferredAudioSeek) {
@@ -1347,6 +1377,14 @@ void AwesomePlayer::postBufferingEvent_l() {
mQueue.postEventWithDelay(mBufferingEvent, 1000000ll);
}
+void AwesomePlayer::postVideoLagEvent_l() {
+ if (mVideoLagEventPending) {
+ return;
+ }
+ mVideoLagEventPending = true;
+ mQueue.postEventWithDelay(mVideoLagEvent, 1000000ll);
+}
+
void AwesomePlayer::postCheckAudioStatusEvent_l() {
if (mAudioStatusEventPending) {
return;
diff --git a/media/libstagefright/NuCachedSource2.cpp b/media/libstagefright/NuCachedSource2.cpp
index 110fb038cd17..cdf4270db34e 100644
--- a/media/libstagefright/NuCachedSource2.cpp
+++ b/media/libstagefright/NuCachedSource2.cpp
@@ -348,7 +348,7 @@ void NuCachedSource2::restartPrefetcherIfNecessary_l(
ssize_t NuCachedSource2::readAt(off64_t offset, void *data, size_t size) {
Mutex::Autolock autoSerializer(mSerializer);
- LOGV("readAt offset %ld, size %d", offset, size);
+ LOGV("readAt offset %lld, size %d", offset, size);
Mutex::Autolock autoLock(mLock);
@@ -408,7 +408,7 @@ size_t NuCachedSource2::approxDataRemaining_l(bool *eos) {
}
ssize_t NuCachedSource2::readInternal(off64_t offset, void *data, size_t size) {
- LOGV("readInternal offset %ld size %d", offset, size);
+ LOGV("readInternal offset %lld size %d", offset, size);
Mutex::Autolock autoLock(mLock);
diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h
index 17b83c143a4a..130ad8228900 100644
--- a/media/libstagefright/include/AwesomePlayer.h
+++ b/media/libstagefright/include/AwesomePlayer.h
@@ -173,6 +173,8 @@ private:
bool mBufferingEventPending;
sp<TimedEventQueue::Event> mCheckAudioStatusEvent;
bool mAudioStatusEventPending;
+ sp<TimedEventQueue::Event> mVideoLagEvent;
+ bool mVideoLagEventPending;
sp<TimedEventQueue::Event> mAsyncPrepareEvent;
Condition mPreparedCondition;
@@ -184,6 +186,7 @@ private:
void postBufferingEvent_l();
void postStreamDoneEvent_l(status_t status);
void postCheckAudioStatusEvent_l();
+ void postVideoLagEvent_l();
status_t play_l();
MediaBuffer *mVideoBuffer;
@@ -233,6 +236,7 @@ private:
void onPrepareAsyncEvent();
void abortPrepare(status_t err);
void finishAsyncPrepare_l();
+ void onVideoLagUpdate();
bool getCachedDuration_l(int64_t *durationUs, bool *eos);
diff --git a/media/libstagefright/include/NuCachedSource2.h b/media/libstagefright/include/NuCachedSource2.h
index 78719c16abb4..aa320fc2bdcc 100644
--- a/media/libstagefright/include/NuCachedSource2.h
+++ b/media/libstagefright/include/NuCachedSource2.h
@@ -55,8 +55,8 @@ private:
enum {
kPageSize = 65536,
- kHighWaterThreshold = 5 * 1024 * 1024,
- kLowWaterThreshold = 1024 * 1024,
+ kHighWaterThreshold = 20 * 1024 * 1024,
+ kLowWaterThreshold = 4 * 1024 * 1024,
// Read data after a 15 sec timeout whether we're actively
// fetching or not.
diff --git a/media/libstagefright/matroska/MatroskaExtractor.cpp b/media/libstagefright/matroska/MatroskaExtractor.cpp
index e0ac49fcee82..eca9ed69a23b 100644
--- a/media/libstagefright/matroska/MatroskaExtractor.cpp
+++ b/media/libstagefright/matroska/MatroskaExtractor.cpp
@@ -118,6 +118,9 @@ struct MatroskaSource : public MediaSource {
virtual status_t read(
MediaBuffer **buffer, const ReadOptions *options);
+protected:
+ virtual ~MatroskaSource();
+
private:
enum Type {
AVC,
@@ -131,8 +134,13 @@ private:
BlockIterator mBlockIter;
size_t mNALSizeLen; // for type AVC
+ List<MediaBuffer *> mPendingFrames;
+
status_t advance();
+ status_t readBlock();
+ void clearPendingFrames();
+
MatroskaSource(const MatroskaSource &);
MatroskaSource &operator=(const MatroskaSource &);
};
@@ -168,6 +176,10 @@ MatroskaSource::MatroskaSource(
}
}
+MatroskaSource::~MatroskaSource() {
+ clearPendingFrames();
+}
+
status_t MatroskaSource::start(MetaData *params) {
mBlockIter.reset();
@@ -175,6 +187,8 @@ status_t MatroskaSource::start(MetaData *params) {
}
status_t MatroskaSource::stop() {
+ clearPendingFrames();
+
return OK;
}
@@ -256,99 +270,309 @@ static unsigned U24_AT(const uint8_t *ptr) {
return ptr[0] << 16 | ptr[1] << 8 | ptr[2];
}
-status_t MatroskaSource::read(
- MediaBuffer **out, const ReadOptions *options) {
- *out = NULL;
+static size_t clz(uint8_t x) {
+ size_t numLeadingZeroes = 0;
- int64_t seekTimeUs;
- ReadOptions::SeekMode mode;
- if (options && options->getSeekTo(&seekTimeUs, &mode)) {
- mBlockIter.seek(seekTimeUs);
+ while (!(x & 0x80)) {
+ ++numLeadingZeroes;
+ x = x << 1;
}
-again:
+ return numLeadingZeroes;
+}
+
+void MatroskaSource::clearPendingFrames() {
+ while (!mPendingFrames.empty()) {
+ MediaBuffer *frame = *mPendingFrames.begin();
+ mPendingFrames.erase(mPendingFrames.begin());
+
+ frame->release();
+ frame = NULL;
+ }
+}
+
+#define BAIL(err) \
+ do { \
+ if (bigbuf) { \
+ bigbuf->release(); \
+ bigbuf = NULL; \
+ } \
+ \
+ return err; \
+ } while (0)
+
+status_t MatroskaSource::readBlock() {
+ CHECK(mPendingFrames.empty());
+
if (mBlockIter.eos()) {
return ERROR_END_OF_STREAM;
}
const mkvparser::Block *block = mBlockIter.block();
+
size_t size = block->GetSize();
int64_t timeUs = mBlockIter.blockTimeUs();
+ int32_t isSync = block->IsKey();
- // In the case of AVC content, each NAL unit is prefixed by
- // mNALSizeLen bytes of length. We want to prefix the data with
- // a four-byte 0x00000001 startcode instead of the length prefix.
- // mNALSizeLen ranges from 1 through 4 bytes, so add an extra
- // 3 bytes of padding to the buffer start.
- static const size_t kPadding = 3;
-
- MediaBuffer *buffer = new MediaBuffer(size + kPadding);
- buffer->meta_data()->setInt64(kKeyTime, timeUs);
- buffer->meta_data()->setInt32(kKeyIsSyncFrame, block->IsKey());
+ MediaBuffer *bigbuf = new MediaBuffer(size);
long res = block->Read(
- mExtractor->mReader, (unsigned char *)buffer->data() + kPadding);
+ mExtractor->mReader, (unsigned char *)bigbuf->data());
if (res != 0) {
+ bigbuf->release();
+ bigbuf = NULL;
+
return ERROR_END_OF_STREAM;
}
- buffer->set_range(kPadding, size);
+ mBlockIter.advance();
- if (mType == AVC) {
- CHECK_GE(size, mNALSizeLen);
+ bigbuf->meta_data()->setInt64(kKeyTime, timeUs);
+ bigbuf->meta_data()->setInt32(kKeyIsSyncFrame, isSync);
- uint8_t *data = (uint8_t *)buffer->data();
+ unsigned lacing = (block->Flags() >> 1) & 3;
- size_t NALsize;
- switch (mNALSizeLen) {
- case 1: NALsize = data[kPadding]; break;
- case 2: NALsize = U16_AT(&data[kPadding]); break;
- case 3: NALsize = U24_AT(&data[kPadding]); break;
- case 4: NALsize = U32_AT(&data[kPadding]); break;
- default:
- TRESPASS();
+ if (lacing == 0) {
+ mPendingFrames.push_back(bigbuf);
+ return OK;
+ }
+
+ LOGV("lacing = %u, size = %d", lacing, size);
+
+ const uint8_t *data = (const uint8_t *)bigbuf->data();
+ // hexdump(data, size);
+
+ if (size == 0) {
+ BAIL(ERROR_MALFORMED);
+ }
+
+ unsigned numFrames = (unsigned)data[0] + 1;
+ ++data;
+ --size;
+
+ Vector<uint64_t> frameSizes;
+
+ switch (lacing) {
+ case 1: // Xiph
+ {
+ for (size_t i = 0; i < numFrames - 1; ++i) {
+ size_t frameSize = 0;
+ uint8_t byte;
+ do {
+ if (size == 0) {
+ BAIL(ERROR_MALFORMED);
+ }
+ byte = data[0];
+ ++data;
+ --size;
+
+ frameSize += byte;
+ } while (byte == 0xff);
+
+ frameSizes.push(frameSize);
+ }
+
+ break;
}
- CHECK_GE(size, NALsize + mNALSizeLen);
- if (size > NALsize + mNALSizeLen) {
- LOGW("discarding %d bytes of data.", size - NALsize - mNALSizeLen);
+ case 2: // fixed-size
+ {
+ if ((size % numFrames) != 0) {
+ BAIL(ERROR_MALFORMED);
+ }
+
+ size_t frameSize = size / numFrames;
+ for (size_t i = 0; i < numFrames - 1; ++i) {
+ frameSizes.push(frameSize);
+ }
+
+ break;
}
- // actual data starts at &data[kPadding + mNALSizeLen]
+ case 3: // EBML
+ {
+ uint64_t lastFrameSize = 0;
+ for (size_t i = 0; i < numFrames - 1; ++i) {
+ uint8_t byte;
- memcpy(&data[mNALSizeLen - 1], "\x00\x00\x00\x01", 4);
- buffer->set_range(mNALSizeLen - 1, NALsize + 4);
- } else if (mType == AAC) {
- // There's strange junk at the beginning...
+ if (size == 0) {
+ BAIL(ERROR_MALFORMED);
+ }
+ byte = data[0];
+ ++data;
+ --size;
+
+ size_t numLeadingZeroes = clz(byte);
+
+ uint64_t frameSize = byte & ~(0x80 >> numLeadingZeroes);
+ for (size_t j = 0; j < numLeadingZeroes; ++j) {
+ if (size == 0) {
+ BAIL(ERROR_MALFORMED);
+ }
+
+ frameSize = frameSize << 8;
+ frameSize |= data[0];
+ ++data;
+ --size;
+ }
- const uint8_t *data = (const uint8_t *)buffer->data() + kPadding;
+ if (i == 0) {
+ frameSizes.push(frameSize);
+ } else {
+ size_t shift =
+ 7 - numLeadingZeroes + 8 * numLeadingZeroes;
- // hexdump(data, size);
+ int64_t delta =
+ (int64_t)frameSize - (1ll << (shift - 1)) + 1;
- size_t offset = 0;
- while (offset < size && data[offset] != 0x21) {
- ++offset;
- }
+ frameSize = lastFrameSize + delta;
- if (size == offset) {
- buffer->release();
+ frameSizes.push(frameSize);
+ }
- mBlockIter.advance();
- goto again;
+ lastFrameSize = frameSize;
+ }
+ break;
}
- buffer->set_range(kPadding + offset, size - offset);
+ default:
+ TRESPASS();
}
- *out = buffer;
-
#if 0
- hexdump((const uint8_t *)buffer->data() + buffer->range_offset(),
- buffer->range_length());
+ AString out;
+ for (size_t i = 0; i < frameSizes.size(); ++i) {
+ if (i > 0) {
+ out.append(", ");
+ }
+ out.append(StringPrintf("%llu", frameSizes.itemAt(i)));
+ }
+ LOGV("sizes = [%s]", out.c_str());
#endif
- mBlockIter.advance();
+ for (size_t i = 0; i < frameSizes.size(); ++i) {
+ uint64_t frameSize = frameSizes.itemAt(i);
+
+ if (size < frameSize) {
+ BAIL(ERROR_MALFORMED);
+ }
+
+ MediaBuffer *mbuf = new MediaBuffer(frameSize);
+ mbuf->meta_data()->setInt64(kKeyTime, timeUs);
+ mbuf->meta_data()->setInt32(kKeyIsSyncFrame, isSync);
+ memcpy(mbuf->data(), data, frameSize);
+ mPendingFrames.push_back(mbuf);
+
+ data += frameSize;
+ size -= frameSize;
+ }
+
+ size_t offset = bigbuf->range_length() - size;
+ bigbuf->set_range(offset, size);
+
+ mPendingFrames.push_back(bigbuf);
+
+ return OK;
+}
+
+#undef BAIL
+
+status_t MatroskaSource::read(
+ MediaBuffer **out, const ReadOptions *options) {
+ *out = NULL;
+
+ int64_t seekTimeUs;
+ ReadOptions::SeekMode mode;
+ if (options && options->getSeekTo(&seekTimeUs, &mode)) {
+ clearPendingFrames();
+ mBlockIter.seek(seekTimeUs);
+ }
+
+again:
+ while (mPendingFrames.empty()) {
+ status_t err = readBlock();
+
+ if (err != OK) {
+ clearPendingFrames();
+
+ return err;
+ }
+ }
+
+ MediaBuffer *frame = *mPendingFrames.begin();
+ mPendingFrames.erase(mPendingFrames.begin());
+
+ size_t size = frame->range_length();
+
+ if (mType != AVC) {
+ *out = frame;
+
+ return OK;
+ }
+
+ if (size < mNALSizeLen) {
+ frame->release();
+ frame = NULL;
+
+ return ERROR_MALFORMED;
+ }
+
+ // In the case of AVC content, each NAL unit is prefixed by
+ // mNALSizeLen bytes of length. We want to prefix the data with
+ // a four-byte 0x00000001 startcode instead of the length prefix.
+ // mNALSizeLen ranges from 1 through 4 bytes, so add an extra
+ // 3 bytes of padding to the buffer start.
+ static const size_t kPadding = 3;
+
+ MediaBuffer *buffer = new MediaBuffer(size + kPadding);
+
+ int64_t timeUs;
+ CHECK(frame->meta_data()->findInt64(kKeyTime, &timeUs));
+ int32_t isSync;
+ CHECK(frame->meta_data()->findInt32(kKeyIsSyncFrame, &isSync));
+
+ buffer->meta_data()->setInt64(kKeyTime, timeUs);
+ buffer->meta_data()->setInt32(kKeyIsSyncFrame, isSync);
+
+ memcpy((uint8_t *)buffer->data() + kPadding,
+ (const uint8_t *)frame->data() + frame->range_offset(),
+ size);
+
+ buffer->set_range(kPadding, size);
+
+ frame->release();
+ frame = NULL;
+
+ uint8_t *data = (uint8_t *)buffer->data();
+
+ size_t NALsize;
+ switch (mNALSizeLen) {
+ case 1: NALsize = data[kPadding]; break;
+ case 2: NALsize = U16_AT(&data[kPadding]); break;
+ case 3: NALsize = U24_AT(&data[kPadding]); break;
+ case 4: NALsize = U32_AT(&data[kPadding]); break;
+ default:
+ TRESPASS();
+ }
+
+ if (size < NALsize + mNALSizeLen) {
+ buffer->release();
+ buffer = NULL;
+
+ return ERROR_MALFORMED;
+ }
+
+ if (size > NALsize + mNALSizeLen) {
+ LOGW("discarding %d bytes of data.", size - NALsize - mNALSizeLen);
+ }
+
+ // actual data starts at &data[kPadding + mNALSizeLen]
+
+ memcpy(&data[mNALSizeLen - 1], "\x00\x00\x00\x01", 4);
+ buffer->set_range(mNALSizeLen - 1, NALsize + 4);
+
+ *out = buffer;
return OK;
}
diff --git a/media/libstagefright/matroska/mkvparser.cpp b/media/libstagefright/matroska/mkvparser.cpp
index 455b1d663753..7448d96337b2 100644
--- a/media/libstagefright/matroska/mkvparser.cpp
+++ b/media/libstagefright/matroska/mkvparser.cpp
@@ -4474,6 +4474,9 @@ bool Block::IsKey() const
return ((m_flags & static_cast<unsigned char>(1 << 7)) != 0);
}
+unsigned char Block::Flags() const {
+ return m_flags;
+}
void Block::SetKey(bool bKey)
{
diff --git a/media/libstagefright/matroska/mkvparser.hpp b/media/libstagefright/matroska/mkvparser.hpp
index c46d349b8deb..f7d89483bca3 100644
--- a/media/libstagefright/matroska/mkvparser.hpp
+++ b/media/libstagefright/matroska/mkvparser.hpp
@@ -80,6 +80,8 @@ public:
bool IsKey() const;
void SetKey(bool);
+ unsigned char Flags() const;
+
long long GetOffset() const;
long GetSize() const;
long Read(IMkvReader*, unsigned char*) const;
diff --git a/packages/SystemUI/res/layout-xlarge/status_bar.xml b/packages/SystemUI/res/layout-xlarge/status_bar.xml
index 0eaf08e53009..0533b6f5e66c 100644
--- a/packages/SystemUI/res/layout-xlarge/status_bar.xml
+++ b/packages/SystemUI/res/layout-xlarge/status_bar.xml
@@ -25,7 +25,8 @@
<FrameLayout
android:id="@+id/bar_contents_holder"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="@*android:dimen/status_bar_height"
+ android:layout_gravity="bottom"
>
<RelativeLayout
android:id="@+id/bar_contents"
@@ -93,7 +94,8 @@
<FrameLayout
android:id="@+id/bar_shadow_holder"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="@*android:dimen/status_bar_height"
+ android:layout_gravity="bottom"
>
<!-- lights out shade -->
<RelativeLayout
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index df846f1d4fbd..caafbdb38fb8 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -108,4 +108,6 @@
<!-- Recent apps label. Shown as title on recent apps panel -->
<string name="recent_tasks_app_label">Apps</string>
+ <!-- Network connection string for Bluetooth Reverse Tethering -->
+ <string name="bluetooth_tethered">Bluetooth tethered"</string>
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java
index 472a22568dc0..8fca759ebf15 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java
@@ -52,6 +52,7 @@ public abstract class StatusBar extends SystemUI implements CommandQueue.Callbac
// Up-call methods
protected abstract View makeStatusBarView();
protected abstract int getStatusBarGravity();
+ public abstract int getStatusBarHeight();
private DoNotDisturb mDoNotDisturb;
@@ -104,8 +105,7 @@ public abstract class StatusBar extends SystemUI implements CommandQueue.Callbac
}
// Put up the view
- final Resources res = mContext.getResources();
- final int height= res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
+ final int height = getStatusBarHeight();
final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
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 0d6c5f65f218..132433b40cd7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -287,9 +287,13 @@ public class PhoneStatusBar extends StatusBar {
return Gravity.TOP | Gravity.FILL_HORIZONTAL;
}
- private void addIntruderView() {
+ public int getStatusBarHeight() {
final Resources res = mContext.getResources();
- final int height= res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
+ return res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
+ }
+
+ private void addIntruderView() {
+ final int height = getStatusBarHeight();
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
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 b0b93e01116b..cb5e36180d42 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -77,7 +77,7 @@ public class NetworkController extends BroadcastReceiver {
int mDataDirectionIconId;
int mDataSignalIconId;
int mDataTypeIconId;
-
+
// wifi
final WifiManager mWifiManager;
boolean mWifiEnabled, mWifiConnected;
@@ -85,6 +85,11 @@ public class NetworkController extends BroadcastReceiver {
String mWifiSsid;
int mWifiIconId;
+ // bluetooth
+ private boolean mBluetoothTethered = false;
+ private int mBluetoothTetherIconId =
+ com.android.internal.R.drawable.stat_sys_tether_bluetooth;
+
// data connectivity (regardless of state, can we access the internet?)
// state of inet connection - 0 not connected, 100 connected
private int mInetCondition = 0;
@@ -104,7 +109,7 @@ public class NetworkController extends BroadcastReceiver {
int mLastCombinedSignalIconId = -1;
int mLastDataTypeIconId = -1;
String mLastLabel = "";
-
+
// yuck -- stop doing this here and put it in the framework
IBatteryStats mBatteryStats;
@@ -235,7 +240,7 @@ public class NetworkController extends BroadcastReceiver {
@Override
public void onDataConnectionStateChanged(int state, int networkType) {
if (DEBUG) {
- Slog.d(TAG, "onDataConnectionStateChanged: state=" + state
+ Slog.d(TAG, "onDataConnectionStateChanged: state=" + state
+ " type=" + networkType);
}
mDataState = state;
@@ -649,13 +654,22 @@ public class NetworkController extends BroadcastReceiver {
mInetCondition = inetCondition;
updateWifiIcons();
break;
+ case ConnectivityManager.TYPE_BLUETOOTH:
+ mInetCondition = inetCondition;
+ if (info != null) {
+ mBluetoothTethered = info.isConnected() ? true: false;
+ } else {
+ mBluetoothTethered = false;
+ }
+ break;
}
}
// ===== Update the views =======================================================
- // figure out what to show: first wifi, then 3G, then nothing
+ // figure out what to show- there should be one connected network or nothing
+ // General order of preference is: wifi, 3G than bluetooth. This might vary by product.
void refreshViews() {
Context context = mContext;
@@ -672,12 +686,16 @@ public class NetworkController extends BroadcastReceiver {
}
combinedSignalIconId = mWifiIconId;
dataTypeIconId = 0;
+ } else if (mDataConnected) {
+ label = mNetworkName;
+ combinedSignalIconId = mDataSignalIconId;
+ dataTypeIconId = mDataTypeIconId;
+ } else if (mBluetoothTethered) {
+ label = mContext.getString(R.string.bluetooth_tethered);
+ combinedSignalIconId = mBluetoothTetherIconId;
+ dataTypeIconId = 0;
} else {
- if (mDataConnected) {
- label = mNetworkName;
- } else {
- label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
- }
+ label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
combinedSignalIconId = mDataSignalIconId;
dataTypeIconId = mDataTypeIconId;
}
@@ -689,7 +707,8 @@ public class NetworkController extends BroadcastReceiver {
+ " mDataDirectionIconId=0x" + Integer.toHexString(mDataDirectionIconId)
+ " mDataSignalIconId=0x" + Integer.toHexString(mDataSignalIconId)
+ " mDataTypeIconId=0x" + Integer.toHexString(mDataTypeIconId)
- + " mWifiIconId=0x" + Integer.toHexString(mWifiIconId));
+ + " mWifiIconId=0x" + Integer.toHexString(mWifiIconId)
+ + "mBluetoothTetherIconId=0x" + Integer.toHexString(mBluetoothTetherIconId));
}
// the phone icon on phones
@@ -809,6 +828,10 @@ public class NetworkController extends BroadcastReceiver {
pw.print(" mWifiIconId=");
pw.println(mWifiIconId);
+ pw.println(" - Bluetooth ----");
+ pw.print(" mBtReverseTethered=");
+ pw.println(mBluetoothTethered);
+
pw.println(" - connectivity ------");
pw.print(" mInetCondition=");
pw.println(mInetCondition);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HeightReceiver.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HeightReceiver.java
new file mode 100644
index 000000000000..561615929571
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HeightReceiver.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2011 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.tablet;
+
+import java.util.ArrayList;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Resources;
+import android.util.DisplayMetrics;
+import android.util.Slog;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.WindowManagerImpl;
+import android.view.WindowManagerPolicy;
+
+public class HeightReceiver extends BroadcastReceiver {
+ private static final String TAG = "StatusBar.HeightReceiver";
+
+ public interface OnBarHeightChangedListener {
+ public void onBarHeightChanged(int height);
+ }
+
+ Context mContext;
+ ArrayList<OnBarHeightChangedListener> mListeners = new ArrayList<OnBarHeightChangedListener>();
+ WindowManager mWindowManager;
+ int mHeight;
+
+ public HeightReceiver(Context context) {
+ mContext = context;
+ mWindowManager = WindowManagerImpl.getDefault();
+ }
+
+ public void addOnBarHeightChangedListener(OnBarHeightChangedListener l) {
+ mListeners.add(l);
+ l.onBarHeightChanged(mHeight);
+ }
+
+ public void removeOnBarHeightChangedListener(OnBarHeightChangedListener l) {
+ mListeners.remove(l);
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final boolean plugged
+ = intent.getBooleanExtra(WindowManagerPolicy.EXTRA_HDMI_PLUGGED_STATE, false);
+ setPlugged(plugged);
+ }
+
+ public void registerReceiver() {
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(WindowManagerPolicy.ACTION_HDMI_PLUGGED);
+ final Intent val = mContext.registerReceiver(this, filter);
+ onReceive(mContext, val);
+ }
+
+ private void setPlugged(boolean plugged) {
+ final Resources res = mContext.getResources();
+
+ Slog.d(TAG, "plugged=" + plugged);
+ int height = -1;
+ if (plugged) {
+ final DisplayMetrics metrics = new DisplayMetrics();
+ mWindowManager.getDefaultDisplay().getMetrics(metrics);
+ Slog.d(TAG, "metrics=" + metrics);
+ height = metrics.heightPixels - 720;
+ }
+
+ final int minHeight
+ = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
+ if (height < minHeight) {
+ height = minHeight;
+ }
+ Slog.d(TAG, "using height=" + height + " old=" + mHeight);
+ mHeight = height;
+
+ final int N = mListeners.size();
+ for (int i=0; i<N; i++) {
+ mListeners.get(i).onBarHeightChanged(height);
+ }
+ }
+
+ public int getHeight() {
+ return mHeight;
+ }
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
index 3201d063ecf6..ffbc0e33b0cc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java
@@ -58,7 +58,6 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
ViewGroup mContentParent;
Choreographer mChoreo = new Choreographer();
- int mStatusBarHeight;
public NotificationPanel(Context context, AttributeSet attrs) {
this(context, attrs, 0);
@@ -66,11 +65,6 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel,
public NotificationPanel(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
-
- final Resources res = context.getResources();
-
- mStatusBarHeight = res.getDimensionPixelSize(
- com.android.internal.R.dimen.status_bar_height);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index cd39d71be3b2..f858f61b1b9c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -74,7 +74,8 @@ import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.recent.RecentApplicationsActivity;
-public class TabletStatusBar extends StatusBar {
+public class TabletStatusBar extends StatusBar implements
+ HeightReceiver.OnBarHeightChangedListener {
public static final boolean DEBUG = false;
public static final String TAG = "TabletStatusBar";
@@ -97,7 +98,9 @@ public class TabletStatusBar extends StatusBar {
public static final int LIGHTS_ON_DELAY = 5000;
- int mBarHeight = -1;
+ // The height of the bar, as definied by the build. It may be taller if we're plugged
+ // into hdmi.
+ int mNaturalBarHeight = -1;
int mIconSize = -1;
int mIconHPadding = -1;
@@ -134,6 +137,7 @@ public class TabletStatusBar extends StatusBar {
ViewGroup mPile;
+ HeightReceiver mHeightReceiver;
BatteryController mBatteryController;
NetworkController mNetworkController;
@@ -269,15 +273,15 @@ public class TabletStatusBar extends StatusBar {
}
@Override
- protected void onConfigurationChanged (Configuration newConfig) {
+ protected void onConfigurationChanged(Configuration newConfig) {
loadDimens();
}
protected void loadDimens() {
final Resources res = mContext.getResources();
- mBarHeight = res.getDimensionPixelSize(
- com.android.internal.R.dimen.status_bar_height);
+ mNaturalBarHeight = res.getDimensionPixelSize(
+ com.android.internal.R.dimen.status_bar_height);
int newIconSize = res.getDimensionPixelSize(
com.android.internal.R.dimen.status_bar_icon_size);
@@ -298,6 +302,10 @@ public class TabletStatusBar extends StatusBar {
mWindowManager = IWindowManager.Stub.asInterface(
ServiceManager.getService(Context.WINDOW_SERVICE));
+ // This guy will listen for HDMI plugged broadcasts so we can resize the
+ // status bar as appropriate.
+ mHeightReceiver = new HeightReceiver(mContext);
+ mHeightReceiver.registerReceiver();
loadDimens();
final TabletStatusBarView sb = (TabletStatusBarView)View.inflate(
@@ -408,13 +416,33 @@ public class TabletStatusBar extends StatusBar {
ScrollView scroller = (ScrollView)mPile.getParent();
scroller.setFillViewport(true);
+ mHeightReceiver.addOnBarHeightChangedListener(this);
+
return sb;
}
+ public int getStatusBarHeight() {
+ return mHeightReceiver.getHeight();
+ }
+
protected int getStatusBarGravity() {
return Gravity.BOTTOM | Gravity.FILL_HORIZONTAL;
}
+ public void onBarHeightChanged(int height) {
+ final WindowManager.LayoutParams lp
+ = (WindowManager.LayoutParams)mStatusBarView.getLayoutParams();
+ if (lp == null) {
+ // haven't been added yet
+ return;
+ }
+ if (lp.height != height) {
+ lp.height = height;
+ final WindowManager wm = WindowManagerImpl.getDefault();
+ wm.updateViewLayout(mStatusBarView, lp);
+ }
+ }
+
private class H extends Handler {
public void handleMessage(Message m) {
switch (m.what) {
@@ -1048,7 +1076,7 @@ public class TabletStatusBar extends StatusBar {
if (mIconLayout == null) return;
final LinearLayout.LayoutParams params
- = new LinearLayout.LayoutParams(mIconSize + 2*mIconHPadding, mBarHeight);
+ = new LinearLayout.LayoutParams(mIconSize + 2*mIconHPadding, mNaturalBarHeight);
int N = mNotns.size();
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index 38eed506d193..6232afd21b5d 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -2329,7 +2329,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
// System.out.println("Features: 0x" + Integer.toHexString(features));
if ((features & ((1 << FEATURE_LEFT_ICON) | (1 << FEATURE_RIGHT_ICON))) != 0) {
if (mIsFloating) {
- layoutResource = com.android.internal.R.layout.dialog_title_icons;
+ TypedValue res = new TypedValue();
+ getContext().getTheme().resolveAttribute(
+ com.android.internal.R.attr.dialogTitleIconsDecorLayout, res, true);
+ layoutResource = res.resourceId;
} else {
layoutResource = com.android.internal.R.layout.screen_title_icons;
}
@@ -2346,7 +2349,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
// Special case for a window with a custom title.
// If the window is floating, we need a dialog layout
if (mIsFloating) {
- layoutResource = com.android.internal.R.layout.dialog_custom_title;
+ TypedValue res = new TypedValue();
+ getContext().getTheme().resolveAttribute(
+ com.android.internal.R.attr.dialogCustomTitleDecorLayout, res, true);
+ layoutResource = res.resourceId;
} else {
layoutResource = com.android.internal.R.layout.screen_custom_title;
}
@@ -2356,7 +2362,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
// If no other features and not embedded, only need a title.
// If the window is floating, we need a dialog layout
if (mIsFloating) {
- layoutResource = com.android.internal.R.layout.dialog_title;
+ TypedValue res = new TypedValue();
+ getContext().getTheme().resolveAttribute(
+ com.android.internal.R.attr.dialogTitleDecorLayout, res, true);
+ layoutResource = res.resourceId;
} else if ((features & (1 << FEATURE_ACTION_BAR)) != 0) {
if ((features & (1 << FEATURE_ACTION_BAR_OVERLAY)) != 0) {
layoutResource = com.android.internal.R.layout.screen_action_bar_overlay;
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 3e8318ed1786..243fa072623a 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -122,6 +122,8 @@ import android.media.IAudioService;
import android.media.AudioManager;
import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
import java.util.ArrayList;
/**
@@ -712,6 +714,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (new File("/sys/devices/virtual/switch/hdmi/state").exists()) {
mHDMIObserver.startObserving("DEVPATH=/devices/virtual/switch/hdmi");
}
+ mHdmiPlugged = !readHdmiState();
+ setHdmiPlugged(!mHdmiPlugged);
// Note: the Configuration is not stable here, so we cannot load mStatusBarCanHide from
// config_statusBarCanHide because the latter depends on the screen size
@@ -2000,11 +2004,40 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mHdmiPlugged = plugged;
updateRotation(Surface.FLAGS_ORIENTATION_ANIMATION_DISABLE);
Intent intent = new Intent(ACTION_HDMI_PLUGGED);
+ intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
intent.putExtra(EXTRA_HDMI_PLUGGED_STATE, plugged);
mContext.sendStickyBroadcast(intent);
}
}
+ boolean readHdmiState() {
+ final String filename = "/sys/class/switch/hdmi/state";
+ FileReader reader = null;
+ try {
+ reader = new FileReader(filename);
+ char[] buf = new char[15];
+ int n = reader.read(buf);
+ if (n > 1) {
+ return 0 != Integer.parseInt(new String(buf, 0, n-1));
+ } else {
+ return false;
+ }
+ } catch (IOException ex) {
+ Slog.d(TAG, "couldn't read hdmi state from " + filename + ": " + ex);
+ return false;
+ } catch (NumberFormatException ex) {
+ Slog.d(TAG, "couldn't read hdmi state from " + filename + ": " + ex);
+ return false;
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException ex) {
+ }
+ }
+ }
+ }
+
/**
* @return Whether music is being played right now.
*/
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java
index cff989286600..1b590ba2190b 100644
--- a/services/java/com/android/server/WifiService.java
+++ b/services/java/com/android/server/WifiService.java
@@ -954,8 +954,10 @@ public class WifiService extends IWifiManager.Stub {
* @see #shouldDeviceStayAwake(int, int)
*/
private boolean shouldWifiStayAwake(int stayAwakeConditions, int pluggedType) {
+ //Never sleep when plugged in as long as the user has not changed the settings
int wifiSleepPolicy = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
+ Settings.System.WIFI_SLEEP_POLICY,
+ Settings.System.WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED);
if (wifiSleepPolicy == Settings.System.WIFI_SLEEP_POLICY_NEVER) {
// Never sleep
diff --git a/tests/appwidgets/AppWidgetHostTest/src/com/android/tests/appwidgethost/AppWidgetHostActivity.java b/tests/appwidgets/AppWidgetHostTest/src/com/android/tests/appwidgethost/AppWidgetHostActivity.java
index bb0fa6007808..2c8c5ba4cef6 100644
--- a/tests/appwidgets/AppWidgetHostTest/src/com/android/tests/appwidgethost/AppWidgetHostActivity.java
+++ b/tests/appwidgets/AppWidgetHostTest/src/com/android/tests/appwidgethost/AppWidgetHostActivity.java
@@ -46,14 +46,22 @@ public class AppWidgetHostActivity extends Activity
AppWidgetContainerView mAppWidgetContainer;
public AppWidgetHostActivity() {
- mAppWidgetManager = AppWidgetManager.getInstance(this);
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ mAppWidgetManager = AppWidgetManager.getInstance(this);
+
setContentView(R.layout.appwidget_host);
+ mHost = new AppWidgetHost(this, HOST_ID) {
+ protected AppWidgetHostView onCreateView(Context context, int appWidgetId, AppWidgetProviderInfo appWidget) {
+ return new MyAppWidgetView(appWidgetId);
+ }
+ };
+
+
findViewById(R.id.add_appwidget).setOnClickListener(mOnClickListener);
mAppWidgetContainer = (AppWidgetContainerView)findViewById(R.id.appwidget_container);
@@ -188,11 +196,7 @@ public class AppWidgetHostActivity extends Activity
}
}
- AppWidgetHost mHost = new AppWidgetHost(this, HOST_ID) {
- protected AppWidgetHostView onCreateView(Context context, int appWidgetId, AppWidgetProviderInfo appWidget) {
- return new MyAppWidgetView(appWidgetId);
- }
- };
+ AppWidgetHost mHost;
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/BitmapFactory.java b/tools/layoutlib/bridge/src/android/graphics/BitmapFactory.java
index c57aef679c83..096498ba9bd1 100644
--- a/tools/layoutlib/bridge/src/android/graphics/BitmapFactory.java
+++ b/tools/layoutlib/bridge/src/android/graphics/BitmapFactory.java
@@ -351,7 +351,8 @@ public class BitmapFactory {
If the exception happened on open, bm will be null.
If it happened on close, bm is still valid.
*/
- Bridge.getLog().error(null, e);
+ Bridge.getLog().error(null,
+ String.format("Error decoding bitmap of id 0x%x", id), e);
} finally {
try {
if (is != null) is.close();
diff --git a/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java
index e9fb30a2f2a1..5524f4f1c3fe 100644
--- a/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java
@@ -73,7 +73,7 @@ public final class NinePatch_Delegate {
oos = new ObjectOutputStream(baos);
oos.writeObject(chunk);
} catch (IOException e) {
- Bridge.getLog().error("Failed to serialize NinePatchChunk.", e);
+ Bridge.getLog().error(null, "Failed to serialize NinePatchChunk.", e);
return null;
} finally {
if (oos != null) {
@@ -196,10 +196,10 @@ public final class NinePatch_Delegate {
sChunkCache.put(array, new SoftReference<NinePatchChunk>(chunk));
}
} catch (IOException e) {
- Bridge.getLog().error("Failed to deserialize NinePatchChunk content.", e);
+ Bridge.getLog().error(null, "Failed to deserialize NinePatchChunk content.", e);
return null;
} catch (ClassNotFoundException e) {
- Bridge.getLog().error("Failed to deserialize NinePatchChunk class.", e);
+ Bridge.getLog().error(null, "Failed to deserialize NinePatchChunk class.", e);
return null;
} finally {
if (ois != null) {
diff --git a/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java
index bc13b52edefc..33c2aed963a0 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Region_Delegate.java
@@ -135,6 +135,123 @@ public class Region_Delegate {
// ---- native methods ----
+ /*package*/ static boolean isEmpty(Region thisRegion) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return true;
+ }
+
+ return regionDelegate.mArea.isEmpty();
+ }
+
+ /*package*/ static boolean isRect(Region thisRegion) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return true;
+ }
+
+ return regionDelegate.mArea.isRectangular();
+ }
+
+ /*package*/ static boolean isComplex(Region thisRegion) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return true;
+ }
+
+ return regionDelegate.mArea.isSingular() == false;
+ }
+
+ /*package*/ static boolean contains(Region thisRegion, int x, int y) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return false;
+ }
+
+ return regionDelegate.mArea.contains(x, y);
+ }
+
+ /*package*/ static boolean quickContains(Region thisRegion,
+ int left, int top, int right, int bottom) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return false;
+ }
+
+ return regionDelegate.mArea.isRectangular() &&
+ regionDelegate.mArea.contains(left, top, right - left, bottom - top);
+ }
+
+ /*package*/ static boolean quickReject(Region thisRegion,
+ int left, int top, int right, int bottom) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return false;
+ }
+
+ return regionDelegate.mArea.isEmpty() ||
+ regionDelegate.mArea.intersects(left, top, right - left, bottom - top) == false;
+ }
+
+ /*package*/ static boolean quickReject(Region thisRegion, Region rgn) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return false;
+ }
+
+ Region_Delegate targetRegionDelegate = sManager.getDelegate(rgn.mNativeRegion);
+ if (targetRegionDelegate == null) {
+ return false;
+ }
+
+ return regionDelegate.mArea.isEmpty() ||
+ regionDelegate.mArea.getBounds().intersects(
+ targetRegionDelegate.mArea.getBounds()) == false;
+
+ }
+
+ /*package*/ static void translate(Region thisRegion, int dx, int dy, Region dst) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return;
+ }
+
+ Region_Delegate targetRegionDelegate = sManager.getDelegate(dst.mNativeRegion);
+ if (targetRegionDelegate == null) {
+ return;
+ }
+
+ if (regionDelegate.mArea.isEmpty()) {
+ targetRegionDelegate.mArea = new Area();
+ } else {
+ targetRegionDelegate.mArea = new Area(regionDelegate.mArea);
+ AffineTransform mtx = new AffineTransform();
+ mtx.translate(dx, dy);
+ targetRegionDelegate.mArea.transform(mtx);
+ }
+ }
+
+ /*package*/ static void scale(Region thisRegion, float scale, Region dst) {
+ Region_Delegate regionDelegate = sManager.getDelegate(thisRegion.mNativeRegion);
+ if (regionDelegate == null) {
+ return;
+ }
+
+ Region_Delegate targetRegionDelegate = sManager.getDelegate(dst.mNativeRegion);
+ if (targetRegionDelegate == null) {
+ return;
+ }
+
+ if (regionDelegate.mArea.isEmpty()) {
+ targetRegionDelegate.mArea = new Area();
+ } else {
+ targetRegionDelegate.mArea = new Area(regionDelegate.mArea);
+ AffineTransform mtx = new AffineTransform();
+ mtx.scale(scale, scale);
+ targetRegionDelegate.mArea.transform(mtx);
+ }
+ }
+
/*package*/ static int nativeConstructor() {
Region_Delegate newDelegate = new Region_Delegate();
return sManager.addDelegate(newDelegate);
diff --git a/tools/layoutlib/bridge/src/com/android/internal/util/XmlUtils_Delegate.java b/tools/layoutlib/bridge/src/com/android/internal/util/XmlUtils_Delegate.java
new file mode 100644
index 000000000000..7fa167983814
--- /dev/null
+++ b/tools/layoutlib/bridge/src/com/android/internal/util/XmlUtils_Delegate.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2011 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.internal.util;
+
+
+/**
+ * Delegate used to provide new implementation of a select few methods of {@link XmlUtils}
+ *
+ * Through the layoutlib_create tool, the original methods of XmlUtils have been replaced
+ * by calls to methods of the same name in this delegate class.
+ *
+ */
+public class XmlUtils_Delegate {
+ /*package*/ static final int convertValueToInt(CharSequence charSeq, int defaultValue) {
+ if (null == charSeq)
+ return defaultValue;
+
+ String nm = charSeq.toString();
+
+ // This code is copied from the original implementation. The issue is that
+ // The Dalvik libraries are able to handle Integer.parse("XXXXXXXX", 16) where XXXXXXX
+ // is > 80000000 but the Java VM cannot.
+
+ int sign = 1;
+ int index = 0;
+ int len = nm.length();
+ int base = 10;
+
+ if ('-' == nm.charAt(0)) {
+ sign = -1;
+ index++;
+ }
+
+ if ('0' == nm.charAt(index)) {
+ // Quick check for a zero by itself
+ if (index == (len - 1))
+ return 0;
+
+ char c = nm.charAt(index + 1);
+
+ if ('x' == c || 'X' == c) {
+ index += 2;
+ base = 16;
+ } else {
+ index++;
+ base = 8;
+ }
+ }
+ else if ('#' == nm.charAt(index)) {
+ index++;
+ base = 16;
+ }
+
+ return ((int)Long.parseLong(nm.substring(index), base)) * sign;
+ }
+}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
index c042327ebf1b..7713f4be0ee5 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
@@ -142,16 +142,6 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge {
}
@Override
- public void error(String tag, Throwable t) {
- String message = t.getMessage();
- if (message == null) {
- message = t.getClass().getName();
- }
-
- System.err.println(message);
- }
-
- @Override
public void error(String tag, String message, Throwable throwable) {
System.err.println(message);
}
@@ -328,7 +318,7 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge {
t2 = t.getCause();
}
return new BridgeRenderSession(null,
- ERROR_UNKNOWN.createResult(t2.getMessage(), t2));
+ ERROR_UNKNOWN.createResult(t2.getMessage(), t));
}
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java
index 596cbfca2cb3..194687ebb48d 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java
@@ -48,7 +48,6 @@ public class BridgeConstants {
public final static String PREFIX_ANDROID = "android:";
- public final static String RES_ANIM = "anim";
public final static String RES_ANIMATOR = "animator";
public final static String RES_STYLE = "style";
public final static String RES_ATTR = "attr";
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeRenderSession.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeRenderSession.java
index 6ebc56c72a71..4c4eedb85c9c 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeRenderSession.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeRenderSession.java
@@ -170,7 +170,9 @@ public class BridgeRenderSession extends RenderSession {
/*package*/ BridgeRenderSession(RenderSessionImpl scene, Result lastResult) {
mSession = scene;
- mSession.setScene(this);
+ if (scene != null) {
+ mSession.setScene(this);
+ }
mLastResult = lastResult;
}
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
index fb79473658b9..28a690b0dc4e 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
@@ -382,8 +382,9 @@ public final class BridgeContext extends Activity {
defStyleValues = (StyleResourceValue)item;
}
} else {
- // TODO: log the error properly
- System.out.println("Failed to find defStyle: " + defStyleName);
+ Bridge.getLog().error(null,
+ String.format(
+ "Failed to find style '%s' in current theme", defStyleName));
}
}
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeInflater.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeInflater.java
index 1b59621be0bb..36aa33552933 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeInflater.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeInflater.java
@@ -178,8 +178,10 @@ public final class BridgeInflater extends LayoutInflater {
return inflate(bridgeParser, root);
} catch (Exception e) {
- Bridge.getLog().error(null, e);
- // return null below.
+ Bridge.getLog().error(null,
+ "Failed to parse file " + f.getAbsolutePath(), e);
+
+ return null;
}
}
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java
index 215c5f936628..a56800c036ec 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java
@@ -43,7 +43,6 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
-import java.io.IOException;
import java.io.InputStream;
/**
@@ -173,14 +172,13 @@ public final class BridgeResources extends Resources {
return ColorStateList.createFromXml(this,
new BridgeXmlBlockParser(parser, mContext, resValue.isFramework()));
- } catch (XmlPullParserException e) {
- Bridge.getLog().error(null, e);
- } catch (FileNotFoundException e) {
- // will not happen, since we pre-check
- } catch (IOException e) {
- Bridge.getLog().error(null, e);
- }
+ } catch (Exception e) {
+ // this is an error and not warning since the file existence is checked before
+ // attempting to parse it.
+ Bridge.getLog().error(null, "Failed to parse file " + value, e);
+ return null;
+ }
} else {
// try to load the color state list from an int
try {
@@ -245,7 +243,8 @@ public final class BridgeResources extends Resources {
return new BridgeXmlBlockParser(parser, mContext, mPlatformResourceFlag[0]);
}
} catch (XmlPullParserException e) {
- Bridge.getLog().error(null, e);
+ Bridge.getLog().error(null,
+ "Failed to configure parser for " + value.getValue(), e);
// we'll return null below.
} catch (FileNotFoundException e) {
// this shouldn't happen since we check above.
@@ -279,7 +278,8 @@ public final class BridgeResources extends Resources {
return new BridgeXmlBlockParser(parser, mContext, mPlatformResourceFlag[0]);
}
} catch (XmlPullParserException e) {
- Bridge.getLog().error(null, e);
+ Bridge.getLog().error(null,
+ "Failed to configure parser for " + value.getValue(), e);
// we'll return null below.
} catch (FileNotFoundException e) {
// this shouldn't happen since we check above.
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java
index d36846bc569c..7f118976de84 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java
@@ -322,9 +322,9 @@ public final class BridgeTypedArray extends TypedArray {
} catch (Exception e) {
// this is an error and not warning since the file existence is checked before
// attempting to parse it.
- Bridge.getLog().error(null, e);
+ Bridge.getLog().error(null, "Failed to parse file " + value, e);
- // return null below.
+ return null;
}
// looks like were unable to resolve the color value.
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
index d2fef5e04bd4..5d5f2a163e76 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
@@ -365,7 +365,7 @@ public class RenderSessionImpl {
}
// log it
- mParams.getLog().error("Scene inflate failed", t);
+ mParams.getLog().error(null, "Scene inflate failed", t);
return ERROR_INFLATION.createResult(t.getMessage(), t);
}
@@ -481,7 +481,7 @@ public class RenderSessionImpl {
}
// log it
- mParams.getLog().error("Scene Render failed", t);
+ mParams.getLog().error(null, "Scene Render failed", t);
return ERROR_UNKNOWN.createResult(t.getMessage(), t);
}
@@ -505,18 +505,18 @@ public class RenderSessionImpl {
ResourceValue animationResource = null;
int animationId = 0;
if (isFrameworkAnimation) {
- animationResource = mContext.getFrameworkResource(BridgeConstants.RES_ANIM,
+ animationResource = mContext.getFrameworkResource(BridgeConstants.RES_ANIMATOR,
animationName);
if (animationResource != null) {
- animationId = Bridge.getResourceValue(BridgeConstants.RES_ANIM,
+ animationId = Bridge.getResourceValue(BridgeConstants.RES_ANIMATOR,
animationName);
}
} else {
- animationResource = mContext.getProjectResource(BridgeConstants.RES_ANIM,
+ animationResource = mContext.getProjectResource(BridgeConstants.RES_ANIMATOR,
animationName);
if (animationResource != null) {
animationId = mContext.getProjectCallback().getResourceValue(
- BridgeConstants.RES_ANIM, animationName);
+ BridgeConstants.RES_ANIMATOR, animationName);
}
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/ResourceHelper.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/ResourceHelper.java
index 5427f142697d..fb52c861dda7 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/ResourceHelper.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/ResourceHelper.java
@@ -27,7 +27,6 @@ import com.android.ninepatch.NinePatchChunk;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
import android.graphics.Bitmap;
import android.graphics.Bitmap_Delegate;
@@ -40,7 +39,6 @@ import android.graphics.drawable.NinePatchDrawable;
import android.util.TypedValue;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -162,7 +160,7 @@ public final class ResourceHelper {
// URL is wrong, we'll return null below
} catch (IOException e) {
// failed to read the file, we'll return null below.
- Bridge.getLog().error(null, e);
+ Bridge.getLog().error(null, "Failed lot load " + file.getAbsolutePath(), e);
}
}
@@ -190,13 +188,14 @@ public final class ResourceHelper {
d = Drawable.createFromXml(context.getResources(),
new BridgeXmlBlockParser(parser, context, isFramework));
return d;
- } catch (XmlPullParserException e) {
- Bridge.getLog().error(null, e);
- } catch (FileNotFoundException e) {
- // will not happen, since we pre-check
- } catch (IOException e) {
- Bridge.getLog().error(null, e);
+ } catch (Exception e) {
+ // this is an error and not warning since the file existence is checked before
+ // attempting to parse it.
+ Bridge.getLog().error(null, "Failed to parse file " + value, e);
}
+ } else {
+ Bridge.getLog().error(null,
+ String.format("File %s does not exist (or is not a file)", stringValue));
}
return null;
@@ -222,7 +221,7 @@ public final class ResourceHelper {
return new BitmapDrawable(context.getResources(), bitmap);
} catch (IOException e) {
// we'll return null below
- Bridge.getLog().error(null, e);
+ Bridge.getLog().error(null, "Failed lot load " + bmpFile.getAbsolutePath(), e);
}
} else {
// attempt to get a color from the value
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
index 6b589d771690..4198006c5218 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
@@ -97,6 +97,7 @@ public final class CreateInfo implements ICreateInfo {
"android.app.Fragment#instantiate", //(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment;",
"android.os.Handler#sendMessageAtTime",
"android.view.View#isInEditMode",
+ "com.android.internal.util.XmlUtils#convertValueToInt"
// TODO: comment out once DelegateClass is working
// "android.content.res.Resources$Theme#obtainStyledAttributes",
};
diff --git a/wifi/java/android/net/wifi/SupplicantStateTracker.java b/wifi/java/android/net/wifi/SupplicantStateTracker.java
index 1a0050742a13..f96a5ae65e96 100644
--- a/wifi/java/android/net/wifi/SupplicantStateTracker.java
+++ b/wifi/java/android/net/wifi/SupplicantStateTracker.java
@@ -192,27 +192,16 @@ class SupplicantStateTracker extends HierarchicalStateMachine {
@Override
public void enter() {
if (DBG) Log.d(TAG, getName() + "\n");
- mWifiStateMachine.setNetworkAvailable(false);
}
- @Override
- public void exit() {
- mWifiStateMachine.setNetworkAvailable(true);
- }
}
class InactiveState extends HierarchicalState {
@Override
public void enter() {
if (DBG) Log.d(TAG, getName() + "\n");
- mWifiStateMachine.setNetworkAvailable(false);
}
- @Override
- public void exit() {
- mWifiStateMachine.setNetworkAvailable(true);
- }
}
-
class DisconnectedState extends HierarchicalState {
@Override
public void enter() {
@@ -336,4 +325,4 @@ class SupplicantStateTracker extends HierarchicalStateMachine {
if (DBG) Log.d(TAG, getName() + "\n");
}
}
-} \ No newline at end of file
+}
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 10faedaa1ad9..871811730679 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -299,10 +299,8 @@ public class WifiStateMachine extends HierarchicalStateMachine {
static final int CMD_SET_FREQUENCY_BAND = 90;
/* Commands from/to the SupplicantStateTracker */
- /* Indicates whether a wifi network is available for connection */
- static final int CMD_SET_NETWORK_AVAILABLE = 111;
/* Reset the supplicant state tracker */
- static final int CMD_RESET_SUPPLICANT_STATE = 112;
+ static final int CMD_RESET_SUPPLICANT_STATE = 111;
/* Commands/events reported by WpsStateMachine */
@@ -1451,10 +1449,6 @@ public class WifiStateMachine extends HierarchicalStateMachine {
setWifiEnabled(true);
}
- void setNetworkAvailable(boolean available) {
- sendMessage(obtainMessage(CMD_SET_NETWORK_AVAILABLE, available ? 1 : 0, 0));
- }
-
/********************************************************
* HSM states
*******************************************************/
@@ -1480,9 +1474,6 @@ public class WifiStateMachine extends HierarchicalStateMachine {
case CMD_ENABLE_RSSI_POLL:
mEnableRssiPolling = (message.arg1 == 1);
break;
- case CMD_SET_NETWORK_AVAILABLE:
- mNetworkInfo.setIsAvailable(message.arg1 == 1);
- break;
/* Discard */
case CMD_LOAD_DRIVER:
case CMD_UNLOAD_DRIVER:
@@ -1873,6 +1864,8 @@ public class WifiStateMachine extends HierarchicalStateMachine {
EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName());
/* Initialize for connect mode operation at start */
mIsScanMode = false;
+ /* Wifi is available as long as we have a connection to supplicant */
+ mNetworkInfo.setIsAvailable(true);
}
@Override
public boolean processMessage(Message message) {
@@ -1886,6 +1879,7 @@ public class WifiStateMachine extends HierarchicalStateMachine {
Log.e(TAG, "Failed to stop supplicant, issue kill");
WifiNative.killSupplicant();
}
+ mNetworkInfo.setIsAvailable(false);
handleNetworkDisconnect();
setWifiState(WIFI_STATE_DISABLING);
sendSupplicantConnectionChangedBroadcast(false);
@@ -1896,6 +1890,7 @@ public class WifiStateMachine extends HierarchicalStateMachine {
Log.e(TAG, "Connection lost, restart supplicant");
WifiNative.killSupplicant();
WifiNative.closeSupplicantConnection();
+ mNetworkInfo.setIsAvailable(false);
handleNetworkDisconnect();
sendSupplicantConnectionChangedBroadcast(false);
mSupplicantStateTracker.sendMessage(CMD_RESET_SUPPLICANT_STATE);
@@ -1975,6 +1970,11 @@ public class WifiStateMachine extends HierarchicalStateMachine {
}
return HANDLED;
}
+
+ @Override
+ public void exit() {
+ mNetworkInfo.setIsAvailable(false);
+ }
}
class SupplicantStoppingState extends HierarchicalState {