Merge "VideoEditor:Clear Surface API addition" into honeycomb
diff --git a/api/11.xml b/api/11.xml
index 52d48b6..6ed9d22 100644
--- a/api/11.xml
+++ b/api/11.xml
@@ -9926,6 +9926,28 @@
  visibility="public"
 >
 </field>
+<field name="textEditSideNoPasteWindowLayout"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843615"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="textEditSidePasteWindowLayout"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843614"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="textFilterEnabled"
  type="int"
  transient="false"
@@ -14915,7 +14937,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974054"
+ value="16974053"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14926,7 +14948,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974056"
+ value="16974055"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14937,7 +14959,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974055"
+ value="16974054"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14948,7 +14970,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974057"
+ value="16974056"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14959,7 +14981,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974059"
+ value="16974058"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14970,7 +14992,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974058"
+ value="16974057"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15289,7 +15311,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973953"
+ value="16973952"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15300,7 +15322,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973954"
+ value="16973953"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15432,7 +15454,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973936"
+ value="16973935"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15443,7 +15465,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973944"
+ value="16973943"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15454,7 +15476,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973945"
+ value="16973944"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15465,7 +15487,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973937"
+ value="16973936"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15476,7 +15498,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973938"
+ value="16973937"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15487,7 +15509,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973939"
+ value="16973938"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15498,7 +15520,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973952"
+ value="16973951"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15509,7 +15531,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973935"
+ value="16973934"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15520,7 +15542,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973940"
+ value="16973939"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15531,7 +15553,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973946"
+ value="16973945"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15542,7 +15564,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973947"
+ value="16973946"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15553,7 +15575,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973941"
+ value="16973940"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15564,7 +15586,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973942"
+ value="16973941"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15575,7 +15597,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973943"
+ value="16973942"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15586,7 +15608,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973949"
+ value="16973948"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15597,7 +15619,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973933"
+ value="16973932"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15608,7 +15630,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973934"
+ value="16973933"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15619,7 +15641,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973948"
+ value="16973947"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15630,7 +15652,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973950"
+ value="16973949"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15641,7 +15663,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973951"
+ value="16973950"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15670,17 +15692,6 @@
  visibility="public"
 >
 </field>
-<field name="Theme_Light_Holo"
- type="int"
- transient="false"
- volatile="false"
- value="16973932"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
 <field name="Theme_Light_NoTitleBar"
  type="int"
  transient="false"
@@ -15894,7 +15905,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973955"
+ value="16973954"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15905,7 +15916,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973957"
+ value="16973956"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15916,7 +15927,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973961"
+ value="16973960"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15927,7 +15938,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973960"
+ value="16973959"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15993,7 +16004,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974060"
+ value="16974059"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16048,7 +16059,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974063"
+ value="16974062"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16103,7 +16114,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973962"
+ value="16973961"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16136,7 +16147,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973963"
+ value="16973962"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16147,7 +16158,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974005"
+ value="16974004"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16158,7 +16169,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974000"
+ value="16973999"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16169,7 +16180,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974004"
+ value="16974003"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16180,7 +16191,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974001"
+ value="16974000"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16191,7 +16202,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974002"
+ value="16974001"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16202,7 +16213,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974003"
+ value="16974002"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16213,7 +16224,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973969"
+ value="16973968"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16224,7 +16235,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973964"
+ value="16973963"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16235,7 +16246,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974051"
+ value="16974050"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16246,7 +16257,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973966"
+ value="16973965"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16257,7 +16268,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973965"
+ value="16973964"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16268,7 +16279,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973967"
+ value="16973966"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16279,7 +16290,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974061"
+ value="16974060"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16290,7 +16301,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973970"
+ value="16973969"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16301,7 +16312,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973987"
+ value="16973986"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16312,7 +16323,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973991"
+ value="16973990"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16323,7 +16334,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974064"
+ value="16974063"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16334,7 +16345,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973995"
+ value="16973994"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16345,7 +16356,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973996"
+ value="16973995"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16356,7 +16367,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973972"
+ value="16973971"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16367,7 +16378,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973973"
+ value="16973972"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16378,7 +16389,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973974"
+ value="16973973"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16389,7 +16400,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973989"
+ value="16973988"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16400,7 +16411,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973975"
+ value="16973974"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16411,7 +16422,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974006"
+ value="16974005"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16422,7 +16433,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974050"
+ value="16974049"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16433,7 +16444,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974046"
+ value="16974045"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16444,7 +16455,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974049"
+ value="16974048"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16455,7 +16466,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974047"
+ value="16974046"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16466,7 +16477,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974048"
+ value="16974047"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16477,7 +16488,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974012"
+ value="16974011"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16488,7 +16499,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974007"
+ value="16974006"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16499,7 +16510,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974009"
+ value="16974008"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16510,7 +16521,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974008"
+ value="16974007"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16521,7 +16532,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974010"
+ value="16974009"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16532,7 +16543,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974062"
+ value="16974061"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16543,7 +16554,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974013"
+ value="16974012"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16554,7 +16565,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974033"
+ value="16974032"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16565,7 +16576,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974037"
+ value="16974036"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16576,7 +16587,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974041"
+ value="16974040"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16587,7 +16598,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974042"
+ value="16974041"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16598,7 +16609,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974015"
+ value="16974014"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16609,7 +16620,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974016"
+ value="16974015"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16620,7 +16631,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974017"
+ value="16974016"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16631,7 +16642,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974035"
+ value="16974034"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16642,7 +16653,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974018"
+ value="16974017"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16653,7 +16664,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974044"
+ value="16974043"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16664,7 +16675,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974019"
+ value="16974018"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16675,7 +16686,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974014"
+ value="16974013"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16686,7 +16697,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974045"
+ value="16974044"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16697,7 +16708,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974020"
+ value="16974019"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16708,7 +16719,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974021"
+ value="16974020"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16719,7 +16730,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974022"
+ value="16974021"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16730,7 +16741,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974026"
+ value="16974025"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16741,7 +16752,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974025"
+ value="16974024"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16752,7 +16763,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974028"
+ value="16974027"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16763,7 +16774,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974023"
+ value="16974022"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16774,7 +16785,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974027"
+ value="16974026"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16785,7 +16796,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974024"
+ value="16974023"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16796,7 +16807,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974030"
+ value="16974029"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16807,7 +16818,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974031"
+ value="16974030"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16818,7 +16829,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974032"
+ value="16974031"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16829,7 +16840,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974034"
+ value="16974033"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16840,7 +16851,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974029"
+ value="16974028"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16851,7 +16862,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974036"
+ value="16974035"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16862,7 +16873,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974053"
+ value="16974052"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16873,7 +16884,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974038"
+ value="16974037"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16884,7 +16895,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974011"
+ value="16974010"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16895,7 +16906,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974043"
+ value="16974042"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16906,7 +16917,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974039"
+ value="16974038"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16917,7 +16928,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974040"
+ value="16974039"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16928,7 +16939,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973998"
+ value="16973997"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16939,7 +16950,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973976"
+ value="16973975"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16950,7 +16961,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973971"
+ value="16973970"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16961,7 +16972,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973999"
+ value="16973998"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16972,7 +16983,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973977"
+ value="16973976"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16983,7 +16994,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973978"
+ value="16973977"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16994,7 +17005,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973979"
+ value="16973978"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17005,7 +17016,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973982"
+ value="16973981"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17016,7 +17027,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973980"
+ value="16973979"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17027,7 +17038,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973981"
+ value="16973980"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17038,7 +17049,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973984"
+ value="16973983"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17049,7 +17060,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973985"
+ value="16973984"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17060,7 +17071,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973986"
+ value="16973985"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17071,7 +17082,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973988"
+ value="16973987"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17082,7 +17093,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973983"
+ value="16973982"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17093,7 +17104,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973990"
+ value="16973989"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17104,7 +17115,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974052"
+ value="16974051"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17115,7 +17126,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973992"
+ value="16973991"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17126,7 +17137,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973968"
+ value="16973967"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17137,7 +17148,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973997"
+ value="16973996"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17148,7 +17159,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973993"
+ value="16973992"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17159,7 +17170,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973994"
+ value="16973993"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17203,7 +17214,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973958"
+ value="16973957"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17258,7 +17269,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973959"
+ value="16973958"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17401,7 +17412,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973956"
+ value="16973955"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -60581,6 +60592,17 @@
  visibility="public"
 >
 </field>
+<field name="FEATURE_FAKETOUCH"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.hardware.faketouch&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="FEATURE_LIVE_WALLPAPER"
  type="java.lang.String"
  transient="false"
@@ -138493,11 +138515,22 @@
  visibility="public"
 >
 </field>
+<field name="GINGERBREAD_MR1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="HONEYCOMB"
  type="int"
  transient="false"
  volatile="false"
- value="10000"
+ value="11"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -234839,6 +234872,17 @@
  visibility="public"
 >
 </method>
+<method name="getDisplayZoomControls"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getDomStorageEnabled"
  return="boolean"
  abstract="false"
@@ -235333,6 +235377,19 @@
 <parameter name="zoom" type="android.webkit.WebSettings.ZoomDensity">
 </parameter>
 </method>
+<method name="setDisplayZoomControls"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="enabled" type="boolean">
+</parameter>
+</method>
 <method name="setDomStorageEnabled"
  return="void"
  abstract="false"
@@ -260249,7 +260306,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="t" type="T">
+<parameter name="arg0" type="T">
 </parameter>
 </method>
 </interface>
diff --git a/api/current.xml b/api/current.xml
index 9520f19..b3f03a6 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -14937,7 +14937,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974054"
+ value="16974053"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14948,7 +14948,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974056"
+ value="16974055"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14959,7 +14959,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974055"
+ value="16974054"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14970,7 +14970,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974057"
+ value="16974056"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14981,7 +14981,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974059"
+ value="16974058"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -14992,7 +14992,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974058"
+ value="16974057"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15311,7 +15311,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973953"
+ value="16973952"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15322,7 +15322,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973954"
+ value="16973953"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15454,7 +15454,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973936"
+ value="16973935"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15465,7 +15465,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973944"
+ value="16973943"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15476,7 +15476,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973945"
+ value="16973944"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15487,7 +15487,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973937"
+ value="16973936"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15498,7 +15498,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973938"
+ value="16973937"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15509,7 +15509,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973939"
+ value="16973938"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15520,7 +15520,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973952"
+ value="16973951"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15531,7 +15531,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973935"
+ value="16973934"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15542,7 +15542,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973940"
+ value="16973939"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15553,7 +15553,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973946"
+ value="16973945"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15564,7 +15564,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973947"
+ value="16973946"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15575,7 +15575,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973941"
+ value="16973940"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15586,7 +15586,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973942"
+ value="16973941"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15597,7 +15597,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973943"
+ value="16973942"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15608,7 +15608,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973949"
+ value="16973948"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15619,7 +15619,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973933"
+ value="16973932"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15630,7 +15630,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973934"
+ value="16973933"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15641,7 +15641,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973948"
+ value="16973947"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15652,7 +15652,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973950"
+ value="16973949"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15663,7 +15663,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973951"
+ value="16973950"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15692,17 +15692,6 @@
  visibility="public"
 >
 </field>
-<field name="Theme_Light_Holo"
- type="int"
- transient="false"
- volatile="false"
- value="16973932"
- static="true"
- final="true"
- deprecated="not deprecated"
- visibility="public"
->
-</field>
 <field name="Theme_Light_NoTitleBar"
  type="int"
  transient="false"
@@ -15916,7 +15905,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973955"
+ value="16973954"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15927,7 +15916,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973957"
+ value="16973956"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15938,7 +15927,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973961"
+ value="16973960"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -15949,7 +15938,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973960"
+ value="16973959"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16015,7 +16004,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974060"
+ value="16974059"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16070,7 +16059,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974063"
+ value="16974062"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16125,7 +16114,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973962"
+ value="16973961"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16158,7 +16147,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973963"
+ value="16973962"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16169,7 +16158,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974005"
+ value="16974004"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16180,7 +16169,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974000"
+ value="16973999"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16191,7 +16180,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974004"
+ value="16974003"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16202,7 +16191,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974001"
+ value="16974000"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16213,7 +16202,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974002"
+ value="16974001"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16224,7 +16213,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974003"
+ value="16974002"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16235,7 +16224,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973969"
+ value="16973968"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16246,7 +16235,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973964"
+ value="16973963"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16257,7 +16246,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974051"
+ value="16974050"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16268,7 +16257,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973966"
+ value="16973965"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16279,7 +16268,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973965"
+ value="16973964"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16290,7 +16279,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973967"
+ value="16973966"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16301,7 +16290,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974061"
+ value="16974060"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16312,7 +16301,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973970"
+ value="16973969"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16323,7 +16312,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973987"
+ value="16973986"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16334,7 +16323,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973991"
+ value="16973990"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16345,7 +16334,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974064"
+ value="16974063"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16356,7 +16345,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973995"
+ value="16973994"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16367,7 +16356,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973996"
+ value="16973995"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16378,7 +16367,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973972"
+ value="16973971"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16389,7 +16378,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973973"
+ value="16973972"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16400,7 +16389,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973974"
+ value="16973973"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16411,7 +16400,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973989"
+ value="16973988"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16422,7 +16411,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973975"
+ value="16973974"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16433,7 +16422,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974006"
+ value="16974005"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16444,7 +16433,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974050"
+ value="16974049"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16455,7 +16444,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974046"
+ value="16974045"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16466,7 +16455,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974049"
+ value="16974048"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16477,7 +16466,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974047"
+ value="16974046"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16488,7 +16477,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974048"
+ value="16974047"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16499,7 +16488,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974012"
+ value="16974011"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16510,7 +16499,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974007"
+ value="16974006"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16521,7 +16510,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974009"
+ value="16974008"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16532,7 +16521,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974008"
+ value="16974007"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16543,7 +16532,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974010"
+ value="16974009"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16554,7 +16543,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974062"
+ value="16974061"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16565,7 +16554,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974013"
+ value="16974012"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16576,7 +16565,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974033"
+ value="16974032"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16587,7 +16576,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974037"
+ value="16974036"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16598,7 +16587,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974041"
+ value="16974040"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16609,7 +16598,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974042"
+ value="16974041"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16620,7 +16609,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974015"
+ value="16974014"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16631,7 +16620,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974016"
+ value="16974015"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16642,7 +16631,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974017"
+ value="16974016"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16653,7 +16642,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974035"
+ value="16974034"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16664,7 +16653,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974018"
+ value="16974017"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16675,7 +16664,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974044"
+ value="16974043"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16686,7 +16675,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974019"
+ value="16974018"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16697,7 +16686,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974014"
+ value="16974013"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16708,7 +16697,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974045"
+ value="16974044"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16719,7 +16708,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974020"
+ value="16974019"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16730,7 +16719,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974021"
+ value="16974020"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16741,7 +16730,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974022"
+ value="16974021"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16752,7 +16741,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974026"
+ value="16974025"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16763,7 +16752,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974025"
+ value="16974024"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16774,7 +16763,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974028"
+ value="16974027"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16785,7 +16774,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974023"
+ value="16974022"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16796,7 +16785,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974027"
+ value="16974026"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16807,7 +16796,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974024"
+ value="16974023"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16818,7 +16807,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974030"
+ value="16974029"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16829,7 +16818,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974031"
+ value="16974030"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16840,7 +16829,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974032"
+ value="16974031"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16851,7 +16840,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974034"
+ value="16974033"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16862,7 +16851,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974029"
+ value="16974028"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16873,7 +16862,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974036"
+ value="16974035"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16884,7 +16873,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974053"
+ value="16974052"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16895,7 +16884,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974038"
+ value="16974037"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16906,7 +16895,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974011"
+ value="16974010"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16917,7 +16906,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974043"
+ value="16974042"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16928,7 +16917,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974039"
+ value="16974038"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16939,7 +16928,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974040"
+ value="16974039"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16950,7 +16939,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973998"
+ value="16973997"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16961,7 +16950,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973976"
+ value="16973975"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16972,7 +16961,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973971"
+ value="16973970"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16983,7 +16972,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973999"
+ value="16973998"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -16994,7 +16983,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973977"
+ value="16973976"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17005,7 +16994,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973978"
+ value="16973977"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17016,7 +17005,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973979"
+ value="16973978"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17027,7 +17016,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973982"
+ value="16973981"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17038,7 +17027,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973980"
+ value="16973979"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17049,7 +17038,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973981"
+ value="16973980"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17060,7 +17049,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973984"
+ value="16973983"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17071,7 +17060,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973985"
+ value="16973984"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17082,7 +17071,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973986"
+ value="16973985"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17093,7 +17082,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973988"
+ value="16973987"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17104,7 +17093,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973983"
+ value="16973982"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17115,7 +17104,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973990"
+ value="16973989"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17126,7 +17115,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16974052"
+ value="16974051"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17137,7 +17126,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973992"
+ value="16973991"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17148,7 +17137,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973968"
+ value="16973967"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17159,7 +17148,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973997"
+ value="16973996"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17170,7 +17159,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973993"
+ value="16973992"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17181,7 +17170,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973994"
+ value="16973993"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17225,7 +17214,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973958"
+ value="16973957"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17280,7 +17269,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973959"
+ value="16973958"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -17423,7 +17412,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16973956"
+ value="16973955"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -60603,6 +60592,17 @@
  visibility="public"
 >
 </field>
+<field name="FEATURE_FAKETOUCH"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.hardware.faketouch&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="FEATURE_LIVE_WALLPAPER"
  type="java.lang.String"
  transient="false"
@@ -138515,11 +138515,22 @@
  visibility="public"
 >
 </field>
+<field name="GINGERBREAD_MR1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="HONEYCOMB"
  type="int"
  transient="false"
  volatile="false"
- value="10000"
+ value="11"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -214812,6 +214823,19 @@
 <parameter name="selected" type="boolean">
 </parameter>
 </method>
+<method name="dispatchSystemUiVisibilityChanged"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="visibility" type="int">
+</parameter>
+</method>
 <method name="dispatchTouchEvent"
  return="boolean"
  abstract="false"
@@ -215865,6 +215889,19 @@
  visibility="protected"
 >
 </method>
+<method name="getSystemUiVisibility"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="visibility" type="int">
+</parameter>
+</method>
 <method name="getTag"
  return="java.lang.Object"
  abstract="false"
@@ -218115,6 +218152,19 @@
 <parameter name="l" type="android.view.View.OnLongClickListener">
 </parameter>
 </method>
+<method name="setOnSystemUiVisibilityChangeListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="l" type="android.view.View.OnSystemUiVisibilityChangeListener">
+</parameter>
+</method>
 <method name="setOnTouchListener"
  return="void"
  abstract="false"
@@ -218368,6 +218418,19 @@
 <parameter name="soundEffectsEnabled" type="boolean">
 </parameter>
 </method>
+<method name="setSystemUiVisibility"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="visibility" type="int">
+</parameter>
+</method>
 <method name="setTag"
  return="void"
  abstract="false"
@@ -219375,6 +219438,28 @@
  visibility="public"
 >
 </field>
+<field name="STATUS_BAR_HIDDEN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="STATUS_BAR_VISIBLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="VIEW_LOG_TAG"
  type="java.lang.String"
  transient="false"
@@ -219793,6 +219878,27 @@
 </parameter>
 </method>
 </interface>
+<interface name="View.OnSystemUiVisibilityChangeListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onSystemUiVisibilityChange"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="visibility" type="int">
+</parameter>
+</method>
+</interface>
 <interface name="View.OnTouchListener"
  abstract="true"
  static="true"
@@ -260295,7 +260401,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="t" type="T">
+<parameter name="arg0" type="T">
 </parameter>
 </method>
 </interface>
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index 03a98d1..60213f8 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -696,7 +696,7 @@
                 final Intent intent = mCurIntent;
                 mCurIntent = null;
                 
-                if (receiver == null) {
+                if (receiver == null || !mRegistered) {
                     if (mRegistered && ordered) {
                         if (ActivityThread.DEBUG_BROADCAST) Slog.i(ActivityThread.TAG,
                                 "Finishing null broadcast to " + mReceiver);
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 6e9cdbe..a589216 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -832,6 +832,18 @@
 
     /**
      * Feature for {@link #getSystemAvailableFeatures} and
+     * {@link #hasSystemFeature}: The device does not have a touch screen, but
+     * does support touch emulation for basic events. For instance, the
+     * device might use a mouse or remote control to drive a cursor, and
+     * emulate basic touch pointer events like down, up, drag, etc. All
+     * devices that support android.hardware.touchscreen or a sub-feature are
+     * presumed to also support faketouch.
+     */
+    @SdkConstant(SdkConstantType.FEATURE)
+    public static final String FEATURE_FAKETOUCH = "android.hardware.faketouch";
+
+    /**
+     * Feature for {@link #getSystemAvailableFeatures} and
      * {@link #hasSystemFeature}: The device supports live wallpapers.
      */
     @SdkConstant(SdkConstantType.FEATURE)
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 35f1c58..8d2607a 100644
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -197,12 +197,17 @@
         public static final int FROYO = 8;
         
         /**
-         * Newest version of Android, version 2.3.
+         * November 2010: Android 2.3
          */
         public static final int GINGERBREAD = 9;
+        
+        /**
+         * Almost newest version of Android, version 2.3.3.
+         */
+        public static final int GINGERBREAD_MR1 = 10;
 
         /**
-         * Next next version of Android.
+         * Newest version of Android, version 3.0.
          *
          * <p>Applications targeting this or a later release will get these
          * new changes in behavior:</p>
@@ -211,7 +216,7 @@
          *      {@link android.R.style#Theme_Holo}.
          * <li> The activity lifecycle has changed slightly as per
          * {@link android.app.Activity}.
-         * <li> When an application requires a permission to access on of
+         * <li> When an application requires a permission to access one of
          * its components (activity, receiver, service, provider), this
          * permission is no longer enforced when the application wants to
          * access its own component.  This means it can require a permission
@@ -219,7 +224,7 @@
          * component.
          * </ul>
          */
-        public static final int HONEYCOMB = CUR_DEVELOPMENT;
+        public static final int HONEYCOMB = 11;
     }
     
     /** The type of build, like "user" or "eng". */
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index e47dc93..f6c5e0b 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -525,9 +525,15 @@
     @Override
     public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter,
             Paint paint) {
-        throw new UnsupportedOperationException();
+        boolean hasModifier = setupModifiers(paint);
+        nDrawArc(mRenderer, oval.left, oval.top, oval.right, oval.bottom, startAngle, sweepAngle,
+                useCenter, paint.mNativePaint);
+        if (hasModifier) nResetModifiers(mRenderer);
     }
 
+    private native void nDrawArc(int renderer, float left, float top, float right, float bottom,
+            float startAngle, float sweepAngle, boolean useCenter, int paint);
+
     @Override
     public void drawARGB(int a, int r, int g, int b) {
         drawColor((a & 0xFF) << 24 | (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF));
@@ -705,9 +711,14 @@
 
     @Override
     public void drawOval(RectF oval, Paint paint) {
-        throw new UnsupportedOperationException();
+        boolean hasModifier = setupModifiers(paint);
+        nDrawOval(mRenderer, oval.left, oval.top, oval.right, oval.bottom, paint.mNativePaint);
+        if (hasModifier) nResetModifiers(mRenderer); 
     }
 
+    private native void nDrawOval(int renderer, float left, float top, float right, float bottom,
+            int paint);
+
     @Override
     public void drawPaint(Paint paint) {
         final Rect r = mClipBounds;
@@ -765,12 +776,12 @@
 
     @Override
     public void drawPosText(char[] text, int index, int count, float[] pos, Paint paint) {
-        throw new UnsupportedOperationException();
+        // TODO: Implement
     }
 
     @Override
     public void drawPosText(String text, float[] pos, Paint paint) {
-        throw new UnsupportedOperationException();
+        // TODO: Implement
     }
 
     @Override
@@ -879,12 +890,12 @@
     @Override
     public void drawTextOnPath(char[] text, int index, int count, Path path, float hOffset,
             float vOffset, Paint paint) {
-        throw new UnsupportedOperationException();
+        // TODO: Implement
     }
 
     @Override
     public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) {
-        throw new UnsupportedOperationException();
+        // TODO: Implement
     }
 
     @Override
diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl
index 85a8c1a..0e482d6 100644
--- a/core/java/android/view/IWindow.aidl
+++ b/core/java/android/view/IWindow.aidl
@@ -70,4 +70,9 @@
      * Drag/drop events
      */
      void dispatchDragEvent(in DragEvent event);
+
+    /**
+     * System chrome visibility changes
+     */
+     void dispatchSystemUiVisibilityChanged(int visibility);
 }
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 8bdc1f8..51653df 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -187,4 +187,9 @@
 	 * Create a screenshot of the applications currently displayed.
 	 */
 	Bitmap screenshotApplications(IBinder appToken, int maxWidth, int maxHeight);
+
+    /**
+     * Called by the status bar to notify Views of changes to System UI visiblity.
+     */
+    void statusBarVisibilityChanged(int visibility);
 }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 469bbaa..6d5fd2c 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -48,6 +48,7 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.util.AttributeSet;
@@ -1697,6 +1698,20 @@
     public static final int OVER_SCROLL_NEVER = 2;
 
     /**
+     * View has requested the status bar to be visible (the default).
+     *
+     * @see setSystemUiVisibility
+     */
+    public static final int STATUS_BAR_VISIBLE = 0;
+
+    /**
+     * View has requested the status bar to be visible (the default).
+     *
+     * @see setSystemUiVisibility
+     */
+    public static final int STATUS_BAR_HIDDEN = 0x00000001;
+
+    /**
      * Controls the over-scroll mode for this view.
      * See {@link #overScrollBy(int, int, int, int, int, int, int, int, boolean)},
      * {@link #OVER_SCROLL_ALWAYS}, {@link #OVER_SCROLL_IF_CONTENT_SCROLLS},
@@ -1735,6 +1750,12 @@
     int mPrivateFlags;
 
     /**
+     * This view's request for the visibility of the status bar.
+     * @hide
+     */
+    int mSystemUiVisibility;
+
+    /**
      * Count of how many windows this view has been attached to.
      */
     int mWindowAttachCount;
@@ -2037,6 +2058,8 @@
 
     private OnDragListener mOnDragListener;
 
+    private OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener;
+
     /**
      * The application environment this view lives in.
      * This field should be made private, so it is hidden from the SDK.
@@ -4706,17 +4729,22 @@
     }
 
     void performCollectViewAttributes(int visibility) {
-        //noinspection PointlessBitwiseExpression
-        if (((visibility | mViewFlags) & (VISIBILITY_MASK | KEEP_SCREEN_ON))
-                == (VISIBLE | KEEP_SCREEN_ON)) {
-            mAttachInfo.mKeepScreenOn = true;
+        if ((visibility & VISIBILITY_MASK) == VISIBLE) {
+            if ((mViewFlags & KEEP_SCREEN_ON) == KEEP_SCREEN_ON) {
+                mAttachInfo.mKeepScreenOn = true;
+            }
+            mAttachInfo.mSystemUiVisibility |= mSystemUiVisibility;
+            if (mOnSystemUiVisibilityChangeListener != null) {
+                mAttachInfo.mHasSystemUiListeners = true;
+            }
         }
     }
 
     void needGlobalAttributesUpdate(boolean force) {
-        AttachInfo ai = mAttachInfo;
+        final AttachInfo ai = mAttachInfo;
         if (ai != null) {
-            if (ai.mKeepScreenOn || force) {
+            if (force || ai.mKeepScreenOn || (ai.mSystemUiVisibility != 0)
+                    || ai.mHasSystemUiListeners) {
                 ai.mRecomputeGlobalAttributes = true;
             }
         }
@@ -5301,7 +5329,7 @@
         }
 
         if ((changed & KEEP_SCREEN_ON) != 0) {
-            if (mParent != null) {
+            if (mParent != null && mAttachInfo != null && !mAttachInfo.mRecomputeGlobalAttributes) {
                 mParent.recomputeViewAttributes(this);
             }
         }
@@ -10618,6 +10646,40 @@
     }
 
     /**
+     * Request that the visibility of the status bar be changed.
+     */
+    public void setSystemUiVisibility(int visibility) {
+        if (visibility != mSystemUiVisibility) {
+            mSystemUiVisibility = visibility;
+            if (mParent != null && mAttachInfo != null && !mAttachInfo.mRecomputeGlobalAttributes) {
+                mParent.recomputeViewAttributes(this);
+            }
+        }
+    }
+
+    /**
+     * Returns the status bar visibility that this view has requested.
+     */
+    public int getSystemUiVisibility(int visibility) {
+        return mSystemUiVisibility;
+    }
+
+    public void setOnSystemUiVisibilityChangeListener(OnSystemUiVisibilityChangeListener l) {
+        mOnSystemUiVisibilityChangeListener = l;
+        if (mParent != null && mAttachInfo != null && !mAttachInfo.mRecomputeGlobalAttributes) {
+            mParent.recomputeViewAttributes(this);
+        }
+    }
+
+    /**
+     */
+    public void dispatchSystemUiVisibilityChanged(int visibility) {
+        if (mOnSystemUiVisibilityChangeListener != null) {
+            mOnSystemUiVisibilityChangeListener.onSystemUiVisibilityChange(visibility);
+        }
+    }
+
+    /**
      * !!! TODO: real docs
      *
      * The base class implementation makes the shadow the same size and appearance
@@ -11307,6 +11369,22 @@
         void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo);
     }
 
+    /**
+     * Interface definition for a callback to be invoked when the status bar changes
+     * visibility.
+     *
+     * @see #setOnSystemUiVisibilityChangeListener
+     */
+    public interface OnSystemUiVisibilityChangeListener {
+        /**
+         * Called when the status bar changes visibility because of a call to
+         * {@link #setSystemUiVisibility}.
+         *
+         * @param visibility {@link #STATUS_BAR_VISIBLE} or {@link #STATUS_BAR_HIDDEN}.
+         */
+        public void onSystemUiVisibilityChange(int visibility);
+    }
+
     private final class UnsetPressedState implements Runnable {
         public void run() {
             setPressed(false);
@@ -11525,6 +11603,17 @@
         boolean mKeepScreenOn;
 
         /**
+         * Bitwise-or of all of the values that views have passed to setSystemUiVisibility().
+         */
+        int mSystemUiVisibility;
+
+        /**
+         * True if a view in this hierarchy has an OnSystemUiVisibilityChangeListener
+         * attached.
+         */
+        boolean mHasSystemUiListeners;
+
+        /**
          * Set if the visibility of any views has changed.
          */
         boolean mViewVisibilityChanged;
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index 6b41ce5..edad494 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.content.Context;
+import android.content.res.Configuration;
 import android.util.DisplayMetrics;
 import android.util.SparseArray;
 
@@ -217,22 +218,29 @@
     private ViewConfiguration(Context context) {
         final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
         final float density = metrics.density;
+        final float sizeAndDensity;
+        if (context.getResources().getConfiguration().isLayoutSizeAtLeast(
+                Configuration.SCREENLAYOUT_SIZE_XLARGE)) {
+            sizeAndDensity = density * 1.5f;
+        } else {
+            sizeAndDensity = density;
+        }
 
-        mEdgeSlop = (int) (density * EDGE_SLOP + 0.5f);
-        mFadingEdgeLength = (int) (density * FADING_EDGE_LENGTH + 0.5f);
+        mEdgeSlop = (int) (sizeAndDensity * EDGE_SLOP + 0.5f);
+        mFadingEdgeLength = (int) (sizeAndDensity * FADING_EDGE_LENGTH + 0.5f);
         mMinimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f);
         mMaximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f);
         mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f);
-        mTouchSlop = (int) (density * TOUCH_SLOP + 0.5f);
-        mPagingTouchSlop = (int) (density * PAGING_TOUCH_SLOP + 0.5f);
-        mDoubleTapSlop = (int) (density * DOUBLE_TAP_SLOP + 0.5f);
-        mWindowTouchSlop = (int) (density * WINDOW_TOUCH_SLOP + 0.5f);
+        mTouchSlop = (int) (sizeAndDensity * TOUCH_SLOP + 0.5f);
+        mPagingTouchSlop = (int) (sizeAndDensity * PAGING_TOUCH_SLOP + 0.5f);
+        mDoubleTapSlop = (int) (sizeAndDensity * DOUBLE_TAP_SLOP + 0.5f);
+        mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f);
 
         // Size of the screen in bytes, in ARGB_8888 format
         mMaximumDrawingCacheSize = 4 * metrics.widthPixels * metrics.heightPixels;
 
-        mOverscrollDistance = (int) (density * OVERSCROLL_DISTANCE + 0.5f);
-        mOverflingDistance = (int) (density * OVERFLING_DISTANCE + 0.5f);
+        mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f);
+        mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f);
     }
 
     /**
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 115431e..d6c8ad6 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -860,8 +860,10 @@
      * {@inheritDoc}
      */
     public void recomputeViewAttributes(View child) {
-        ViewParent parent = mParent;
-        if (parent != null) parent.recomputeViewAttributes(this);
+        if (mAttachInfo != null && !mAttachInfo.mRecomputeGlobalAttributes) {
+            ViewParent parent = mParent;
+            if (parent != null) parent.recomputeViewAttributes(this);
+        }
     }
 
     @Override
@@ -1070,6 +1072,18 @@
         return child.mCanAcceptDrop;
     }
 
+    @Override
+    public void dispatchSystemUiVisibilityChanged(int visible) {
+        super.dispatchSystemUiVisibilityChanged(visible);
+
+        final int count = mChildrenCount;
+        final View[] children = mChildren;
+        for (int i=0; i <count; i++) {
+            final View child = children[i];
+            child.dispatchSystemUiVisibilityChanged(visible);
+        }
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index ad101f8..d932141 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -718,6 +718,7 @@
             attachInfo.mWindowVisibility = viewVisibility;
             attachInfo.mRecomputeGlobalAttributes = false;
             attachInfo.mKeepScreenOn = false;
+            attachInfo.mSystemUiVisibility = 0;
             viewVisibilityChanged = false;
             mLastConfiguration.setTo(host.getResources().getConfiguration());
             host.dispatchAttachedToWindow(attachInfo, 0);
@@ -891,14 +892,17 @@
         }
 
         if (attachInfo.mRecomputeGlobalAttributes) {
-            //Log.i(TAG, "Computing screen on!");
+            //Log.i(TAG, "Computing view hierarchy attributes!");
             attachInfo.mRecomputeGlobalAttributes = false;
-            boolean oldVal = attachInfo.mKeepScreenOn;
+            boolean oldScreenOn = attachInfo.mKeepScreenOn;
+            int oldVis = attachInfo.mSystemUiVisibility;
             attachInfo.mKeepScreenOn = false;
+            attachInfo.mSystemUiVisibility = 0;
+            attachInfo.mHasSystemUiListeners = false;
             host.dispatchCollectViewAttributes(0);
-            if (attachInfo.mKeepScreenOn != oldVal) {
+            if (attachInfo.mKeepScreenOn != oldScreenOn ||
+                    attachInfo.mSystemUiVisibility != oldVis) {
                 params = lp;
-                //Log.i(TAG, "Keep screen on changed: " + attachInfo.mKeepScreenOn);
             }
         }
 
@@ -980,6 +984,8 @@
                     if (attachInfo.mKeepScreenOn) {
                         params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
                     }
+                    params.systemUiVisibility = attachInfo.mSystemUiVisibility;
+                    params.hasSystemUiListeners = attachInfo.mHasSystemUiListeners;
                 }
                 if (DEBUG_LAYOUT) {
                     Log.i(TAG, "host=w:" + host.getMeasuredWidth() + ", h:" +
@@ -1133,7 +1139,7 @@
                 if (DEBUG_LAYOUT) Log.v(TAG, "Ooops, something changed!  mWidth="
                         + mWidth + " measuredWidth=" + host.getMeasuredWidth()
                         + " mHeight=" + mHeight
-                        + " measuredHeight" + host.getMeasuredHeight()
+                        + " measuredHeight=" + host.getMeasuredHeight()
                         + " coveredInsetsChanged=" + contentInsetsChanged);
 
                  // Ask host how big it wants to be
@@ -1895,6 +1901,7 @@
     public final static int CLOSE_SYSTEM_DIALOGS = 1014;
     public final static int DISPATCH_DRAG_EVENT = 1015;
     public final static int DISPATCH_DRAG_LOCATION_EVENT = 1016;
+    public final static int DISPATCH_SYSTEM_UI_VISIBILITY = 1017;
 
     @Override
     public void handleMessage(Message msg) {
@@ -2057,6 +2064,9 @@
             event.mLocalState = mLocalDragState;    // only present when this app called startDrag()
             handleDragEvent(event);
         } break;
+        case DISPATCH_SYSTEM_UI_VISIBILITY: {
+            handleDispatchSystemUiVisibilityChanged(msg.arg1);
+        } break;
         }
     }
     
@@ -2826,6 +2836,11 @@
         event.recycle();
     }
 
+    public void handleDispatchSystemUiVisibilityChanged(int visibility) {
+        if (mView == null) return;
+        mView.dispatchSystemUiVisibilityChanged(visibility);
+    }
+
     public void getLastTouchPoint(Point outLocation) {
         outLocation.x = (int) mLastTouchPoint.x;
         outLocation.y = (int) mLastTouchPoint.y;
@@ -3141,6 +3156,10 @@
         sendMessage(msg);
     }
 
+    public void dispatchSystemUiVisibilityChanged(int visibility) {
+        sendMessage(obtainMessage(DISPATCH_SYSTEM_UI_VISIBILITY, visibility, 0));
+    }
+
     /**
      * The window is getting focus so if there is anything focused/selected
      * send an {@link AccessibilityEvent} to announce that.
@@ -3359,6 +3378,14 @@
                 viewRoot.dispatchDragEvent(event);
             }
         }
+
+        @Override
+        public void dispatchSystemUiVisibilityChanged(int visibility) {
+            final ViewRoot viewRoot = mViewRoot.get();
+            if (viewRoot != null) {
+                viewRoot.dispatchSystemUiVisibilityChanged(visibility);
+            }
+        }
     }
 
     /**
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 8eb4269..491a79f 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -950,7 +950,22 @@
          * will be used.
          */
         public int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
-        
+
+        /**
+         * Control the visibility of the status bar.
+         * @hide
+         */
+        public int systemUiVisibility;
+
+        /**
+         * Get callbacks about the system ui visibility changing.
+         * 
+         * TODO: Maybe there should be a bitfield of optional callbacks that we need.
+         *
+         * @hide
+         */
+        public boolean hasSystemUiListeners;
+
         public LayoutParams() {
             super(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
             type = TYPE_APPLICATION;
@@ -1030,6 +1045,8 @@
             out.writeString(packageName);
             TextUtils.writeToParcel(mTitle, out, parcelableFlags);
             out.writeInt(screenOrientation);
+            out.writeInt(systemUiVisibility);
+            out.writeInt(hasSystemUiListeners ? 1 : 0);
         }
         
         public static final Parcelable.Creator<LayoutParams> CREATOR
@@ -1065,6 +1082,8 @@
             packageName = in.readString();
             mTitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
             screenOrientation = in.readInt();
+            systemUiVisibility = in.readInt();
+            hasSystemUiListeners = in.readInt() != 0;
         }
     
         @SuppressWarnings({"PointlessBitwiseExpression"})
@@ -1082,6 +1101,10 @@
         public static final int SCREEN_BRIGHTNESS_CHANGED = 1<<11;
         /** {@hide} */
         public static final int BUTTON_BRIGHTNESS_CHANGED = 1<<12;
+        /** {@hide} */
+        public static final int SYSTEM_UI_VISIBILITY_CHANGED = 1<<13;
+        /** {@hide} */
+        public static final int SYSTEM_UI_LISTENER_CHANGED = 1<<14;
     
         // internal buffer to backup/restore parameters under compatibility mode.
         private int[] mCompatibilityParamsBackup = null;
@@ -1189,6 +1212,16 @@
                 changes |= SCREEN_ORIENTATION_CHANGED;
             }
 
+            if (systemUiVisibility != o.systemUiVisibility) {
+                systemUiVisibility = o.systemUiVisibility;
+                changes |= SYSTEM_UI_VISIBILITY_CHANGED;
+            }
+
+            if (hasSystemUiListeners != o.hasSystemUiListeners) {
+                hasSystemUiListeners = o.hasSystemUiListeners;
+                changes |= SYSTEM_UI_LISTENER_CHANGED;
+            }
+
             return changes;
         }
     
@@ -1261,6 +1294,14 @@
             if ((flags & FLAG_COMPATIBLE_WINDOW) != 0) {
                 sb.append(" compatible=true");
             }
+            if (systemUiVisibility != 0) {
+                sb.append(" sysui=0x");
+                sb.append(Integer.toHexString(systemUiVisibility));
+            }
+            if (hasSystemUiListeners) {
+                sb.append(" sysuil=");
+                sb.append(hasSystemUiListeners);
+            }
             sb.append('}');
             return sb.toString();
         }
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index e8d67da..ad06902 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -695,6 +695,12 @@
      * immediately.
      */
     public boolean allowAppAnimationsLw();
+
+
+    /**
+     * A new window has been focused.
+     */
+    public void focusChanged(WindowState lastFocus, WindowState newFocus);
     
     /**
      * Called after the screen turns off.
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index a65de13..665f9e7 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -1095,9 +1095,8 @@
      */
     private boolean contentFits() {
         final int childCount = getChildCount();
-        if (childCount != mItemCount) {
-            return false;
-        }
+        if (childCount == 0) return true;
+        if (childCount != mItemCount) return false;
 
         return getChildAt(0).getTop() >= 0 && getChildAt(childCount - 1).getBottom() <= mBottom;
     }
diff --git a/core/java/com/android/internal/os/SamplingProfilerIntegration.java b/core/java/com/android/internal/os/SamplingProfilerIntegration.java
index bfef275..8c256e0 100644
--- a/core/java/com/android/internal/os/SamplingProfilerIntegration.java
+++ b/core/java/com/android/internal/os/SamplingProfilerIntegration.java
@@ -16,22 +16,21 @@
 
 package com.android.internal.os;
 
+import android.content.pm.PackageInfo;
+import android.os.Build;
+import android.os.SystemProperties;
+import android.util.Log;
 import dalvik.system.SamplingProfiler;
-
 import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.ThreadFactory;
-
-import android.content.pm.PackageInfo;
-import android.util.Log;
-import android.os.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+import libcore.io.IoUtils;
 
 /**
  * Integrates the framework with Dalvik's sampling profiler.
@@ -162,19 +161,16 @@
         PrintStream out = null;
         try {
             out = new PrintStream(new BufferedOutputStream(new FileOutputStream(path)));
-        } catch (IOException e) {
-            Log.e(TAG, "Could not open " + path + ":" + e);
-            return;
-        }
-        try {
             generateSnapshotHeader(name, packageInfo, out);
-            INSTANCE.writeHprofData(out);
-        } finally {
-            out.close();
-        }
-        if (out.checkError()) {
-            Log.e(TAG, "Error writing snapshot.");
+            new SamplingProfiler.AsciiHprofWriter(INSTANCE.getHprofData(), out).write();
+            if (out.checkError()) {
+                throw new IOException();
+            }
+        } catch (IOException e) {
+            Log.e(TAG, "Error writing snapshot to " + path, e);
             return;
+        } finally {
+            IoUtils.closeQuietly(out);
         }
         // set file readable to the world so that SamplingProfilerService
         // can put it to dropbox
diff --git a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
index d2e53b3..78688ee 100644
--- a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
+++ b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
@@ -41,6 +41,9 @@
  * Default built-in wallpaper that simply shows a static image.
  */
 public class ImageWallpaper extends WallpaperService {
+    private static final String TAG = "ImageWallpaper";
+    private static final boolean DEBUG = false;
+
     WallpaperManager mWallpaperManager;
     private HandlerThread mThread;
 
@@ -77,10 +80,19 @@
         float mXOffset;
         float mYOffset;
 
+        boolean mVisible = true;
+        boolean mRedrawNeeded;
+        boolean mOffsetsChanged;
+        int mLastXTranslation;
+        int mLastYTranslation;
+
         class WallpaperObserver extends BroadcastReceiver {
             public void onReceive(Context context, Intent intent) {
-                updateWallpaper();
-                drawFrame();
+                synchronized (mLock) {
+                    updateWallpaperLocked();
+                    drawFrameLocked(true, false);
+                }
+
                 // Assume we are the only one using the wallpaper in this
                 // process, and force a GC now to release the old wallpaper.
                 System.gc();
@@ -93,7 +105,10 @@
             IntentFilter filter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED);
             mReceiver = new WallpaperObserver();
             registerReceiver(mReceiver, filter);
-            updateWallpaper();
+
+            synchronized (mLock) {
+                updateWallpaperLocked();
+            }
             surfaceHolder.setSizeFromLayout();
         }
 
@@ -105,9 +120,12 @@
 
         @Override
         public void onVisibilityChanged(boolean visible) {
-            drawFrame();
+            synchronized (mLock) {
+                mVisible = visible;
+                drawFrameLocked(false, false);
+            }
         }
-        
+
         @Override
         public void onTouchEvent(MotionEvent event) {
             super.onTouchEvent(event);
@@ -117,15 +135,27 @@
         public void onOffsetsChanged(float xOffset, float yOffset,
                 float xOffsetStep, float yOffsetStep,
                 int xPixels, int yPixels) {
-            mXOffset = xOffset;
-            mYOffset = yOffset;
-            drawFrame();
+            synchronized (mLock) {
+                if (mXOffset != xOffset || mYOffset != yOffset) {
+                    if (DEBUG) {
+                        Log.d(TAG, "Offsets changed to (" + xOffset + "," + yOffset + ").");
+                    }
+                    mXOffset = xOffset;
+                    mYOffset = yOffset;
+                    drawFrameLocked(false, true);
+                } else {
+                    drawFrameLocked(false, false);
+                }
+            }
         }
 
         @Override
         public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
             super.onSurfaceChanged(holder, format, width, height);
-            drawFrame();
+            
+            synchronized (mLock) {
+                drawFrameLocked(true, false);
+            }
         }
 
         @Override
@@ -137,25 +167,59 @@
         public void onSurfaceDestroyed(SurfaceHolder holder) {
             super.onSurfaceDestroyed(holder);
         }
-        
-        void drawFrame() {
+
+        void drawFrameLocked(boolean redrawNeeded, boolean offsetsChanged) {
+            mRedrawNeeded |= redrawNeeded;
+            mOffsetsChanged |= offsetsChanged;
+
+            if (!mVisible) {
+                if (DEBUG) {
+                    Log.d(TAG, "Suppressed drawFrame since wallpaper is not visible.");
+                }
+                return;
+            }
+            if (!mRedrawNeeded && !mOffsetsChanged) {
+                if (DEBUG) {
+                    Log.d(TAG, "Suppressed drawFrame since redraw is not needed "
+                            + "and offsets have not changed.");
+                }
+                return;
+            }
+
             SurfaceHolder sh = getSurfaceHolder();
+            final Rect frame = sh.getSurfaceFrame();
+            final Drawable background = mBackground;
+            final int dw = frame.width();
+            final int dh = frame.height();
+            final int bw = background != null ? background.getIntrinsicWidth() : 0;
+            final int bh = background != null ? background.getIntrinsicHeight() : 0;
+            final int availw = dw - bw;
+            final int availh = dh - bh;
+            int xPixels = availw < 0 ? (int)(availw * mXOffset + .5f) : (availw / 2);
+            int yPixels = availh < 0 ? (int)(availh * mYOffset + .5f) : (availh / 2);
+
+            mOffsetsChanged = false;
+            if (!mRedrawNeeded
+                    && xPixels == mLastXTranslation && yPixels == mLastYTranslation) {
+                if (DEBUG) {
+                    Log.d(TAG, "Suppressed drawFrame since the image has not "
+                            + "actually moved an integral number of pixels.");
+                }
+                return;
+            }
+            mRedrawNeeded = false;
+            mLastXTranslation = xPixels;
+            mLastYTranslation = yPixels;
+
             Canvas c = sh.lockCanvas();
             if (c != null) {
-                final Rect frame = sh.getSurfaceFrame();
-                synchronized (mLock) {
-                    final Drawable background = mBackground;
-                    final int dw = frame.width();
-                    final int dh = frame.height();
-                    final int bw = background != null ? background.getIntrinsicWidth() : 0;
-                    final int bh = background != null ? background.getIntrinsicHeight() : 0;
-                    final int availw = dw-bw;
-                    final int availh = dh-bh;
-                    int xPixels = availw < 0 ? (int)(availw*mXOffset+.5f) : (availw/2);
-                    int yPixels = availh < 0 ? (int)(availh*mYOffset+.5f) : (availh/2);
+                try {
+                    if (DEBUG) {
+                        Log.d(TAG, "Redrawing: xPixels=" + xPixels + ", yPixels=" + yPixels);
+                    }
 
                     c.translate(xPixels, yPixels);
-                    if (availw<0 || availh<0) {
+                    if (availw < 0 || availh < 0) {
                         c.save(Canvas.CLIP_SAVE_FLAG);
                         c.clipRect(0, 0, bw, bh, Op.DIFFERENCE);
                         c.drawColor(0xff000000);
@@ -164,35 +228,35 @@
                     if (background != null) {
                         background.draw(c);
                     }
+                } finally {
+                    sh.unlockCanvasAndPost(c);
                 }
-                sh.unlockCanvasAndPost(c);
             }
         }
 
-        void updateWallpaper() {
-            synchronized (mLock) {
-                Throwable exception = null;
+        void updateWallpaperLocked() {
+            Throwable exception = null;
+            try {
+                mBackground = mWallpaperManager.getFastDrawable();
+            } catch (RuntimeException e) {
+                exception = e;
+            } catch (OutOfMemoryError e) {
+                exception = e;
+            }
+            if (exception != null) {
+                mBackground = null;
+                // Note that if we do fail at this, and the default wallpaper can't
+                // be loaded, we will go into a cycle.  Don't do a build where the
+                // default wallpaper can't be loaded.
+                Log.w(TAG, "Unable to load wallpaper!", exception);
                 try {
-                    mBackground = mWallpaperManager.getFastDrawable();
-                } catch (RuntimeException e) {
-                    exception = e;
-                } catch (OutOfMemoryError e) {
-                    exception = e;
-                }
-                if (exception != null) {
-                    mBackground = null;
-                    // Note that if we do fail at this, and the default wallpaper can't
-                    // be loaded, we will go into a cycle.  Don't do a build where the
-                    // default wallpaper can't be loaded.
-                    Log.w("ImageWallpaper", "Unable to load wallpaper!", exception);
-                    try {
-                        mWallpaperManager.clear();
-                    } catch (IOException ex) {
-                        // now we're really screwed.
-                        Log.w("ImageWallpaper", "Unable reset to default wallpaper!", ex);
-                    }
+                    mWallpaperManager.clear();
+                } catch (IOException ex) {
+                    // now we're really screwed.
+                    Log.w(TAG, "Unable reset to default wallpaper!", ex);
                 }
             }
+            mRedrawNeeded = true;
         }
     }
 }
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index f86b72d..d83a534 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -45,5 +45,5 @@
             int uid, int initialPid, String message);
     void onClearAllNotifications();
     void onNotificationClear(String pkg, String tag, int id);
-    void setLightsOn(boolean on);
+    void setSystemUiVisibility(int vis);
 }
diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java
index d5213db..c41b2cb 100644
--- a/core/java/com/android/internal/view/BaseIWindow.java
+++ b/core/java/com/android/internal/view/BaseIWindow.java
@@ -73,6 +73,9 @@
     public void dispatchDragEvent(DragEvent event) {
     }
 
+    public void dispatchSystemUiVisibilityChanged(int visibility) {
+    }
+
     public void dispatchWallpaperCommand(String action, int x, int y,
             int z, Bundle extras, boolean sync) {
         if (sync) {
diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java
index bb0c752..71af115 100644
--- a/core/java/com/android/internal/widget/ActionBarContextView.java
+++ b/core/java/com/android/internal/widget/ActionBarContextView.java
@@ -278,18 +278,13 @@
             availableWidth = measureChildView(mClose, availableWidth, childSpecHeight, 0);
         }
 
-        if (mTitleLayout != null && mCustomView == null) {
-            availableWidth = measureChildView(mTitleLayout, availableWidth, childSpecHeight, 0);
+        if (mMenuView != null) {
+            availableWidth = measureChildView(mMenuView, availableWidth,
+                    childSpecHeight, 0);
         }
 
-        final int childCount = getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            final View child = getChildAt(i);
-            if (child == mClose || child == mTitleLayout || child == mCustomView) {
-                continue;
-            }
-            
-            availableWidth = measureChildView(child, availableWidth, childSpecHeight, 0);
+        if (mTitleLayout != null && mCustomView == null) {
+            availableWidth = measureChildView(mTitleLayout, availableWidth, childSpecHeight, 0);
         }
 
         if (mCustomView != null) {
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index d44d4a5..3c3f14b 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -30,6 +30,7 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
 import android.text.TextUtils.TruncateAt;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -351,6 +352,8 @@
         mTitle = title;
         if (mTitleView != null) {
             mTitleView.setText(title);
+            mTitleLayout.setVisibility(TextUtils.isEmpty(mTitle) && TextUtils.isEmpty(mSubtitle) ?
+                    GONE : VISIBLE);
         }
         if (mLogoNavItem != null) {
             mLogoNavItem.setTitle(title);
@@ -366,6 +369,8 @@
         if (mSubtitleView != null) {
             mSubtitleView.setText(subtitle);
             mSubtitleView.setVisibility(subtitle != null ? VISIBLE : GONE);
+            mTitleLayout.setVisibility(TextUtils.isEmpty(mTitle) && TextUtils.isEmpty(mSubtitle) ?
+                    GONE : VISIBLE);
         }
     }
 
@@ -636,7 +641,7 @@
             rightOfCenter -= mMenuView.getMeasuredWidth();
         }
 
-        boolean showTitle = mTitleLayout != null &&
+        boolean showTitle = mTitleLayout != null && mTitleLayout.getVisibility() != GONE &&
                 (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0;
         if (showTitle) {
             availableWidth = measureChildView(mTitleLayout, availableWidth, childSpecHeight, 0);
@@ -768,7 +773,7 @@
             x += positionChild(mHomeLayout, x, y, contentHeight);
         }
         
-        final boolean showTitle = mTitleLayout != null &&
+        final boolean showTitle = mTitleLayout != null && mTitleLayout.getVisibility() != GONE &&
                 (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0;
         if (showTitle) {
             x += positionChild(mTitleLayout, x, y, contentHeight);
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index 554e336f..8d074af 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -326,6 +326,18 @@
     renderer->drawCircle(x, y, radius, paint);
 }
 
+static void android_view_GLES20Canvas_drawOval(JNIEnv* env, jobject canvas,
+        OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
+        SkPaint* paint) {
+    renderer->drawOval(left, top, right, bottom, paint);
+}
+
+static void android_view_GLES20Canvas_drawArc(JNIEnv* env, jobject canvas,
+        OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
+        jfloat startAngle, jfloat sweepAngle, jboolean useCenter, SkPaint* paint) {
+    renderer->drawArc(left, top, right, bottom, startAngle, sweepAngle, useCenter, paint);
+}
+
 static void android_view_GLES20Canvas_drawRects(JNIEnv* env, jobject canvas,
         OpenGLRenderer* renderer, SkRegion* region, SkPaint* paint) {
     SkRegion::Iterator it(*region);
@@ -602,6 +614,9 @@
     { "nDrawRects",         "(III)V",          (void*) android_view_GLES20Canvas_drawRects },
     { "nDrawRoundRect",     "(IFFFFFFI)V",     (void*) android_view_GLES20Canvas_drawRoundRect },
     { "nDrawCircle",        "(IFFFI)V",        (void*) android_view_GLES20Canvas_drawCircle },
+    { "nDrawOval",          "(IFFFFI)V",       (void*) android_view_GLES20Canvas_drawOval },
+    { "nDrawArc",           "(IFFFFFFZI)V",    (void*) android_view_GLES20Canvas_drawArc },
+
     { "nDrawPath",          "(III)V",          (void*) android_view_GLES20Canvas_drawPath },
     { "nDrawLines",         "(I[FIII)V",       (void*) android_view_GLES20Canvas_drawLines },
 
diff --git a/core/res/res/anim/activity_close_enter.xml b/core/res/res/anim/activity_close_enter.xml
index d525127..4260c08 100644
--- a/core/res/res/anim/activity_close_enter.xml
+++ b/core/res/res/anim/activity_close_enter.xml
@@ -18,14 +18,14 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-		android:zAdjustment="normal"
+		android:zAdjustment="top"
         android:shareInterpolator="false">
     <scale android:fromXScale="0.975" android:toXScale="1.0"
             android:fromYScale="0.975" android:toYScale="1.0"
             android:pivotX="50%p" android:pivotY="50%p"
             android:interpolator="@interpolator/decelerate_quint"
             android:duration="@android:integer/config_activityDefaultDur" />
-    <alpha android:fromAlpha=".75" android:toAlpha="1.0"
+    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
             android:interpolator="@interpolator/decelerate_cubic"
             android:duration="@android:integer/config_activityDefaultDur"/>
 </set>
\ No newline at end of file
diff --git a/core/res/res/anim/activity_close_exit.xml b/core/res/res/anim/activity_close_exit.xml
index ab7adcb..8c97ee8 100644
--- a/core/res/res/anim/activity_close_exit.xml
+++ b/core/res/res/anim/activity_close_exit.xml
@@ -18,14 +18,11 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-		android:zAdjustment="top"
+		android:zAdjustment="normal"
         android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="1.075"
             android:fromYScale="1.0" android:toYScale="1.075"
             android:pivotX="50%p" android:pivotY="50%p"
             android:interpolator="@interpolator/decelerate_quint"
             android:duration="@android:integer/config_activityDefaultDur" />
-    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
-            android:interpolator="@interpolator/decelerate_cubic"
-            android:duration="@android:integer/config_activityDefaultDur"/>
 </set>
\ No newline at end of file
diff --git a/core/res/res/anim/activity_open_enter.xml b/core/res/res/anim/activity_open_enter.xml
index 90f8520..5f6ac68 100644
--- a/core/res/res/anim/activity_open_enter.xml
+++ b/core/res/res/anim/activity_open_enter.xml
@@ -18,14 +18,11 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-		android:zAdjustment="top"
+		android:zAdjustment="normal"
         android:shareInterpolator="false">
     <scale android:fromXScale="1.125" android:toXScale="1.0"
             android:fromYScale="1.125" android:toYScale="1.0"
             android:pivotX="50%p" android:pivotY="50%p"
             android:interpolator="@interpolator/decelerate_quint"
             android:duration="@android:integer/config_activityDefaultDur" />
-    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
-            android:interpolator="@interpolator/decelerate_cubic"
-            android:duration="@android:integer/config_activityDefaultDur"/>
 </set>
\ No newline at end of file
diff --git a/core/res/res/anim/activity_open_exit.xml b/core/res/res/anim/activity_open_exit.xml
index 30a1dec..08b22b9 100644
--- a/core/res/res/anim/activity_open_exit.xml
+++ b/core/res/res/anim/activity_open_exit.xml
@@ -18,14 +18,14 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-		android:zAdjustment="normal"
+		android:zAdjustment="top"
         android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="0.975"
             android:fromYScale="1.0" android:toYScale="0.975"
             android:pivotX="50%p" android:pivotY="50%p"
             android:interpolator="@interpolator/linear"
             android:duration="@android:integer/config_activityDefaultDur" />
-    <alpha android:fromAlpha="1.0" android:toAlpha="0.75"
+    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
             android:interpolator="@interpolator/decelerate_cubic"
             android:duration="@android:integer/config_activityDefaultDur"/>
 </set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim/task_open_enter.xml
index e3e8585..b3b3fd1 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim/task_open_enter.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shareInterpolator="false">
+        android:detachWallpaper="true" android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="1.0"
             android:fromYScale=".9" android:toYScale="1.0"
             android:pivotX="50%p" android:pivotY="50%p"
diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim/task_open_exit.xml
index 5f03516..763b581 100644
--- a/core/res/res/anim/task_open_exit.xml
+++ b/core/res/res/anim/task_open_exit.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shareInterpolator="false">
+        android:detachWallpaper="true" android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="1.0"
             android:fromYScale="1.0" android:toYScale="0.0"
             android:pivotX="50%p" android:pivotY="50%p"
diff --git a/core/res/res/anim/wallpaper_close_enter.xml b/core/res/res/anim/wallpaper_close_enter.xml
index 42a9d38..e05345d 100644
--- a/core/res/res/anim/wallpaper_close_enter.xml
+++ b/core/res/res/anim/wallpaper_close_enter.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shareInterpolator="false">
+        android:detachWallpaper="true" android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="1.0"
             android:fromYScale=".9" android:toYScale="1.0"
             android:pivotX="50%p" android:pivotY="50%p"
diff --git a/core/res/res/anim/wallpaper_intra_close_enter.xml b/core/res/res/anim/wallpaper_intra_close_enter.xml
index 42a9d38..e05345d 100644
--- a/core/res/res/anim/wallpaper_intra_close_enter.xml
+++ b/core/res/res/anim/wallpaper_intra_close_enter.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shareInterpolator="false">
+        android:detachWallpaper="true" android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="1.0"
             android:fromYScale=".9" android:toYScale="1.0"
             android:pivotX="50%p" android:pivotY="50%p"
diff --git a/core/res/res/anim/wallpaper_intra_open_exit.xml b/core/res/res/anim/wallpaper_intra_open_exit.xml
index c750047..47ea0b4 100644
--- a/core/res/res/anim/wallpaper_intra_open_exit.xml
+++ b/core/res/res/anim/wallpaper_intra_open_exit.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shareInterpolator="false">
+        android:detachWallpaper="true" android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="1.0"
             android:fromYScale="1.0" android:toYScale="0.0"
             android:pivotX="50%p" android:pivotY="50%p"
diff --git a/core/res/res/anim/wallpaper_open_exit.xml b/core/res/res/anim/wallpaper_open_exit.xml
index c750047..47ea0b4 100644
--- a/core/res/res/anim/wallpaper_open_exit.xml
+++ b/core/res/res/anim/wallpaper_open_exit.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shareInterpolator="false">
+        android:detachWallpaper="true" android:shareInterpolator="false">
     <scale android:fromXScale="1.0" android:toXScale="1.0"
             android:fromYScale="1.0" android:toYScale="0.0"
             android:pivotX="50%p" android:pivotY="50%p"
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png
index c0f0d167..46194d8 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png
index ba03d28..fe11736 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png
index a320240..f312dc4 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png
index 7f48c54..b7a8c5f 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png
index 82b7ba7..a11b128 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png
index 69ecf05..40091d1 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png
index 4148ac4..00175ba 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_holo_light.png
index 2cc946f..f8a34dc 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png
index c18e18b..5b9a889 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png
index 258c3d3..7f3426f 100644
--- a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_selected_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_selected_holo_dark.png
deleted file mode 100644
index f819928..0000000
--- a/core/res/res/drawable-hdpi/btn_check_off_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_selected_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_selected_holo_light.png
deleted file mode 100644
index 57cb512..0000000
--- a/core/res/res/drawable-hdpi/btn_check_off_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png
index e63e5a5..9f57be8 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png
index 37415e0..1a26bf6 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png
index 77a3115..9e74f82 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png
index 51993e3..8143700 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png
index 817adf7..c641801 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png
index 6459240..895b61d 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png
index d0c4415..c0ffb41 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_holo_light.png
index af84d4b..466adf2 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png
index 1333cb1..fc542d9 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png
index 4413328..a5f8f93 100644
--- a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_selected_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_selected_holo_dark.png
deleted file mode 100644
index e758aab..0000000
--- a/core/res/res/drawable-hdpi/btn_check_on_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_selected_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_selected_holo_light.png
deleted file mode 100644
index 2edf656..0000000
--- a/core/res/res/drawable-hdpi/btn_check_on_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_group_holo_dark.9.png b/core/res/res/drawable-hdpi/btn_group_holo_dark.9.png
new file mode 100644
index 0000000..b86c65a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_group_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_group_holo_light.9.png b/core/res/res/drawable-hdpi/btn_group_holo_light.9.png
new file mode 100644
index 0000000..1248e88
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_group_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_disabled_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_disabled_off_holo_dark.png
deleted file mode 100644
index 4fdf5ce..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_disabled_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_disabled_off_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_disabled_off_holo_light.png
deleted file mode 100644
index e70f8c3..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_disabled_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_disabled_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_disabled_on_holo_dark.png
deleted file mode 100644
index c28d6cd..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_disabled_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_disabled_on_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_disabled_on_holo_light.png
deleted file mode 100644
index ebf4da6..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_disabled_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_focused_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_focused_off_holo_dark.png
deleted file mode 100644
index 9a5455c..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_focused_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_focused_off_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_focused_off_holo_light.png
deleted file mode 100644
index 9648df2..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_focused_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_focused_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_focused_on_holo_dark.png
deleted file mode 100644
index cd59fab..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_focused_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_focused_on_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_focused_on_holo_light.png
deleted file mode 100644
index 4da6192..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_focused_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_normal_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_normal_off_holo_dark.png
deleted file mode 100644
index f18c6da..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_normal_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_normal_off_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_normal_off_holo_light.png
deleted file mode 100644
index 70afefc..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_normal_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_normal_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_normal_on_holo_dark.png
deleted file mode 100644
index fdf1586..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_normal_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_normal_on_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_normal_on_holo_light.png
deleted file mode 100644
index 457038a6..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_normal_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_dark.png
new file mode 100644
index 0000000..39f1ca4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_light.png
new file mode 100644
index 0000000..0456759
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_dark.png
new file mode 100644
index 0000000..ccd468c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_light.png
new file mode 100644
index 0000000..44a0b53
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_dark.png
new file mode 100644
index 0000000..20cfc23
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_light.png
new file mode 100644
index 0000000..c05dcd3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png
index dd18b7a..328f662 100644
--- a/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png
index 66d538f..1a15177 100644
--- a/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png
index 4e777f8..c91b76f 100644
--- a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png
index 6062033..4764c67 100644
--- a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_selected_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_selected_holo_dark.png
deleted file mode 100644
index 683a883..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_off_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_selected_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_selected_holo_light.png
deleted file mode 100644
index 19524ff..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_off_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_dark.png
new file mode 100644
index 0000000..5997c2d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_light.png
new file mode 100644
index 0000000..ee6c869
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_dark.png
new file mode 100644
index 0000000..f052e67
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_light.png
new file mode 100644
index 0000000..247d306
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_dark.png
new file mode 100644
index 0000000..f95f155
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_light.png
new file mode 100644
index 0000000..7bebc96
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png
index 2e1111b..0231925 100644
--- a/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png
index 90639ec..cfde3cb 100644
--- a/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png
index 1907215..0296a62e 100644
--- a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png
+++ b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png
index b51c7ad..6970012 100644
--- a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png
+++ b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_selected_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_selected_holo_dark.png
deleted file mode 100644
index 06d39cc..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_on_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_selected_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_selected_holo_light.png
deleted file mode 100644
index 06a4314..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_on_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_pressed_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_pressed_off_holo_dark.png
deleted file mode 100644
index aa10966..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_pressed_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_pressed_off_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_pressed_off_holo_light.png
deleted file mode 100644
index 8eaf738..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_pressed_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_pressed_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_pressed_on_holo_dark.png
deleted file mode 100644
index 674cc55..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_pressed_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_pressed_on_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_pressed_on_holo_light.png
deleted file mode 100644
index b4f8800..0000000
--- a/core/res/res/drawable-hdpi/btn_radio_pressed_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/toast_frame.9.png b/core/res/res/drawable-hdpi/toast_frame.9.png
index 7f830bc..8f5d811 100644
--- a/core/res/res/drawable-hdpi/toast_frame.9.png
+++ b/core/res/res/drawable-hdpi/toast_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/toast_frame_holo.9.png b/core/res/res/drawable-hdpi/toast_frame_holo.9.png
new file mode 100644
index 0000000..7f830bc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/toast_frame_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png
index 7e58392..031a54b 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png
index d5c1f7c..538e43c 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png
index b6eec97..e988577 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png
index 1bc34b6..156714e 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png
index 894836f..3538aab 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png
index ae81a5e..edc3f64 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png
index b03f356..d20b2aa 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_holo_light.png
index 9dbbd49..a80c349 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png
index 0f9f4f0..64bda76 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png
index 77ad452..39c9ea4 100644
--- a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_selected_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_selected_holo_dark.png
deleted file mode 100644
index 89ea3a8..0000000
--- a/core/res/res/drawable-mdpi/btn_check_off_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_off_selected_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_selected_holo_light.png
deleted file mode 100644
index 3fa45d9..0000000
--- a/core/res/res/drawable-mdpi/btn_check_off_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png
index 28bf7f6..6db6c5d 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png
index bb2d314..595261f 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png
index 8cf4554..f1129ef 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png
index ba37f93..c49dcc9 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png
index 1fca094..423076c 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png
index 21c33f0..e8b9a3b 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png
index ca4d509..e33fbab 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_holo_light.png
index 158f3a1..8fdb342 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png
index 84733fb..6690f64 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png
index 67a15d2..b7df43e 100644
--- a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_selected_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_selected_holo_dark.png
deleted file mode 100644
index 5b93f8b..0000000
--- a/core/res/res/drawable-mdpi/btn_check_on_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_check_on_selected_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_selected_holo_light.png
deleted file mode 100644
index 74ab250..0000000
--- a/core/res/res/drawable-mdpi/btn_check_on_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_group_holo_dark.9.png b/core/res/res/drawable-mdpi/btn_group_holo_dark.9.png
new file mode 100644
index 0000000..9541252
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_group_holo_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_group_holo_light.9.png b/core/res/res/drawable-mdpi/btn_group_holo_light.9.png
new file mode 100644
index 0000000..bf4f9b2
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_group_holo_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_disabled_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_disabled_off_holo_dark.png
deleted file mode 100644
index f937182..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_disabled_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_disabled_off_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_disabled_off_holo_light.png
deleted file mode 100644
index 4c35fb3..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_disabled_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_disabled_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_disabled_on_holo_dark.png
deleted file mode 100644
index af38a4f..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_disabled_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_disabled_on_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_disabled_on_holo_light.png
deleted file mode 100644
index a368602..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_disabled_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_focused_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_focused_off_holo_dark.png
deleted file mode 100644
index 695d0b9..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_focused_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_focused_off_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_focused_off_holo_light.png
deleted file mode 100644
index 6467bea..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_focused_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_focused_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_focused_on_holo_dark.png
deleted file mode 100644
index 813a069..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_focused_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_focused_on_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_focused_on_holo_light.png
deleted file mode 100644
index fe80d69..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_focused_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_normal_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_normal_off_holo_dark.png
deleted file mode 100644
index 5b6d906..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_normal_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_normal_off_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_normal_off_holo_light.png
deleted file mode 100644
index e5132ef..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_normal_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_normal_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_normal_on_holo_dark.png
deleted file mode 100644
index e216d35..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_normal_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_normal_on_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_normal_on_holo_light.png
deleted file mode 100644
index ed3946a..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_normal_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off.png b/core/res/res/drawable-mdpi/btn_radio_off.png
index cf76ace..ef7130d 100644
--- a/core/res/res/drawable-mdpi/btn_radio_off.png
+++ b/core/res/res/drawable-mdpi/btn_radio_off.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_dark.png
new file mode 100644
index 0000000..480ef44
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_light.png
new file mode 100644
index 0000000..eaac916
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_dark.png
new file mode 100644
index 0000000..712b267
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_light.png
new file mode 100644
index 0000000..e692b38
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_dark.png
new file mode 100644
index 0000000..2f27022
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_light.png
new file mode 100644
index 0000000..20a98b3
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png
index a3cef04..93edad2 100644
--- a/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png
index e8def55..c67e9fb 100644
--- a/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_pressed.png b/core/res/res/drawable-mdpi/btn_radio_off_pressed.png
index e03561a..f7b77c3 100644
--- a/core/res/res/drawable-mdpi/btn_radio_off_pressed.png
+++ b/core/res/res/drawable-mdpi/btn_radio_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png
index 1a9310b..46ebc0d6 100644
--- a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png
index bc28b5b..8052955 100644
--- a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_selected.png b/core/res/res/drawable-mdpi/btn_radio_off_selected.png
index b3aa94e..5a0d4889 100644
--- a/core/res/res/drawable-mdpi/btn_radio_off_selected.png
+++ b/core/res/res/drawable-mdpi/btn_radio_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_selected_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_selected_holo_dark.png
deleted file mode 100644
index 2b0ddd1..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_off_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_off_selected_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_selected_holo_light.png
deleted file mode 100644
index 745cf19..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_off_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on.png b/core/res/res/drawable-mdpi/btn_radio_on.png
index 5f978c0..e13e6396 100644
--- a/core/res/res/drawable-mdpi/btn_radio_on.png
+++ b/core/res/res/drawable-mdpi/btn_radio_on.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_dark.png
new file mode 100644
index 0000000..7bd4276
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_light.png
new file mode 100644
index 0000000..0473f84
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_dark.png
new file mode 100644
index 0000000..d92d7ee
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_light.png
new file mode 100644
index 0000000..f10cbd3
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_dark.png
new file mode 100644
index 0000000..3ec97a3
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_light.png
new file mode 100644
index 0000000..6624511
--- /dev/null
+++ b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png
index 9954500..7826205 100644
--- a/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png
index fa67a43..ed5acc9 100644
--- a/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_pressed.png b/core/res/res/drawable-mdpi/btn_radio_on_pressed.png
index a0636fe..ae50c20 100644
--- a/core/res/res/drawable-mdpi/btn_radio_on_pressed.png
+++ b/core/res/res/drawable-mdpi/btn_radio_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png
index c15c310..fad9d2a 100644
--- a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png
+++ b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png
index aa07c5a..f5d5453 100644
--- a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png
+++ b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_selected.png b/core/res/res/drawable-mdpi/btn_radio_on_selected.png
index b510d47..3e704aa 100644
--- a/core/res/res/drawable-mdpi/btn_radio_on_selected.png
+++ b/core/res/res/drawable-mdpi/btn_radio_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_selected_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_selected_holo_dark.png
deleted file mode 100644
index e96a74f..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_on_selected_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_on_selected_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_selected_holo_light.png
deleted file mode 100644
index c51c96c..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_on_selected_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_pressed_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_pressed_off_holo_dark.png
deleted file mode 100644
index 9ab32d1..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_pressed_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_pressed_off_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_pressed_off_holo_light.png
deleted file mode 100644
index 7175853..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_pressed_off_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_pressed_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_pressed_on_holo_dark.png
deleted file mode 100644
index a6fa7b6..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_pressed_on_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/btn_radio_pressed_on_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_pressed_on_holo_light.png
deleted file mode 100644
index e7a634d..0000000
--- a/core/res/res/drawable-mdpi/btn_radio_pressed_on_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/toast_frame.9.png b/core/res/res/drawable-mdpi/toast_frame.9.png
index 911f86d..08c4f86 100755
--- a/core/res/res/drawable-mdpi/toast_frame.9.png
+++ b/core/res/res/drawable-mdpi/toast_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/toast_frame_holo.9.png b/core/res/res/drawable-mdpi/toast_frame_holo.9.png
new file mode 100755
index 0000000..911f86d
--- /dev/null
+++ b/core/res/res/drawable-mdpi/toast_frame_holo.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_holo_dark.xml b/core/res/res/drawable/btn_check_holo_dark.xml
index a163c2e..cbdf44e 100644
--- a/core/res/res/drawable/btn_check_holo_dark.xml
+++ b/core/res/res/drawable/btn_check_holo_dark.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!-- 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.
@@ -34,10 +34,10 @@
 
     <item android:state_checked="true" android:state_focused="true"
           android:state_enabled="true"
-          android:drawable="@drawable/btn_check_on_selected_holo_dark" />
+          android:drawable="@drawable/btn_check_on_focused_holo_dark" />
     <item android:state_checked="false" android:state_focused="true"
           android:state_enabled="true"
-          android:drawable="@drawable/btn_check_off_selected_holo_dark" />
+          android:drawable="@drawable/btn_check_off_focused_holo_dark" />
 
     <item android:state_checked="false"
           android:state_enabled="true"
diff --git a/core/res/res/drawable/btn_check_holo_light.xml b/core/res/res/drawable/btn_check_holo_light.xml
index 5c49456..c8c2bee 100644
--- a/core/res/res/drawable/btn_check_holo_light.xml
+++ b/core/res/res/drawable/btn_check_holo_light.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!-- 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.
@@ -34,10 +34,10 @@
 
     <item android:state_checked="true" android:state_focused="true"
           android:state_enabled="true"
-          android:drawable="@drawable/btn_check_on_selected_holo_light" />
+          android:drawable="@drawable/btn_check_on_focused_holo_light" />
     <item android:state_checked="false" android:state_focused="true"
           android:state_enabled="true"
-          android:drawable="@drawable/btn_check_off_selected_holo_light" />
+          android:drawable="@drawable/btn_check_off_focused_holo_light" />
 
     <item android:state_checked="false"
           android:state_enabled="true"
diff --git a/core/res/res/drawable/btn_radio_holo_dark.xml b/core/res/res/drawable/btn_radio_holo_dark.xml
index 8984f6d..e35d570 100644
--- a/core/res/res/drawable/btn_radio_holo_dark.xml
+++ b/core/res/res/drawable/btn_radio_holo_dark.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!-- 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.
@@ -16,20 +16,44 @@
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_checked="true" android:state_window_focused="false"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_on_holo_dark" />
     <item android:state_checked="false" android:state_window_focused="false"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_off_holo_dark" />
           
     <item android:state_checked="true" android:state_pressed="true"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_on_pressed_holo_dark" />
     <item android:state_checked="false" android:state_pressed="true"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_off_pressed_holo_dark" />
 
     <item android:state_checked="true" android:state_focused="true"
-          android:drawable="@drawable/btn_radio_on_selected_holo_dark" />
+          android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_on_focused_holo_dark" />
     <item android:state_checked="false" android:state_focused="true"
-          android:drawable="@drawable/btn_radio_off_selected_holo_dark" />
+          android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_off_focused_holo_dark" />
 
-    <item android:state_checked="false" android:drawable="@drawable/btn_radio_off_holo_dark" />
-    <item android:state_checked="true" android:drawable="@drawable/btn_radio_on_holo_dark" />
+    <item android:state_checked="false" android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_off_holo_dark" />
+    <item android:state_checked="true" android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_on_holo_dark" />
+
+    <!-- Disabled states -->
+
+    <item android:state_checked="true" android:state_window_focused="false"
+          android:drawable="@drawable/btn_radio_on_disabled_holo_dark" />
+    <item android:state_checked="false" android:state_window_focused="false"
+          android:drawable="@drawable/btn_radio_off_disabled_holo_dark" />
+
+    <item android:state_checked="true" android:state_focused="true"
+          android:drawable="@drawable/btn_radio_on_disabled_focused_holo_dark" />
+    <item android:state_checked="false" android:state_focused="true"
+          android:drawable="@drawable/btn_radio_off_disabled_focused_holo_dark" />
+
+    <item android:state_checked="false" android:drawable="@drawable/btn_radio_off_disabled_holo_dark" />
+    <item android:state_checked="true" android:drawable="@drawable/btn_radio_on_disabled_holo_dark" />
+
 </selector>
diff --git a/core/res/res/drawable/btn_radio_holo_light.xml b/core/res/res/drawable/btn_radio_holo_light.xml
index 001508c..e2f1f84 100644
--- a/core/res/res/drawable/btn_radio_holo_light.xml
+++ b/core/res/res/drawable/btn_radio_holo_light.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!-- 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.
@@ -16,20 +16,44 @@
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_checked="true" android:state_window_focused="false"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_on_holo_light" />
     <item android:state_checked="false" android:state_window_focused="false"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_off_holo_light" />
           
     <item android:state_checked="true" android:state_pressed="true"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_on_pressed_holo_light" />
     <item android:state_checked="false" android:state_pressed="true"
+          android:state_enabled="true"
           android:drawable="@drawable/btn_radio_off_pressed_holo_light" />
 
     <item android:state_checked="true" android:state_focused="true"
-          android:drawable="@drawable/btn_radio_on_selected_holo_light" />
+          android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_on_focused_holo_light" />
     <item android:state_checked="false" android:state_focused="true"
-          android:drawable="@drawable/btn_radio_off_selected_holo_light" />
+          android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_off_focused_holo_light" />
 
-    <item android:state_checked="false" android:drawable="@drawable/btn_radio_off_holo_light" />
-    <item android:state_checked="true" android:drawable="@drawable/btn_radio_on_holo_light" />
+    <item android:state_checked="false" android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_off_holo_light" />
+    <item android:state_checked="true" android:state_enabled="true"
+          android:drawable="@drawable/btn_radio_on_holo_light" />
+
+    <!-- Disabled states -->
+
+    <item android:state_checked="true" android:state_window_focused="false"
+          android:drawable="@drawable/btn_radio_on_disabled_holo_light" />
+    <item android:state_checked="false" android:state_window_focused="false"
+          android:drawable="@drawable/btn_radio_off_disabled_holo_light" />
+
+    <item android:state_checked="true" android:state_focused="true"
+          android:drawable="@drawable/btn_radio_on_disabled_focused_holo_light" />
+    <item android:state_checked="false" android:state_focused="true"
+          android:drawable="@drawable/btn_radio_off_disabled_focused_holo_light" />
+
+    <item android:state_checked="false" android:drawable="@drawable/btn_radio_off_disabled_holo_light" />
+    <item android:state_checked="true" android:drawable="@drawable/btn_radio_on_disabled_holo_light" />
+
 </selector>
diff --git a/core/res/res/layout-xlarge/keyguard_screen_password_landscape.xml b/core/res/res/layout-xlarge/keyguard_screen_password_landscape.xml
index 5ea43dc..c1149e3 100644
--- a/core/res/res/layout-xlarge/keyguard_screen_password_landscape.xml
+++ b/core/res/res/layout-xlarge/keyguard_screen_password_landscape.xml
@@ -61,6 +61,7 @@
                 android:textSize="24sp"
                 android:textAppearance="?android:attr/textAppearanceMedium"
                 android:background="@drawable/lockscreen_password_field_dark"
+                android:hint="@string/keyguard_password_entry_touch_hint"
                 android:textColor="#ffffffff"
                 />
 
diff --git a/core/res/res/layout-xlarge/keyguard_screen_password_portrait.xml b/core/res/res/layout-xlarge/keyguard_screen_password_portrait.xml
index 8a059f5..fab69d8 100644
--- a/core/res/res/layout-xlarge/keyguard_screen_password_portrait.xml
+++ b/core/res/res/layout-xlarge/keyguard_screen_password_portrait.xml
@@ -57,6 +57,7 @@
             android:layout_marginBottom="5dip"
             android:textAppearance="?android:attr/textAppearanceMedium"
             android:background="@drawable/lockscreen_password_field_dark"
+            android:hint="@string/keyguard_password_entry_touch_hint"
             android:textColor="#ffffffff"
             />
 
diff --git a/core/res/res/layout/transient_notification.xml b/core/res/res/layout/transient_notification.xml
index 12b67f1..21d58aa 100644
--- a/core/res/res/layout/transient_notification.xml
+++ b/core/res/res/layout/transient_notification.xml
@@ -22,7 +22,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    android:background="@drawable/toast_frame">
+    android:background="?android:attr/toastFrameBackground">
 
     <TextView
         android:id="@android:id/message"
diff --git a/core/res/res/menu/webview_copy.xml b/core/res/res/menu/webview_copy.xml
index 41ad06a..2761fec 100644
--- a/core/res/res/menu/webview_copy.xml
+++ b/core/res/res/menu/webview_copy.xml
@@ -18,26 +18,26 @@
     <item android:id="@+id/copy"
         android:icon="?android:attr/actionModeCopyDrawable"
         android:title="@string/copy"
-        android:showAsAction="always|withText"
+        android:showAsAction="ifRoom|withText"
         />
     <item android:id="@+id/share"
         android:icon="@drawable/ic_menu_share"
         android:title="@string/share"
-        android:showAsAction="always|withText"
+        android:showAsAction="ifRoom|withText"
         />
     <item android:id="@+id/select_all"
         android:title="@string/selectAll"
-        android:showAsAction="always|withText"
+        android:showAsAction="ifRoom|withText"
         />
     <item android:id="@+id/find"
         android:icon="@drawable/ic_menu_find"
         android:title="@string/find"
-        android:showAsAction="always|withText"
+        android:showAsAction="ifRoom|withText"
         />
     <item android:id="@+id/websearch"
         android:icon="@drawable/ic_menu_search"
         android:title="@string/websearch"
-        android:showAsAction="always|withText"
+        android:showAsAction="ifRoom|withText"
         />
 </menu>
 
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index e76692a..c808a07 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -690,6 +690,9 @@
         <!-- Style for buttons without an explicit border, often used in groups. -->
         <attr name="borderlessButtonStyle" format="reference" />
 
+        <!-- Background to use for toasts -->
+        <attr name="toastFrameBackground" format="reference" />
+
         <!-- ============================ -->
         <!-- SearchView styles and assets -->
         <!-- ============================ -->
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index e6552dfc..ae269df 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1279,7 +1279,7 @@
   <public type="style" name="TextAppearance.StatusBar.EventContent.Title" id="0x01030068" />
 
 <!-- ===============================================================
-     Resources proposed for Honeycomb.
+     Resources added in version 11 of the platform (Honeycomb / 3.0).
      =============================================================== -->
   <eat-comment />
   <public type="attr" name="allContactsName" />
@@ -1428,6 +1428,8 @@
   <public type="attr" name="windowCloseOnTouchOutside" />
   <public type="attr" name="datePickerStyle" />
   <public type="attr" name="calendarViewStyle" />
+  <public type="attr" name="textEditSidePasteWindowLayout" />
+  <public type="attr" name="textEditSideNoPasteWindowLayout" />
 
   <!-- A simple fade-in animation. -->
   <public type="animator" name="fade_in" id="0x010b0000" />
@@ -1498,7 +1500,6 @@
   <public type="style" name="Theme.NoTitleBar.OverlayActionModes" />
 
   <public type="style" name="Theme.Holo" />
-  <public type="style" name="Theme.Light.Holo" />
   <public type="style" name="Theme.Holo.NoActionBar" />
   <public type="style" name="Theme.Holo.NoActionBar.Fullscreen" />
   <public type="style" name="Theme.Holo.Light" />
@@ -1633,8 +1634,6 @@
   <public type="style" name="Widget.Holo.Light.CalendarView" />
   <public type="style" name="Widget.DatePicker" />
   <public type="style" name="Widget.Holo.DatePicker" />
-  <public type="attr" name="textEditSidePasteWindowLayout" />
-  <public type="attr" name="textEditSideNoPasteWindowLayout" />
 
   <public type="string" name="selectTextMode" />
 
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 496e254..529111e 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1637,6 +1637,9 @@
          Displayed in one line in a large font.  -->
     <string name="keyguard_password_enter_pin_code">Enter PIN code</string>
 
+    <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
+    <string name="keyguard_password_entry_touch_hint"><font size="17">Touch to enter password</font></string>
+
     <!-- Instructions telling the user to enter their text password to unlock the keyguard.
          Displayed in one line in a large font.  -->
     <string name="keyguard_password_enter_password_code">Enter password to unlock</string>
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 4d7e2ce..36dec8e 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -1432,11 +1432,11 @@
         <item name="divider">?android:attr/dividerVertical</item>
         <item name="showDividers">middle</item>
         <item name="dividerPadding">8dip</item>
-        <item name="background">@android:drawable/btn_default_holo_dark</item>
+        <item name="background">@android:drawable/btn_group_holo_dark</item>
     </style>
 
     <style name="Holo.SegmentedButton" parent="SegmentedButton">
-        <item name="android:background">@android:drawable/btn_default_holo_dark</item>
+        <item name="android:background">@android:drawable/btn_group_holo_dark</item>
     </style>
 
     <style name="Holo.ButtonBar.AlertDialog">
@@ -1817,7 +1817,7 @@
     </style>
 
     <style name="Holo.Light.ButtonBar" parent="Holo.ButtonBar">
-        <item name="android:background">@android:drawable/btn_default_holo_light</item>
+        <item name="android:background">@android:drawable/btn_group_holo_light</item>
     </style>
 
     <style name="Holo.Light.ButtonBar.AlertDialog">
@@ -1825,7 +1825,7 @@
     </style>
 
     <style name="Holo.Light.SegmentedButton" parent="SegmentedButton">
-        <item name="android:background">@android:drawable/btn_default_holo_light</item>
+        <item name="android:background">@android:drawable/btn_group_holo_light</item>
     </style>
 
     <style name="Widget.Holo.Light.TextView" parent="Widget.TextView">
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index e6e23aa..08542bf 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -149,6 +149,8 @@
         <item name="alertDialogTheme">@android:style/Theme.Dialog.Alert</item>
         <item name="alertDialogCenterButtons">true</item>
         <item name="alertDialogIcon">@android:drawable/ic_dialog_alert</item>
+
+        <item name="toastFrameBackground">@android:drawable/toast_frame</item>
         
         <!-- Panel attributes -->
         <item name="panelBackground">@android:drawable/menu_background</item>
@@ -863,6 +865,8 @@
         <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>
+
+        <item name="toastFrameBackground">@android:drawable/toast_frame_holo</item>
         
         <!-- Panel attributes -->
         <item name="panelBackground">@android:drawable/menu_background</item>
@@ -1132,6 +1136,8 @@
         <item name="alertDialogCenterButtons">false</item>
         <item name="alertDialogTheme">@android:style/Theme.Holo.Light.Dialog.Alert</item>
         <item name="alertDialogIcon">@android:drawable/ic_dialog_alert_holo_light</item>
+
+        <item name="toastFrameBackground">@android:drawable/toast_frame_holo</item>
         
         <!-- Panel attributes -->
         <item name="panelBackground">@android:drawable/menu_background</item>
@@ -1271,10 +1277,6 @@
 
     </style>
 
-    <!-- Development legacy name; if you're using this, switch. -->
-    <style name="Theme.Light.Holo" parent="Theme.Holo.Light">
-    </style>
-    
     <!-- Variant of the holographic (dark) theme with no action bar. -->
     <style name="Theme.Holo.NoActionBar">
         <item name="android:windowActionBar">false</item>
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index 89e725a..00b06e0 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -1240,7 +1240,11 @@
         VertexMode(int nativeInt) {
             this.nativeInt = nativeInt;
         }
-        final int nativeInt;
+
+        /**
+         * @hide
+         */
+        public final int nativeInt;
     }
     
     /**
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 24585d5..0a9335f 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -162,6 +162,9 @@
     PathCache pathCache;
     RoundRectShapeCache roundRectShapeCache;
     CircleShapeCache circleShapeCache;
+    OvalShapeCache ovalShapeCache;
+    RectShapeCache rectShapeCache;
+    ArcShapeCache arcShapeCache;
     PatchCache patchCache;
     TextDropShadowCache dropShadowCache;
     FboCache fboCache;
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index df446f9..ffd3be4 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -107,6 +107,8 @@
     "DrawRect",
     "DrawRoundRect",
     "DrawCircle",
+    "DrawOval",
+    "DrawArc",
     "DrawPath",
     "DrawLines",
     "DrawText",
@@ -323,6 +325,7 @@
 
                 renderer.drawBitmapMesh(bitmap, meshWidth, meshHeight, vertices, colors, getPaint());
             }
+            break;
             case DrawPatch: {
                 int32_t* xDivs = NULL;
                 int32_t* yDivs = NULL;
@@ -358,6 +361,15 @@
                 renderer.drawCircle(getFloat(), getFloat(), getFloat(), getPaint());
             }
             break;
+            case DrawOval: {
+                renderer.drawOval(getFloat(), getFloat(), getFloat(), getFloat(), getPaint());
+            }
+            break;
+            case DrawArc: {
+                renderer.drawArc(getFloat(), getFloat(), getFloat(), getFloat(),
+                        getFloat(), getFloat(), getInt() == 1, getPaint());
+            }
+            break;
             case DrawPath: {
                 renderer.drawPath(getPath(), getPaint());
             }
@@ -473,6 +485,12 @@
             SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag);
     mSaveCount = 1;
     mSnapshot->setClip(0.0f, 0.0f, mWidth, mHeight);
+    mRestoreSaveCount = -1;
+}
+
+void DisplayListRenderer::finish() {
+    insertRestoreToCount();
+    OpenGLRenderer::finish();
 }
 
 void DisplayListRenderer::acquireContext() {
@@ -497,8 +515,7 @@
 }
 
 void DisplayListRenderer::restoreToCount(int saveCount) {
-    addOp(DisplayList::RestoreToCount);
-    addInt(saveCount);
+    mRestoreSaveCount = saveCount;
     OpenGLRenderer::restoreToCount(saveCount);
 }
 
@@ -658,6 +675,22 @@
     addPaint(paint);
 }
 
+void DisplayListRenderer::drawOval(float left, float top, float right, float bottom,
+        SkPaint* paint) {
+    addOp(DisplayList::DrawOval);
+    addBounds(left, top, right, bottom);
+    addPaint(paint);
+}
+
+void DisplayListRenderer::drawArc(float left, float top, float right, float bottom,
+        float startAngle, float sweepAngle, bool useCenter, SkPaint* paint) {
+    addOp(DisplayList::DrawOval);
+    addBounds(left, top, right, bottom);
+    addPoint(startAngle, sweepAngle);
+    addInt(useCenter ? 1 : 0);
+    addPaint(paint);
+}
+
 void DisplayListRenderer::drawPath(SkPath* path, SkPaint* paint) {
     addOp(DisplayList::DrawPath);
     addPath(path);
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index 7f9db8a..35bb163 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -113,6 +113,8 @@
         DrawRect,
         DrawRoundRect,
         DrawCircle,
+        DrawOval,
+        DrawArc,
         DrawPath,
         DrawLines,
         DrawText,
@@ -238,6 +240,7 @@
 
     void setViewport(int width, int height);
     void prepare(bool opaque);
+    void finish();
 
     void acquireContext();
     void releaseContext();
@@ -278,6 +281,9 @@
     void drawRoundRect(float left, float top, float right, float bottom,
             float rx, float ry, SkPaint* paint);
     void drawCircle(float x, float y, float radius, SkPaint* paint);
+    void drawOval(float left, float top, float right, float bottom, SkPaint* paint);
+    void drawArc(float left, float top, float right, float bottom,
+            float startAngle, float sweepAngle, bool useCenter, SkPaint* paint);
     void drawPath(SkPath* path, SkPaint* paint);
     void drawLines(float* points, int count, SkPaint* paint);
     void drawText(const char* text, int bytesCount, int count, float x, float y, SkPaint* paint);
@@ -318,7 +324,16 @@
     }
 
 private:
+    void insertRestoreToCount() {
+        if (mRestoreSaveCount >= 0) {
+            mWriter.writeInt(DisplayList::RestoreToCount);
+            addInt(mRestoreSaveCount);
+            mRestoreSaveCount = -1;
+        }
+    }
+
     inline void addOp(DisplayList::Op drawOp) {
+        insertRestoreToCount();
         mWriter.writeInt(drawOp);
     }
 
@@ -461,6 +476,8 @@
 
     DisplayList *mDisplayList;
 
+    int mRestoreSaveCount;
+
     friend class DisplayList;
 
 }; // class DisplayListRenderer
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 92aa4bd..e8dc9f6 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -1094,10 +1094,10 @@
     SkXfermode::Mode mode;
     getAlphaAndMode(paint, &alpha, &mode);
 
-    // TODO: Support the colors array
     const uint32_t count = meshWidth * meshHeight * 6;
-    TextureVertex mesh[count];
 
+    // TODO: Support the colors array
+    TextureVertex mesh[count];
     TextureVertex* vertex = mesh;
     for (int32_t y = 0; y < meshHeight; y++) {
         for (int32_t x = 0; x < meshWidth; x++) {
@@ -1360,14 +1360,7 @@
     drawColorRect(clip.left, clip.top, clip.right, clip.bottom, color, mode, true);
 }
 
-void OpenGLRenderer::drawRoundRect(float left, float top, float right, float bottom,
-        float rx, float ry, SkPaint* paint) {
-    if (mSnapshot->isIgnored()) return;
-
-    glActiveTexture(gTextureUnits[0]);
-
-    const PathTexture* texture = mCaches.roundRectShapeCache.getRoundRect(
-            right - left, bottom - top, rx, ry, paint);
+void OpenGLRenderer::drawShape(float left, float top, const PathTexture* texture, SkPaint* paint) {
     if (!texture) return;
     const AutoTexture autoCleanup(texture);
 
@@ -1377,22 +1370,62 @@
     drawPathTexture(texture, x, y, paint);
 }
 
+void OpenGLRenderer::drawRoundRect(float left, float top, float right, float bottom,
+        float rx, float ry, SkPaint* paint) {
+    if (mSnapshot->isIgnored()) return;
+
+    glActiveTexture(gTextureUnits[0]);
+    const PathTexture* texture = mCaches.roundRectShapeCache.getRoundRect(
+            right - left, bottom - top, rx, ry, paint);
+    drawShape(left, top, texture, paint);
+}
+
 void OpenGLRenderer::drawCircle(float x, float y, float radius, SkPaint* paint) {
     if (mSnapshot->isIgnored()) return;
 
     glActiveTexture(gTextureUnits[0]);
-
     const PathTexture* texture = mCaches.circleShapeCache.getCircle(radius, paint);
-    if (!texture) return;
-    const AutoTexture autoCleanup(texture);
+    drawShape(x - radius, y - radius, texture, paint);
+}
 
-    const float left = (x - radius) + texture->left - texture->offset;
-    const float top = (y - radius) + texture->top - texture->offset;
+void OpenGLRenderer::drawOval(float left, float top, float right, float bottom, SkPaint* paint) {
+    if (mSnapshot->isIgnored()) return;
 
-    drawPathTexture(texture, left, top, paint);
+    glActiveTexture(gTextureUnits[0]);
+    const PathTexture* texture = mCaches.ovalShapeCache.getOval(right - left, bottom - top, paint);
+    drawShape(left, top, texture, paint);
+}
+
+void OpenGLRenderer::drawArc(float left, float top, float right, float bottom,
+        float startAngle, float sweepAngle, bool useCenter, SkPaint* paint) {
+    if (mSnapshot->isIgnored()) return;
+
+    if (fabs(sweepAngle) >= 360.0f) {
+        drawOval(left, top, right, bottom, paint);
+        return;
+    }
+
+    glActiveTexture(gTextureUnits[0]);
+    const PathTexture* texture = mCaches.arcShapeCache.getArc(right - left, bottom - top,
+            startAngle, sweepAngle, useCenter, paint);
+    drawShape(left, top, texture, paint);
+}
+
+void OpenGLRenderer::drawRectAsShape(float left, float top, float right, float bottom,
+        SkPaint* paint) {
+    if (mSnapshot->isIgnored()) return;
+
+    glActiveTexture(gTextureUnits[0]);
+    const PathTexture* texture = mCaches.rectShapeCache.getRect(right - left, bottom - top, paint);
+    drawShape(left, top, texture, paint);
 }
 
 void OpenGLRenderer::drawRect(float left, float top, float right, float bottom, SkPaint* p) {
+    if (p->getStyle() != SkPaint::kFill_Style) {
+        drawRectAsShape(left, top, right, bottom, p);
+        return;
+    }
+
     if (quickReject(left, top, right, bottom)) {
         return;
     }
@@ -1706,12 +1739,17 @@
 
         if (underlineWidth > 0.0f) {
             const float textSize = paint->getTextSize();
-            const float strokeWidth = textSize * kStdUnderline_Thickness;
+            // TODO: Support stroke width < 1.0f when we have AA lines
+            const float strokeWidth = fmax(textSize * kStdUnderline_Thickness, 1.0f);
 
             const float left = x - offsetX;
             float top = 0.0f;
 
-            const int pointsCount = 4 * (flags & SkPaint::kStrikeThruText_Flag ? 2 : 1);
+            int linesCount = 0;
+            if (flags & SkPaint::kUnderlineText_Flag) linesCount++;
+            if (flags & SkPaint::kStrikeThruText_Flag) linesCount++;
+
+            const int pointsCount = 4 * linesCount;
             float points[pointsCount];
             int currentPoint = 0;
 
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index 42e93ad..eec3750 100644
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -112,6 +112,9 @@
     virtual void drawRoundRect(float left, float top, float right, float bottom,
             float rx, float ry, SkPaint* paint);
     virtual void drawCircle(float x, float y, float radius, SkPaint* paint);
+    virtual void drawOval(float left, float top, float right, float bottom, SkPaint* paint);
+    virtual void drawArc(float left, float top, float right, float bottom,
+            float startAngle, float sweepAngle, bool useCenter, SkPaint* paint);
     virtual void drawPath(SkPath* path, SkPaint* paint);
     virtual void drawLines(float* points, int count, SkPaint* paint);
     virtual void drawText(const char* text, int bytesCount, int count, float x, float y,
@@ -277,6 +280,9 @@
     void drawColorRect(float left, float top, float right, float bottom,
             int color, SkXfermode::Mode mode, bool ignoreTransform = false);
 
+    void drawShape(float left, float top, const PathTexture* texture, SkPaint* paint);
+    void drawRectAsShape(float left, float top, float right, float bottom, SkPaint* p);
+
     /**
      * Draws a textured rectangle with the specified texture. The specified coordinates
      * are transformed by the current snapshot's transform matrix.
diff --git a/libs/hwui/ShapeCache.cpp b/libs/hwui/ShapeCache.cpp
index b78eecb..0d7cd9c 100644
--- a/libs/hwui/ShapeCache.cpp
+++ b/libs/hwui/ShapeCache.cpp
@@ -68,5 +68,82 @@
     return texture;
 }
 
+///////////////////////////////////////////////////////////////////////////////
+// Ovals
+///////////////////////////////////////////////////////////////////////////////
+
+OvalShapeCache::OvalShapeCache(): ShapeCache<OvalShapeCacheEntry>(
+        "oval", PROPERTY_SHAPE_CACHE_SIZE, DEFAULT_SHAPE_CACHE_SIZE) {
+}
+
+PathTexture* OvalShapeCache::getOval(float width, float height, SkPaint* paint) {
+    OvalShapeCacheEntry entry(width, height, paint);
+    PathTexture* texture = get(entry);
+
+    if (!texture) {
+        SkPath path;
+        SkRect r;
+        r.set(0.0f, 0.0f, width, height);
+        path.addOval(r, SkPath::kCW_Direction);
+
+        texture = addTexture(entry, &path, paint);
+    }
+
+    return texture;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Rects
+///////////////////////////////////////////////////////////////////////////////
+
+RectShapeCache::RectShapeCache(): ShapeCache<RectShapeCacheEntry>(
+        "rect", PROPERTY_SHAPE_CACHE_SIZE, DEFAULT_SHAPE_CACHE_SIZE) {
+}
+
+PathTexture* RectShapeCache::getRect(float width, float height, SkPaint* paint) {
+    RectShapeCacheEntry entry(width, height, paint);
+    PathTexture* texture = get(entry);
+
+    if (!texture) {
+        SkPath path;
+        path.addRect(0.0f, 0.0f, width, height, SkPath::kCW_Direction);
+
+        texture = addTexture(entry, &path, paint);
+    }
+
+    return texture;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Arcs
+///////////////////////////////////////////////////////////////////////////////
+
+ArcShapeCache::ArcShapeCache(): ShapeCache<ArcShapeCacheEntry>(
+        "arc", PROPERTY_SHAPE_CACHE_SIZE, DEFAULT_SHAPE_CACHE_SIZE) {
+}
+
+PathTexture* ArcShapeCache::getArc(float width, float height,
+        float startAngle, float sweepAngle, bool useCenter, SkPaint* paint) {
+    ArcShapeCacheEntry entry(width, height, startAngle, sweepAngle, useCenter, paint);
+    PathTexture* texture = get(entry);
+
+    if (!texture) {
+        SkPath path;
+        SkRect r;
+        r.set(0.0f, 0.0f, width, height);
+        if (useCenter) {
+            path.moveTo(r.centerX(), r.centerY());
+        }
+        path.arcTo(r, startAngle, sweepAngle, !useCenter);
+        if (useCenter) {
+            path.close();
+        }
+
+        texture = addTexture(entry, &path, paint);
+    }
+
+    return texture;
+}
+
 }; // namespace uirenderer
 }; // namespace android
diff --git a/libs/hwui/ShapeCache.h b/libs/hwui/ShapeCache.h
index c627931..e535466 100644
--- a/libs/hwui/ShapeCache.h
+++ b/libs/hwui/ShapeCache.h
@@ -76,6 +76,7 @@
 struct ShapeCacheEntry {
     enum ShapeType {
         kShapeNone,
+        kShapeRect,
         kShapeRoundRect,
         kShapeCircle,
         kShapeOval,
@@ -216,6 +217,122 @@
     uint32_t mRadius;
 }; // CircleShapeCacheEntry
 
+struct OvalShapeCacheEntry: public ShapeCacheEntry {
+    OvalShapeCacheEntry(float width, float height, SkPaint* paint):
+            ShapeCacheEntry(ShapeCacheEntry::kShapeOval, paint) {
+        mWidth = *(uint32_t*) &width;
+        mHeight = *(uint32_t*) &height;
+    }
+
+    OvalShapeCacheEntry(): ShapeCacheEntry() {
+        mWidth = mHeight = 0;
+    }
+
+    OvalShapeCacheEntry(const OvalShapeCacheEntry& entry):
+            ShapeCacheEntry(entry) {
+        mWidth = entry.mWidth;
+        mHeight = entry.mHeight;
+    }
+
+    bool lessThan(const ShapeCacheEntry& r) const {
+        const OvalShapeCacheEntry& rhs = (const OvalShapeCacheEntry&) r;
+        LTE_INT(mWidth) {
+            LTE_INT(mHeight) {
+                return false;
+            }
+        }
+        return false;
+    }
+
+private:
+    uint32_t mWidth;
+    uint32_t mHeight;
+}; // OvalShapeCacheEntry
+
+struct RectShapeCacheEntry: public ShapeCacheEntry {
+    RectShapeCacheEntry(float width, float height, SkPaint* paint):
+            ShapeCacheEntry(ShapeCacheEntry::kShapeRect, paint) {
+        mWidth = *(uint32_t*) &width;
+        mHeight = *(uint32_t*) &height;
+    }
+
+    RectShapeCacheEntry(): ShapeCacheEntry() {
+        mWidth = mHeight = 0;
+    }
+
+    RectShapeCacheEntry(const RectShapeCacheEntry& entry):
+            ShapeCacheEntry(entry) {
+        mWidth = entry.mWidth;
+        mHeight = entry.mHeight;
+    }
+
+    bool lessThan(const ShapeCacheEntry& r) const {
+        const RectShapeCacheEntry& rhs = (const RectShapeCacheEntry&) r;
+        LTE_INT(mWidth) {
+            LTE_INT(mHeight) {
+                return false;
+            }
+        }
+        return false;
+    }
+
+private:
+    uint32_t mWidth;
+    uint32_t mHeight;
+}; // RectShapeCacheEntry
+
+struct ArcShapeCacheEntry: public ShapeCacheEntry {
+    ArcShapeCacheEntry(float width, float height, float startAngle, float sweepAngle,
+            bool useCenter, SkPaint* paint):
+            ShapeCacheEntry(ShapeCacheEntry::kShapeArc, paint) {
+        mWidth = *(uint32_t*) &width;
+        mHeight = *(uint32_t*) &height;
+        mStartAngle = *(uint32_t*) &startAngle;
+        mSweepAngle = *(uint32_t*) &sweepAngle;
+        mUseCenter = useCenter ? 1 : 0;
+    }
+
+    ArcShapeCacheEntry(): ShapeCacheEntry() {
+        mWidth = 0;
+        mHeight = 0;
+        mStartAngle = 0;
+        mSweepAngle = 0;
+        mUseCenter = 0;
+    }
+
+    ArcShapeCacheEntry(const ArcShapeCacheEntry& entry):
+            ShapeCacheEntry(entry) {
+        mWidth = entry.mWidth;
+        mHeight = entry.mHeight;
+        mStartAngle = entry.mStartAngle;
+        mSweepAngle = entry.mSweepAngle;
+        mUseCenter = entry.mUseCenter;
+    }
+
+    bool lessThan(const ShapeCacheEntry& r) const {
+        const ArcShapeCacheEntry& rhs = (const ArcShapeCacheEntry&) r;
+        LTE_INT(mWidth) {
+            LTE_INT(mHeight) {
+                LTE_INT(mStartAngle) {
+                    LTE_INT(mSweepAngle) {
+                        LTE_INT(mUseCenter) {
+                            return false;
+                        }
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+private:
+    uint32_t mWidth;
+    uint32_t mHeight;
+    uint32_t mStartAngle;
+    uint32_t mSweepAngle;
+    uint32_t mUseCenter;
+}; // ArcShapeCacheEntry
+
 /**
  * A simple LRU shape cache. The cache has a maximum size expressed in bytes.
  * Any texture added to the cache causing the cache to grow beyond the maximum
@@ -289,8 +406,29 @@
     CircleShapeCache();
 
     PathTexture* getCircle(float radius, SkPaint* paint);
-}; // class RoundRectShapeCache
+}; // class CircleShapeCache
 
+class OvalShapeCache: public ShapeCache<OvalShapeCacheEntry> {
+public:
+    OvalShapeCache();
+
+    PathTexture* getOval(float width, float height, SkPaint* paint);
+}; // class OvalShapeCache
+
+class RectShapeCache: public ShapeCache<RectShapeCacheEntry> {
+public:
+    RectShapeCache();
+
+    PathTexture* getRect(float width, float height, SkPaint* paint);
+}; // class RectShapeCache
+
+class ArcShapeCache: public ShapeCache<ArcShapeCacheEntry> {
+public:
+    ArcShapeCache();
+
+    PathTexture* getArc(float width, float height, float startAngle, float sweepAngle,
+            bool useCenter, SkPaint* paint);
+}; // class ArcShapeCache
 
 ///////////////////////////////////////////////////////////////////////////////
 // Constructors/destructor
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp
index 6fc2ddb..e560b8f 100644
--- a/libs/hwui/TextureCache.cpp
+++ b/libs/hwui/TextureCache.cpp
@@ -60,7 +60,7 @@
     mCache.setOnEntryRemovedListener(this);
 
     glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize);
-    LOGD("    Maximum texture dimension is %d pixels", mMaxTextureSize);
+    INIT_LOGD("    Maximum texture dimension is %d pixels", mMaxTextureSize);
 
     mDebugEnabled = readDebugLevel() & kDebugCaches;
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java
index 521467a..b794826 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java
@@ -80,7 +80,7 @@
         setMode(automatic ? Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
                 : Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
         if (!automatic) {
-            final int val = value + value + MINIMUM_BACKLIGHT;
+            final int val = value + MINIMUM_BACKLIGHT;
             setBrightness(val);
             if (!tracking) {
                 AsyncTask.execute(new Runnable() {
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 a3a58ed..c2f74f0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -564,17 +564,28 @@
                     if (DEBUG) Slog.d(TAG, "hiding shadows (lights on)");
                     mBarContents.setVisibility(View.VISIBLE);
                     mShadow.setVisibility(View.GONE);
+                    notifyLightsChanged(true);
                     break;
                 case MSG_HIDE_CHROME:
                     if (DEBUG) Slog.d(TAG, "showing shadows (lights out)");
                     animateCollapse();
                     mBarContents.setVisibility(View.GONE);
                     mShadow.setVisibility(View.VISIBLE);
+                    notifyLightsChanged(false);
                     break;
             }
         }
     }
 
+    private void notifyLightsChanged(boolean shown) {
+        try {
+            Slog.d(TAG, "lights " + (shown?"on":"out"));
+            mWindowManager.statusBarVisibilityChanged(
+                    shown ? View.STATUS_BAR_VISIBLE : View.STATUS_BAR_HIDDEN);
+        } catch (RemoteException ex) {
+        }
+    }
+
     public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {
         if (DEBUG) Slog.d(TAG, "addIcon(" + slot + ") -> " + icon);
     }
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index c313713b..6a1d199 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -885,15 +885,7 @@
         final Menu parentMenu = subMenu.getRootMenu();
         final PanelFeatureState panel = findMenuPanel(parentMenu);
 
-        /*
-         * Use the panel open state to determine whether this is coming from an open panel
-         * or an action button. If it's an open panel we want to use MenuDialogHelper.
-         * If it's closed we want to grab the relevant view and create a popup anchored to it.
-         */
-        if (panel.isOpen) {
-            // The window manager will give us a valid window token
-            new MenuDialogHelper(subMenu).show(null);
-        } else if (hasFeature(FEATURE_ACTION_BAR)) {
+        if (hasFeature(FEATURE_ACTION_BAR) && panel.featureId == FEATURE_OPTIONS_PANEL) {
             mDecor.post(new Runnable() {
                 public void run() {
                     mActionButtonPopup = new ActionButtonSubmenu(getContext(), subMenu);
@@ -904,6 +896,9 @@
                     }
                 }
             });
+        } else {
+            // The window manager will give us a valid window token
+            new MenuDialogHelper(subMenu).show(null);
         }
 
         return true;
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 747242f..67e0e67 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -34,6 +34,7 @@
 import android.database.ContentObserver;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
+import android.os.Binder;
 import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
@@ -270,7 +271,10 @@
     int mPointerLocationMode = 0;
     PointerLocationView mPointerLocationView = null;
     InputChannel mPointerLocationInputChannel;
-    
+
+    // The last window we were told about in focusChanged.
+    WindowState mFocusedWindow;
+
     private final InputHandler mPointerLocationInputHandler = new BaseInputHandler() {
         @Override
         public void handleMotion(MotionEvent event, InputQueue.FinishedCallback finishedCallback) {
@@ -1953,7 +1957,9 @@
                 mKeyguardMediator.setHidden(false);
             }
         }
-        
+
+        updateSystemUiVisibility();
+
         // update since mAllowLockscreenWhenOn might have changed
         updateLockScreenTimeout();
         return changes;
@@ -1993,6 +1999,11 @@
         return true;
     }
 
+    public void focusChanged(WindowState lastFocus, WindowState newFocus) {
+        mFocusedWindow = newFocus;
+        updateSystemUiVisibility();
+    }
+
     /** {@inheritDoc} */
     public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
         // lid changed state
@@ -2481,10 +2492,12 @@
                     return mSeascapeRotation;
                 case ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE:
                     //return either landscape rotation based on the sensor
-                    mOrientationListener.setAllow180Rotation(false);
+                    mOrientationListener.setAllow180Rotation(
+                            isLandscapeOrSeascape(Surface.ROTATION_180));
                     return getCurrentLandscapeRotation(lastRotation);
                 case ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT:
-                    mOrientationListener.setAllow180Rotation(true);
+                    mOrientationListener.setAllow180Rotation(
+                            !isLandscapeOrSeascape(Surface.ROTATION_180));
                     return getCurrentPortraitRotation(lastRotation);
             }
 
@@ -2836,6 +2849,34 @@
         return mScreenOn;
     }
 
+    private void updateSystemUiVisibility() {
+        // If there is no window focused, there will be nobody to handle the events
+        // anyway, so just hang on in whatever state we're in until things settle down.
+        if (mFocusedWindow != null) {
+            final int visibility = mFocusedWindow.getAttrs().systemUiVisibility;
+            mHandler.post(new Runnable() {
+                    public void run() {
+                        if (mStatusBarService == null) {
+                            mStatusBarService = IStatusBarService.Stub.asInterface(
+                                    ServiceManager.getService("statusbar"));
+                        }
+                        if (mStatusBarService != null) {
+                            // need to assume status bar privileges to invoke lights on
+                            long origId = Binder.clearCallingIdentity();
+                            try {
+                                mStatusBarService.setSystemUiVisibility(visibility);
+                            } catch (RemoteException e) {
+                                // not much to be done
+                                mStatusBarService = null;
+                            } finally {
+                                Binder.restoreCallingIdentity(origId);
+                            }
+                        }
+                    }
+                });
+        }
+    }
+
     public void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) {
         pw.print(prefix); pw.print("mSafeMode="); pw.print(mSafeMode);
                 pw.print(" mSystemRead="); pw.println(mSystemReady);
diff --git a/services/java/com/android/server/AlarmManagerService.java b/services/java/com/android/server/AlarmManagerService.java
index 4931cc7..5a36417 100644
--- a/services/java/com/android/server/AlarmManagerService.java
+++ b/services/java/com/android/server/AlarmManagerService.java
@@ -661,7 +661,8 @@
                     remove(mTimeTickSender);
                     mClockReceiver.scheduleTimeTickEvent();
                     Intent intent = new Intent(Intent.ACTION_TIME_CHANGED);
-                    intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
+                    intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING
+                            | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
                     mContext.sendBroadcast(intent);
                 }
                 
diff --git a/services/java/com/android/server/LightsService.java b/services/java/com/android/server/LightsService.java
index 9b57735..21f2bcf 100644
--- a/services/java/com/android/server/LightsService.java
+++ b/services/java/com/android/server/LightsService.java
@@ -24,12 +24,12 @@
 import android.os.Message;
 import android.util.Slog;
 
-import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 
 public class LightsService {
     private static final String TAG = "LightsService";
+    private static final boolean DEBUG = false;
 
     static final int LIGHT_ID_BACKLIGHT = 0;
     static final int LIGHT_ID_KEYBOARD = 1;
@@ -115,6 +115,8 @@
 
         private void setLightLocked(int color, int mode, int onMS, int offMS, int brightnessMode) {
             if (color != mColor || mode != mMode || onMS != mOnMS || offMS != mOffMS) {
+                if (DEBUG) Slog.v(TAG, "setLight #" + mId + ": color=#"
+                        + Integer.toHexString(color));
                 mColor = color;
                 mMode = mode;
                 mOnMS = onMS;
diff --git a/services/java/com/android/server/StatusBarManagerService.java b/services/java/com/android/server/StatusBarManagerService.java
index cbfa4ee..50ea3fa 100644
--- a/services/java/com/android/server/StatusBarManagerService.java
+++ b/services/java/com/android/server/StatusBarManagerService.java
@@ -32,6 +32,7 @@
 import android.os.Handler;
 import android.os.SystemClock;
 import android.util.Slog;
+import android.view.View;
 
 import com.android.internal.statusbar.IStatusBar;
 import com.android.internal.statusbar.IStatusBarService;
@@ -308,10 +309,11 @@
      * app keeps trying to turn it on.  For now they can just fight it out.  Having
      * these two separte inputs will allow us to keep that change local to here.  --joeo
      */
-    public void setLightsOn(boolean lightsOn) {
+    public void setSystemUiVisibility(int vis) {
         enforceStatusBarService();
 
         synchronized (mLock) {
+            final boolean lightsOn = (vis & View.STATUS_BAR_HIDDEN) == 0;
             updateLightsOnLocked(lightsOn);
         }
     }
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index d2a1786..eeb224c 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -396,6 +396,8 @@
     int mLastRotationFlags;
     ArrayList<IRotationWatcher> mRotationWatchers
             = new ArrayList<IRotationWatcher>();
+    int mDeferredRotation;
+    int mDeferredRotationAnimFlags;
 
     boolean mLayoutNeeded = true;
     boolean mAnimationPending = false;
@@ -516,10 +518,6 @@
         ArrayList<WindowState> mNotifiedWindows;
         boolean mDragInProgress;
 
-        boolean mPerformDeferredRotation;
-        int mRotation;
-        int mAnimFlags;
-
         private final Region mTmpRegion = new Region();
 
         DragState(IBinder token, Surface surface, int flags, IBinder localWin) {
@@ -541,7 +539,6 @@
             mData = null;
             mThumbOffsetX = mThumbOffsetY = 0;
             mNotifiedWindows = null;
-            mPerformDeferredRotation = false;
         }
 
         void register() {
@@ -683,24 +680,15 @@
             mInputMonitor.setUpdateInputWindowsNeededLw();
             mInputMonitor.updateInputWindowsLw();
 
-            // Retain the parameters of any deferred rotation operation so
-            // that we can perform it after the reset / unref of the drag state
-            final boolean performRotation = mPerformDeferredRotation;
-            final int rotation = mRotation;
-            final int animFlags = mAnimFlags;
-
             // free our resources and drop all the object references
             mDragState.reset();
             mDragState = null;
 
-            // Now that we've officially ended the drag, execute any
-            // deferred rotation
-            if (performRotation) {
-                if (DEBUG_ORIENTATION) Slog.d(TAG, "Performing post-drag rotation");
-                boolean changed = setRotationUncheckedLocked(rotation, animFlags, false);
-                if (changed) {
-                    sendNewConfiguration();
-                }
+            if (DEBUG_ORIENTATION) Slog.d(TAG, "Performing post-drag rotation");
+            boolean changed = setRotationUncheckedLocked(
+                    WindowManagerPolicy.USE_LAST_ROTATION, 0, false);
+            if (changed) {
+                sendNewConfiguration();
             }
         }
 
@@ -836,12 +824,6 @@
 
             return touchedWin;
         }
-
-        void setDeferredRotation(int rotation, int animFlags) {
-            mRotation = rotation;
-            mAnimFlags = animFlags;
-            mPerformDeferredRotation = true;
-        }
     }
 
     DragState mDragState = null;
@@ -5168,21 +5150,30 @@
      * MUST CALL setNewConfiguration() TO UNFREEZE THE SCREEN.
      */
     public boolean setRotationUncheckedLocked(int rotation, int animFlags, boolean inTransaction) {
-        if (mDragState != null) {
+        if (mDragState != null || mScreenRotationAnimation != null) {
             // Potential rotation during a drag.  Don't do the rotation now, but make
             // a note to perform the rotation later.
-            if (DEBUG_ORIENTATION) Slog.v(TAG, "Deferring rotation during drag");
-            mDragState.setDeferredRotation(rotation, animFlags);
+            if (DEBUG_ORIENTATION) Slog.v(TAG, "Deferring rotation.");
+            if (rotation != WindowManagerPolicy.USE_LAST_ROTATION) {
+                mDeferredRotation = rotation;
+                mDeferredRotationAnimFlags = animFlags;
+            }
             return false;
         }
 
         boolean changed;
         if (rotation == WindowManagerPolicy.USE_LAST_ROTATION) {
+            if (mDeferredRotation != WindowManagerPolicy.USE_LAST_ROTATION) {
+                rotation = mDeferredRotation;
+                mRequestedRotation = rotation;
+                mLastRotationFlags = mDeferredRotationAnimFlags;
+            }
             rotation = mRequestedRotation;
         } else {
             mRequestedRotation = rotation;
             mLastRotationFlags = animFlags;
         }
+        mDeferredRotation = WindowManagerPolicy.USE_LAST_ROTATION;
         if (DEBUG_ORIENTATION) Slog.v(TAG, "Overwriting rotation value from " + rotation);
         rotation = mPolicy.rotationForOrientationLw(mForcedAppOrientation,
                 mRotation, mDisplayEnabled);
@@ -8891,6 +8882,8 @@
                                 // Ignore if process has died.
                             }
                         }
+
+                        mPolicy.focusChanged(lastFocus, newFocus);
                     }
                 } break;
 
@@ -9515,7 +9508,7 @@
             final AppWindowToken atoken = win.mAppToken;
             final boolean gone = win.mViewVisibility == View.GONE
                     || !win.mRelayoutCalled
-                    || win.mRootToken.hidden
+                    || (atoken == null && win.mRootToken.hidden)
                     || (atoken != null && atoken.hiddenRequested)
                     || win.mAttachedHidden
                     || win.mExiting || win.mDestroying;
@@ -9634,6 +9627,7 @@
         boolean focusDisplayed = false;
         boolean animating = false;
         boolean createWatermark = false;
+        boolean updateRotation = false;
 
         if (mFxSession == null) {
             mFxSession = new SurfaceSession();
@@ -9731,6 +9725,7 @@
                             animating = true;
                         } else {
                             mScreenRotationAnimation = null;
+                            updateRotation = true;
                         }
                     }
                 }
@@ -10313,11 +10308,8 @@
                             + ": new=" + w.mShownFrame + ", old="
                             + w.mLastShownFrame);
 
-                    boolean resize;
                     int width, height;
                     if ((w.mAttrs.flags & w.mAttrs.FLAG_SCALED) != 0) {
-                        resize = w.mLastRequestedWidth != w.mRequestedWidth ||
-                        w.mLastRequestedHeight != w.mRequestedHeight;
                         // for a scaled surface, we just want to use
                         // the requested size.
                         width  = w.mRequestedWidth;
@@ -10325,58 +10317,61 @@
                         w.mLastRequestedWidth = width;
                         w.mLastRequestedHeight = height;
                         w.mLastShownFrame.set(w.mShownFrame);
-                        try {
-                            if (SHOW_TRANSACTIONS) logSurface(w,
-                                    "POS " + w.mShownFrame.left
-                                    + ", " + w.mShownFrame.top, null);
-                            w.mSurfaceX = w.mShownFrame.left;
-                            w.mSurfaceY = w.mShownFrame.top;
-                            w.mSurface.setPosition(w.mShownFrame.left, w.mShownFrame.top);
-                        } catch (RuntimeException e) {
-                            Slog.w(TAG, "Error positioning surface in " + w, e);
-                            if (!recoveringMemory) {
-                                reclaimSomeSurfaceMemoryLocked(w, "position");
-                            }
-                        }
                     } else {
-                        resize = !w.mLastShownFrame.equals(w.mShownFrame);
                         width = w.mShownFrame.width();
                         height = w.mShownFrame.height();
                         w.mLastShownFrame.set(w.mShownFrame);
                     }
 
-                    if (resize) {
-                        if (width < 1) width = 1;
-                        if (height < 1) height = 1;
-                        if (w.mSurface != null) {
+                    if (w.mSurface != null) {
+                        if (w.mSurfaceX != w.mShownFrame.left
+                                || w.mSurfaceY != w.mShownFrame.top) {
                             try {
                                 if (SHOW_TRANSACTIONS) logSurface(w,
-                                        "POS " + w.mShownFrame.left + ","
-                                        + w.mShownFrame.top + " SIZE "
-                                        + w.mShownFrame.width() + "x"
+                                        "POS " + w.mShownFrame.left
+                                        + ", " + w.mShownFrame.top, null);
+                                w.mSurfaceX = w.mShownFrame.left;
+                                w.mSurfaceY = w.mShownFrame.top;
+                                w.mSurface.setPosition(w.mShownFrame.left, w.mShownFrame.top);
+                            } catch (RuntimeException e) {
+                                Slog.w(TAG, "Error positioning surface of " + w
+                                        + " pos=(" + w.mShownFrame.left
+                                        + "," + w.mShownFrame.top + ")", e);
+                                if (!recoveringMemory) {
+                                    reclaimSomeSurfaceMemoryLocked(w, "position");
+                                }
+                            }
+                        }
+
+                        if (width < 1) {
+                            width = 1;
+                        }
+                        if (height < 1) {
+                            height = 1;
+                        }
+
+                        if (w.mSurfaceW != width || w.mSurfaceH != height) {
+                            try {
+                                if (SHOW_TRANSACTIONS) logSurface(w,
+                                        "SIZE " + w.mShownFrame.width() + "x"
                                         + w.mShownFrame.height(), null);
                                 w.mSurfaceResized = true;
                                 w.mSurfaceW = width;
                                 w.mSurfaceH = height;
                                 w.mSurface.setSize(width, height);
-                                w.mSurfaceX = w.mShownFrame.left;
-                                w.mSurfaceY = w.mShownFrame.top;
-                                w.mSurface.setPosition(w.mShownFrame.left,
-                                        w.mShownFrame.top);
                             } catch (RuntimeException e) {
                                 // If something goes wrong with the surface (such
                                 // as running out of memory), don't take down the
                                 // entire system.
-                                Slog.e(TAG, "Failure updating surface of " + w
-                                        + " size=(" + width + "x" + height
-                                        + "), pos=(" + w.mShownFrame.left
-                                        + "," + w.mShownFrame.top + ")", e);
+                                Slog.e(TAG, "Error resizing surface of " + w
+                                        + " size=(" + width + "x" + height + ")", e);
                                 if (!recoveringMemory) {
                                     reclaimSomeSurfaceMemoryLocked(w, "size");
                                 }
                             }
                         }
                     }
+
                     if (!w.mAppFreezing && w.mLayoutSeq == mLayoutSeq) {
                         w.mContentInsetsChanged =
                             !w.mLastContentInsets.equals(w.mContentInsets);
@@ -10393,11 +10388,21 @@
                         if (localLOGV) Slog.v(TAG, "Resizing " + w
                                 + ": configChanged=" + configChanged
                                 + " last=" + w.mLastFrame + " frame=" + w.mFrame);
-                        if (!w.mLastFrame.equals(w.mFrame)
+                        boolean frameChanged = !w.mLastFrame.equals(w.mFrame);
+                        if (frameChanged
                                 || w.mContentInsetsChanged
                                 || w.mVisibleInsetsChanged
                                 || w.mSurfaceResized
                                 || configChanged) {
+                            if (DEBUG_RESIZE || DEBUG_ORIENTATION) {
+                                Slog.v(TAG, "Resize reasons: "
+                                        + "frameChanged=" + frameChanged
+                                        + " contentInsetsChanged=" + w.mContentInsetsChanged
+                                        + " visibleInsetsChanged=" + w.mVisibleInsetsChanged
+                                        + " surfaceResized=" + w.mSurfaceResized
+                                        + " configChanged=" + configChanged);
+                            }
+
                             w.mLastFrame.set(w.mFrame);
                             w.mLastContentInsets.set(w.mContentInsets);
                             w.mLastVisibleInsets.set(w.mVisibleInsets);
@@ -10882,6 +10887,15 @@
             mTurnOnScreen = false;
         }
         
+        if (updateRotation) {
+            if (DEBUG_ORIENTATION) Slog.d(TAG, "Performing post-rotate rotation");
+            boolean changed = setRotationUncheckedLocked(
+                    WindowManagerPolicy.USE_LAST_ROTATION, 0, false);
+            if (changed) {
+                sendNewConfiguration();
+            }
+        }
+        
         // Check to see if we are now in a state where the screen should
         // be enabled, because the window obscured flags have changed.
         enableScreenIfNeededLocked();
@@ -11208,6 +11222,8 @@
             Debug.stopMethodTracing();
         }
 
+        boolean updateRotation = false;
+        
         if (CUSTOM_SCREEN_ROTATION) {
             if (mScreenRotationAnimation != null) {
                 if (mScreenRotationAnimation.dismiss(MAX_ANIMATION_DURATION,
@@ -11215,6 +11231,7 @@
                     requestAnimationLocked(0);
                 } else {
                     mScreenRotationAnimation = null;
+                    updateRotation = true;
                 }
             }
         } else {
@@ -11241,6 +11258,15 @@
                 2000);
 
         mScreenFrozenLock.release();
+        
+        if (updateRotation) {
+            if (DEBUG_ORIENTATION) Slog.d(TAG, "Performing post-rotate rotation");
+            boolean changed = setRotationUncheckedLocked(
+                    WindowManagerPolicy.USE_LAST_ROTATION, 0, false);
+            if (changed) {
+                sendNewConfiguration();
+            }
+        }
     }
 
     static int getPropertyInt(String[] tokens, int index, int defUnits, int defDps,
@@ -11434,6 +11460,23 @@
     }
 
     @Override
+    public void statusBarVisibilityChanged(int visibility) {
+        synchronized (mWindowMap) {
+            final int N = mWindows.size();
+            for (int i = 0; i < N; i++) {
+                WindowState ws = mWindows.get(i);
+                try {
+                    if (ws.getAttrs().hasSystemUiListeners) {
+                        ws.mClient.dispatchSystemUiVisibilityChanged(visibility);
+                    }
+                } catch (RemoteException e) {
+                    // so sorry
+                }
+            }
+        }
+    }
+
+    @Override
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         if (mContext.checkCallingOrSelfPermission("android.permission.DUMP")
                 != PackageManager.PERMISSION_GRANTED) {
@@ -11619,6 +11662,8 @@
             pw.print("  mRotation="); pw.print(mRotation);
                     pw.print(", mForcedAppOrientation="); pw.print(mForcedAppOrientation);
                     pw.print(", mRequestedRotation="); pw.println(mRequestedRotation);
+            pw.print("  mDeferredRotation="); pw.print(mDeferredRotation);
+                    pw.print(", mDeferredRotationAnimFlags="); pw.print(mDeferredRotationAnimFlags);
             pw.print("  mAnimationPending="); pw.print(mAnimationPending);
                     pw.print(" mWindowAnimationScale="); pw.print(mWindowAnimationScale);
                     pw.print(" mTransitionWindowAnimationScale="); pw.println(mTransitionAnimationScale);
diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java
index 3dc3965..0fb30ff 100644
--- a/services/java/com/android/server/am/ActivityRecord.java
+++ b/services/java/com/android/server/am/ActivityRecord.java
@@ -60,7 +60,8 @@
     final String processName; // process where this component wants to run
     final String taskAffinity; // as per ActivityInfo.taskAffinity
     final boolean stateNotNeeded; // As per ActivityInfo.flags
-    final boolean fullscreen;     // covers the full screen?
+    final boolean fullscreen; // covers the full screen?
+    final boolean noDisplay;  // activity is not displayed?
     final boolean componentSpecified;  // did caller specifiy an explicit component?
     final boolean isHomeActivity; // do we consider this to be a home activity?
     final String baseDir;   // where activity source (resources etc) located
@@ -165,12 +166,13 @@
                 pw.print(" finishing="); pw.println(finishing);
         pw.print(prefix); pw.print("keysPaused="); pw.print(keysPaused);
                 pw.print(" inHistory="); pw.print(inHistory);
-                pw.print(" immersive="); pw.print(immersive);
-                pw.print(" launchMode="); pw.println(launchMode);
-        pw.print(prefix); pw.print("fullscreen="); pw.print(fullscreen);
                 pw.print(" visible="); pw.print(visible);
                 pw.print(" sleeping="); pw.print(sleeping);
                 pw.print(" idle="); pw.println(idle);
+        pw.print(prefix); pw.print("fullscreen="); pw.print(fullscreen);
+                pw.print(" noDisplay="); pw.print(noDisplay);
+                pw.print(" immersive="); pw.print(immersive);
+                pw.print(" launchMode="); pw.println(launchMode);
         pw.print(prefix); pw.print("frozenBeforeDestroy="); pw.print(frozenBeforeDestroy);
                 pw.print(" thumbnailNeeded="); pw.println(thumbnailNeeded);
         if (launchTime != 0 || startTime != 0) {
@@ -282,6 +284,8 @@
                     com.android.internal.R.styleable.Window_windowIsFloating, false)
                     && !ent.array.getBoolean(
                     com.android.internal.R.styleable.Window_windowIsTranslucent, false);
+            noDisplay = ent != null && ent.array.getBoolean(
+                    com.android.internal.R.styleable.Window_windowNoDisplay, false);
             
             if (!_componentSpecified || _launchedFromUid == Process.myUid()
                     || _launchedFromUid == 0) {
@@ -318,6 +322,7 @@
             processName = null;
             packageName = null;
             fullscreen = true;
+            noDisplay = false;
             isHomeActivity = false;
             immersive = false;
         }
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index 3761928..2040cbd 100644
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -750,6 +750,10 @@
     }
     
     public final Bitmap screenshotActivities(ActivityRecord who) {
+        if (who.noDisplay) {
+            return null;
+        }
+        
         Resources res = mService.mContext.getResources();
         int w = mThumbnailWidth;
         int h = mThumbnailHeight;
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java
index 833d559..8f98cbb 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java
@@ -22,10 +22,7 @@
 import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
 import android.graphics.Paint;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
 import android.os.Bundle;
-import android.util.Log;
 import android.view.View;
 
 @SuppressWarnings({"UnusedDeclaration"})
@@ -41,11 +38,30 @@
     static class BitmapMeshView extends View {
         private Paint mBitmapPaint;
         private final Bitmap mBitmap1;
+        private float[] mVertices;
+        private int[] mColors;
 
         BitmapMeshView(Context c) {
             super(c);
 
             mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1);
+
+            final float width = mBitmap1.getWidth() / 3.0f;
+            final float height = mBitmap1.getHeight() / 3.0f;
+
+            mVertices = new float[] {
+                0.0f, 0.0f, width, 0.0f, width * 2, 0.0f, width * 3, 0.0f,
+                0.0f, height, width, height, width * 2, height, width * 4, height,
+                0.0f, height * 2, width, height * 2, width * 2, height * 2, width * 3, height * 2,
+                0.0f, height * 4, width, height * 4, width * 2, height * 4, width * 4, height * 4,
+            };
+            
+            mColors = new int[] {
+                0xffff0000, 0xff00ff00, 0xff0000ff, 0xffff0000,
+                0xff0000ff, 0xffff0000, 0xff00ff00, 0xff00ff00,
+                0xff00ff00, 0xff0000ff, 0xffff0000, 0xff00ff00,
+                0x00ff0000, 0x0000ff00, 0x000000ff, 0x00ff0000,
+            };
         }
 
         @Override
@@ -54,14 +70,10 @@
 
             canvas.drawARGB(255, 255, 255, 255);
             canvas.translate(100, 100);
-            final float width = mBitmap1.getWidth() / 3.0f;
-            final float height = mBitmap1.getHeight() / 3.0f;
-            canvas.drawBitmapMesh(mBitmap1, 3, 3, new float[] {
-                    0.0f, 0.0f, width, 0.0f, width * 2, 0.0f, width * 3, 0.0f,
-                    0.0f, height, width, height, width * 2, height, width * 4, height,
-                    0.0f, height * 2, width, height * 2, width * 2, height * 2, width * 3, height * 2,
-                    0.0f, height * 4, width, height * 4, width * 2, height * 4, width * 4, height * 4,
-            }, 0, null, 0, null);
+            canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, null, 0, null);
+
+            canvas.translate(400, 0);
+            canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, mColors, 0, null);
         }
     }
 }
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java
index 536a669..97e5526 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java
@@ -38,6 +38,8 @@
         private Paint mStrokePaint;
         private Paint mFillPaint;
         private RectF mRect;
+        private RectF mOval;
+        private RectF mArc;
 
         ShapesView(Context c) {
             super(c);
@@ -60,6 +62,9 @@
             mFillPaint.setAntiAlias(true);
             mFillPaint.setColor(0xff0000ff);
             mFillPaint.setStyle(Paint.Style.FILL);
+
+            mOval = new RectF(0.0f, 0.0f, 80.0f, 45.0f);
+            mArc = new RectF(0.0f, 0.0f, 100.0f, 120.0f);
         }
 
         @Override
@@ -87,6 +92,50 @@
             canvas.translate(0.0f, 110.0f);
             canvas.drawCircle(80.0f, 45.0f, 45.0f, mFillPaint);
             canvas.restore();
+
+            canvas.save();
+            canvas.translate(450.0f, 50.0f);
+            canvas.drawOval(mOval, mNormalPaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawOval(mOval, mStrokePaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawOval(mOval, mFillPaint);
+            canvas.restore();
+
+            canvas.save();
+            canvas.translate(625.0f, 50.0f);
+            canvas.drawRect(0.0f, 0.0f, 160.0f, 90.0f, mNormalPaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawRect(0.0f, 0.0f, 160.0f, 90.0f, mStrokePaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawRect(0.0f, 0.0f, 160.0f, 90.0f, mFillPaint);
+            canvas.restore();
+
+            canvas.save();
+            canvas.translate(825.0f, 50.0f);
+            canvas.drawArc(mArc, -30.0f, 70.0f, true, mNormalPaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawArc(mArc, -30.0f, 70.0f, true, mStrokePaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawArc(mArc, -30.0f, 70.0f, true, mFillPaint);
+            canvas.restore();
+            
+            canvas.save();
+            canvas.translate(950.0f, 50.0f);
+            canvas.drawArc(mArc, 30.0f, 100.0f, false, mNormalPaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawArc(mArc, 30.0f, 100.0f, false, mStrokePaint);
+
+            canvas.translate(0.0f, 110.0f);
+            canvas.drawArc(mArc, 30.0f, 100.0f, false, mFillPaint);
+            canvas.restore();
         }
     }
 }
diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
index 563f28c..5fd946e 100644
--- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
+++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
@@ -27,6 +27,8 @@
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.StatusBarManager;
+import android.content.Context;
+import android.util.AttributeSet;
 import android.os.Vibrator;
 import android.os.Bundle;
 import android.os.Handler;
@@ -36,6 +38,7 @@
 import android.widget.RemoteViews;
 import android.widget.Toast;
 import android.os.PowerManager;
+import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 
@@ -46,6 +49,13 @@
     NotificationManager mNotificationManager;
     Handler mHandler = new Handler();
 
+    View.OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener
+            = new View.OnSystemUiVisibilityChangeListener() {
+        public void onSystemUiVisibilityChange(int visibility) {
+            Log.d(TAG, "onSystemUiVisibilityChange visibility=" + visibility);
+        }
+    };
+
     @Override
     protected String tag() {
         return TAG;
@@ -60,6 +70,20 @@
     }
 
     private Test[] mTests = new Test[] {
+        new Test("STATUS_BAR_HIDDEN") {
+            public void run() {
+                View v = findViewById(android.R.id.list);
+                v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
+                v.setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener);
+            }
+        },
+        new Test("not STATUS_BAR_HIDDEN") {
+            public void run() {
+                View v = findViewById(android.R.id.list);
+                v.setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
+                v.setOnSystemUiVisibilityChangeListener(null);
+            }
+        },
         new Test("Double Remove") {
             public void run() {
                 Log.d(TAG, "set 0");
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index 196b06c..5339566 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -1322,6 +1322,22 @@
                     }
                 }
             } else if (strcmp16(block.getElementName(&len), string_array16.string()) == 0) {
+                // Check whether these strings need valid formats.
+                // (simplified form of what string16 does above)
+                size_t n = block.getAttributeCount();
+                for (size_t i = 0; i < n; i++) {
+                    size_t length;
+                    const uint16_t* attr = block.getAttributeName(i, &length);
+                    if (strcmp16(attr, translatable16.string()) == 0
+                            || strcmp16(attr, formatted16.string()) == 0) {
+                        const uint16_t* value = block.getAttributeStringValue(i, &length);
+                        if (strcmp16(value, false16.string()) == 0) {
+                            curIsFormatted = false;
+                            break;
+                        }
+                    }
+                }
+
                 curTag = &string_array16;
                 curType = array16;
                 curFormat = ResTable_map::TYPE_REFERENCE|ResTable_map::TYPE_STRING;
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
index 4a7ab58..a8da377 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
@@ -86,6 +86,10 @@
         // pass for now.
     }
 
+    public void dispatchSystemUiVisibilityChanged(int visibility) {
+        // pass for now.
+    }
+
     public IBinder asBinder() {
         // pass for now.
         return null;