Merge last green changeset of mozilla-inbound to mozilla-central
authorMatt Brubeck <mbrubeck@mozilla.com>
Sat, 24 Sep 2011 08:18:28 -0700
changeset 77501 95df67109868b0882aeb2adcaad12ca02adaa226
parent 77452 fecae145d88426c393645596c44c5306c1ddaf48 (current diff)
parent 77500 8d288ef8e9d316f4953c6f84b4c8280588c4e655 (diff)
child 77502 f08484868187ab3ec486c810b2332baf425289b9
push id3
push userfelipc@gmail.com
push dateFri, 30 Sep 2011 20:09:13 +0000
milestone9.0a1
Merge last green changeset of mozilla-inbound to mozilla-central
browser/themes/gnomestripe/browser/browser.css
browser/themes/gnomestripe/browser/reload-stop-go.png
browser/themes/pinstripe/browser/Go-arrow.png
browser/themes/pinstripe/browser/browser.css
browser/themes/pinstripe/browser/places/pageStarred.png
browser/themes/winstripe/browser/Go-arrow-aero.png
browser/themes/winstripe/browser/Go-arrow.png
browser/themes/winstripe/browser/browser.css
js/src/xpconnect/tests/TestXPC.cpp
js/src/xpconnect/tests/components/Makefile.in
js/src/xpconnect/tests/components/xpctest_array.cpp
js/src/xpconnect/tests/components/xpctest_attributes.cpp
js/src/xpconnect/tests/components/xpctest_calljs.cpp
js/src/xpconnect/tests/components/xpctest_child.cpp
js/src/xpconnect/tests/components/xpctest_const.cpp
js/src/xpconnect/tests/components/xpctest_domstring.cpp
js/src/xpconnect/tests/components/xpctest_echo.cpp
js/src/xpconnect/tests/components/xpctest_in.cpp
js/src/xpconnect/tests/components/xpctest_inout.cpp
js/src/xpconnect/tests/components/xpctest_module.cpp
js/src/xpconnect/tests/components/xpctest_multiple.cpp
js/src/xpconnect/tests/components/xpctest_noisy.cpp
js/src/xpconnect/tests/components/xpctest_out.cpp
js/src/xpconnect/tests/components/xpctest_overloaded.cpp
js/src/xpconnect/tests/components/xpctest_private.h
js/src/xpconnect/tests/components/xpctest_string.cpp
js/src/xpconnect/tests/components/xpctest_variant.cpp
mobile/themes/core/honeycomb/images/endcap-active-bg.png
mobile/themes/core/honeycomb/images/endcap-default-bg.png
mobile/themes/core/honeycomb/images/endcap-ev-active-bg.png
mobile/themes/core/honeycomb/images/endcap-ev-default-bg.png
mobile/themes/core/honeycomb/images/endcap-ssl-active-bg.png
mobile/themes/core/honeycomb/images/endcap-ssl-default-bg.png
modules/zlib/standalone/Makefile.in
--- a/browser/themes/gnomestripe/browser/browser.css
+++ b/browser/themes/gnomestripe/browser/browser.css
@@ -951,21 +951,21 @@ toolbar[iconsize="small"] #feed-button {
 
 #urlbar-container {
   -moz-box-orient: horizontal;
   -moz-box-align: stretch;
 }
 
 #urlbar-icons {
   -moz-box-align: center;
-  -moz-padding-end: 2px;
 }
 
 .urlbar-icon {
   cursor: pointer;
+  padding: 0 3px;
 }
 
 #urlbar-search-splitter {
   -moz-appearance: none;
   width: 8px;
   -moz-margin-start: -4px;
 }
 
@@ -1310,93 +1310,47 @@ richlistitem[type~="action"][actiontype=
   color: GrayText;
   font-size: smaller;
 }
 
 .autocomplete-treebody::-moz-tree-cell(suggesthint) {
   border-top: 1px solid GrayText;
 }
 
-/* Go button */
+/* Combined go/reload/stop button in location bar */
 
 #go-button {
-  padding: 3px 2px 2px 2px;
-  list-style-image: url("chrome://browser/skin/Go-arrow.png");
+  padding-top: 2px;
+  padding-bottom: 2px;
 }
 
-#go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
-  -moz-transform: scaleX(-1);
-}
-
-/* Combined go/reload/stop button in location bar */
-
 #urlbar > toolbarbutton {
   -moz-appearance: none;
-  list-style-image: url("chrome://browser/skin/reload-stop-go.png");
-  margin: -1px;
-  -moz-margin-start: 0;
-  padding: 0 3px;
-  background-origin: border-box;
+  padding: 0;
   border: none;
-  -moz-border-start: 1px solid rgba(0,0,0,.35);
-  box-shadow: 0 1px 0 rgba(0,0,0,.1) inset,
-              -1px -1px 1px rgba(255,255,255,.2) inset;
-}
-
-#urlbar:-moz-locale-dir(ltr) > toolbarbutton {
-  border-top-right-radius: 2px;
-  border-bottom-right-radius: 2px;
+  cursor: pointer;
+  width: 22px;
 }
 
-#urlbar:-moz-locale-dir(rtl) > toolbarbutton {
-  border-top-left-radius: 2px;
-  border-bottom-left-radius: 2px;
+#go-button,
+#urlbar-go-button {
+  list-style-image: url("chrome://browser/skin/Go-arrow.png");
 }
 
-#urlbar > toolbarbutton:not([disabled]):active:hover,
-#urlbar-reload-button:not(:hover) {
-  -moz-border-start-style: none;
-  -moz-padding-start: 4px;
-  box-shadow: none;
-}
-
-#urlbar > toolbarbutton:not([disabled]):active:hover {
-  box-shadow: 0 0 6.5px rgba(0,0,0,.4) inset,
-              0 0 2px rgba(0,0,0,.4) inset;
-}
-
-#urlbar-go-button {
-  -moz-image-region: rect(0px, 56px, 14px, 42px);
-  background-image: -moz-linear-gradient(rgb(143,219,69), rgb(115,177,57));
-}
-
+#go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon,
 #urlbar-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
   -moz-transform: scaleX(-1);
 }
 
-#urlbar-go-button:hover {
-  background-image: -moz-linear-gradient(rgb(163,232,92), rgb(137,196,81));
-}
-
 #urlbar-reload-button {
-  -moz-image-region: rect(0px, 14px, 14px, 0px);
-}
-
-#urlbar-reload-button:not([disabled]):hover {
-  -moz-image-region: rect(0px, 28px, 14px, 14px);
-  background-image: -moz-linear-gradient(rgb(137,183,233), rgb(79,130,195));
+  list-style-image: url("moz-icon://stock/gtk-refresh?size=menu");
 }
 
 #urlbar-stop-button {
-  -moz-image-region: rect(0px, 42px, 14px, 28px);
-  background-image: -moz-linear-gradient(rgb(226,99,99), rgb(199,68,68));
-}
-
-#urlbar-stop-button:hover {
-  background-image: -moz-linear-gradient(rgb(237,120,120), rgb(216,92,92));
+  list-style-image: url("moz-icon://stock/gtk-stop?size=menu");
 }
 
 /* Popup blocker button */
 #page-report-button {
   list-style-image: url("chrome://browser/skin/Info.png");
 }
 
 /* Star button */
--- a/browser/themes/gnomestripe/browser/jar.mn
+++ b/browser/themes/gnomestripe/browser/jar.mn
@@ -22,17 +22,16 @@ browser.jar:
   skin/classic/browser/KUI-close.png
   skin/classic/browser/monitor.png
   skin/classic/browser/monitor_16-10.png
 * skin/classic/browser/pageInfo.css
   skin/classic/browser/pageInfo.png
   skin/classic/browser/page-livemarks.png
   skin/classic/browser/Privacy-16.png
   skin/classic/browser/Privacy-48.png
-  skin/classic/browser/reload-stop-go.png
   skin/classic/browser/searchbar.css                  (searchbar.css)
   skin/classic/browser/section_collapsed.png
   skin/classic/browser/section_collapsed-rtl.png
   skin/classic/browser/section_expanded.png
   skin/classic/browser/Secure.png
   skin/classic/browser/Security-broken.png
   skin/classic/browser/setDesktopBackground.css
   skin/classic/browser/Toolbar.png
deleted file mode 100644
index 922a4c4c62e8ecd1bd380a62673dbc0b429b1756..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 9fc4e1b26fd0bef86053ba1f060f75cb425fb328..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/themes/pinstripe/browser/browser.css
+++ b/browser/themes/pinstripe/browser/browser.css
@@ -831,23 +831,20 @@ toolbar[mode="icons"] #zoom-in-button {
 
 #urlbar[focused="true"],
 .searchbar-textbox[focused="true"] {
   border-color: -moz-mac-focusring;
   box-shadow: @focusRingShadow@;
 }
 
 #urlbar {
+  -moz-padding-end: 4px;
   border-radius: @toolbarbuttonCornerRadius@;
 }
 
-#urlbar-container:not([combined]) > #urlbar {
-  -moz-padding-end: 3px;
-}
-
 #identity-box {
   background-image: -moz-linear-gradient(hsl(0,0%,98%), hsl(0,0%,92%));
   box-shadow: 0 1px 0 hsla(0,0%,0%,.05) inset;
   -moz-border-end: 1px solid hsla(0,0%,0%,.1);
   -moz-margin-end: 3px;
   padding: 1px 4px;
 }
 
@@ -905,20 +902,41 @@ toolbar[mode="icons"] #zoom-in-button {
   -moz-margin-start: 6px;
 }
 
 .urlbar-input-box {
   -moz-margin-start: 0;
   padding: 3px 0 2px;
 }
 
+.urlbar-history-dropmarker {
+  padding: 0 3px;
+  list-style-image: url("chrome://browser/skin/urlbar-history-dropmarker.png");
+  -moz-image-region: rect(0px, 11px, 14px, 0px);
+}
+
+.urlbar-history-dropmarker[open="true"],
+.urlbar-history-dropmarker:hover:active {
+  -moz-image-region: rect(0px, 22px, 14px, 11px);
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(205,100%,70%,.3), hsla(205,100%,70%,0));
+}
+
 #urlbar-icons {
   -moz-box-align: center;
 }
 
+.urlbar-icon {
+  padding: 2px 3px;
+}
+
+.urlbar-icon[open="true"],
+.urlbar-icon:hover:active {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(205,100%,70%,.3), hsla(205,100%,70%,0));
+}
+
 #urlbar-search-splitter {
   min-width: 8px;
   width: 8px;
   background-image: none;
   margin: 0 -4px;
   position: relative;
   height: 22px;
 }
@@ -970,33 +988,32 @@ toolbar[mode="icons"] #zoom-in-button {
 /* ----- AUTOCOMPLETE ----- */
 
 #treecolAutoCompleteImage {
   max-width: 36px;
 }
 
 .ac-result-type-bookmark,
 .autocomplete-treebody::-moz-tree-image(bookmark, treecolAutoCompleteImage) {
-  list-style-image: url("chrome://browser/skin/places/pageStarred.png");
-  width: 16px;
-  height: 16px;
+  list-style-image: url("chrome://browser/skin/places/star-icons.png");
+  -moz-image-region: rect(0, 32px, 16px, 16px);
 }
 
 .ac-result-type-keyword,
 .autocomplete-treebody::-moz-tree-image(keyword, treecolAutoCompleteImage) {
   list-style-image: url(chrome://global/skin/icons/search-textbox.png);
   margin: 2px;
   width: 12px;
   height: 12px;
 }
 
 richlistitem[selected="true"][current="true"] > hbox > .ac-result-type-bookmark,
 .autocomplete-treebody::-moz-tree-image(selected, current, bookmark, treecolAutoCompleteImage) {
   list-style-image: url("chrome://browser/skin/places/star-icons.png");
-  -moz-image-region: rect(32px, 16px, 48px, 0px);
+  -moz-image-region: rect(0, 64px, 16px, 48px);
 }
 
 .ac-result-type-tag,
 .autocomplete-treebody::-moz-tree-image(tag, treecolAutoCompleteImage) {
   list-style-image: url("chrome://browser/skin/places/tag.png");
   width: 16px;
   height: 16px;
 }
@@ -1031,134 +1048,95 @@ richlistitem[type~="action"][actiontype=
   color: GrayText;
   font-size: smaller;
 }
 
 .autocomplete-treebody::-moz-tree-cell(suggesthint) {
   border-top: 1px solid GrayText;
 }
 
-/* ----- GO BUTTON ----- */
-
-#go-button {
-  list-style-image: url("chrome://browser/skin/Go-arrow.png");
-  -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
-  -moz-transform: scaleX(-1);
-}
-
-#go-button:hover {
-  -moz-image-region: rect(0px, 32px, 16px, 16px);
-}
-
-#go-button:hover:active {
-  -moz-image-region: rect(0px, 48px, 16px, 32px);
-}
 
 /* ----- COMBINED GO/RELOAD/STOP BUTTON IN LOCATION BAR ----- */
 
+#go-button,
 #urlbar > toolbarbutton {
-  list-style-image: url("chrome://browser/skin/reload-stop-go.png");
   margin: 0;
-  -moz-margin-start: 2px;
-  padding: 0 3px;
+  -moz-padding-start: 2px; 
+  -moz-padding-end: 1px; 
   background-origin: border-box;
-  border: none;
-  -moz-border-start: 1px solid rgba(0,0,0,.25);
-  box-shadow: 0 1px 0 rgba(0,0,0,.1) inset,
-              -1px -1px 1px rgba(255,255,255,.15) inset;
-}
-
-#urlbar:-moz-locale-dir(ltr) > toolbarbutton {
-  border-top-right-radius: 2px;
-  border-bottom-right-radius: 2px;
-}
-
-#urlbar:-moz-locale-dir(rtl) > toolbarbutton {
-  border-top-left-radius: 2px;
-  border-bottom-left-radius: 2px;
-}
-
-#urlbar > toolbarbutton:not([disabled]):active:hover,
-#urlbar-reload-button:not(:hover) {
-  -moz-border-start-style: none;
-  -moz-padding-start: 4px;
-  box-shadow: none;
-}
-
-#urlbar > toolbarbutton:not([disabled]):active:hover {
-  box-shadow: @toolbarbuttonPressedInnerShadow@;
-}
-
+  list-style-image: url("chrome://browser/skin/reload-stop-go.png");
+}
+
+#urlbar > toolbarbutton:not([disabled]):hover:active {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(205,100%,70%,.3), hsla(205,100%,70%,0));
+}
+
+#go-button {
+  padding: 0 3px;
+}
+
+#go-button,
 #urlbar-go-button {
-  -moz-image-region: rect(0px, 56px, 14px, 42px);
-  background-image: -moz-linear-gradient(rgb(184,221,142), rgb(154,201,111) 49%, rgb(130,187,92) 51%, rgb(114,171,79));
-}
-
+  -moz-image-region: rect(0, 42px, 14px, 28px);
+}
+
+#go-button:hover:active,
+#urlbar-go-button:hover:active {
+  -moz-image-region: rect(14px, 42px, 28px, 28px);
+}
+
+#go-button:-moz-locale-dir(rtl),
 #urlbar-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
   -moz-transform: scaleX(-1);
 }
 
 #urlbar-reload-button {
-  -moz-image-region: rect(0px, 14px, 14px, 0px);
-}
-
-#urlbar-reload-button:not([disabled]):hover {
-  -moz-image-region: rect(0px, 28px, 14px, 14px);
-  background-image: -moz-linear-gradient(rgb(162,207,241), rgb(111,178,225) 49%, rgb(91,159,217) 51%, rgb(62,138,200));
+  -moz-image-region: rect(0, 14px, 14px, 0);
+}
+
+#urlbar-reload-button:not([disabled]):hover:active {
+  -moz-image-region: rect(14px, 14px, 28px, 0);
+}
+
+#urlbar-reload-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
 }
 
 #urlbar-stop-button {
-  -moz-image-region: rect(0px, 42px, 14px, 28px);
-  background-image: -moz-linear-gradient(rgb(231,162,140), rgb(209,119,100) 49%, rgb(193,92,78) 51%, rgb(173,72,58));
+  -moz-image-region: rect(0, 28px, 14px, 14px);
+}
+
+#urlbar-stop-button:hover:active {
+  -moz-image-region: rect(14px, 28px, 28px, 14px);
 }
 
 /* POPUP BLOCKER BUTTON */
 #page-report-button {
   list-style-image: url("chrome://browser/skin/urlbar-popup-blocked.png");
   -moz-image-region: rect(0, 16px, 16px, 0);
 }
 
-#page-report-button:hover {
-  -moz-image-region: rect(0, 32px, 16px, 16px);
-}
-
 #page-report-button:hover:active,
 #page-report-button[open="true"] {
-  -moz-image-region: rect(0, 48px, 16px, 32px);
+  -moz-image-region: rect(0, 32px, 16px, 16px);
 }
 
 /* STAR BUTTON */
 #star-button {
-  padding: 1px;
-  -moz-padding-start: 4px;
   list-style-image: url("chrome://browser/skin/places/star-icons.png");
   -moz-image-region: rect(0, 16px, 16px, 0);
 }
 
-#star-button:hover {
+#star-button:hover:active,
+#star-button[starred="true"] {
   -moz-image-region: rect(0, 32px, 16px, 16px);
 }
 
-#star-button:hover:active {
-  -moz-image-region: rect(0, 48px, 16px, 32px);
-}
-
-#star-button[starred="true"] {
-  -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#star-button:hover[starred="true"] {
-  -moz-image-region: rect(16px, 32px, 32px, 16px);
-}
-
 #star-button:hover:active[starred="true"] {
-  -moz-image-region: rect(16px, 48px, 32px, 32px);
+  -moz-image-region: rect(0, 48px, 16px, 32px);
 }
 
 /* BOOKMARKING PANEL */
 #editBookmarkPanelStarIcon {
   list-style-image: url("chrome://browser/skin/places/starred48.png");
   width: 48px;
   height: 48px;
 }
--- a/browser/themes/pinstripe/browser/jar.mn
+++ b/browser/themes/pinstripe/browser/jar.mn
@@ -9,17 +9,16 @@ browser.jar:
   skin/classic/browser/aboutSyncTabs.css
 #endif
   skin/classic/browser/actionicon-tab.png
 * skin/classic/browser/browser.css                          (browser.css)
 * skin/classic/browser/engineManager.css                    (engineManager.css)
   skin/classic/browser/fullscreen-video.css
   skin/classic/browser/Geolocation-16.png
   skin/classic/browser/Geolocation-64.png
-  skin/classic/browser/Go-arrow.png
   skin/classic/browser/home.png
   skin/classic/browser/hud-style-check-box-checked.png
   skin/classic/browser/hud-style-check-box-empty.png
   skin/classic/browser/hud-style-dropmarker-double-arrows.png
   skin/classic/browser/hud-style-expander-closed.png
   skin/classic/browser/hud-style-expander-open.png
   skin/classic/browser/hud-style-new-folder-plus-sign.png
   skin/classic/browser/hud-style-twisties.png
@@ -40,16 +39,17 @@ browser.jar:
   skin/classic/browser/Search.png
   skin/classic/browser/section_collapsed.png
   skin/classic/browser/section_collapsed-rtl.png
   skin/classic/browser/section_expanded.png
   skin/classic/browser/Secure-Glyph-White.png
   skin/classic/browser/keyhole-circle.png
   skin/classic/browser/Toolbar.png
   skin/classic/browser/toolbarbutton-dropmarker.png
+  skin/classic/browser/urlbar-history-dropmarker.png
   skin/classic/browser/urlbar-arrow.png
   skin/classic/browser/urlbar-popup-blocked.png
   skin/classic/browser/feeds/subscribe.css                  (feeds/subscribe.css)
   skin/classic/browser/feeds/subscribe-ui.css               (feeds/subscribe-ui.css)
   skin/classic/browser/feeds/feedIcon.png                   (feeds/feedIcon.png)
   skin/classic/browser/feeds/feedIcon16.png                 (feeds/feedIcon16.png)
   skin/classic/browser/feeds/videoFeedIcon.png              (feeds/videoFeedIcon.png)
   skin/classic/browser/feeds/videoFeedIcon16.png            (feeds/videoFeedIcon16.png)
@@ -71,17 +71,16 @@ browser.jar:
   skin/classic/browser/places/toolbarDropMarker.png         (places/toolbarDropMarker.png)
   skin/classic/browser/places/folderDropArrow.png           (places/folderDropArrow.png)
   skin/classic/browser/places/editBookmarkOverlay.css       (places/editBookmarkOverlay.css)
   skin/classic/browser/places/minus.png                     (places/minus.png)
   skin/classic/browser/places/minus-active.png              (places/minus-active.png)
   skin/classic/browser/places/plus.png                      (places/plus.png)
   skin/classic/browser/places/plus-active.png               (places/plus-active.png)
   skin/classic/browser/places/starPage.png                  (places/starPage.png)
-  skin/classic/browser/places/pageStarred.png               (places/pageStarred.png)
   skin/classic/browser/places/searching_16.png              (places/searching_16.png)
   skin/classic/browser/places/starred48.png                 (places/starred48.png)
   skin/classic/browser/places/unstarred48.png               (places/unstarred48.png)
   skin/classic/browser/places/unfiledBookmarks.png          (places/unfiledBookmarks.png)
   skin/classic/browser/places/twisty-open.gif               (places/twisty-open.gif)
   skin/classic/browser/places/twisty-closed.gif             (places/twisty-closed.gif)
   skin/classic/browser/places/tag.png                       (places/tag.png)
   skin/classic/browser/places/downloads.png                 (places/downloads.png)
deleted file mode 100644
index 9f025f744eff57c84c1fc948670962941cec09f8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
index 30d73dd79991103380627a80e3557b8bf56dc7f0..e5610bace4e1ce8b011df55b348bea29a4ecf61f
GIT binary patch
literal 1906
zc$@)p2aWiNP)<h;3K|Lk000e1NJLTq002M$000mO1^@s6rssJn000L$Nkl<Zc-ozp
zeNdFw6~?z?AiA&!h>%@HVj3+mp`gT7Obrp@+C<c3hN`2f8o#ojNoZt}n&Oy5{3swq
zKxJ7lM1g?CAOwsERzwl35f%Zvl;uOj;sVaX3Q_py>ACORrAzwmHj$a%aORxn4D+1(
z@m?hH@$sS@K73e`l$4Z5WKe8V=eDuL9(hEDJq-YxJf&3U5g9CgLUM_8dm2$w2?+_3
zBS(%XFJ8Qe^73*}96&ko0c<F;h4T66%Xscjmq2lVEgb++9F&ntr<KWYTJa?ulo0_>
zV17RFBgg+24InWwQIeaRTi)5(iH?pA<mBWO+u8-L?|duH`hv0$Z9A4|450X|4V_H`
z(vX-kw`~{TwzUk>C7+&sf&mm0CeCSFI?>fnPEJ<V)YQOiHe+yb5ZA6<v$+dg*PRwa
z`Rk~1tSTSDTg1!{%0RgQ5uNzzFNjpiR-b@JbOStg=^*<<CMXy13s--D=;fGg?Sh}0
zpFn3mu(-JR?_FJ8c>MUW0E-I?3oo!5(~KLy+FWZU5P`01vMWN;{)OO@VSy#b^l)99
zbDq_>#-bm8=I3vpKxaPC`OO0rQ+8Z}*I!x$+#@eS`bO+|R%04F##wD1@f~3#dKf$|
z;<a)8?4pa%YPCiA`T4CSB_*h?u7<&25LSO=WQ4(DmJ@1BLt1@$dU_G{ZkfFLWCT$}
zw7RZ2g_%1_u=KbdtIj{dto%XDCf=f$azc%1NUP^PTb^2=j&NN3QPCvTXRXq(c*s_3
z;jTUp&)rRUW^Wrqh~3oR3pMHTI80pnnV$7f?-l^tiN6tz#1Jva4R;fFIo&)r$Td3N
zvq_Sfnb}icUyttYZuIr_VPIeY!^6YE%JTuRnB|08Z*Q-#BkJnvK!fX;9G-FS^`lK#
zU(^qE<p?%aJjSYX!+1W&gy*saFpFZ!v6`S+SJ;Qp)J9ORVd87i_gpvS!6T{?o*!SQ
z6>lKZddR<MgM42*gJJ{Au^Q8m_7Yq-=HlsBKQaJlA?_1hM90shi}&1;kdY0wwYBC4
z4<1-d+l6WR`};w6go%3BIlb~h=;XK4O#bmYEG{r(X4V6{FpYm)J*cPO>6Q0`SA47u
zb=z>t<h4f!#ld!>(>|o}iqXOCk6HaIKhXvQ@FSXuHlp=s($06x90>qtolduz%nZ>A
z|6lValL<F&+%PvZG;9LkB#}rQq>FZ{Tvn!-Up!QY-{lYB*^E9>SZ&UMA3$1@G$=BZ
z^#X8M{z<0FecNfXd|xxB#or;iY;cEmLlfM$=9yOR{wkF9^0VyEhtNXYwg=bTB3`oG
z0TKYRn>TN&o12?|92y$3IRI8`Y-}8217m|@y)G-hl<*;hxvWSU3Od;b-^@PDNHdOO
z&WS!O{MrbYuq3l|VT6kHuwHJ!VOexWn8$~uL(}5hF+J&?DAVHF;IZ>NbJ(9xs4V8K
zc$ph(<iEveB6QYY1a|XVhTwAf^5sI>-Zlro?ug3D$~-nO>JfTfmd6XwkE2ZWMb@0X
z)tLWPKfF_V#<Ae*e)z^zL8kgVjhW|t)&?A>Z`Ncf4*rwrMUfw9g7>?}(=6si*w2mD
ziNR}otb44#{gTqs(ki;-Y!1L^G=e^n6-;Y+6Ug2;_+Ne>TfQjq7W~qT!ixRoXb)zm
z_6YHBHAVy_=pb7bTWZxa&VbvR#BxR4ZMI`XQT&y@2CEZFxn7KHZuB2w@LHDWJAfWK
zl8TCof78Q9F#G7yBevxkEM__3{FjxL8Av<UCtJ2}4B7#AgEgIaIsHC@GK`p;a2xXy
z^+Ft|xsSz14QvPKt$M}}U}O5-87ZB@ec_XCgwOGA;vSyW8iky9vH|WJkL&FW;3{#Q
zs3B@u%;0eik1vQ0ASETmnQnH$FuM%f+uK3+LMvU4o%9?Qat|Lq#MP@;M@j2AHh`sj
zEjYWqxgW1)_QEf=4%0WEf-E$qN%s1l7VmA}!2jSa1ZVVsbfbi$r4N9>)31H#JY{D-
ze6&57ajcU*e>G6-I@_d(E^1N4)(SZvO*f`Q=8TfoQN+9xzvQa9;d<g*qL{CI4X-s4
zj{kE6G#bskD_5?dt*wnccsj}G=lo)sUsY9gh=$X}hC=rQNc)222snqv5JbqQbEmIO
zCga(lxJ9~9t){a+mGG1<ij1P1!Fy{C<l%{MUb5Sl_l+5lsiNn)M`lB@zZPCQvs(gp
z98&|BN_hIcmlEamey%}r;5yvZC*h)s_7xd`A2;^{Q9^`S)xwEVUTY?1S!!ed`qB$;
z_L(zhs+d{+miA0dO_eYJJTp2vx{%Dr6%-Uy(OofPYycs<1*Aa{K2E{W=cGaEC}x_N
zWU0}Q^j8xn%c-_Y&@9+4=e02dzUyOsriRC!^HZlpvA<1BvN9mOV>HQMdM|m`)bM@h
s0^U6&7a0J{r7^R1p2=&t#>0~T56HDsY7y&<qW}N^07*qoM6N<$g4uqwqW}N^
index 0406477f52e20d343d5d7903aee28d6d05bcbc63..699ef2326e0561a10742dff28711cfc4c77edd56
GIT binary patch
literal 912
zc$@){18@9^P)<h;3K|Lk000e1NJLTq001fg000~a1^@s67vL@H000A5Nkl<Zc-rOG
z&x;dh9LMoqdmV`TXl&|eN<k0=uRRHS68awqLQkFwUMdQ9!|pQ6?y^6~{t8%nXjd$@
z7O(yda}pkS>a>=pq_j<I8wnKxg-_pyQIpLxlUZb;(!=YJZ=U&nznNubKW|BTBOL1R
z-rinvREu;vo%49V(xN*%J2l+KQwR<n7$i`^kjpTEdW4TE+<>#_p^Lb5(XFkmS@fWQ
zA%uxVcXxNMK(H_)^$011kINR#Z-j&3Q4cP<xw%<G55hj0dA)%Q%1tb~y}fPVAXpeg
zNFjK{)9z}!-8QfgGSnv)U0+}CK-eGslFtb=Dl~*2VBjEFq!2uUOP2JpBYn)+qN}T`
zT?h?HFKP*NP|=XJwKW3=<vik&^Qyq2_HxnX<>ev%d7Y=0>m#I4&cYO(Us+jE1sUou
z7fq7HLuej)NpM|+6oQ9?U}38ESz21E;Sq!k^|3$w;^JZ(!o5%f>Tee{Usza(kV5c?
zVc;NGOkI{41{Q+D<ij*SKVL^5!hM{}>lg3<9v_AVv|6pJ5Io|Mx`Bgmy=+N(8(0Vq
z;n!2%_#y^SKp!6z4Vs&qyM{PWHz-{)pFN8q9O|Jn2OBrA0f*;!h!*mTj}9{~!Ib?A
z{ZILSE!zBMaAfJ}y>I_Mk80`Z%vaB9xQ(X}96B&apn@TnVFL9CQ`1xP>%m#{&_#KA
zI{oEev*<wqLkOA}a&K@2f`u8WM@S)*rl&J^pBXp^9^u#1sn7qYp$B0f&Ai?~2IVFe
zJ$<Kd;2>BSL`WfcObsUS7k?U92pJ|{`0sXl9SCFTiO&f%Dl~*2VBjEFq!2tRr>9e&
z{cd0(Sd6EqciO*nAv7ets3p)rMME09zZp0v=Mfj5|5X)Oyh=|e*SbTzR(d+Q{&R#B
z%2}Ag^BbI*F2k$zbYjVS2!~Hk;JOGY1P=$nqH=nwFaK1-BM2GB)6?<!Cv6D9^hCWd
zJ(<>%2q^@Q7zPf4#nfewFZ^g=AvjDvOf$E>ucHs)KF;O!3wQvJV0xOlnO%k85s%aj
z9E8$fVm|%Bz(Q~+PEW^fJidql6wpUudOG&Wch?XH>IPHO)69*>vlzl*dU~R10~>I7
mj)!RB$kP)uF5%5jPyYfEhJw@=xn~am0000<MNUMnLSTZ9DVa|I
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..53bd1cb0ca3a69eb5846f44d5ab2c7bacdc70e62
GIT binary patch
literal 389
zc$@)+0eb$4P)<h;3K|Lk000e1NJLTq000&M000gM1^@s6D>3ZN0003@Nkl<Zc-rmL
zy-LGS7zW_hic$)?skEpF1*cv>cb%QR1h2q?gOfOjgNx7$@B%Cv!Of<mttPFMBS~Xg
zn$(2oV!<i|3$I@a(SYfXgW%xsa5!*y;rlru0Keit_$&A{mrHZpMUO8OAPB{8@;r~T
zbIzf6spafbn)C>Ua7fBcpDC8gCyJs#*L4_%;pyLHSw^XRodpmhp`~McpJ0g0XDhnh
z*Hx)fZ5T!ywrzX*;gVEgj^nI&B`zLWQ=~=^Kp+u+k0%<<<|boz@1|+?L*0`x_SVw%
z4FF+({}Ko76mbZAUPv-%crj6`WHn8LWm!<wdsM5phXA5M!-?;;G6X(b1GmC0nZj9J
zRUwMf4S@KdsW0p{B19k{m!sA#?3R9&=N}(TbA8lG&F`p5qLaipdmMf4bk+b&kF&3H
j+x6L>e2~dM`|~~kic*Ihb0ca%00000NkvXXu0mjf+@!4A
index 0bbc27e2294d83c7fce14973966bd4817074e46a..8c4f4d96f06ed2067f62d012d1f91ab1b98503f8
GIT binary patch
literal 758
zc$@+D0tx+zP)<h;3K|Lk000e1NJLTq001BW000mO1^@s6cL04^0008LNkl<Zc-p1a
z-%C?r7zgm?Hh&b+mA_JFOKnk67u`i5NP-~<g8xAfT?lm}X%V_H*IL?ILt8-@k`Y4P
zMi=2lbZ1>Ch4aT0J4aJHy3(6nJ$;|?yz6xgZFTYCeV_L{XYcnM&dxbNME~UKM4Al>
zzzz;@Lg5~q(r1_RZ0R41#bWJX0qsZn+Oz=n6K{4p>R<0zK!3qPe><O-2{1f7YyjoK
z(5~K5H~z~6%7ZC)q97e$XlRJ?rLG>F$6qEXUwmFBKr|X9(a3c!($}PV^#JbCO=6z0
zt!C84P^2kVJTJCdq<43KNF+jx=len56<F5;9DDYIm~1Eyo5%`LH)35w@5ZhG;c%Eh
z51`fy!3$r2c$B(I4^SIhBPN@xr`*vvzJ193WZjQrUx9c;-G64pa!UYvdZU4X0b=^*
zs7qiHD2K^lBz8~*sEMu;Q-3pd{`ux%tbGE?=8CR<zA*OlNG3oi6e6YvK<$_HIk*U=
zV8|NW_p1Qa4-8`Z?RSOEyRtrC_h_Z*+|!L}%uUtH$2n+vvtTetOb>uMA?r<03R6-W
zGA2}js(Z`Cv<I&c^&*ga&}cdPc&!@qY3Va%T+9Rr1Og;lP^-0+thr%I<}=`uc}fMS
z>|Y{Q8(MBt4;$(fkSA=O#5gTIanHk*2AQY$-1KICzkd}-<AMZ`c5DVJpjqmKdJ$E4
z7rp~2p22So7#D%GWARgAv(^<@YL)uW9q{>l%`gWfI-yIelTZ(BV8~jR`X^L*6PL^H
z%+CX{qrD3^Dti}tq-M$b;PUAjU!ntZ69~t<)kBz**Xy;zd!QWNf<60VB%G}E)pkkw
z?b(U4TeFl6>+dd&ZWXEbz@Ga0`a0nQSTc6X*HE#E0!9BiR`kqXFYk_jEV~)Ec;s4p
oSJ?jdbF8!JR1o1%^iMJS4R$)?zL<C|I{*Lx07*qoM6N<$f*~7VO8@`>
deleted file mode 100644
index 1f76506488a6613146fc335961b739efc66eca10..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 851ae1615dd175ade57fd2b2ac0caa9b7c4b5b17..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/themes/winstripe/browser/browser.css
+++ b/browser/themes/winstripe/browser/browser.css
@@ -1178,31 +1178,32 @@ toolbar[mode="full"] .toolbarbutton-1 > 
   -moz-image-region: rect(16px, 48px, 32px, 32px);
 }
 #close-button:hover:active {
   -moz-image-region: rect(32px, 48px, 48px, 32px);
 }
 
 /* ::::: Location Bar ::::: */
 
-#urlbar {
-  width: 7em;
-  min-width: 7em;
-}
-
 #urlbar,
 .searchbar-textbox {
   -moz-appearance: none;
   margin: 1px 3px;
-  padding: 2px;
+  padding: 0;
   background-clip: padding-box;
   border: 1px solid ThreeDShadow;
   border-radius: 2.5px;
 }
 
+#urlbar {
+  width: 7em;
+  min-width: 7em;
+  -moz-padding-end: 2px;
+}
+
 @media all and (-moz-windows-default-theme) {
   #urlbar,
   .searchbar-textbox {
     @navbarTextboxCustomBorder@
   }
 }
 
 #urlbar:-moz-lwtheme,
@@ -1227,44 +1228,55 @@ html|*.urlbar-input:-moz-lwtheme:-moz-pl
   -moz-box-align: stretch;
 }
 
 .urlbar-textbox-container {
   -moz-box-align: stretch;
 }
 
 #urlbar-icons {
-  height: 18px;
   -moz-box-align: center;
 }
 
 .urlbar-icon {
-  padding: 0 2px !important;
+  padding: 3px 3px;
+}
+
+.searchbar-engine-button,
+.search-go-container {
+  padding: 2px 2px;
 }
 
 .urlbar-icon:-moz-system-metric(touch-enabled) {
   -moz-margin-end: 1px !important;
   padding: 0 3px !important;
 }
 
+.urlbar-icon:hover {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(200,100%,70%,.3), hsla(200,100%,70%,0));
+}
+
+.urlbar-icon[open="true"],
+.urlbar-icon:hover:active {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(200,100%,70%,.1), hsla(200,100%,70%,0));
+}
+
 #urlbar-search-splitter {
   min-width: 6px;
   -moz-margin-start: -3px;
   border: none;
   background: transparent;
 }
 
 #urlbar-search-splitter + #urlbar-container > #urlbar ,
 #urlbar-search-splitter + #search-container > #searchbar > .searchbar-textbox {
   -moz-margin-start: 0;
 }
 
 #urlbar-display-box {
-  margin-top: -2px;
-  margin-bottom: -2px;
   -moz-border-end: 1px solid #AAA;
   -moz-margin-end: 3px;
 }
 
 #urlbar-display {
   margin-top: 0;
   margin-bottom: 0;
   color: GrayText;
@@ -1272,18 +1284,16 @@ html|*.urlbar-input:-moz-lwtheme:-moz-pl
 
 /* identity box */
 
 #identity-box {
   background-image: -moz-linear-gradient(hsl(0,0%,98%), hsl(0,0%,92%));
   box-shadow: 0 1px 0 hsla(0,0%,0%,.05) inset;
   -moz-border-end: 1px solid hsla(0,0%,0%,.1);
   padding: 2px;
-  margin: -2px;
-  -moz-margin-end: 0;
 }
 
 #identity-box:-moz-locale-dir(ltr) {
   border-top-left-radius: 1.5px;
   border-bottom-left-radius: 1.5px;
 }
 
 #identity-box:-moz-locale-dir(rtl) {
@@ -1347,31 +1357,37 @@ html|*.urlbar-input:-moz-lwtheme:-moz-pl
   -moz-margin-start: 1px;
   -moz-margin-end: 3px;
 }
 
 /* Location bar dropmarker */
 
 .urlbar-history-dropmarker {
   -moz-appearance: none;
-  padding: 0 1px;
+  padding: 0 3px;
   background-color: transparent;
   border: none;
   width: auto;
-  list-style-image: url(mainwindow-dropdown-arrow.png);
-  -moz-image-region: rect(0, 13px, 11px, 0);
+  list-style-image: url("chrome://browser/skin/urlbar-history-dropmarker.png");
+  -moz-image-region: rect(0px, 11px, 14px, 0px);
 }
 
 .urlbar-history-dropmarker:-moz-system-metric(touch-enabled) {
   min-width: 6.4mozmm;
 }
 
+.urlbar-history-dropmarker:hover {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(205,100%,70%,.3), hsla(205,100%,70%,0));
+  -moz-image-region: rect(0px, 22px, 14px, 11px);
+}
+
 .urlbar-history-dropmarker:hover:active,
 .urlbar-history-dropmarker[open="true"] {
-  -moz-image-region: rect(0, 26px, 11px, 13px);
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(205,100%,70%,.1), hsla(205,100%,70%,0));
+  -moz-image-region: rect(0px, 33px, 14px, 22px);
 }
 
 /* page proxy icon */
 
 #page-proxy-favicon,
 #urlbar-throbber {
   width: 16px;
   height: 16px;
@@ -1464,97 +1480,83 @@ richlistitem[type~="action"][actiontype=
   color: GrayText;
   font-size: smaller;
 }
 
 .autocomplete-treebody::-moz-tree-cell(suggesthint) {
   border-top: 1px solid GrayText;
 }
 
-/* go button */
-
-#go-button {
-  list-style-image: url("chrome://browser/skin/Go-arrow.png");
-  -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
-  -moz-transform: scaleX(-1);
-}
-
-#go-button:hover {
-  -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
 /* combined go/reload/stop button in location bar */
 
+#go-button,
 #urlbar > toolbarbutton {
   -moz-appearance: none;
-  list-style-image: url("chrome://browser/skin/reload-stop-go.png");
-  margin: -2px;
-  -moz-margin-start: 0;
-  padding: 0 3px;
+  padding: 0 2px;
   background-origin: border-box;
   border: none;
-  -moz-border-start: 1px solid rgba(0,0,0,.25);
-  box-shadow: 0 1px 0 rgba(0,0,0,.1) inset,
-              -1px -1px 1px rgba(255,255,255,.25) inset;
-}
-
-#urlbar:-moz-locale-dir(ltr) > toolbarbutton {
-  border-top-right-radius: 1.5px;
-  border-bottom-right-radius: 1.5px;
-}
-
-#urlbar:-moz-locale-dir(rtl) > toolbarbutton {
-  border-top-left-radius: 1.5px;
-  border-bottom-left-radius: 1.5px;
-}
-
-#urlbar > toolbarbutton:not([disabled]):active:hover,
-#urlbar-reload-button:not(:hover) {
-  -moz-border-start-style: none;
-  -moz-padding-start: 4px;
-  box-shadow: none;
-}
-
-#urlbar > toolbarbutton:not([disabled]):active:hover {
-  box-shadow: 0 0 6.5px rgba(0,0,0,.4) inset,
-              0 0 2px rgba(0,0,0,.4) inset;
-}
-
-#urlbar-go-button {
-  -moz-image-region: rect(0px, 56px, 14px, 42px);
-  background-image: -moz-linear-gradient(rgb(115,213,115), rgb(96,190,96) 49%, rgb(82,174,82) 51%, rgb(79,155,79));
-}
-
-#urlbar-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
-  -moz-transform: scaleX(-1);
-}
-
-#urlbar-go-button:hover {
-  background-image: -moz-linear-gradient(rgb(96,221,96), rgb(71,191,71) 49%, rgb(54,171,54) 51%, rgb(50,147,50));
+  list-style-image: url("chrome://browser/skin/reload-stop-go.png");
+}
+
+#go-button {
+  padding: 0 3px;
 }
 
 #urlbar-reload-button {
-  -moz-image-region: rect(0px, 14px, 14px, 0px);
+  -moz-image-region: rect(0, 14px, 14px, 0);
 }
 
 #urlbar-reload-button:not([disabled]):hover {
-  -moz-image-region: rect(0px, 28px, 14px, 14px);
-  background-image: -moz-linear-gradient(rgb(162,207,241), rgb(111,178,225) 49%, rgb(91,159,217) 51%, rgb(62,138,200));
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(200,100%,70%,.2), hsla(200,100%,70%,0));
+  -moz-image-region: rect(14px, 14px, 28px, 0);
+}
+
+#urlbar-reload-button:not([disabled]):hover:active {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(200,100%,60%,.1), hsla(200,100%,60%,0));
+  -moz-image-region: rect(28px, 14px, 42px, 0);
+}
+
+#urlbar-reload-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
+}
+
+#go-button,
+#urlbar-go-button {
+  -moz-image-region: rect(0, 42px, 14px, 28px);
+}
+
+#go-button:hover,
+#urlbar-go-button:hover {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(110,70%,50%,.2), hsla(110,70%,50%,0));
+  -moz-image-region: rect(14px, 42px, 28px, 28px);
+}
+
+#go-button:hover:active,
+#urlbar-go-button:hover:active {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(110,70%,50%,.1), hsla(110,70%,50%,0));
+  -moz-image-region: rect(28px, 42px, 42px, 28px);
+}
+
+#go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon,
+#urlbar-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
 }
 
 #urlbar-stop-button {
-  -moz-image-region: rect(0px, 42px, 14px, 28px);
-  background-image: -moz-linear-gradient(rgb(231,162,140), rgb(209,119,100) 49%, rgb(193,92,78) 51%, rgb(173,72,58));
-}
-
-#urlbar-stop-button:hover {
-  background-image: -moz-linear-gradient(rgb(244,156,128), rgb(215,101,77) 49%, rgb(194,66,48) 51%, rgb(170,41,23));
+  -moz-image-region: rect(0, 28px, 14px, 14px);
+}
+
+#urlbar-stop-button:not([disabled]):hover {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(5,100%,75%,.3), hsla(5,100%,75%,0));
+  -moz-image-region: rect(14px, 28px, 28px, 14px);
+}
+
+#urlbar-stop-button:hover:active {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(5,100%,75%,.1), hsla(5,100%,75%,0));
+  -moz-image-region: rect(28px, 28px, 42px, 14px);
 }
 
 /* popup blocker button */
 
 #page-report-button {
   list-style-image: url("chrome://browser/skin/urlbar-popup-blocked.png");
   -moz-image-region: rect(0, 16px, 16px, 0);
 }
@@ -1571,20 +1573,22 @@ richlistitem[type~="action"][actiontype=
 /* star button */
 
 #star-button {
   list-style-image: url("chrome://browser/skin/places/bookmark.png");
   -moz-image-region: rect(0px 16px 16px 0px);
 }
 
 #star-button:hover {
-  -moz-image-region: rect(0px 32px 16px 16px);
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(45,100%,73%,.3), hsla(45,100%,73%,0));
+  -moz-image-region: rect(0px 32px 16px 16px); 
 }
 
 #star-button:hover:active {
+  background-image: -moz-radial-gradient(center, circle closest-side, hsla(45,100%,73%,.1), hsla(45,100%,73%,0));
   -moz-image-region: rect(0px 48px 16px 32px);
 }
 
 #star-button[starred="true"] {
   list-style-image: url("chrome://browser/skin/places/editBookmark.png");
 }
 
 /* bookmarking panel */
@@ -2220,18 +2224,16 @@ toolbarbutton.bookmark-item[dragover="tr
 #notification-popup-box {
   position: relative;
   background-color: #fff;
   background-clip: padding-box;
   padding-left: 3px;
   border-radius: 2.5px 0 0 2.5px;
   -moz-border-image: url("chrome://browser/skin/urlbar-arrow.png") 0 8 0 0 / 0 8px 0 0;
   -moz-margin-end: -8px;
-  margin-top: -2px;
-  margin-bottom: -2px;
 }
 
 #notification-popup-box:not([hidden]) + #identity-box {
   -moz-padding-start: 10px;
   border-radius: 0;
 }
 
 #notification-popup-box:-moz-locale-dir(rtl),
--- a/browser/themes/winstripe/browser/jar.mn
+++ b/browser/themes/winstripe/browser/jar.mn
@@ -32,28 +32,28 @@ browser.jar:
         skin/classic/browser/livemark-item.png                       (livemark-item.png)
         skin/classic/browser/livemark-folder.png                     (livemark-folder.png)
         skin/classic/browser/Privacy-16.png
         skin/classic/browser/Privacy-48.png
         skin/classic/browser/reload-stop-go.png
         skin/classic/browser/Secure24.png                            (Secure24.png)
         skin/classic/browser/Toolbar.png                             (Toolbar.png)
         skin/classic/browser/Toolbar-inverted.png
-        skin/classic/browser/Go-arrow.png                            (Go-arrow.png)
 *       skin/classic/browser/searchbar.css                           (searchbar.css)
         skin/classic/browser/section_collapsed.png
         skin/classic/browser/section_collapsed-rtl.png
         skin/classic/browser/section_expanded.png
         skin/classic/browser/setDesktopBackground.css
         skin/classic/browser/menu-back.png                           (menu-back.png)
         skin/classic/browser/menu-forward.png                        (menu-forward.png)
         skin/classic/browser/monitor.png
         skin/classic/browser/monitor_16-10.png
         skin/classic/browser/urlbar-arrow.png
         skin/classic/browser/urlbar-popup-blocked.png
+        skin/classic/browser/urlbar-history-dropmarker.png
         skin/classic/browser/feeds/feedIcon.png                      (feeds/feedIcon.png)
         skin/classic/browser/feeds/feedIcon16.png                    (feeds/feedIcon16.png)
         skin/classic/browser/feeds/audioFeedIcon.png                 (feeds/audioFeedIcon.png)
         skin/classic/browser/feeds/audioFeedIcon16.png               (feeds/audioFeedIcon16.png)
         skin/classic/browser/feeds/videoFeedIcon.png                 (feeds/videoFeedIcon.png)
         skin/classic/browser/feeds/videoFeedIcon16.png               (feeds/videoFeedIcon16.png)
         skin/classic/browser/feeds/subscribe.css                     (feeds/subscribe.css)
         skin/classic/browser/feeds/subscribe-ui.css                  (feeds/subscribe-ui.css)
@@ -154,28 +154,28 @@ browser.jar:
         skin/classic/aero/browser/livemark-item.png                  (livemark-item-aero.png)
         skin/classic/aero/browser/livemark-folder.png                (livemark-folder-aero.png)
         skin/classic/aero/browser/Privacy-16.png                     (Privacy-16-aero.png)
         skin/classic/aero/browser/Privacy-48.png                     (Privacy-48-aero.png)
         skin/classic/aero/browser/reload-stop-go.png
         skin/classic/aero/browser/Secure24.png                       (Secure24-aero.png)
         skin/classic/aero/browser/Toolbar.png
         skin/classic/aero/browser/Toolbar-inverted.png
-        skin/classic/aero/browser/Go-arrow.png                       (Go-arrow-aero.png)
 *       skin/classic/aero/browser/searchbar.css                      (searchbar.css)
         skin/classic/aero/browser/section_collapsed.png
         skin/classic/aero/browser/section_collapsed-rtl.png
         skin/classic/aero/browser/section_expanded.png
         skin/classic/aero/browser/setDesktopBackground.css
         skin/classic/aero/browser/menu-back.png                      (menu-back-aero.png)
         skin/classic/aero/browser/menu-forward.png                   (menu-forward-aero.png)
         skin/classic/aero/browser/monitor.png
         skin/classic/aero/browser/monitor_16-10.png
         skin/classic/aero/browser/urlbar-arrow.png
         skin/classic/aero/browser/urlbar-popup-blocked.png
+        skin/classic/aero/browser/urlbar-history-dropmarker.png
         skin/classic/aero/browser/feeds/feedIcon.png                 (feeds/feedIcon-aero.png)
         skin/classic/aero/browser/feeds/feedIcon16.png               (feeds/feedIcon16-aero.png)
         skin/classic/aero/browser/feeds/audioFeedIcon.png            (feeds/audioFeedIcon-aero.png)
         skin/classic/aero/browser/feeds/audioFeedIcon16.png          (feeds/audioFeedIcon16-aero.png)
         skin/classic/aero/browser/feeds/videoFeedIcon.png            (feeds/videoFeedIcon-aero.png)
         skin/classic/aero/browser/feeds/videoFeedIcon16.png          (feeds/videoFeedIcon16-aero.png)
         skin/classic/aero/browser/feeds/subscribe.css                (feeds/subscribe.css)
         skin/classic/aero/browser/feeds/subscribe-ui.css             (feeds/subscribe-ui.css)
index 006a3f10f29ab757ab9be2c52eac6298d2b485ef..2e9a206347873920ddd70fac6c74b9786fc1c6cd
GIT binary patch
literal 1779
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
V<;Y<h_VWM$002ovPDHLkV1imlQndg8
index aaae5b861d3a234efb46c86a3619b64f58059e2e..fbca0523df169b6892d2b5050035152fb6b92606
GIT binary patch
literal 1642
zc$@)h29^1VP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#3000ItNkl<Zc-obg
zc~DbV6vi)kF0DAzacPUCj;MfEi$zf!rS7-@tu-R+pjA-<f;u8rKqRqjL1c4S)UuRC
zkYUjv${L_na0fwx7y`o7ju=Q-D~rX`bCEcb29-a4Gv}T29XQ{8=RP1#-;&W#<5@Ef
zJS*mB8Y5(ksFgYrhf)stU_St;#NTAvC4ZBtF*F{9(SNA7IisD*UoJ@US#lX;t+5&?
z+DGQrM6422hZ<fkv?sI1Y9PRLn&H)Bi$HKx4=~mrs{t0*f^loO#}kWhd(~llnC8ZE
z`Xvs;RbCw?mQ@DV74Ij9Xl^V9F4)b=ZHzYoN!%8QwwakVCIjAVMmNRJFb8_E4@o?=
zIQ!%_X3obND6l8m)n|=zV4xf*4?_&I3-%JNk2SzIn{HTo$`Jm^wT7N+Rv_dp1I+1v
z&;V}-!{Tmd=5Wm!56N9`iNe5>@)Kgr9j7&_8Ep_eX%?=_Y~g-#Tvin-Q5a~e2ohuN
z7_CvwXa;;XO<{274K8wY3YrtmV6b@S5Kj|KA=yDE*Kf;I1F9KefX8Mw^0qT>Na(K?
z6H=16OLE0!CnV650U-AQX!ivg(;Tf)4QhjF5B9DrvL_pH-`#}!NJuefTuNo|^4zwH
zGZN@819*7}Ndp?w9Ia6eYR}Lf>|KXLIfZT45X9}CU7zMW9}2t-;K_weL#Gd=yC_3(
z9p-555^7Le7m7XDYflYC*OeZVbT>zLLuV?yMao6I-q6Z}cWYfuQC*Kq-0HD698Wd6
z^=^Qq@5SYA=(_=L=}AHohDnBZYke)5UD7*#_1GI8Za(ALtw1AaN-zUyIvYB#T0(z;
zExaz-sW3p_0?pAH)u7fC$^%wH2wS6`cy4Ab<ZWYqe^Pw35oCz~&)nY+YU+eX8n7qM
z-I%49WlMB%=i^)N`ZvPM5;Pd|eo%wMH(*a}rY+G9VSl+4_g&V0Wd{yQ2Yx?PBS)=}
zyHpxxK0}Z0;HMtOti`;oOtPfpNHa+Bmo&Pm25V0W4?RU~lE(&?KK803<1=i?g1o&X
zx$Ry+GxQV!$fH$*HR)}ir>IR#w<hzkcO1fswEo(ljK8v@E5{06(?S1G4Xx3)aMOQ<
z414qymzY5&c^b0}c|S5~ubRVOK?AN$-Qkfm@?fATYydT>)G#$Z+^aThVo~lMk~Sz4
zyaHJ)u3gwj<O%R^+m!*-q~h=kXb<gGT;eF(nJXSftncm<;_BSoqmtetJ9rSjt|QWB
zrh)QTh(Xl7O_?L2D|?!tkq=OHU?fk2peo(2!P|s!p@xTh2t{EcXBRp6ywtr3<mmv<
zPme^N1%DU1HlT*17+(1+l;Nru)t+YyaA%)NWY?`B?eN0j(LST&xu#6OUqTlth&%!A
zIRI3<;qb0+;#x0gE<DhJ8lT|-h!V`TUBtJ&B2Wr1V(`BB0<=Wn@Mqt|(m0Uc_isTB
zPhno!K+3@dxorh@02PiZX+?8M2j&Y#HNZ1rl6xMw_rhZyfY=vgWk<R?Zo743j0R2u
zjZqUrcURS4Z#><kzQ&kdkY2>KNr#@tXS-gCqq=DfFA{;qsQHa*RT&U?88r9Y!qcvC
zfkAxh{SP>ZBMeqM59K<`_ClunVv$M%$5*jF<FnO;bol2*j`C|h%d5GYnHVHKpKnyt
zTI$j<DDocUZDFpvE?1kRY#@P6Cg*b|2|=0yot6IbN9Q(HU)@R0BeAuyW;NZ9f;wKe
zBn_g0>k%eoqOyTNw#MX=(6!M2$QiotbD&;e0e?msSC&U@6iKozhjP7DPEd4abw8i2
zF+tgY+Q|*fH*rq0@8ky<iMX4X1h4h1t(c!m@!G&xU@oaJ@cY{H_L}8bo2zUf(}w7l
zap&C;#hQw;?MQrvHQ7urIt4HIR?H>T#{E!x!$YeaYg)<%PVe|iKR<X4)aO`3UeIdM
zx&1m;iXqQC=<F^CUQ<_}V*`1oR|9J2{m+2sT9zgb$*05O^AtoKnMk3r^LJz#nzW)C
z)PAA-&snMk(Gb`XKOFWaeEtNPfG`vq|FVpzqe(W^B%71z$_9cgH8mscwX@D~ba&Hd
oWg_;@Ww2&XHK#2#KUd`c1L=DksDR{$rvLx|07*qoM6N<$f`AMCM*si-
index e070eb424b03f8bedf69aaeab810f398cc3b28ec..1017be9032a298c8aa1f4a5cd4576087d8bb6f0d
GIT binary patch
literal 1945
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fc8b0be983652ea7a0bd19553b894aadc23fda6b
GIT binary patch
literal 480
zc$@*?0U!Q}P)<h;3K|Lk000e1NJLTq001EX000gM1^@s6p&oUN0004}Nkl<Zc-rmM
z%}N4M6bJCkC`8hT%1DT!fmZVX?rYt;N9YZFfXEg_K@r(DDkut~qOcE5YZSi{Q%iF+
zOCc!=GO8ir^q)W(N=I82)Z)iw?i}u%x%Zq~LqtFBKZ)O!#QgHQVQFnEzjJU*yLQ(X
z+xthfxVkAIj%BQm2FL@+5P;RqUK$_|BtrmJ%tW($$SwFzV|1QKQ#6?=5}!T6DDByu
zX2hwXrpIz`0+L}Y{Go1!Hv!2o7LVgG_tb0UyuA3)WahT$j8Bv8*c*Cz6}k%xcWq?r
zAqZ3g2g*Wh>r|{Bf<Ps3pp@1`Z6wMMy8Pj{_|?rv0^;cOho7VI%K^MsNYAiy<(dTn
zNFoQ!=ksovjIba8N#uYjRhViU=P?H&JQB##N%(>sF5fujRi%naKOZ*&Neq=Myymf>
z5lCXFY<Gy;ZawmZ{Gk{fINTo0b(CAUeJ-p74hSrA)!#JgQvwGBmP#$E5VwEBV#_8{
z>HbQs)ixbqAO-qLv6>M#11Zo~b5E%5?jQOvHdNE&EfZd?I98)^*s1-_WmWg*Zp?S&
W?K3g#I)Y;W0000<MNUMnLSTXx!PWEt
index 0ee9f505fb6bdb93e7808d7981c6e7dab048314b..e6fd29f7d3866263660d1f7e537ae96a4858a051
GIT binary patch
literal 745
zc%17D@N?(olHy`uVBq!ia0vp^20$#p!3HD)*8SPYz`(S@)5S5Q;?~uxzS+WoB5VnY
z0VfWvTDth)sSH#5#R@D;v8=zOcg@YMb12RD`)0fD+G{~tT3U4vloV2~wl4bEJaOW|
zD=!aqyBY>fkCeTy{eJE}O~u4%u{L|Z@A*Dwg0r}#l2ZGv|MsW9$MraJFA@J1`i5Wg
z+W$T<d+9TO-S<%8Aa0#pyKn_bjo;ic6<^&OQx*V4YJ(LdS6pH0miAZG{>?pS{oiS8
z-u#^0eS1=9R^!jF>Q3UNcR7E1ExUg1{N6vBS4!pHt6t82e(q5C!gZf3^f&77J#goi
zGGp7_h50gdH*eldw`Zw3x4B#<=yUVui4Ny0zx6Rc-+AE7+xA5_d(Zq%U~>A_vZnow
z-S>~>7b9+0%KJE+m^Yy`tFGW%cgC8xd-&B9Qv6TM`W*A%*{Rx#60>ypc_%c_c<%dt
zCcE{bjb@Q@QVQ&b{?FK#*>@kil~S3}AalfKzD_}HWv~g~>@(^2S_BIm8YkpewVQ2s
zP0lr%Un%T%fRWYd<evk*4kp*sKF>5yWRVF_c%sf7vv;eaRJ*U3v3?^nWA;&Fv%SmT
zyMe4YvxkL`WsT_hlz&II_9F{eL?&b<#%73YJ$dU)o8kjors?0ez0_UP=CnBMTACRT
z<9op!d(=N4U%y9OYU?Jm&50Zp{Rf`zovUMDxqTaVQlTQ-#(PQ{4l_&l{P&i6(-aZY
z;kafy2UkGa+%xjCtF|Ml`1-H@!2G?zZE75q0b5_$YB;fqY<~5R|Kf5Z6UP(Ht3uy9
z3TiEwq5Apn<oweYSQPnJh3#c`UD1#fX3AYsQkiDTUOIs<Yr^Yai;cf4g4q{J_ua3b
z+-&8+ZhB%S>#kiUdmkMX+fq?=t=hlYn3sRsf}_Tl{{;Tu${u~;(ac%TpMLnoe){dd
V^yd#$U4coM!PC{xWt~$(69CWeSx^7~
--- a/build/macosx/universal/unify
+++ b/build/macosx/universal/unify
@@ -1055,24 +1055,34 @@ sub makeUniversalInternal($$$$) {
       return complain(1, 'makeUniversal: symlink: '.$!.' for:',
                       $aLink,
                       $fileTargetPath);
     }
 
     return 1;
   }
   elsif($aSourceFile->lIsRegularFile()) {
-    my ($machPPC, $machX86);
+    my ($machPPC, $machX86, $fileName);
     if (!defined($filePPC) || !defined($fileX86)) {
       # One of the source files isn't present.  The right thing to do is
       # to just copy what does exist straight over, so skip Mach-O checks.
       $machPPC = 0;
       $machX86 = 0;
+      if (defined($filePPC)) {
+        $fileName = $filePPC;
+      } elsif (defined($fileX86)) {
+        $fileName = $fileX86;
+      } else {
+        complain(1, "The file must exist in at least one directory");
+        exit(1);
+      }
     }
     else {
+      # both files exist, pick the name of one.
+      $fileName = $fileX86;
       if (!defined($machPPC=$filePPC->isMachO())) {
         return complain(1, 'makeUniversal: isFileMachO ppc failed for:',
                         $filePPC->path());
       }
       if (!defined($machX86=$fileX86->isMachO())) {
         return complain(1, 'makeUniversal: isFileMachO x86 failed for:',
                         $fileX86->path());
       }
@@ -1084,17 +1094,17 @@ sub makeUniversalInternal($$$$) {
                   $fileX86->path());
     }
 
     if ($machPPC) {
       # makeUniversalFile will print an error if it fails.
       return makeUniversalFile($filePPC, $fileX86, $fileTargetPath);
     }
 
-    if (grep { $filePPC->path() =~ m/$_/; } @gSortMatches) {
+    if (grep { $fileName->path() =~ m/$_/; } @gSortMatches) {
       # Regular files, but should be compared with sorting first.
       # copyIfIdenticalWhenSorted will print an error if it fails.
       return copyIfIdenticalWhenSorted($filePPC, $fileX86, $fileTargetPath);
     }
 
     # Regular file.  copyIfIdentical will print an error if it fails.
     return copyIfIdentical($filePPC, $fileX86, $fileTargetPath);
   }
--- a/config/system-headers
+++ b/config/system-headers
@@ -35,17 +35,16 @@ app/Message.h
 app/MessageRunner.h
 arpa/inet.h
 arpa/nameser.h
 asm/sigcontext.h
 asm/signal.h
 ASRegistry.h
 assert.h
 atk/atk.h
-atlbase.h
 atlcom.h
 atlconv.h
 atlctl.cpp
 atlctl.h
 ATLCTL.H
 atlhost.h
 atlimpl.cpp
 atlwin.cpp
--- a/configure.in
+++ b/configure.in
@@ -2311,23 +2311,16 @@ ia64*-hpux*)
         fi
         ;;
     esac
 
     case "$host_os" in
     cygwin*|msvc*|mks*)
         AC_MSG_ERROR([Using a Cygwin build environment is unsupported. Configure cannot check for presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
         ;;
-    *)
-        AC_CHECK_HEADERS(oleacc.idl)
-        AC_LANG_SAVE
-        AC_LANG_CPLUSPLUS
-        MOZ_CHECK_HEADERS(atlbase.h)
-        AC_LANG_RESTORE
-        ;;
     esac
 
     case "$target" in
     i*86-*)
         if test "$HAVE_64BIT_OS"; then
             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
         fi
 
@@ -5249,29 +5242,16 @@ dnl ====================================
 MOZ_ARG_DISABLE_BOOL(accessibility,
 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
     ACCESSIBILITY=,
     ACCESSIBILITY=1 )
 if test "$ACCESSIBILITY"; then
     AC_DEFINE(ACCESSIBILITY)
 fi
 
-if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
-case "$target" in
-*-mingw*)
-    if test "$ac_cv_header_atlbase_h" = "no"; then
-        AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
-    fi
-    if test "$ac_cv_header_oleacc_idl" = "no"; then
-        AC_MSG_ERROR([System header oleacc.idl is not available. See http://developer.mozilla.org/en/docs/oleacc.idl for details on fixing this problem.])
-    fi
-    ;;
-esac
-fi
-
 dnl ========================================================
 dnl Disable printing
 dnl ========================================================
 MOZ_ARG_DISABLE_BOOL(printing,
 [  --disable-printing      Disable printing support],
     NS_PRINTING=,
     NS_PRINTING=1)
 
new file mode 100644
--- /dev/null
+++ b/content/base/crashtests/682463.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var j = document.createTextNode("j");
+  var r = document.createRange();
+  r.setEnd(j, 1);
+  j.splitText(0);
+  r.setEnd(j, 0);
+}
+
+</script>
+</head>
+
+<body onload="boom();"></body>
+
+</html>
\ No newline at end of file
--- a/content/base/crashtests/crashtests.list
+++ b/content/base/crashtests/crashtests.list
@@ -90,8 +90,9 @@ load 628599-1.html
 load 637214-1.svg
 load 637214-2.svg
 load 642022-1.html
 load 646184.html
 load 658845-1.svg
 load 667336-1.html
 load 679459.html
 load 679689-1.html
+load 682463.html
--- a/content/base/src/nsGkAtomList.h
+++ b/content/base/src/nsGkAtomList.h
@@ -1897,16 +1897,17 @@ GK_ATOM(_moz_mac_lion_theme, "-moz-mac-l
 GK_ATOM(_moz_windows_compositor, "-moz-windows-compositor")
 GK_ATOM(_moz_windows_classic, "-moz-windows-classic")
 GK_ATOM(_moz_windows_theme, "-moz-windows-theme")
 GK_ATOM(_moz_touch_enabled, "-moz-touch-enabled")
 GK_ATOM(_moz_maemo_classic, "-moz-maemo-classic")
 GK_ATOM(_moz_menubar_drag, "-moz-menubar-drag")
 GK_ATOM(_moz_device_pixel_ratio, "-moz-device-pixel-ratio")
 GK_ATOM(_moz_device_orientation, "-moz-device-orientation")
+GK_ATOM(_moz_is_resource_document, "-moz-is-resource-document")
 
 #ifdef ACCESSIBILITY
 GK_ATOM(anonid, "anonid")
 GK_ATOM(aria_activedescendant, "aria-activedescendant")
 GK_ATOM(aria_atomic, "aria-atomic")
 GK_ATOM(aria_autocomplete, "aria-autocomplete")
 GK_ATOM(aria_busy, "aria-busy")
 GK_ATOM(aria_checked, "aria-checked")
--- a/content/base/src/nsRange.cpp
+++ b/content/base/src/nsRange.cpp
@@ -266,72 +266,106 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
 void
 nsRange::CharacterDataChanged(nsIDocument* aDocument,
                               nsIContent* aContent,
                               CharacterDataChangeInfo* aInfo)
 {
   NS_ASSERTION(mIsPositioned, "shouldn't be notified if not positioned");
 
+  nsINode* newRoot = nsnull;
+  nsINode* newStartNode = nsnull;
+  nsINode* newEndNode = nsnull;
+  PRUint32 newStartOffset = 0;
+  PRUint32 newEndOffset = 0;
+
   // If the changed node contains our start boundary and the change starts
   // before the boundary we'll need to adjust the offset.
   if (aContent == mStartParent &&
       aInfo->mChangeStart < static_cast<PRUint32>(mStartOffset)) {
     if (aInfo->mDetails) {
       // splitText(), aInfo->mDetails->mNextSibling is the new text node
       NS_ASSERTION(aInfo->mDetails->mType ==
                    CharacterDataChangeInfo::Details::eSplit,
                    "only a split can start before the end");
       NS_ASSERTION(static_cast<PRUint32>(mStartOffset) <= aInfo->mChangeEnd,
                    "mStartOffset is beyond the end of this node");
-      mStartOffset = static_cast<PRUint32>(mStartOffset) - aInfo->mChangeStart;
-      mStartParent = aInfo->mDetails->mNextSibling;
+      newStartOffset = static_cast<PRUint32>(mStartOffset) - aInfo->mChangeStart;
+      newStartNode = aInfo->mDetails->mNextSibling;
+      if (NS_UNLIKELY(aContent == mRoot)) {
+        newRoot = IsValidBoundary(newStartNode);
+      }
     } else {
       // If boundary is inside changed text, position it before change
       // else adjust start offset for the change in length.
       mStartOffset = static_cast<PRUint32>(mStartOffset) <= aInfo->mChangeEnd ?
         aInfo->mChangeStart :
         mStartOffset + aInfo->mChangeStart - aInfo->mChangeEnd +
           aInfo->mReplaceLength;
     }
   }
 
-  // Do the same thing for the end boundary.
-  if (aContent == mEndParent && aInfo->mChangeStart < static_cast<PRUint32>(mEndOffset)) {
-    if (aInfo->mDetails) {
+  // Do the same thing for the end boundary, except for splitText of a node
+  // with no parent then only switch to the new node if the start boundary
+  // did so too (otherwise the range would end up with disconnected nodes).
+  if (aContent == mEndParent &&
+      aInfo->mChangeStart < static_cast<PRUint32>(mEndOffset)) {
+    if (aInfo->mDetails && (aContent->GetParent() || newStartNode)) {
       // splitText(), aInfo->mDetails->mNextSibling is the new text node
       NS_ASSERTION(aInfo->mDetails->mType ==
                    CharacterDataChangeInfo::Details::eSplit,
                    "only a split can start before the end");
       NS_ASSERTION(static_cast<PRUint32>(mEndOffset) <= aInfo->mChangeEnd,
                    "mEndOffset is beyond the end of this node");
-      mEndOffset = static_cast<PRUint32>(mEndOffset) - aInfo->mChangeStart;
-      mEndParent = aInfo->mDetails->mNextSibling;
+      newEndOffset = static_cast<PRUint32>(mEndOffset) - aInfo->mChangeStart;
+      newEndNode = aInfo->mDetails->mNextSibling;
     } else {
       mEndOffset = static_cast<PRUint32>(mEndOffset) <= aInfo->mChangeEnd ?
         aInfo->mChangeStart :
         mEndOffset + aInfo->mChangeStart - aInfo->mChangeEnd +
           aInfo->mReplaceLength;
     }
   }
 
   if (aInfo->mDetails &&
       aInfo->mDetails->mType == CharacterDataChangeInfo::Details::eMerge) {
     // normalize(), aInfo->mDetails->mNextSibling is the merged text node
     // that will be removed
     nsIContent* removed = aInfo->mDetails->mNextSibling;
     if (removed == mStartParent) {
-      mStartOffset = static_cast<PRUint32>(mStartOffset) + aInfo->mChangeStart;
-      mStartParent = aContent;
+      newStartOffset = static_cast<PRUint32>(mStartOffset) + aInfo->mChangeStart;
+      newStartNode = aContent;
+      if (NS_UNLIKELY(removed == mRoot)) {
+        newRoot = IsValidBoundary(newStartNode);
+      }
     }
     if (removed == mEndParent) {
-      mEndOffset = static_cast<PRUint32>(mEndOffset) + aInfo->mChangeStart;
-      mEndParent = aContent;
+      newEndOffset = static_cast<PRUint32>(mEndOffset) + aInfo->mChangeStart;
+      newEndNode = aContent;
+      if (NS_UNLIKELY(removed == mRoot)) {
+        newRoot = IsValidBoundary(newEndNode);
+      }
     }
   }
+  if (newStartNode || newEndNode) {
+    if (!newStartNode) {
+      newStartNode = mStartParent;
+      newStartOffset = mStartOffset;
+    }
+    if (!newEndNode) {
+      newEndNode = mEndParent;
+      newEndOffset = mEndOffset;
+    }
+    DoSetRange(newStartNode, newStartOffset, newEndNode, newEndOffset,
+               newRoot ? newRoot : mRoot.get()
+#ifdef DEBUG
+               , !newEndNode->GetParent()
+#endif
+               );
+  }
 }
 
 void
 nsRange::ContentInserted(nsIDocument* aDocument,
                          nsIContent* aContainer,
                          nsIContent* aChild,
                          PRInt32 aIndexInContainer)
 {
@@ -468,22 +502,26 @@ static PRUint32 GetNodeLength(nsINode *a
 // It's important that all setting of the range start/end points 
 // go through this function, which will do all the right voodoo
 // for content notification of range ownership.  
 // Calling DoSetRange with either parent argument null will collapse
 // the range to have both endpoints point to the other node
 void
 nsRange::DoSetRange(nsINode* aStartN, PRInt32 aStartOffset,
                     nsINode* aEndN, PRInt32 aEndOffset,
-                    nsINode* aRoot)
+                    nsINode* aRoot
+#ifdef DEBUG
+                    , bool aNotInsertedYet
+#endif
+                    )
 {
   NS_PRECONDITION((aStartN && aEndN && aRoot) ||
                   (!aStartN && !aEndN && !aRoot),
                   "Set all or none");
-  NS_PRECONDITION(!aRoot ||
+  NS_PRECONDITION(!aRoot || aNotInsertedYet ||
                   (nsContentUtils::ContentIsDescendantOf(aStartN, aRoot) &&
                    nsContentUtils::ContentIsDescendantOf(aEndN, aRoot) &&
                    aRoot == IsValidBoundary(aStartN) &&
                    aRoot == IsValidBoundary(aEndN)),
                   "Wrong root");
   NS_PRECONDITION(!aRoot ||
                   (aStartN->IsNodeOfType(nsINode::eCONTENT) &&
                    aEndN->IsNodeOfType(nsINode::eCONTENT) &&
--- a/content/base/src/nsRange.h
+++ b/content/base/src/nsRange.h
@@ -144,17 +144,23 @@ public:
                                      PRBool *outNodeAfter);
   static nsresult CompareNodeToRange(nsINode* aNode, nsIRange* aRange,
                                      PRBool *outNodeBefore,
                                      PRBool *outNodeAfter);
 
 protected:
   void DoSetRange(nsINode* aStartN, PRInt32 aStartOffset,
                   nsINode* aEndN, PRInt32 aEndOffset,
-                  nsINode* aRoot);
+                  nsINode* aRoot
+#ifdef DEBUG
+                  // CharacterDataChanged use this to disable an assertion since
+                  // the new text node of a splitText hasn't been inserted yet.
+                  , bool aNotInsertedYet = false
+#endif
+                  );
 };
 
 // Make a new nsIDOMRange object
 nsresult NS_NewRange(nsIDOMRange** aInstancePtrResult);
 
 // Make a new nsIRangeUtils object
 nsresult NS_NewRangeUtils(nsIRangeUtils** aInstancePtrResult);
 
--- a/content/base/src/nsXMLHttpRequest.cpp
+++ b/content/base/src/nsXMLHttpRequest.cpp
@@ -413,28 +413,30 @@ NS_IMPL_ADDREF_INHERITED(nsXMLHttpReques
 NS_IMPL_RELEASE_INHERITED(nsXMLHttpRequestUpload, nsXHREventTarget)
 
 /////////////////////////////////////////////
 //
 //
 /////////////////////////////////////////////
 
 nsXMLHttpRequest::nsXMLHttpRequest()
-  : mResponseType(XML_HTTP_RESPONSE_TYPE_DEFAULT),
+  : mResponseBodyDecodedPos(0),
+    mResponseType(XML_HTTP_RESPONSE_TYPE_DEFAULT),
     mRequestObserver(nsnull), mState(XML_HTTP_REQUEST_UNSENT),
     mUploadTransferred(0), mUploadTotal(0), mUploadComplete(PR_TRUE),
+    mProgressSinceLastProgressEvent(PR_FALSE),
     mUploadProgress(0), mUploadProgressMax(0),
     mErrorLoad(PR_FALSE), mTimerIsActive(PR_FALSE),
     mProgressEventWasDelayed(PR_FALSE),
     mLoadLengthComputable(PR_FALSE), mLoadTotal(0),
     mFirstStartRequestSeen(PR_FALSE),
-    mResultArrayBuffer(nsnull),
-    mResultJSON(JSVAL_VOID)
+    mInLoadProgressEvent(PR_FALSE),
+    mResultJSON(JSVAL_VOID),
+    mResultArrayBuffer(nsnull)
 {
-  mResponseBodyUnicode.SetIsVoid(PR_TRUE);
   nsLayoutStatics::AddRef();
 }
 
 nsXMLHttpRequest::~nsXMLHttpRequest()
 {
   if (mListenerManager) {
     mListenerManager->Disconnect();
   }
@@ -550,16 +552,29 @@ nsXMLHttpRequest::Initialize(nsISupports
   nsCOMPtr<nsIScriptGlobalObject> sgo = do_QueryInterface(aOwner);
   NS_ENSURE_STATE(sgo);
   mScriptContext = sgo->GetContext();
   NS_ENSURE_STATE(mScriptContext);
   return NS_OK; 
 }
 
 void
+nsXMLHttpRequest::ResetResponse()
+{
+  mResponseXML = nsnull;
+  mResponseBody.Truncate();
+  mResponseText.Truncate();
+  mResponseBlob = nsnull;
+  mResultArrayBuffer = nsnull;
+  mResultJSON = JSVAL_VOID;
+  mLoadTransferred = 0;
+  mResponseBodyDecodedPos = 0;
+}
+
+void
 nsXMLHttpRequest::SetRequestObserver(nsIRequestObserver* aObserver)
 {
   mRequestObserver = aObserver;
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(nsXMLHttpRequest)
 
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsXMLHttpRequest,
@@ -697,186 +712,190 @@ nsXMLHttpRequest::GetResponseXML(nsIDOMD
   return NS_OK;
 }
 
 /*
  * This piece copied from nsXMLDocument, we try to get the charset
  * from HTTP headers.
  */
 nsresult
-nsXMLHttpRequest::DetectCharset(nsACString& aCharset)
+nsXMLHttpRequest::DetectCharset()
 {
-  aCharset.Truncate();
-  nsresult rv;
-  nsCAutoString charsetVal;
-  nsCOMPtr<nsIChannel> channel(do_QueryInterface(mReadRequest));
+  mResponseCharset.Truncate();
+  mDecoder = nsnull;
+
+  if (mResponseType != XML_HTTP_RESPONSE_TYPE_DEFAULT &&
+      mResponseType != XML_HTTP_RESPONSE_TYPE_TEXT &&
+      mResponseType != XML_HTTP_RESPONSE_TYPE_JSON &&
+      mResponseType != XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT) {
+    return NS_OK;
+  }
+
+  nsCOMPtr<nsIChannel> channel = do_QueryInterface(mReadRequest);
   if (!channel) {
     channel = mChannel;
-    if (!channel) {
-      // There will be no mChannel when we got a necko error in
-      // OnStopRequest or if we were never sent.
-      return NS_ERROR_NOT_AVAILABLE;
+  }
+
+  nsCAutoString charsetVal;
+  nsresult rv = channel ? channel->GetContentCharset(charsetVal) :
+                NS_ERROR_FAILURE;
+  if (NS_SUCCEEDED(rv)) {
+    nsCOMPtr<nsICharsetAlias> calias =
+      do_GetService(NS_CHARSETALIAS_CONTRACTID, &rv);
+    if (NS_SUCCEEDED(rv) && calias) {
+      rv = calias->GetPreferred(charsetVal, mResponseCharset);
     }
   }
 
-  rv = channel->GetContentCharset(charsetVal);
-  if (NS_SUCCEEDED(rv)) {
-    nsCOMPtr<nsICharsetAlias> calias(do_GetService(NS_CHARSETALIAS_CONTRACTID,&rv));
-    if(NS_SUCCEEDED(rv) && calias) {
-      rv = calias->GetPreferred(charsetVal, aCharset);
-    }
+  if (NS_FAILED(rv) || mResponseCharset.IsEmpty()) {
+    // MS documentation states UTF-8 is default for responseText
+    mResponseCharset.AssignLiteral("UTF-8");
   }
-  return rv;
+
+  nsCOMPtr<nsICharsetConverterManager> ccm =
+    do_GetService(NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  return ccm->GetUnicodeDecoderRaw(mResponseCharset.get(),
+                                   getter_AddRefs(mDecoder));
 }
 
 nsresult
-nsXMLHttpRequest::ConvertBodyToText(nsAString& aOutBuffer)
+nsXMLHttpRequest::AppendToResponseText(const char * aSrcBuffer,
+                                       PRUint32 aSrcBufferLen)
 {
+  NS_ENSURE_STATE(mDecoder);
+
+  PRInt32 destBufferLen;
+  nsresult rv = mDecoder->GetMaxLength(aSrcBuffer, aSrcBufferLen,
+                                       &destBufferLen);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  if (!mResponseText.SetCapacity(mResponseText.Length() + destBufferLen)) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+
+  PRUnichar* destBuffer = mResponseText.BeginWriting() + mResponseText.Length();
+
+  PRInt32 totalChars = mResponseText.Length();
+
   // This code here is basically a copy of a similar thing in
   // nsScanner::Append(const char* aBuffer, PRUint32 aLen).
   // If we get illegal characters in the input we replace
   // them and don't just fail.
-  if (!mResponseBodyUnicode.IsVoid()) {
-    aOutBuffer = mResponseBodyUnicode;
-    return NS_OK;
-  }
-  
-  PRInt32 dataLen = mResponseBody.Length();
-  if (!dataLen) {
-    mResponseBodyUnicode.SetIsVoid(PR_FALSE);
-    return NS_OK;
-  }
-
-  nsresult rv = NS_OK;
-
-  nsCAutoString dataCharset;
-  nsCOMPtr<nsIDocument> document(do_QueryInterface(mResponseXML));
-  if (document) {
-    dataCharset = document->GetDocumentCharacterSet();
-  } else {
-    if (NS_FAILED(DetectCharset(dataCharset)) || dataCharset.IsEmpty()) {
-      // MS documentation states UTF-8 is default for responseText
-      dataCharset.AssignLiteral("UTF-8");
-    }
-  }
-
-  // XXXbz is the charset ever "ASCII" as opposed to "us-ascii"?
-  if (dataCharset.EqualsLiteral("ASCII")) {
-    CopyASCIItoUTF16(mResponseBody, mResponseBodyUnicode);
-    aOutBuffer = mResponseBodyUnicode;
-    return NS_OK;
-  }
-
-  // can't fast-path UTF-8 using CopyUTF8toUTF16, since above we assumed UTF-8
-  // by default and CopyUTF8toUTF16 will stop if it encounters bytes that aren't
-  // valid UTF-8.  So we have to do the whole unicode decoder thing.
-
-  nsCOMPtr<nsICharsetConverterManager> ccm =
-    do_GetService(NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv);
-  if (NS_FAILED(rv))
-    return rv;
-
-  nsCOMPtr<nsIUnicodeDecoder> decoder;
-  rv = ccm->GetUnicodeDecoderRaw(dataCharset.get(),
-                                 getter_AddRefs(decoder));
-  if (NS_FAILED(rv))
-    return rv;
-
-  const char * inBuffer = mResponseBody.get();
-  PRInt32 outBufferLength;
-  rv = decoder->GetMaxLength(inBuffer, dataLen, &outBufferLength);
-  if (NS_FAILED(rv))
-    return rv;
-
-  nsStringBuffer* buf =
-    nsStringBuffer::Alloc((outBufferLength + 1) * sizeof(PRUnichar));
-  if (!buf) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  PRUnichar* outBuffer = static_cast<PRUnichar*>(buf->Data());
-
-  PRInt32 totalChars = 0,
-          outBufferIndex = 0,
-          outLen = outBufferLength;
-
   do {
-    PRInt32 inBufferLength = dataLen;
-    rv = decoder->Convert(inBuffer,
-                          &inBufferLength,
-                          &outBuffer[outBufferIndex],
-                          &outLen);
-    totalChars += outLen;
+    PRInt32 srclen = (PRInt32)aSrcBufferLen;
+    PRInt32 destlen = (PRInt32)destBufferLen;
+    rv = mDecoder->Convert(aSrcBuffer,
+                           &srclen,
+                           destBuffer,
+                           &destlen);
     if (NS_FAILED(rv)) {
       // We consume one byte, replace it with U+FFFD
       // and try the conversion again.
-      outBuffer[outBufferIndex + outLen++] = (PRUnichar)0xFFFD;
-      outBufferIndex += outLen;
-      outLen = outBufferLength - (++totalChars);
-
-      decoder->Reset();
-
-      if((inBufferLength + 1) > dataLen) {
-        inBufferLength = dataLen;
-      } else {
-        inBufferLength++;
+
+      destBuffer[destlen] = (PRUnichar)0xFFFD; // add replacement character
+      destlen++; // skip written replacement character
+      destBuffer += destlen;
+      destBufferLen -= destlen;
+
+      if (srclen < (PRInt32)aSrcBufferLen) {
+        srclen++; // Consume the invalid character
       }
-
-      inBuffer = &inBuffer[inBufferLength];
-      dataLen -= inBufferLength;
+      aSrcBuffer += srclen;
+      aSrcBufferLen -= srclen;
+
+      mDecoder->Reset();
     }
-  } while ( NS_FAILED(rv) && (dataLen > 0) );
-
-  // Use the string buffer if it is small, or doesn't contain
-  // too much extra data.
-  if (outBufferLength < 127 ||
-      (outBufferLength * 0.9) < totalChars) {
-    outBuffer[totalChars] = PRUnichar(0);
-    // Move ownership to mResponseBodyUnicode.
-    buf->ToString(totalChars, mResponseBodyUnicode, PR_TRUE);
-  } else {
-    mResponseBodyUnicode.Assign(outBuffer, totalChars);
-    buf->Release();
-  }
-  aOutBuffer = mResponseBodyUnicode;
+
+    totalChars += destlen;
+
+  } while (NS_FAILED(rv) && aSrcBufferLen > 0);
+
+  mResponseText.SetLength(totalChars);
+
   return NS_OK;
 }
 
 /* readonly attribute AString responseText; */
 NS_IMETHODIMP nsXMLHttpRequest::GetResponseText(nsAString& aResponseText)
 {
-  nsresult rv = NS_OK;
-
   aResponseText.Truncate();
 
   if (mResponseType != XML_HTTP_RESPONSE_TYPE_DEFAULT &&
-      mResponseType != XML_HTTP_RESPONSE_TYPE_TEXT) {
+      mResponseType != XML_HTTP_RESPONSE_TYPE_TEXT &&
+      mResponseType != XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT) {
     return NS_ERROR_DOM_INVALID_STATE_ERR;
   }
 
-  if (mState & (XML_HTTP_REQUEST_DONE |
-                XML_HTTP_REQUEST_LOADING)) {
-    rv = ConvertBodyToText(aResponseText);
+  if (mResponseType == XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT &&
+      !mInLoadProgressEvent) {
+    aResponseText.SetIsVoid(PR_TRUE);
+    return NS_OK;
+  }
+
+  if (!(mState & (XML_HTTP_REQUEST_DONE | XML_HTTP_REQUEST_LOADING))) {
+    return NS_OK;
+  }
+
+  // We only decode text lazily if we're also parsing to a doc.
+  // Also, if we've decoded all current data already, then no need to decode
+  // more.
+  if (!mResponseXML ||
+      mResponseBodyDecodedPos == mResponseBody.Length()) {
+    aResponseText = mResponseText;
+    return NS_OK;
   }
 
-  return rv;
+  nsresult rv;
+
+  nsCOMPtr<nsIDocument> document = do_QueryInterface(mResponseXML);
+  if (mResponseCharset != document->GetDocumentCharacterSet()) {
+    mResponseCharset == document->GetDocumentCharacterSet();
+    mResponseText.Truncate();
+    mResponseBodyDecodedPos = 0;
+
+    nsCOMPtr<nsICharsetConverterManager> ccm =
+      do_GetService(NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv);
+    NS_ENSURE_SUCCESS(rv, rv);
+
+    rv = ccm->GetUnicodeDecoderRaw(mResponseCharset.get(),
+                                   getter_AddRefs(mDecoder));
+    NS_ENSURE_SUCCESS(rv, rv);
+  }
+
+  NS_ASSERTION(mResponseBodyDecodedPos < mResponseBody.Length(),
+               "Unexpected mResponseBodyDecodedPos");
+  rv = AppendToResponseText(mResponseBody.get() + mResponseBodyDecodedPos,
+                            mResponseBody.Length() - mResponseBodyDecodedPos);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  mResponseBodyDecodedPos = mResponseBody.Length();
+  
+  if (mState & XML_HTTP_REQUEST_DONE) {
+    // Free memory buffer which we no longer need
+    mResponseBody.Truncate();
+    mResponseBodyDecodedPos = 0;
+  }
+
+  aResponseText = mResponseText;
+
+  return NS_OK;
 }
 
 nsresult
 nsXMLHttpRequest::CreateResponseParsedJSON(JSContext* aCx)
 {
   if (!aCx) {
     return NS_ERROR_FAILURE;
   }
 
-  nsString bodyString;
-  ConvertBodyToText(bodyString);
   if (!JS_ParseJSON(aCx,
-                    (jschar*)PromiseFlatString(bodyString).get(),
-                    bodyString.Length(), &mResultJSON)) {
+                    (jschar*)mResponseText.get(),
+                    mResponseText.Length(), &mResultJSON)) {
     return NS_ERROR_FAILURE;
   }
 
   return NS_OK;
 }
 
 nsresult
 nsXMLHttpRequest::CreateResponseArrayBuffer(JSContext *aCx)
@@ -918,16 +937,22 @@ NS_IMETHODIMP nsXMLHttpRequest::GetRespo
     aResponseType.AssignLiteral("document");
     break;
   case XML_HTTP_RESPONSE_TYPE_TEXT:
     aResponseType.AssignLiteral("text");
     break;
   case XML_HTTP_RESPONSE_TYPE_JSON:
     aResponseType.AssignLiteral("moz-json");
     break;
+  case XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT:
+    aResponseType.AssignLiteral("moz-chunked-text");
+    break;
+  case XML_HTTP_RESPONSE_TYPE_CHUNKED_ARRAYBUFFER:
+    aResponseType.AssignLiteral("moz-chunked-arraybuffer");
+    break;
   default:
     NS_ERROR("Should not happen");
   }
 
   return NS_OK;
 }
 
 /* attribute AString responseType; */
@@ -947,16 +972,26 @@ NS_IMETHODIMP nsXMLHttpRequest::SetRespo
   } else if (aResponseType.EqualsLiteral("blob")) {
     mResponseType = XML_HTTP_RESPONSE_TYPE_BLOB;
   } else if (aResponseType.EqualsLiteral("document")) {
     mResponseType = XML_HTTP_RESPONSE_TYPE_DOCUMENT;
   } else if (aResponseType.EqualsLiteral("text")) {
     mResponseType = XML_HTTP_RESPONSE_TYPE_TEXT;
   } else if (aResponseType.EqualsLiteral("moz-json")) {
     mResponseType = XML_HTTP_RESPONSE_TYPE_JSON;
+  } else if (aResponseType.EqualsLiteral("moz-chunked-text")) {
+    if (!(mState & XML_HTTP_REQUEST_ASYNC)) {
+      return NS_ERROR_DOM_INVALID_STATE_ERR;
+    }
+    mResponseType = XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT;
+  } else if (aResponseType.EqualsLiteral("moz-chunked-arraybuffer")) {
+    if (!(mState & XML_HTTP_REQUEST_ASYNC)) {
+      return NS_ERROR_DOM_INVALID_STATE_ERR;
+    }
+    mResponseType = XML_HTTP_RESPONSE_TYPE_CHUNKED_ARRAYBUFFER;
   }
   // If the given value is not the empty string, "arraybuffer",
   // "blob", "document", or "text" terminate these steps.
 
   // If the state is OPENED, SetCacheAsFile would have no effect here
   // because the channel hasn't initialized the cache entry yet.
   // SetCacheAsFile will be called from OnStartRequest.
   // If the state is HEADERS_RECEIVED, however, we need to call
@@ -974,30 +1009,39 @@ NS_IMETHODIMP nsXMLHttpRequest::SetRespo
 /* readonly attribute jsval response; */
 NS_IMETHODIMP nsXMLHttpRequest::GetResponse(JSContext *aCx, jsval *aResult)
 {
   nsresult rv = NS_OK;
 
   switch (mResponseType) {
   case XML_HTTP_RESPONSE_TYPE_DEFAULT:
   case XML_HTTP_RESPONSE_TYPE_TEXT:
+  case XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT:
     {
       nsString str;
       rv = GetResponseText(str);
       if (NS_FAILED(rv)) return rv;
-      nsStringBuffer* buf;
-      *aResult = XPCStringConvert::ReadableToJSVal(aCx, str, &buf);
-      if (buf) {
-        str.ForgetSharedBuffer();
+      if (str.IsVoid()) {
+        *aResult = JSVAL_NULL;
+      } else {
+        nsStringBuffer* buf;
+        *aResult = XPCStringConvert::ReadableToJSVal(aCx, str, &buf);
+        if (buf) {
+          str.ForgetSharedBuffer();
+        }
       }
     }
     break;
 
   case XML_HTTP_RESPONSE_TYPE_ARRAYBUFFER:
-    if (mState & XML_HTTP_REQUEST_DONE) {
+  case XML_HTTP_RESPONSE_TYPE_CHUNKED_ARRAYBUFFER:
+    if ((mResponseType == XML_HTTP_RESPONSE_TYPE_ARRAYBUFFER &&
+         mState & XML_HTTP_REQUEST_DONE) ||
+        (mResponseType == XML_HTTP_RESPONSE_TYPE_CHUNKED_ARRAYBUFFER &&
+         mInLoadProgressEvent)) {
       if (!mResultArrayBuffer) {
          rv = CreateResponseArrayBuffer(aCx);
          NS_ENSURE_SUCCESS(rv, rv);
       }
       *aResult = OBJECT_TO_JSVAL(mResultArrayBuffer);
     } else {
       *aResult = JSVAL_NULL;
     }
@@ -1024,18 +1068,17 @@ NS_IMETHODIMP nsXMLHttpRequest::GetRespo
     break;
 
   case XML_HTTP_RESPONSE_TYPE_JSON:
     if (mState & XML_HTTP_REQUEST_DONE) {
       if (mResultJSON == JSVAL_VOID) {
         rv = CreateResponseParsedJSON(aCx);
         NS_ENSURE_SUCCESS(rv, rv);
 
-        mResponseBody.Truncate();
-        mResponseBodyUnicode.SetIsVoid(PR_TRUE);
+        mResponseText.Truncate();
       }
       *aResult = mResultJSON;
     } else {
       *aResult = JSVAL_NULL;
     }
     break;
 
   default:
@@ -1120,24 +1163,19 @@ nsXMLHttpRequest::Abort()
     mReadRequest->Cancel(NS_BINDING_ABORTED);
   }
   if (mChannel) {
     mChannel->Cancel(NS_BINDING_ABORTED);
   }
   if (mCORSPreflightChannel) {
     mCORSPreflightChannel->Cancel(NS_BINDING_ABORTED);
   }
-  mResponseXML = nsnull;
   PRUint32 responseLength = mResponseBody.Length();
-  mResponseBody.Truncate();
-  mResponseBodyUnicode.SetIsVoid(PR_TRUE);
-  mResponseBlob = nsnull;
+  ResetResponse();
   mState |= XML_HTTP_REQUEST_ABORTED;
-  mResultArrayBuffer = nsnull;
-  mResultJSON = JSVAL_VOID;
   
   if (!(mState & (XML_HTTP_REQUEST_UNSENT |
                   XML_HTTP_REQUEST_OPENED |
                   XML_HTTP_REQUEST_DONE))) {
     ChangeState(XML_HTTP_REQUEST_DONE, PR_TRUE);
   }
 
   if (!(mState & XML_HTTP_REQUEST_SYNCLOOPING)) {
@@ -1322,17 +1360,19 @@ void
 nsXMLHttpRequest::DispatchProgressEvent(nsDOMEventTargetHelper* aTarget,
                                         const nsAString& aType,
                                         PRBool aUseLSEventWrapper,
                                         PRBool aLengthComputable,
                                         PRUint64 aLoaded, PRUint64 aTotal,
                                         PRUint64 aPosition, PRUint64 aTotalSize)
 {
   NS_ASSERTION(aTarget, "null target");
-  if (aType.IsEmpty() ||
+  NS_ASSERTION(!aType.IsEmpty(), "missing event type");
+
+  if (NS_FAILED(CheckInnerWindowCorrectness()) ||
       (!AllowUploadProgress() &&
        (aTarget == mUpload || aType.EqualsLiteral(UPLOADPROGRESS_STR)))) {
     return;
   }
 
   PRBool dispatchLoadend = aType.EqualsLiteral(LOAD_STR) ||
                            aType.EqualsLiteral(ERROR_STR) ||
                            aType.EqualsLiteral(ABORT_STR);
@@ -1586,29 +1626,38 @@ nsXMLHttpRequest::StreamReaderFunc(nsIIn
   nsXMLHttpRequest* xmlHttpRequest = static_cast<nsXMLHttpRequest*>(closure);
   if (!xmlHttpRequest || !writeCount) {
     NS_WARNING("XMLHttpRequest cannot read from stream: no closure or writeCount");
     return NS_ERROR_FAILURE;
   }
 
   if (xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_BLOB &&
       xmlHttpRequest->mResponseBlob) {
-    xmlHttpRequest->ChangeState(XML_HTTP_REQUEST_LOADING);
     *writeCount = count;
     return NS_OK;
   }
 
-  if (xmlHttpRequest->mResponseType != XML_HTTP_RESPONSE_TYPE_DOCUMENT) {
+  if ((xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_DEFAULT &&
+       xmlHttpRequest->mResponseXML) ||
+      xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_ARRAYBUFFER ||
+      xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_BLOB ||
+      xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_CHUNKED_ARRAYBUFFER) {
     // Copy for our own use
     PRUint32 previousLength = xmlHttpRequest->mResponseBody.Length();
     xmlHttpRequest->mResponseBody.Append(fromRawSegment,count);
     if (count > 0 && xmlHttpRequest->mResponseBody.Length() == previousLength) {
       return NS_ERROR_OUT_OF_MEMORY;
     }
-    xmlHttpRequest->mResponseBodyUnicode.SetIsVoid(PR_TRUE);
+  } else if (xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_DEFAULT ||
+             xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_TEXT ||
+             xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_JSON ||
+             xmlHttpRequest->mResponseType == XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT) {
+    NS_ASSERTION(!xmlHttpRequest->mResponseXML,
+                 "We shouldn't be parsing a doc here");
+    xmlHttpRequest->AppendToResponseText(fromRawSegment, count);
   }
 
   nsresult rv = NS_OK;
 
   if (xmlHttpRequest->mState & XML_HTTP_REQUEST_PARSEBODY) {
     // Give the same data to the parser.
 
     // We need to wrap the data in a new lightweight stream and pass that
@@ -1627,18 +1676,16 @@ nsXMLHttpRequest::StreamReaderFunc(nsIIn
       // No use to continue parsing if we failed here, but we
       // should still finish reading the stream
       if (NS_FAILED(parsingResult)) {
         xmlHttpRequest->mState &= ~XML_HTTP_REQUEST_PARSEBODY;
       }
     }
   }
 
-  xmlHttpRequest->ChangeState(XML_HTTP_REQUEST_LOADING);
-
   if (NS_SUCCEEDED(rv)) {
     *writeCount = count;
   } else {
     *writeCount = 0;
   }
 
   return rv;
 }
@@ -1661,34 +1708,48 @@ void nsXMLHttpRequest::CreateResponseBlo
     nsCOMPtr<nsISupports> cacheToken;
     if (cc) {
       cc->GetCacheToken(getter_AddRefs(cacheToken));
     }
 
     mResponseBlob =
       new nsDOMFileFile(file, NS_ConvertASCIItoUTF16(contentType), cacheToken);
     mResponseBody.Truncate();
-    mResponseBodyUnicode.SetIsVoid(PR_TRUE);
   }
 }
 
-/* void onDataAvailable (in nsIRequest request, in nsISupports ctxt, in nsIInputStream inStr, in unsigned long sourceOffset, in unsigned long count); */
 NS_IMETHODIMP
-nsXMLHttpRequest::OnDataAvailable(nsIRequest *request, nsISupports *ctxt, nsIInputStream *inStr, PRUint32 sourceOffset, PRUint32 count)
+nsXMLHttpRequest::OnDataAvailable(nsIRequest *request,
+                                  nsISupports *ctxt,
+                                  nsIInputStream *inStr,
+                                  PRUint32 sourceOffset,
+                                  PRUint32 count)
 {
   NS_ENSURE_ARG_POINTER(inStr);
 
   NS_ABORT_IF_FALSE(mContext.get() == ctxt,"start context different from OnDataAvailable context");
 
   if (mResponseType == XML_HTTP_RESPONSE_TYPE_BLOB && !mResponseBlob) {
     CreateResponseBlob(request);
   }
 
+  mProgressSinceLastProgressEvent = PR_TRUE;
+
   PRUint32 totalRead;
-  return inStr->ReadSegments(nsXMLHttpRequest::StreamReaderFunc, (void*)this, count, &totalRead);
+  nsresult rv = inStr->ReadSegments(nsXMLHttpRequest::StreamReaderFunc,
+                                    (void*)this, count, &totalRead);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  mLoadTransferred += totalRead;
+
+  ChangeState(XML_HTTP_REQUEST_LOADING);
+  
+  MaybeDispatchProgressEvents(PR_FALSE);
+
+  return NS_OK;
 }
 
 PRBool
 IsSameOrBaseChannel(nsIRequest* aPossibleBase, nsIChannel* aChannel)
 {
   nsCOMPtr<nsIMultiPartChannel> mpChannel = do_QueryInterface(aPossibleBase);
   if (mpChannel) {
     nsCOMPtr<nsIChannel> baseChannel;
@@ -1738,61 +1799,64 @@ nsXMLHttpRequest::OnStartRequest(nsIRequ
     documentPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
     NS_ENSURE_SUCCESS(rv, rv);
   } else {
     documentPrincipal = mPrincipal;
   }
 
   channel->SetOwner(documentPrincipal);
 
+  nsresult status;
+  request->GetStatus(&status);
+  mErrorLoad = mErrorLoad || NS_FAILED(status);
+
+  if (mUpload && !mUploadComplete && !mErrorLoad &&
+      (mState & XML_HTTP_REQUEST_ASYNC)) {
+    if (mTimerIsActive) {
+      mTimerIsActive = PR_FALSE;
+      mProgressNotifier->Cancel();
+    }
+    MaybeDispatchProgressEvents(PR_TRUE);
+    mUploadComplete = PR_TRUE;
+    DispatchProgressEvent(mUpload, NS_LITERAL_STRING(LOAD_STR),
+                          PR_TRUE, mUploadTotal, mUploadTotal);
+  }
+
   mReadRequest = request;
   mContext = ctxt;
   mState |= XML_HTTP_REQUEST_PARSEBODY;
   mState &= ~XML_HTTP_REQUEST_MPART_HEADERS;
   ChangeState(XML_HTTP_REQUEST_HEADERS_RECEIVED);
 
   if (mResponseType == XML_HTTP_RESPONSE_TYPE_BLOB) {
     nsCOMPtr<nsICachingChannel> cc(do_QueryInterface(mChannel));
     if (cc) {
       cc->SetCacheAsFile(PR_TRUE);
     }
   }
 
-  nsresult status;
-  request->GetStatus(&status);
-  mErrorLoad = mErrorLoad || NS_FAILED(status);
-
-  if (mUpload && !mUploadComplete && !mErrorLoad &&
-      (mState & XML_HTTP_REQUEST_ASYNC)) {
-    mUploadComplete = PR_TRUE;
-    DispatchProgressEvent(mUpload, NS_LITERAL_STRING(LOAD_STR),
-                          PR_TRUE, mUploadTotal, mUploadTotal);
+  ResetResponse();
+
+  if (!mOverrideMimeType.IsEmpty()) {
+    channel->SetContentType(mOverrideMimeType);
   }
 
-  // Reset responseBody
-  mResponseBody.Truncate();
-  mResponseBodyUnicode.SetIsVoid(PR_TRUE);
-  mResponseBlob = nsnull;
-  mResultArrayBuffer = nsnull;
+  DetectCharset();
 
   // Set up responseXML
   PRBool parseBody = mResponseType == XML_HTTP_RESPONSE_TYPE_DEFAULT ||
                      mResponseType == XML_HTTP_RESPONSE_TYPE_DOCUMENT;
   nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(mChannel));
   if (parseBody && httpChannel) {
     nsCAutoString method;
     httpChannel->GetRequestMethod(method);
     parseBody = !method.EqualsLiteral("HEAD");
   }
 
   if (parseBody && NS_SUCCEEDED(status)) {
-    if (!mOverrideMimeType.IsEmpty()) {
-      channel->SetContentType(mOverrideMimeType);
-    }
-
     // We can gain a huge performance win by not even trying to
     // parse non-XML data. This also protects us from the situation
     // where we have an XML document and sink, but HTML (or other)
     // parser, which can produce unreliable results.
     nsCAutoString type;
     channel->GetContentType(type);
 
     if (type.Find("xml") == kNotFound) {
@@ -1913,16 +1977,20 @@ nsXMLHttpRequest::OnStopRequest(nsIReque
     NS_ABORT_IF_FALSE(parser, "stream listener was expected to be a parser");
     mXMLParserStreamListener->OnStopRequest(request, ctxt, status);
   }
 
   mXMLParserStreamListener = nsnull;
   mReadRequest = nsnull;
   mContext = nsnull;
 
+  // If we're received data since the last progress event, make sure to fire
+  // an event for it.
+  MaybeDispatchProgressEvents(PR_TRUE);
+
   nsCOMPtr<nsIChannel> channel(do_QueryInterface(request));
   NS_ENSURE_TRUE(channel, NS_ERROR_UNEXPECTED);
 
   if (NS_SUCCEEDED(status) && mResponseType == XML_HTTP_RESPONSE_TYPE_BLOB) {
     if (!mResponseBlob) {
       CreateResponseBlob(request);
     }
     if (!mResponseBlob) {
@@ -1937,18 +2005,17 @@ nsXMLHttpRequest::OnStopRequest(nsIReque
       if (blobData) {
         memcpy(blobData, mResponseBody.BeginReading(), blobLen);
 
         mResponseBlob =
           new nsDOMMemoryFile(blobData, blobLen,
                               NS_ConvertASCIItoUTF16(contentType));
         mResponseBody.Truncate();
       }
-      NS_ASSERTION(mResponseBodyUnicode.IsVoid(),
-                   "mResponseBodyUnicode should be empty");
+      NS_ASSERTION(mResponseText.IsEmpty(), "mResponseText should be empty");
     }
   }
 
   channel->SetNotificationCallbacks(nsnull);
   mNotificationCallbacks = nsnull;
   mChannelEventSink = nsnull;
   mProgressEventSink = nsnull;
 
@@ -1982,24 +2049,23 @@ nsXMLHttpRequest::OnStopRequest(nsIReque
     mResponseXML->GetDocumentElement(getter_AddRefs(root));
     if (!root) {
       mResponseXML = nsnull;
     }
   }
 
   ChangeState(XML_HTTP_REQUEST_DONE, PR_TRUE);
 
-  PRUint32 responseLength = mResponseBody.Length();
   NS_NAMED_LITERAL_STRING(errorStr, ERROR_STR);
   NS_NAMED_LITERAL_STRING(loadStr, LOAD_STR);
   DispatchProgressEvent(this,
                         mErrorLoad ? errorStr : loadStr,
                         !mErrorLoad,
-                        responseLength,
-                        mErrorLoad ? 0 : responseLength);
+                        mLoadTransferred,
+                        mErrorLoad ? 0 : mLoadTransferred);
   if (mErrorLoad && mUpload && !mUploadComplete) {
     DispatchProgressEvent(mUpload, errorStr, PR_TRUE,
                           mUploadTransferred, mUploadTotal);
   }
 
   if (mErrorLoad) {
     // By nulling out channel here we make it so that Send() can test
     // for that and throw. Also calling the various status
@@ -2387,23 +2453,17 @@ nsXMLHttpRequest::Send(nsIVariant *aBody
       if (!contentType.LowerCaseEqualsLiteral("text/plain") &&
           !contentType.LowerCaseEqualsLiteral("application/x-www-form-urlencoded") &&
           !contentType.LowerCaseEqualsLiteral("multipart/form-data")) {
         mCORSUnsafeHeaders.AppendElement(NS_LITERAL_CSTRING("Content-Type"));
       }
     }
   }
 
-  // Reset responseBody
-  mResponseBody.Truncate();
-  mResponseBodyUnicode.SetIsVoid(PR_TRUE);
-  mResponseBlob = nsnull;
-
-  // Reset responseXML
-  mResponseXML = nsnull;
+  ResetResponse();
 
   rv = CheckChannelForCrossSiteRequest(mChannel);
   NS_ENSURE_SUCCESS(rv, rv);
 
   PRBool withCredentials = !!(mState & XML_HTTP_REQUEST_AC_WITH_CREDENTIALS);
 
   // Hook us up to listen to redirects and the like
   mChannel->GetNotificationCallbacks(getter_AddRefs(mNotificationCallbacks));
@@ -2919,67 +2979,111 @@ nsXMLHttpRequest::OnRedirectVerifyCallba
   mRedirectCallback->OnRedirectVerifyCallback(result);
   mRedirectCallback = nsnull;
 }
 
 /////////////////////////////////////////////////////
 // nsIProgressEventSink methods:
 //
 
+void
+nsXMLHttpRequest::MaybeDispatchProgressEvents(PRBool aFinalProgress)
+{
+  if (aFinalProgress && mTimerIsActive) {
+    mTimerIsActive = PR_FALSE;
+    mProgressNotifier->Cancel();
+  }
+
+  if (mTimerIsActive ||
+      !mProgressSinceLastProgressEvent ||
+      mErrorLoad ||
+      !(mState & XML_HTTP_REQUEST_ASYNC)) {
+    return;
+  }
+
+  if (!aFinalProgress) {
+    StartProgressEventTimer();
+  }
+
+  // We're uploading if our state is XML_HTTP_REQUEST_OPENED or
+  // XML_HTTP_REQUEST_SENT
+  if ((XML_HTTP_REQUEST_OPENED | XML_HTTP_REQUEST_SENT) & mState) {
+    if (aFinalProgress) {
+      mUploadTotal = mUploadTransferred;
+      mUploadProgressMax = mUploadProgress;
+      mUploadLengthComputable = PR_TRUE;
+    }
+    DispatchProgressEvent(this, NS_LITERAL_STRING(UPLOADPROGRESS_STR),
+                          PR_TRUE, mUploadLengthComputable, mUploadTransferred,
+                          mUploadTotal, mUploadProgress,
+                          mUploadProgressMax);
+    if (mUpload && !mUploadComplete) {
+      DispatchProgressEvent(mUpload, NS_LITERAL_STRING(PROGRESS_STR),
+                            PR_TRUE, mUploadLengthComputable, mUploadTransferred,
+                            mUploadTotal, mUploadProgress,
+                            mUploadProgressMax);
+    }
+  } else {
+    if (aFinalProgress) {
+      mLoadTotal = mLoadTransferred;
+      mLoadLengthComputable = PR_TRUE;
+    }
+    mInLoadProgressEvent = PR_TRUE;
+    DispatchProgressEvent(this, NS_LITERAL_STRING(PROGRESS_STR),
+                          PR_TRUE, mLoadLengthComputable, mLoadTransferred,
+                          mLoadTotal, mLoadTransferred, mLoadTotal);
+    mInLoadProgressEvent = PR_FALSE;
+    if (mResponseType == XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT ||
+        mResponseType == XML_HTTP_RESPONSE_TYPE_CHUNKED_ARRAYBUFFER) {
+      mResponseBody.Truncate();
+      mResponseText.Truncate();
+      mResultArrayBuffer = nsnull;
+    }
+  }
+
+  mProgressSinceLastProgressEvent = PR_FALSE;
+}
+
 NS_IMETHODIMP
 nsXMLHttpRequest::OnProgress(nsIRequest *aRequest, nsISupports *aContext, PRUint64 aProgress, PRUint64 aProgressMax)
 {
   // We're in middle of processing multipart headers and we don't want to report
   // any progress because upload's 'load' is dispatched when we start to load
   // the first response.
   if (XML_HTTP_REQUEST_MPART_HEADERS & mState) {
     return NS_OK;
   }
 
   // We're uploading if our state is XML_HTTP_REQUEST_OPENED or
   // XML_HTTP_REQUEST_SENT
   PRBool upload = !!((XML_HTTP_REQUEST_OPENED | XML_HTTP_REQUEST_SENT) & mState);
-  PRUint64 loaded = aProgress;
-  PRUint64 total = aProgressMax;
   // When uploading, OnProgress reports also headers in aProgress and aProgressMax.
   // So, try to remove the headers, if possible.
   PRBool lengthComputable = (aProgressMax != LL_MAXUINT);
   if (upload) {
-   if (lengthComputable) {
+    PRUint64 loaded = aProgress;
+    PRUint64 total = aProgressMax;
+    if (lengthComputable) {
       PRUint64 headerSize = aProgressMax - mUploadTotal;
       loaded -= headerSize;
       total -= headerSize;
     }
+    mUploadLengthComputable = lengthComputable;
     mUploadTransferred = loaded;
     mUploadProgress = aProgress;
     mUploadProgressMax = aProgressMax;
+    mProgressSinceLastProgressEvent = PR_TRUE;
+
+    MaybeDispatchProgressEvents(PR_FALSE);
   } else {
     mLoadLengthComputable = lengthComputable;
-    mLoadTotal = mLoadLengthComputable ? total : 0;
-  }
-
-  if (mTimerIsActive) {
-    // The progress event will be dispatched when the notifier calls Notify().
-    mProgressEventWasDelayed = PR_TRUE;
-    return NS_OK;
-  }
-
-  if (!mErrorLoad && (mState & XML_HTTP_REQUEST_ASYNC)) {
-    StartProgressEventTimer();
-    NS_NAMED_LITERAL_STRING(progress, PROGRESS_STR);
-    NS_NAMED_LITERAL_STRING(uploadprogress, UPLOADPROGRESS_STR);
-    DispatchProgressEvent(this, upload ? uploadprogress : progress, PR_TRUE,
-                          lengthComputable, loaded, lengthComputable ? total : 0,
-                          aProgress, aProgressMax);
-
-    if (upload && mUpload && !mUploadComplete) {
-      NS_WARN_IF_FALSE(mUploadTotal == total, "Wrong upload total?");
-      DispatchProgressEvent(mUpload, progress,  PR_TRUE, lengthComputable, loaded,
-                            lengthComputable ? total : 0, aProgress, aProgressMax);
-    }
+    mLoadTotal = lengthComputable ? aProgressMax : 0;
+    
+    // Don't dispatch progress events here. OnDataAvailable will take care
+    // of that.
   }
 
   if (mProgressEventSink) {
     mProgressEventSink->OnProgress(aRequest, aContext, aProgress,
                                    aProgressMax);
   }
 
   return NS_OK;
@@ -3085,45 +3189,20 @@ nsXMLHttpRequest::GetUpload(nsIXMLHttpRe
   NS_ADDREF(*aUpload = mUpload);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsXMLHttpRequest::Notify(nsITimer* aTimer)
 {
   mTimerIsActive = PR_FALSE;
-  if (NS_SUCCEEDED(CheckInnerWindowCorrectness()) && !mErrorLoad &&
-      (mState & XML_HTTP_REQUEST_ASYNC)) {
-    if (mProgressEventWasDelayed) {
-      mProgressEventWasDelayed = PR_FALSE;
-      if (!(XML_HTTP_REQUEST_MPART_HEADERS & mState)) {
-        StartProgressEventTimer();
-        // We're uploading if our state is XML_HTTP_REQUEST_OPENED or
-        // XML_HTTP_REQUEST_SENT
-        if ((XML_HTTP_REQUEST_OPENED | XML_HTTP_REQUEST_SENT) & mState) {
-          DispatchProgressEvent(this, NS_LITERAL_STRING(UPLOADPROGRESS_STR),
-                                PR_TRUE, PR_TRUE, mUploadTransferred,
-                                mUploadTotal, mUploadProgress,
-                                mUploadProgressMax);
-          if (mUpload && !mUploadComplete) {
-            DispatchProgressEvent(mUpload, NS_LITERAL_STRING(PROGRESS_STR),
-                                  PR_TRUE, PR_TRUE, mUploadTransferred,
-                                  mUploadTotal, mUploadProgress,
-                                  mUploadProgressMax);
-          }
-        } else {
-          DispatchProgressEvent(this, NS_LITERAL_STRING(PROGRESS_STR),
-                                mLoadLengthComputable, mResponseBody.Length(),
-                                mLoadTotal);
-        }
-      }
-    }
-  } else if (mProgressNotifier) {
-    mProgressNotifier->Cancel();
+  if (!(XML_HTTP_REQUEST_MPART_HEADERS & mState)) {
+    MaybeDispatchProgressEvents(PR_FALSE);
   }
+
   return NS_OK;
 }
 
 void
 nsXMLHttpRequest::StartProgressEventTimer()
 {
   if (!mProgressNotifier) {
     mProgressNotifier = do_CreateInstance(NS_TIMER_CONTRACTID);
--- a/content/base/src/nsXMLHttpRequest.h
+++ b/content/base/src/nsXMLHttpRequest.h
@@ -63,16 +63,17 @@
 #include "nsITimer.h"
 #include "nsIPrivateDOMEvent.h"
 #include "nsDOMProgressEvent.h"
 #include "nsDOMEventTargetWrapperCache.h"
 #include "nsContentUtils.h"
 
 class nsILoadGroup;
 class AsyncVerifyRedirectCallbackForwarder;
+class nsIUnicodeDecoder;
 
 class nsXHREventTarget : public nsDOMEventTargetWrapperCache,
                          public nsIXMLHttpRequestEventTarget
 {
 public:
   virtual ~nsXHREventTarget() {}
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsXHREventTarget,
@@ -183,31 +184,36 @@ public:
                              PRBool aLengthComputable,
                              PRUint64 aLoaded, PRUint64 aTotal)
   {
     DispatchProgressEvent(aTarget, aType, PR_FALSE,
                           aLengthComputable, aLoaded, aTotal,
                           aLoaded, aLengthComputable ? aTotal : LL_MAXUINT);
   }
 
+  // Dispatch the "progress" event on the XHR or XHR.upload object if we've
+  // received data since the last "progress" event. Also dispatches
+  // "uploadprogress" as needed.
+  void MaybeDispatchProgressEvents(PRBool aFinalProgress);
+
   // This is called by the factory constructor.
   nsresult Init();
 
   void SetRequestObserver(nsIRequestObserver* aObserver);
 
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(nsXMLHttpRequest,
                                            nsXHREventTarget)
   PRBool AllowUploadProgress();
   void RootResultArrayBuffer();
   
 protected:
   friend class nsMultipartProxyListener;
 
-  nsresult DetectCharset(nsACString& aCharset);
-  nsresult ConvertBodyToText(nsAString& aOutBuffer);
+  nsresult DetectCharset();
+  nsresult AppendToResponseText(const char * aBuffer, PRUint32 aBufferLen);
   static NS_METHOD StreamReaderFunc(nsIInputStream* in,
                 void* closure,
                 const char* fromRawSegment,
                 PRUint32 toOffset,
                 PRUint32 count,
                 PRUint32 *writeCount);
   nsresult CreateResponseParsedJSON(JSContext* aCx);
   nsresult CreateResponseArrayBuffer(JSContext* aCx);
@@ -263,33 +269,50 @@ protected:
     NS_DECL_NSIHTTPHEADERVISITOR
     nsHeaderVisitor() { }
     virtual ~nsHeaderVisitor() {}
     const nsACString &Headers() { return mHeaders; }
   private:
     nsCString mHeaders;
   };
 
-  // The bytes of our response body
+  // The bytes of our response body. Only used for DEFAULT, ARRAYBUFFER and
+  // BLOB responseTypes
   nsCString mResponseBody;
 
-  // The Unicode version of our response body.  This is just a cache; if the
-  // string is not void, we have a cached value.  This works because we only
-  // allow looking at this value once state is INTERACTIVE, and at that
-  // point our charset can only change due to more data coming in, which
-  // will cause us to clear the cached value anyway.
-  nsString mResponseBodyUnicode;
+  // The text version of our response body. This is incrementally decoded into
+  // as we receive network data. However for the DEFAULT responseType we
+  // lazily decode into this from mResponseBody only when .responseText is
+  // accessed.
+  // Only used for DEFAULT and TEXT responseTypes.
+  nsString mResponseText;
+  
+  // For DEFAULT responseType we use this to keep track of how far we've
+  // lazily decoded from mResponseBody to mResponseText
+  PRUint32 mResponseBodyDecodedPos;
+
+  // Decoder used for decoding into mResponseText
+  // Only used for DEFAULT, TEXT and JSON responseTypes.
+  // In cases where we've only received half a surrogate, the decoder itself
+  // carries the state to remember this. Next time we receive more data we
+  // simply feed the new data into the decoder which will handle the second
+  // part of the surrogate.
+  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
+
+  nsCString mResponseCharset;
 
   enum {
     XML_HTTP_RESPONSE_TYPE_DEFAULT,
     XML_HTTP_RESPONSE_TYPE_ARRAYBUFFER,
     XML_HTTP_RESPONSE_TYPE_BLOB,
     XML_HTTP_RESPONSE_TYPE_DOCUMENT,
     XML_HTTP_RESPONSE_TYPE_TEXT,
-    XML_HTTP_RESPONSE_TYPE_JSON
+    XML_HTTP_RESPONSE_TYPE_JSON,
+    XML_HTTP_RESPONSE_TYPE_CHUNKED_TEXT,
+    XML_HTTP_RESPONSE_TYPE_CHUNKED_ARRAYBUFFER
   } mResponseType;
 
   nsCOMPtr<nsIDOMBlob> mResponseBlob;
 
   nsCString mOverrideMimeType;
 
   /**
    * The notification callbacks the channel had when Send() was
@@ -308,36 +331,42 @@ protected:
 
   nsCOMPtr<nsIURI> mBaseURI;
 
   PRUint32 mState;
 
   nsRefPtr<nsXMLHttpRequestUpload> mUpload;
   PRUint64 mUploadTransferred;
   PRUint64 mUploadTotal;
+  PRPackedBool mUploadLengthComputable;
   PRPackedBool mUploadComplete;
+  PRPackedBool mProgressSinceLastProgressEvent;
   PRUint64 mUploadProgress; // For legacy
   PRUint64 mUploadProgressMax; // For legacy
 
   PRPackedBool mErrorLoad;
 
   PRPackedBool mTimerIsActive;
   PRPackedBool mProgressEventWasDelayed;
   PRPackedBool mLoadLengthComputable;
   PRUint64 mLoadTotal; // 0 if not known.
+  PRUint64 mLoadTransferred;
   nsCOMPtr<nsITimer> mProgressNotifier;
 
   PRPackedBool mFirstStartRequestSeen;
+  PRPackedBool mInLoadProgressEvent;
   
   nsCOMPtr<nsIAsyncVerifyRedirectCallback> mRedirectCallback;
   nsCOMPtr<nsIChannel> mNewRedirectChannel;
   
   jsval mResultJSON;
   JSObject* mResultArrayBuffer;
 
+  void ResetResponse();
+
   struct RequestHeader
   {
     nsCString header;
     nsCString value;
   };
   nsTArray<RequestHeader> mModifiedRequestHeaders;
 };
 
--- a/content/base/test/Makefile.in
+++ b/content/base/test/Makefile.in
@@ -261,16 +261,17 @@ include $(topsrcdir)/config/rules.mk
 		test_bug450160.html \
 		test_bug453736.html \
 		test_bug454326.html \
 		test_bug505783.html \
 		test_bug457746.html \
 		test_bug587931.html \
 		test_bug592829.html \
 		test_bug518104.html \
+		test_bug682463.html \
 		bug457746.sjs \
 		test_CrossSiteXHR.html \
 		test_CrossSiteXHR_origin.html \
 		file_CrossSiteXHR_inner.html \
 		file_CrossSiteXHR_inner_data.sjs \
 		file_CrossSiteXHR_inner.jar \
 		file_CrossSiteXHR_server.sjs \
 		test_CrossSiteXHR_cache.html \
@@ -493,16 +494,18 @@ include $(topsrcdir)/config/rules.mk
 		badMessageEvent.eventsource \
 		badMessageEvent.eventsource^headers^ \
 		forRemoval.resource \
 		forRemoval.resource^headers^ \
 		accesscontrol.resource \
 		accesscontrol.resource^headers^ \
 		invalid_accesscontrol.resource \
 		invalid_accesscontrol.resource^headers^ \
+		test_xhr_progressevents.html \
+		progressserver.sjs \
 		somedatas.resource \
 		somedatas.resource^headers^ \
 		delayedServerEvents.sjs \
 		test_bug664916.html \
 		test_bug666604.html \
 		test_bug675121.html \
 		file_bug675121.sjs \
 		test_bug654352.html \
new file mode 100644
--- /dev/null
+++ b/content/base/test/progressserver.sjs
@@ -0,0 +1,51 @@
+const CC = Components.Constructor;
+const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1",
+                             "nsIBinaryInputStream",
+                             "setInputStream");
+
+function setReq(req) {
+  setObjectState("content/base/test/progressserver", req);
+}
+
+function getReq() {
+  var req;
+  getObjectState("content/base/test/progressserver", function(v) {
+    req = v;
+  });
+  return req;
+}
+
+function handleRequest(request, response)
+{
+  var pairs = request.queryString.split('&');
+  var command = pairs.shift();
+
+  var bodyStream = new BinaryInputStream(request.bodyInputStream);
+  var body = "";
+  var bodyAvail;
+  while ((bodyAvail = bodyStream.available()) > 0)
+    body += String.fromCharCode.apply(null, bodyStream.readByteArray(bodyAvail));
+
+  if (command == "open") {
+    response.processAsync();
+    setReq(response);
+
+    response.setHeader("Cache-Control", "no-cache", false);
+    pairs.forEach(function (val) {
+      var [name, value] = val.split('=');
+      response.setHeader(name, unescape(value), false);
+    });
+    response.write(body);
+    return;
+  }
+
+  if (command == "send") {
+    getReq().write(body);
+  }
+  else if (command == "close") {
+    getReq().finish();
+    setReq(null);
+  }
+  response.setHeader("Content-Type", "text/plain");
+  response.write("ok");
+}
--- a/content/base/test/test_XHR.html
+++ b/content/base/test/test_XHR.html
@@ -9,51 +9,16 @@
 <p id="display"></p>
 <div id="content" style="display: none">
   
 </div>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 SimpleTest.waitForExplicitFinish();
 
-// test receiving as JSON
-function testJSON(aJsonStr, invalid) {
-  var errorThrown = false;
-  var anotherErrorThrown = false;
-  var xhr = new XMLHttpRequest();
-  
-  var didthrow = false;
-  try { xhr.responseType = 'moz-json'; } catch (e) { didthrow = true; }
-  ok(didthrow, 
-     "should have thrown when setting responseType to moz-json before open");
-
-  xhr.open("POST", 'responseIdentical.sjs', false);
-  xhr.responseType = 'moz-json';
-  xhr.send(aJsonStr);
-
-  if (!invalid) {
-    is(JSON.stringify(xhr.response), aJsonStr);
-    is(xhr.response, xhr.response, "returning the same object on each access");
-  }
-  else {
-    var didThrow = false;
-    try { xhr.response } catch(ex) { didThrow = true; }
-    ok(didThrow, "accessing response should throw");
-
-    didThrow = false;
-    try { xhr.response } catch(ex) { didThrow = true; }
-    ok(didThrow, "accessing response should throw");
-  } 
-}
-
-var jsonStr = '{"title":"aBook","author":"john"}';
-testJSON(jsonStr, false);
-var invalidJson = '{ "abc": }'
-testJSON(invalidJson, true);
-
 var path = "/tests/content/base/test/";
 
 var passFiles = [['file_XHR_pass1.xml', 'GET'],
                  ['file_XHR_pass2.txt', 'GET'],
                  ['file_XHR_pass3.txt', 'GET'],
                  ];
 
 var failFiles = [['//example.com' + path + 'file_XHR_pass1.xml', 'GET'],
@@ -104,28 +69,35 @@ function checkResponseTextAccessThrows(x
   try { xhr.responseText } catch (e) { didthrow = true; }
   ok(didthrow, "should have thrown when accessing responseText");
 }
 function checkResponseXMLAccessThrows(xhr) {
   var didthrow = false;
   try { xhr.responseXML } catch (e) { didthrow = true; }
   ok(didthrow, "should have thrown when accessing responseXML");
 }
-function checkSetResponseTypeThrows(xhr) {
+function checkResponseAccessThrows(xhr) {
   var didthrow = false;
-  try { xhr.responseType = 'document'; } catch (e) { didthrow = true; }
-  ok(didthrow, "should have thrown when accessing responseType");
+  try { xhr.response } catch (e) { didthrow = true; }
+  ok(didthrow, "should have thrown when accessing response");
+}
+function checkSetResponseTypeThrows(xhr, type) {
+  var didthrow = false;
+  try { xhr.responseType = type; } catch (e) { didthrow = true; }
+  ok(didthrow, "should have thrown when setting responseType");
 }
 
 xhr = new XMLHttpRequest();
-checkSetResponseTypeThrows(xhr);
+checkSetResponseTypeThrows(xhr, "document");
 xhr.open("GET", 'file_XHR_pass1.xml', false); 
+checkSetResponseTypeThrows(xhr, "moz-chunked-text");
+checkSetResponseTypeThrows(xhr, "moz-chunked-arraybuffer");
 xhr.responseType = 'document';
 xhr.send(null);
-checkSetResponseTypeThrows(xhr);
+checkSetResponseTypeThrows(xhr, "document");
 is(xhr.status, 200, "wrong status");
 checkResponseTextAccessThrows(xhr);
 is((new XMLSerializer()).serializeToString(xhr.response.documentElement),
    "<res>hello</res>",
    "wrong response");
 
 // test response (responseType='text')
 xhr = new XMLHttpRequest();
@@ -173,26 +145,40 @@ xhr.open("GET", 'file_XHR_binary1.bin', 
 xhr.responseType = 'arraybuffer';
 xhr.send(null)
 is(xhr.status, 200, "wrong status");
 checkResponseTextAccessThrows(xhr);
 checkResponseXMLAccessThrows(xhr);
 ab = xhr.response;
 ok(ab != null, "should have a non-null arraybuffer");
 arraybuffer_equals_to(ab, "\xaa\xee\0\x03\xff\xff\xff\xff\xbb\xbb\xbb\xbb");
+is(xhr.response, xhr.response, "returns the same ArrayBuffer");
 
-// test array buffer GetResult returns the same object
-xhr = new XMLHttpRequest();
-xhr.open("GET", 'file_XHR_binary1.bin', false); 
-xhr.responseType = 'arraybuffer';
-xhr.send(null)
+// test response (responseType='moz-json')
+var xhr = new XMLHttpRequest();
+xhr.open("POST", 'responseIdentical.sjs', false);
+xhr.responseType = 'moz-json';
+jsonObjStr = JSON.stringify({title: "aBook", author: "john"});
+xhr.send(jsonObjStr);
 is(xhr.status, 200, "wrong status");
 checkResponseTextAccessThrows(xhr);
 checkResponseXMLAccessThrows(xhr);
-is(xhr.response, xhr.response, "returns the same ArrayBuffer");
+is(JSON.stringify(xhr.response), jsonObjStr, "correct result");
+is(xhr.response, xhr.response, "returning the same object on each access");
+
+// with invalid json
+var xhr = new XMLHttpRequest();
+xhr.open("POST", 'responseIdentical.sjs', false);
+xhr.responseType = 'moz-json';
+xhr.send("{");
+is(xhr.status, 200, "wrong status");
+checkResponseTextAccessThrows(xhr);
+checkResponseXMLAccessThrows(xhr);
+checkResponseAccessThrows(xhr);
+checkResponseAccessThrows(xhr); // Check twice to ensure that we still throw
 
 // test response (responseType='blob')
 var onloadCount = 0;
 function checkOnloadCount() {
   if (++onloadCount >= 2) SimpleTest.finish();
 };
 
 // with a simple text file
new file mode 100644
--- /dev/null
+++ b/content/base/test/test_bug682463.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=682463
+-->
+<head>
+  <title>Test for Bug 682463</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=682463">Mozilla Bug 682463</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+  
+</div>
+<pre id="test">
+<script type="application/javascript">
+
+/** Test for Bug 682463 **/
+
+  function text(s) {
+    return document.createTextNode(s);
+  }
+  function div(l,r) {
+    var div = document.createElement("DIV");
+    if (l) div.appendChild(l);
+    if (r) div.appendChild(r);
+    return div;
+  }
+  function createRange(sn,so,en,eo) {
+    var r = document.createRange();
+    r.setStart(sn,so);
+    r.setEnd(en,eo);
+    return r;
+  }
+  function verifyRange(msg,r,sn,so,en,eo) {
+    ok(r.startContainer == sn && r.startOffset == so &&
+       r.endContainer == en && r.endOffset == eo, msg);
+  }
+  function showRange(r,msg) {
+    var s = "" + r.startContainer + ":  " + r.startOffset;
+    s+= '\n';
+    s += "" + r.endContainer + ":  " + r.endOffset;
+    alert(msg + ':\n' + s)
+  }
+
+  var tests = [
+  function() {
+    var t = text("foobar");
+    var r = createRange(t,2,t,t.length);
+    var t2 = t.splitText(1);
+    verifyRange("split before, no parent",r,t2,1,t2,5);
+  },
+  function() {
+    var t = text("foobar");
+    var r = createRange(t,0,t,t.length);
+    var t2 = t.splitText(3);
+    verifyRange("split middle, no parent",r,t,0,t,3);
+  },
+  function() {
+    var t = text("foobar");
+    var r = createRange(t,0,t,t.length);
+    var n = t.length;
+    var t2 = t.splitText(n);
+    verifyRange("split after, no parent",r,t,0,t,n);
+  },
+  function() {
+    var t = text("foobar");
+    var parent = div(t);
+    var r = createRange(t,0,t,t.length);
+    var t2 = t.splitText(3);
+    verifyRange("split middle, parent",r,t,0,t2,3);
+    parent.removeChild(t);
+    verifyRange("removed left, parent",r,parent,0,t2,3);
+    var t2b = t2.splitText(1);
+    verifyRange("split middle, parent, end",r,parent,0,t2b,2);
+  },
+  function() {
+    var t0 = text("x");
+    var t = text("foobar");
+    var parent = div(t0,t);
+    var r = createRange(t,0,t,t.length);
+    var t2 = t.splitText(3);
+    parent.removeChild(t);
+    verifyRange("removed left, text sibling",r,parent,1,t2,3);
+  },
+  function() {
+    var t = text("foobar");
+    var parent = div(t);
+    var r = createRange(t,2,t,t.length);
+    var t2 = t.splitText(1);
+    verifyRange("split before, parent",r,t2,1,t2,5);
+    parent.removeChild(t2);
+    verifyRange("removed right, parent",r,parent,1,parent,1);
+  },
+  function() {
+    var t = text("foobar");
+    var parent = div(t);
+    var r = createRange(t,0,t,t.length);
+    var n = t.length;
+    var t2 = t.splitText(n);
+    verifyRange("split after, parent",r,t,0,t,n);
+    r.setEnd(t2,0);
+    verifyRange("split after, parent, extend",r,t,0,t2,0);
+    t2.splitText(0);
+    verifyRange("split after, parent, extend, split end",r,t,0,t2,0);
+    t2.textContent = "baz";
+    t2.splitText(2);
+    verifyRange("split after, parent, extend, split after end",r,t,0,t2,0);
+    r.setEnd(t2,2);
+    var t2b = t2.splitText(1);
+    verifyRange("split after, parent, split end",r,t,0,t2b,1);
+  },
+  function() {
+    var t = text("foobar");
+    var parent = div(t);
+    document.body.appendChild(parent);
+    var r = createRange(t,0,t,t.length);
+    var t2 = t.splitText(3);
+    verifyRange("split middle, in document",r,t,0,t2,3);
+  },
+  function() {
+    var t = text("foobar");
+    var parent = div(t);
+    document.body.appendChild(parent);
+    var r = createRange(t,2,t,t.length);
+    var t2 = t.splitText(1);
+    verifyRange("split before, in document",r,t2,1,t2,5);
+  },
+  function() {
+    var t = text("foobar");
+    var parent = div(t);
+    document.body.appendChild(parent);
+    var r = createRange(t,0,t,t.length);
+    var n = t.length;
+    var t2 = t.splitText(n);
+    verifyRange("split after, in document",r,t,0,t,n);
+  }
+  ];
+
+  function runTests() {
+    var len = tests.length;
+    for (var i = 0; i < len; ++i) {
+      tests[i]();
+    }
+    SimpleTest.finish();
+  }
+
+addLoadEvent(runTests);
+SimpleTest.waitForExplicitFinish();
+
+</script>
+</pre>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/content/base/test/test_xhr_progressevents.html
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for XMLHttpRequest Progress Events</title>
+  <script type="text/javascript" src="/MochiKit/packed.js"></script>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>        
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body onload="gen.next();">
+<pre id=l></pre>
+<script type="application/javascript;version=1.7">
+SimpleTest.waitForExplicitFinish();
+
+var gen = runTests();
+
+function log(s) {
+  //document.getElementById("l").textContent += s + "\n";
+}
+
+function getEvent(e) {
+  log("got event: " + e.type + " (" + e.target.readyState + ")");
+  gen.send(e);
+}
+
+function startsWith(a, b) {
+  return a.substr(0, b.length) === b;
+}
+
+function updateProgress(e, data, testName) {
+  var test = " while running " + testName;
+  is(e.type, "progress", "event type" + test);
+  
+  let response;
+  if (data.nodata) {
+    is(e.target.response, null, "response should be null" + test);
+    response = null;
+  }
+  else if (data.text) {
+    is(typeof e.target.response, "string", "response should be a string" + test);
+    response = e.target.response;
+  }
+  else {
+    ok(e.target.response instanceof ArrayBuffer, "response should be a ArrayBuffer" + test);
+    response = bufferToString(e.target.response);
+  }
+
+  if (!data.nodata && !data.encoded) {
+    if (!data.chunked) {
+      is(e.loaded, response.length, "event.loaded matches response size" + test);
+    }
+    else {
+      is(e.loaded - data.receivedBytes, response.length,
+         "event.loaded grew by response size" + test);
+    }
+  }
+  ok(e.loaded > data.receivedBytes, "event.loaded increased" + test);
+  ok(e.loaded - data.receivedBytes <= data.pendingBytes,
+     "event.loaded didn't increase too much" + test);
+
+  if (!data.nodata) {
+    var newData;
+    ok(startsWith(response, data.receivedResult),
+       "response strictly grew" + test);
+    newData = response.substr(data.receivedResult.length);
+  
+    if (!data.encoded) {
+      ok(newData.length > 0, "sanity check for progress" + test);
+    }
+    ok(startsWith(data.pendingResult, newData), "new data matches expected" + test);
+  }
+
+  is(e.lengthComputable, "total" in data, "lengthComputable" + test);
+  if ("total" in data) {
+    is(e.total, data.total, "total" + test);
+  }
+
+  if (!data.nodata) {
+    data.pendingResult = data.pendingResult.substr(newData.length);
+  }
+  data.pendingBytes -= e.loaded - data.receivedBytes;
+  data.receivedResult = response;
+  data.receivedBytes = e.loaded;
+}
+
+function sendData(s) {
+  var xhr = new XMLHttpRequest();
+  xhr.open("POST", "progressserver.sjs?send");
+  xhr.sendAsBinary(s);
+}
+
+function closeConn() {
+  log("in closeConn");
+  var xhr = new XMLHttpRequest();
+  xhr.open("POST", "progressserver.sjs?close");
+  xhr.send();
+}
+
+var longString = "long";
+while(longString.length < 65536)
+  longString += longString;
+
+function utf8encode(s) {
+  return unescape(encodeURIComponent(s));
+}
+
+function bufferToString(buffer) {
+  return String.fromCharCode.apply(String, new Uint8Array(buffer));
+}
+
+function runTests() {
+  var xhr = new XMLHttpRequest();
+  xhr.onprogress = xhr.onload = xhr.onerror = xhr.onreadystatechange = xhr.onloadend = getEvent;
+
+  var responseTypes = [{ type: "text", text: true },
+                       { type: "arraybuffer", text: false, nodata: true },
+                       { type: "blob", text: false, nodata: true },
+                       { type: "document", text: true, nodata: true },
+                       { type: "moz-json", text: true, nodata: true },
+                       { type: "", text: true },
+                       { type: "moz-chunked-text", text: true, chunked: true },
+                       { type: "moz-chunked-arraybuffer", text: false, chunked: true },
+                      ];
+  var responseType;
+  while (responseType = responseTypes.shift()) {
+    let tests = [{ open: "Content-Type=text/plain", name: "simple test" },
+                 { data: "hello world" },
+                 { data: "\u0000\u0001\u0002\u0003" },
+                 { data: longString },
+                 { data: "x" },
+                 { close: true },
+                 { open: "Content-Type=text/plain&Content-Length=20", name: "with length", total: 20 },
+                 // 5 bytes from the "ready" in the open step
+                 { data: "abcde" },
+                 { data: "0123456789" },
+                 { close: true },
+                 { open: "Content-Type=application/xml", data: "ready", name: "without length, as xml" },
+                 { data: "<out>" },
+                 { data: "text" },
+                 { data: "</foo>invalid" },
+                 { close: true },
+                 { open: "Content-Type=text/plain;charset%3dutf-8", name: "utf8 data", encoded: true },
+                 { data: utf8encode("räksmörgås"), utf16: "räksmörgås" },
+                 { data: utf8encode("Å").substr(0,1), utf16: "" },
+                 { data: utf8encode("Å").substr(1), utf16: "Å" },
+                 { data: utf8encode("aöb").substr(0,2), utf16: "a" },
+                 { data: utf8encode("aöb").substr(2), utf16: "öb" },
+                 { data: utf8encode("a\u867Eb").substr(0,3), utf16: "a" },
+                 { data: utf8encode("a\u867Eb").substr(3,1), utf16: "\u867E" },
+                 { data: utf8encode("a\u867Eb").substr(4), utf16: "b" },
+                 { close: true },
+                 ];
+    let testState = { index: 0 };
+  
+    for (let i = 0; i < tests.length; ++i) {
+      let test = tests[i];
+      testState.index++;
+      if ("open" in test) {
+        log("opening " + testState.name);
+        testState = { name: test.name + " for " + responseType.type,
+                      index: 0,
+                      pendingResult: "ready",
+                      pendingBytes: 5,
+                      receivedResult: "",
+                      receivedBytes: 0,
+                      total: test.total,
+                      encoded: test.encoded,
+                      nodata: responseType.nodata,
+                      chunked: responseType.chunked,
+                      text: responseType.text };
+  
+        xhr.onreadystatechange = null;
+        xhr.open("POST", "progressserver.sjs?open&" + test.open);
+        xhr.responseType = responseType.type;
+        xhr.send("ready");
+        xhr.onreadystatechange = getEvent;
+
+        let e = yield;
+        is(e.type, "readystatechange", "should readystate to headers-received starting " + testState.name);
+        is(xhr.readyState, xhr.HEADERS_RECEIVED, "should be in state HEADERS_RECEIVED starting " + testState.name);
+  
+        e = yield;
+        is(e.type, "readystatechange", "should readystate to loading starting " + testState.name);
+        is(xhr.readyState, xhr.LOADING, "should be in state LOADING starting " + testState.name);
+        if (typeof testState.total == "undefined")
+          delete testState.total;
+      }
+      else if ("close" in test) {
+        log("closing");
+        closeConn();
+
+        e = yield;
+        is(e.type, "readystatechange", "should readystate to done closing " + testState.name);
+        is(xhr.readyState, xhr.DONE, "should be in state DONE closing " + testState.name);
+        log("readystate to 4");
+
+        if (responseType.chunked) {
+          xhr.responseType;
+          is(xhr.response, null, "chunked data has null response for " + testState.name);
+        }
+      
+        e = yield;
+        is(e.type, "load", "should fire load closing " + testState.name);
+        is(e.lengthComputable, true, "length should be computable during load closing " + testState.name);
+        log("got load");
+
+        if (responseType.chunked) {
+          is(xhr.response, null, "chunked data has null response for " + testState.name);
+        }
+      
+        e = yield;
+        is(e.type, "loadend", "should fire loadend closing " + testState.name);
+        is(e.lengthComputable, true, "length should be computable during loadend closing " + testState.name);
+        log("got loadend");
+
+        if (responseType.chunked) {
+          is(xhr.response, null, "chunked data has null response for " + testState.name);
+        }
+
+        if (!testState.nodata || responseType.chunked) {
+          // This branch intentionally left blank
+          // Under these conditions we check the response during updateProgress
+        }
+        else if (responseType.type === "arraybuffer") {
+          is(bufferToString(xhr.response), testState.pendingResult,
+             "full response for " + testState.name);
+        }
+        else if (responseType.type === "blob") {
+          let reader = new FileReader;
+          reader.readAsBinaryString(xhr.response);
+          reader.onloadend = getEvent;
+          yield;
+
+          is(reader.result, testState.pendingResult,
+             "full response in blob for " + testState.name);
+        }
+
+        testState.name = "";
+      }
+      else {
+        log("sending");
+        if (responseType.text) {
+          testState.pendingResult += "utf16" in test ? test.utf16 : test.data;
+        }
+        else {
+          testState.pendingResult += test.data;
+        }
+        testState.pendingBytes = test.data.length;
+        sendData(test.data);
+      }
+  
+      while(testState.pendingBytes) {
+        log("waiting for more bytes: " + testState.pendingBytes);
+        e = yield;
+        // Readystate can fire several times between each progress event.
+        if (e.type === "readystatechange")
+          continue;
+  
+        updateProgress(e, testState, "data for " + testState.name + "[" + testState.index + "]");
+        if (responseType.chunked) {
+          testState.receivedResult = "";
+        }
+      }
+
+      if (!testState.nodata) {
+        is(testState.pendingResult, "",
+           "should have consumed the expected result");
+      }
+
+      log("done with this test");
+    }
+  
+    is(testState.name, "", "forgot to close last test");
+  }
+
+  SimpleTest.finish();
+  yield;
+}
+
+</script>
+
+</body>
+</html>
--- a/embedding/android/CrashReporter.java.in
+++ b/embedding/android/CrashReporter.java.in
@@ -115,17 +115,17 @@ public class CrashReporter extends Activ
     mProgressDialog = new ProgressDialog(CrashReporter.this);
     mProgressDialog.setMessage(getString(R.string.sending_crash_report));
 
     final Button restartButton = (Button) findViewById(R.id.restart);
     final Button closeButton = (Button) findViewById(R.id.close);
     String passedMinidumpPath = getIntent().getStringExtra("minidumpPath");
     File passedMinidumpFile = new File(passedMinidumpPath);
     File pendingDir =
-      new File("/data/data/@ANDROID_PACKAGE_NAME@/mozilla/Crash Reports/pending");
+      new File("/data/data/@ANDROID_PACKAGE_NAME@/files/mozilla/Crash Reports/pending");
     pendingDir.mkdirs();
     mPendingMinidumpFile = new File(pendingDir, passedMinidumpFile.getName());
     moveFile(passedMinidumpFile, mPendingMinidumpFile);
 
     File extrasFile = new File(passedMinidumpPath.replaceAll(".dmp", ".extra"));
     mPendingExtrasFile = new File(pendingDir, extrasFile.getName());
     moveFile(extrasFile, mPendingExtrasFile);
 
@@ -290,17 +290,17 @@ public class CrashReporter extends Activ
       os.close();
       BufferedReader br = new BufferedReader(
         new InputStreamReader(conn.getInputStream()));
       HashMap<String, String>  responseMap = new HashMap<String, String>();
       readStringsFromReader(br, responseMap);
 
       if (conn.getResponseCode() == conn.HTTP_OK) {
         File submittedDir = new File(
-          "/data/data/@ANDROID_PACKAGE_NAME@/mozilla/Crash Reports/submitted");
+          "/data/data/@ANDROID_PACKAGE_NAME@/files/mozilla/Crash Reports/submitted");
         submittedDir.mkdirs();
         minidumpFile.delete();
         extrasFile.delete();
         String crashid = responseMap.get("CrashID");
         File file = new File(submittedDir, crashid + ".txt");
         FileOutputStream fos = new FileOutputStream(file);
         fos.write("Crash ID: ".getBytes());
         fos.write(crashid.getBytes());
--- a/embedding/android/GeckoAppShell.java
+++ b/embedding/android/GeckoAppShell.java
@@ -273,17 +273,18 @@ public class GeckoAppShell
     public static void loadGeckoLibs(String apkName) {
         // The package data lib directory isn't placed in ld.so's
         // search path, so we have to manually load libraries that
         // libxul will depend on.  Not ideal.
         System.loadLibrary("mozutils");
         GeckoApp geckoApp = GeckoApp.mAppContext;
         String homeDir;
         if (Build.VERSION.SDK_INT < 8 ||
-            geckoApp.getApplication().getPackageResourcePath().startsWith("/data")) {
+            geckoApp.getApplication().getPackageResourcePath().startsWith("/data") ||
+            geckoApp.getApplication().getPackageResourcePath().startsWith("/system")) {
             File home = geckoApp.getFilesDir();
             homeDir = home.getPath();
             // handle the application being moved to phone from sdcard
             File profileDir = new File(homeDir, "mozilla");
             File oldHome = new File("/data/data/" + 
                         GeckoApp.mAppContext.getPackageName() + "/mozilla");
             if (oldHome.exists())
                 moveDir(oldHome, profileDir);
--- a/js/src/config/system-headers
+++ b/js/src/config/system-headers
@@ -35,17 +35,16 @@ app/Message.h
 app/MessageRunner.h
 arpa/inet.h
 arpa/nameser.h
 asm/sigcontext.h
 asm/signal.h
 ASRegistry.h
 assert.h
 atk/atk.h
-atlbase.h
 atlcom.h
 atlconv.h
 atlctl.cpp
 atlctl.h
 ATLCTL.H
 atlhost.h
 atlimpl.cpp
 atlwin.cpp
--- a/layout/generic/test/Makefile.in
+++ b/layout/generic/test/Makefile.in
@@ -120,16 +120,17 @@ include $(topsrcdir)/config/rules.mk
   file_bug579767_2.html \
   test_bug522632.html \
   test_bug589621.html \
   test_bug589623.html \
   test_bug633762.html \
   bug633762_iframe.html \
   $(srcdir)/../../reftests/backgrounds/blue-32x32.png \
   $(srcdir)/../../reftests/backgrounds/fuchsia-32x32.png \
+  test_selection_splitText-normalize.html \
   $(NULL)
 
 _CHROME_FILES = \
   test_bug632379.xul \
   test_bug508115.xul \
   test_bug469613.xul \
   test_bug469774.xul \
   test_backspace_delete.xul \
new file mode 100644
--- /dev/null
+++ b/layout/generic/test/test_selection_splitText-normalize.html
@@ -0,0 +1,173 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=191864
+-->
+<head>
+  <title>Test for Bug 191864</title>
+  <script type="application/javascript" src="/MochiKit/packed.js"></script>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=191864">Mozilla Bug 191864</a>
+<p id="display">
+<span id="col1" style="float:left; height:800px; width:180px;"></span>
+<span id="col2" style="float:left; height:800px; width:180px;"></span>
+</p>
+<div id="content" style="display: none">
+  
+</div>
+<pre id="test">
+<script type="application/javascript;version=1.7">
+var tests = [
+ [ {}, [0,4], "012345678" ],
+ [ {}, [0,0], "012345678" ],
+ [ {}, [0,9], "012345678" ],
+ [ {startOffset:4}, [0,4], "012345678" ],
+ [ {startOffset:5}, [0,4], "012345678" ],
+ [ {startOffset:5,endOffset:6}, [0,4], "012345678" ],
+ [ {endOffset:5}, [0,4], "012345678" ],
+ [ {endOffset:4}, [0,4], "012345678" ],
+ [ {endOffset:3}, [0,4], "012345678" ],
+ [ {startOffset:1,endOffset:3}, [0,4], "012345678" ],
+ [ {startOffset:7,endOffset:7}, [0,4], "012345678" ],
+ [ {startOffset:4,endOffset:4}, [0,4], "012345678" ],
+ [ {endNode:1}, [0,4], "012345678", "" ],
+ [ {endNode:1}, [0,4], "01234567", "8" ],
+ [ {endNode:1}, [1,4], "0", "12345678" ],
+ [ {endNode:2}, [1,4], "0", "12345", "678" ],
+]
+
+function runtest(r,p,t) {
+  // create content
+  document.original_nodes = [];
+  for (let i = 2; i < t.length; ++i) {
+    c = document.createTextNode(t[i]);
+    p.appendChild(c);
+    document.original_nodes.push(c);
+  }
+
+  // setup the range
+  let sel = t[0]
+  let startNode = p.firstChild;
+  let startOffset = sel.startOffset === undefined ? 0 : sel.startOffset;
+  let endNode = sel.endNode === undefined ? startNode : p.childNodes[sel.endNode];
+  let endOffset = sel.endOffset === undefined ? endNode.length : sel.endOffset;
+  r.setStart(startNode, startOffset);
+  r.setEnd(endNode, endOffset);
+
+  // splitText
+  let split = t[1]
+  p.childNodes[split[0]].splitText(split[1])
+}
+function test_split(r,p,t) {
+    runtest(r,p,t);
+}
+function test_split_merge(r,p,t) {
+    runtest(r,p,t);
+    p.normalize();
+}
+</script>
+
+<script type="application/javascript;version=1.7">
+
+/** Test for Bug 191864 **/
+
+var results = [
+/* test_split */
+ [ {},                                        [ [0, "0123"], "45678" ]],
+ [ {},                                        [ [0, ""], "012345678" ]],
+ [ {endNode:0, endOffset:9},                  [ [0, "012345678"], "" ]],
+ [ {startOffset:4},                           [ [0, "0123"], "45678" ]],
+ [ {startNode:1, startOffset:1},              [ [0, "0123"], "45678" ]],
+ [ {startNode:1, startOffset:1, endOffset:2}, [ [0, "0123"], "45678" ]],
+ [ {endOffset:1},                             [ [0, "0123"], "45678" ]],
+ [ {endNode:0},                               [ [0, "0123"], "45678" ]],
+ [ {endNode:0, endOffset:3},                  [ [0, "0123"], "45678" ]],
+ [ {startOffset:1, endNode:0, endOffset:3},   [ [0, "0123"], "45678" ]],
+ [ {startNode:1, startOffset:3, endOffset:3}, [ [0, "0123"], "45678" ]],
+ [ {startOffset:4, endNode:0},                [ [0, "0123"], "45678" ]],
+ [ {endNode:2, endOffset:0},                  [ [0, "0123"], "45678", [1, ""] ]],
+ [ {endNode:2},                               [ [0, "0123"], "4567", [1, "8"] ]],
+ [ {endNode:2},                               [ [0, "0"], [1, "1234"], "5678" ]],
+ [ {endNode:3},                               [ [0, "0"], [1, "1234"], "5", [2, "678"] ]],
+/* test_split_merge */
+ [ {},                                        [ [0, "012345678" ] ]],
+ [ {startParent:true},                        [ "012345678" ]],     /* splitText() creates an empty first child which is removed by normalize() */
+ [ {},                                        [ [0, "012345678" ] ]],
+ [ {startOffset:4},                           [ [0, "012345678" ] ]],
+ [ {startOffset:5},                           [ [0, "012345678" ] ]],
+ [ {startOffset:5,endOffset:6},               [ [0, "012345678" ] ]],
+ [ {endOffset:5},                             [ [0, "012345678" ] ]],
+ [ {endOffset:4},                             [ [0, "012345678" ] ]],
+ [ {endOffset:3},                             [ [0, "012345678" ] ]],
+ [ {startOffset:1,endOffset:3},               [ [0, "012345678" ] ]],
+ [ {startOffset:7,endOffset:7},               [ [0, "012345678" ] ]],
+ [ {startOffset:4,endOffset:4},               [ [0, "012345678" ] ]],
+ [ {endParent:true},                          [ [0, "012345678" ] ]],
+ [ {},                                        [ [0, "012345678" ] ]],
+ [ {},                                        [ [0, "012345678" ] ]],
+ [ {},                                        [ [0, "012345678" ] ]],
+]
+
+function verifyResults(r,p,i) {
+  let nodes = results[i][1];
+  is(p.childNodes.length, nodes.length, "same number of DOM nodes" + " (test " + i + ")");
+  for (let j = 0; j < nodes.length; ++j) {
+    let a = nodes[j];
+    let b = p.childNodes[j];
+    if (a instanceof Array) {
+      is(b, document.original_nodes[a[0]], "same node" + " (test " + i + " child " + j + ")");
+      is(b.textContent, a[1], "contents2" + " (test " + i + " child " + j + ")");
+    } else {
+      is(b.nodeType, Node.TEXT_NODE, "text node" + " (test " + i + " child " + j + ")");
+      is(b.textContent, a, "contents1" + " (test " + i + " child " + j + ")");
+    }
+  }
+  let sel = results[i][0];
+  if (sel.todo) {
+    alert(r.startContainer + '\n' + r.startOffset + '\n' + r.endContainer + '\n' + r.endOffset + '\n')
+    return;
+  }
+  let startNode = sel.startNode === undefined ? p.firstChild : p.childNodes[sel.startNode];
+  let startOffset = sel.startOffset === undefined ? 0 : sel.startOffset;
+  if (sel.startParent) { startNode = p; startOffset = 0; }
+  let endNode = sel.endNode === undefined ? p.childNodes[p.childNodes.length>1 ? 1 : 0] : p.childNodes[sel.endNode];
+  let endOffset = sel.endOffset === undefined ? endNode.length : sel.endOffset;
+  if (sel.endParent) { endNode = p; endOffset = 1; }
+  is(r.startContainer, startNode, "range start node" + " (test " + i + ")");
+  is(r.startOffset, startOffset, "range start offset" + " (test " + i + ")");
+  is(r.endContainer, endNode, "range end node" + " (test " + i + ")");
+  is(r.endOffset, endOffset, "range end offset" + " (test " + i + ")");
+}
+
+function runTest() {
+  let col1 = document.getElementById('col1');
+  let col2 = document.getElementById('col2');
+  for (let i=0; i < tests.length; ++i) {
+    let t = tests[i];
+    let p = document.createElement('p')
+    col1.appendChild(p);
+    let r = document.createRange();
+    test_split(r,p,t);
+    verifyResults(r,p,i);
+  }
+  for (let i=0; i < tests.length; ++i) {
+    let t = tests[i];
+    let p = document.createElement('p')
+    col2.appendChild(p);
+    let r = document.createRange();
+    test_split_merge(r,p,t);
+    verifyResults(r,p,i+tests.length);
+  }
+  SimpleTest.finish();
+}
+
+window.onload = function() { setTimeout(runTest, 0); };
+SimpleTest.waitForExplicitFinish();
+
+</script>
+</pre>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/svg/foreignObject-form-no-theme.svg
@@ -0,0 +1,14 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='500' height='200'>
+  <foreignObject width='500' height='500'>
+    <div xmlns='http://www.w3.org/1999/xhtml'>
+      <button style='-moz-appearance:none'>this is a button inside of SVG</button>
+      <br/>
+      <select style='-moz-appearance:none'>
+        <option>This is a menu inside of SVG</option>
+        <option>a second menu option</option>
+      </select>
+    </div>
+  </foreignObject>
+</svg>
+
+<!-- Bug 686581 -->
new file mode 100644
--- /dev/null
+++ b/layout/reftests/svg/foreignObject-form-theme-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML>
+<html><head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <title>Testcase #2 for bug 686581</title>
+    <style type="text/css">
+
+        html,body {
+            color:black; background-color:white; font-size:16px; padding:0; margin:0;
+        }
+
+    </style>
+</head>
+<body>
+      <button>this is a button inside of SVG</button>
+      <br/>
+      <select>
+        <option>This is a menu inside of SVG</option>
+        <option>a second menu option</option>
+      </select>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/svg/foreignObject-form-theme.svg
@@ -0,0 +1,14 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='500' height='200'>
+  <foreignObject width='500' height='500'>
+    <div xmlns='http://www.w3.org/1999/xhtml'>
+      <button>this is a button inside of SVG</button>
+      <br/>
+      <select>
+        <option>This is a menu inside of SVG</option>
+        <option>a second menu option</option>
+      </select>
+    </div>
+  </foreignObject>
+</svg>
+
+<!-- Bug 686581 -->
new file mode 100644
--- /dev/null
+++ b/layout/reftests/svg/foreignObject-img-form-theme-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<html><head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <title>Testcase for bug 686581</title>
+    <style type="text/css">
+        html,body {
+            color:black; background-color:white; font-size:16px; padding:0; margin:0;
+        }
+    </style>
+</head>
+<body>
+
+<img src="foreignObject-form-no-theme.svg">
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/svg/foreignObject-img-form-theme.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<html><head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <title>Testcase for bug 686581</title>
+    <style type="text/css">
+        html,body {
+            color:black; background-color:white; font-size:16px; padding:0; margin:0;
+        }
+    </style>
+</head>
+<body>
+
+<img src="foreignObject-form-theme.svg">
+
+</body>
+</html>
--- a/layout/reftests/svg/reftest.list
+++ b/layout/reftests/svg/reftest.list
@@ -125,16 +125,18 @@ random == dynamic-use-nested-01.svg dyna
 == foreignObject-02.svg foreignObject-02-ref.svg
 == foreignObject-ancestor-style-change-01.svg foreignObject-ancestor-style-change-01-ref.svg
 == foreignObject-change-transform-01.svg pass.svg
 == foreignObject-display-01.svg pass.svg
 == foreignObject-move-repaint-01.svg pass.svg
 == foreignObject-overflow-01.svg pass.svg
 == foreignObject-start-hidden-01.svg pass.svg # followup from Bug 596765
 == foreignObject-start-hidden-02.svg pass.svg
+== foreignObject-img-form-theme.html foreignObject-img-form-theme-ref.html
+== foreignObject-form-theme.svg foreignObject-form-theme-ref.html
 == getElementById-a-element-01.svg pass.svg
 == gradient-live-01a.svg gradient-live-01-ref.svg
 == gradient-live-01b.svg gradient-live-01-ref.svg
 == gradient-live-01c.svg gradient-live-01-ref.svg
 == gradient-live-01d.svg gradient-live-01-ref.svg
 fails == inline-in-xul-basic-01.xul pass.svg
 == invalid-text-01.svg pass.svg
 == linearGradient-basic-01.svg pass.svg
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
@@ -189,16 +189,25 @@ GetDeviceOrientation(nsPresContext* aPre
         // Per spec, square viewports should be 'portrait'
         orientation = NS_STYLE_ORIENTATION_PORTRAIT;
     }
 
     aResult.SetIntValue(orientation, eCSSUnit_Enumerated);
     return NS_OK;
 }
 
+static nsresult
+GetIsResourceDocument(nsPresContext* aPresContext, const nsMediaFeature*,
+                      nsCSSValue& aResult)
+{
+  nsIDocument* doc = aPresContext->Document();
+  aResult.SetIntValue(doc && doc->IsResourceDoc() ? 1 : 0, eCSSUnit_Integer);
+  return NS_OK;
+}
+
 // Helper for two features below
 static nsresult
 MakeArray(const nsSize& aSize, nsCSSValue& aResult)
 {
     nsRefPtr<nsCSSValue::Array> a = nsCSSValue::Array::Create(2);
 
     a->Item(0).SetIntValue(aSize.width, eCSSUnit_Integer);
     a->Item(1).SetIntValue(aSize.height, eCSSUnit_Integer);
@@ -456,16 +465,23 @@ nsMediaFeatures::features[] = {
     {
         &nsGkAtoms::_moz_device_orientation,
         nsMediaFeature::eMinMaxNotAllowed,
         nsMediaFeature::eEnumerated,
         { kOrientationKeywords },
         GetDeviceOrientation
     },
     {
+        &nsGkAtoms::_moz_is_resource_document,
+        nsMediaFeature::eMinMaxNotAllowed,
+        nsMediaFeature::eBoolInteger,
+        { nsnull },
+        GetIsResourceDocument
+    },
+    {
         &nsGkAtoms::_moz_scrollbar_start_backward,
         nsMediaFeature::eMinMaxNotAllowed,
         nsMediaFeature::eBoolInteger,
         { &nsGkAtoms::scrollbar_start_backward },
         GetSystemMetric
     },
     {
         &nsGkAtoms::_moz_scrollbar_start_forward,
--- a/layout/svg/base/src/svg.css
+++ b/layout/svg/base/src/svg.css
@@ -39,25 +39,31 @@
 @namespace url(http://www.w3.org/2000/svg);
 
 style, script, symbol {
  display: none;
 }
 
 switch {
  -moz-binding: none !important;
-} 
+}
 
 svg:not(:root), symbol, image, marker, pattern, foreignObject {
  overflow: hidden;
 }
 
 foreignObject {
   margin: 0 ! important;
   padding: 0 ! important;
   border-width: 0 ! important;
 }
 
+@media all and (-moz-is-resource-document) {
+ foreignObject *|* {
+   -moz-appearance: none;
+ }
+}
+
 *|*::-moz-svg-foreign-content {
   display: block !important;
   position: static !important;
   text-indent: 0;
 }
--- a/mobile/chrome/content/TabsPopup.js
+++ b/mobile/chrome/content/TabsPopup.js
@@ -54,24 +54,22 @@ var TabsPopup = {
   },
 
   get button() {
     delete this.button;
     return this.button = document.getElementById("tool-tabs");
   },
 
   hide: function hide() {
+    this._hidePortraitMenu();
+
     if (!Util.isPortrait()) {
       Elements.urlbarState.removeAttribute("tablet_sidebar");
       ViewableAreaObserver.update();
-      return;
     }
-    this.box.hidden = true;
-    BrowserUI.popPopup(this);
-    window.removeEventListener("resize", this.resizeHandler, false);
   },
 
   show: function show() {
     if (!Util.isPortrait()) {
       Elements.urlbarState.setAttribute("tablet_sidebar", "true");
       ViewableAreaObserver.update();
       return;
     }
@@ -94,46 +92,61 @@ var TabsPopup = {
         let entry = browser.__SS_data.entries[0];
         caption = entry.title;
 
         let pageURI = Services.io.newURI(entry.url, null, null);
         try {
           let iconURI = gFaviconService.getFaviconImageForPage(pageURI);
           icon = iconURI.spec;
         } catch(ex) { }
+      } else {
+        if (caption == "about:blank")
+          caption = browser.currentURI.spec;
+        if (!icon) {
+          let iconURI = gFaviconService.getFaviconImageForPage(browser.currentURI);
+          icon = iconURI.spec;
+        }
       }
       item.setAttribute("img", icon);
       item.setAttribute("label", caption);
 
       this.list.appendChild(item);
       item.tab = aTab;
     }, this)
 
     // Set the box position.
     this.box.hidden = false;
     this.box.anchorTo(this.button, "after_end");
     BrowserUI.pushPopup(this, [this.box, this.button]);
 
-    window.addEventListener("resize", this.resizeHandler.bind(this), false);
+    window.addEventListener("resize", function resizeHandler(aEvent) {
+      if (aEvent.target != window)
+        return;
+      if (!Util.isPortrait())
+        TabsPopup._hidePortraitMenu();
+    }, false);
   },
 
   toggle: function toggle() {
     if (this.visible)
       this.hide();
     else
       this.show();
   },
 
   get visible() {
     return Util.isPortrait() ? !this.box.hidden : Elements.urlbarState.hasAttribute("tablet_sidebar");
   },
 
-  resizeHandler: function(aEvent) {
-    if (!Util.isPortrait())
-      this.hide();
+  _hidePortraitMenu: function _hidePortraitMenu() {
+    if (!this.box.hidden) {
+      this.box.hidden = true;
+      BrowserUI.popPopup(this);
+      window.removeEventListener("resize", resizeHandler, false);
+    }
   },
 
   closeTab: function(aTab) {
     messageManager.addMessageListener("Browser:CanUnload:Return", this.closeTabReturn.bind(this));
   },
 
   closeTabReturn: function(aMessage) {
     messageManager.removeMessageListener("Browser:CanUnload:Return", this.closeTabReturn.bind(this));
--- a/mobile/locales/en-US/chrome/preferences.dtd
+++ b/mobile/locales/en-US/chrome/preferences.dtd
@@ -16,8 +16,9 @@
 <!ENTITY language.auto                             "Auto-detect">
 <!ENTITY defaultBrowser.title                      "Default Browser">
 <!ENTITY defaultBrowser.description                "Make &brandShortName; your default browser">
 <!ENTITY homepage.title                            "Start page">
 <!ENTITY homepage.none                             "Blank Page">
 <!ENTITY homepage.default                          "&brandShortName; Start">
 <!ENTITY homepage.currentpage                      "Use Current Page">
 <!ENTITY showCharsetEncoding.title                 "Show character encoding">
+<!ENTITY actionbar.default                         "&brandShortName; Settings">
index 889727a1e02b4d0f60d9f03d518d898d3f7e45c0..56aa70600d8f55ccab862a4821e84b962c13bf8c
GIT binary patch
literal 207
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1Gg`O^sAsP4HUUKAWaNuAKcwfJ@?hNNH@7W4brUxB3{O@pd
z*=*TXduQfH4eOM@JMFmBvbR~^4}Z4So?HLIhf2Kz7eS^F4b&d7oSEnpcUJ7xF%Z|&
L)z4*}Q$iB}(Em9;
index 666af001dbbc902543836013dde9829309f012c9..bd83045e3f17f3c74d571a6e743b7df6bc3809d9
GIT binary patch
literal 252
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1G^E_P~Lo)8Yz2wN%Y#_jT;m-d&<r`Dyxm{c}MJicpm*Bh<
zMZ@|>$!fm*^+F890|(Xx)x8_ny*qwYAX8iJ=GnSx&*u>#A%9kd9?*&Z9rNnbAA#ts
z6@u?%e^|(t&-kn_wyyKe(U1GnmTmhdwrpLI!tC~McRwiGF$cf(>zKW`bw0>UPgg&e
IbxsLQ0R9M4p8x;=
index 620af6df9c931b35e8b745b0bca04cd84aa4b35e..0c77284867e3f311ccb8dc9d3d195a5926011c7f
GIT binary patch
literal 180
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1GVV*9IAsP4Ho_7>vP~c!N$naD8Z(`6?$n(%UFMC7G?nmjG
k3Lhk1C@T;T4D1RRr;4<Q{@lGI6lep3r>mdKI;Vst03Ql2p#T5?
index 90dcc1952cc2e0a4dc796b87ffcf45cc61b85caa..78acf1175da6a303a15773bacdbefdcef1472a88
GIT binary patch
literal 180
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1GVV*9IAsP4Ho_7>vP~c!N$net_o^XI~*@mY0{<Q};`5!$W
l<Ul-lptxaM!+{qESP$Opsa+JkULI%zgQu&X%Q~loCIETKH>Usq
index a88df03a4784a0bf4064008dc9478950abde1c25..70538a18df97b93845a178d3181d90a694808bf5
GIT binary patch
literal 194
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1GDV{ElAsP4HUfjsZpupqm_&xqmP>!rd-vchbgvANM78OVJ
yi<exn3l6_DPtL!=qK*F#)0T}v><q+%f{SeL`4gocTkpRI;(EIJxvX<aXaWEb3NUp5
index 0ede58ba06876d27295a94e116ee603b28551f4b..2cb82b3fd0c4657646665af9f947e780a514d5a1
GIT binary patch
literal 250
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1Gb39!fLo)8Yz2wN%pdi2+@V;Is`qr+)C9Qb^u8vD)+|;Tt
z=-!a_<g0qm<xj6c))5VO8xrR{jyrt%RmMwcx$gFt6&#h(IWsC|haSwy4_>+Y)8D19
z11r=foa&i&KW3-q`E3^8yk{)bzklkQsb0$WOLBs9+qHdHo&EZmbMJJJah|SzF6*2U
FngC;5Q*HnN
index c601ec80ba7c2321811ac11a28c29afbdfb1c489..a1e551ea3753d779c610cf10e62df01e0c35e689
GIT binary patch
literal 40011
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
--- a/mobile/themes/core/honeycomb/browser.css
+++ b/mobile/themes/core/honeycomb/browser.css
@@ -175,33 +175,36 @@ toolbarbutton.urlbar-button {
 #identity-box:-moz-locale-dir(rtl) {
   background-image: url("chrome://browser/skin/images/urlbar-border-side.png");
   background-position: bottom right;
   background-repeat: no-repeat;
 }
 
 /* add special color */
 #identity-box[mode="verifiedIdentity"] {
-  background-color: #89d715;
+  background-color: #c4eb8a;
 }
 
 #identity-box[mode="verifiedDomain"] {
-  background-color: #6579e3;
+  background-color: #b2bcf1;
 }
 
 #identity-popup-runBy-box,
 #identity-popup-connected-box {
   -moz-box-orient: vertical;
 }
 
 #urlbar-throbber[loading] {
   list-style-image: url("chrome://browser/skin/images/throbber.png");
 }
+#urlbar-throbber {
+  width: 24px;
+  height: 24px;
+}
 
-#urlbar-throbber,
 #urlbar-favicon {
   width: 32px;
   height: 32px;
   image-rendering: -moz-crisp-edges;
 }
 
 #urlbar-favicon[src=""] {
   list-style-image: url("chrome://browser/skin/images/favicon-default-32.png");
@@ -1719,53 +1722,55 @@ setting {
 #appmenu-popup-sitecommands > .appmenu-pageaction:nth-child(3n+2):last-child,
 #appmenu-popup-sitecommands > .appmenu-pageaction:nth-child(3n+2):nth-last-child(-3n+2),
 #appmenu-popup-sitecommands > .appmenu-pageaction:nth-child(3n+3):last-child {
   border-bottom: none;
 }
 
 /* Sync setup ------------------------------------------------------------- */
 .content-dialog > .prompt-title {
-  margin: @margin_normal@ @margin_large@ 0px;
+  margin: @margin_large@;
 }
 
-.content-dialog > .prompt-line,
-.content-dialog .prompt-message {
-  margin: 0px @margin_large@;
+.content-dialog > .prompt-line {
+  border-bottom: @border_width_xxlarge@ solid @color_divider_border@;
+  margin: 0 @margin_large@;
 }
 
 .content-dialog .prompt-message {
+  margin: 0px @margin_large@;
   border-bottom: @border_width_tiny@ solid @color_button_border@;
 }
 
 .syncsetup-center {
   /* TODO: remove this dummy when we no longer use it in other themes */
 }
 
 .syncsetup-code {
-  color: @color_text_textbox@;
-  background-color: @color_background_textbox@;
-  font-size: @font_xlarge@ !important;
-  padding: 0.2em 0.4em;
-  -moz-padding-end: 0.2em;
+  color: @color_text_header@;
+  background-color: @color_background_header@;
+  font-size: @font_xnormal@ !important;
+  font-weight: bold;
+  padding: .8em;
   letter-spacing: 0.2em;
   text-align: center;
-  min-width: 5.5em;
+  min-width: 8em;
+  margin: @margin_xtiny@ 0 0 0;
 }
 
 .syncsetup-label {
   color: @color_text_default@;
 }
 
 #syncsetup-customserver {
   -moz-margin-start: @margin_xnormal@;
 }
 
 #sync-message {
-  padding-bottom: 2em;
+  padding: 1em 0;
 }
 
 /* content scrollbars */
 .scroller {
   opacity: 0;
   background-color: @color_background_scroller@ !important;
   -moz-border-top-colors: none !important;
   -moz-border-bottom-colors: none !important;
@@ -1949,18 +1954,18 @@ setting {
   background-color: @color_background_highlight@;  
 }
 
 .documenttab-popup-closebutton:hover:active {
   background-image: none !important;
 }
 
 .documenttab-popup-checkmark {
-  min-width: -moz-calc(26px + 2 * @padding_normal@); /* size of the checkmark image  plus the padding */
-  padding: 0px @padding_normal@;
+  min-width: -moz-calc(26px + @padding_normal@) !important; /* size of the checkmark image  plus the padding */
+  -moz-padding-end: @padding_normal@;
 }
 
 .tab-popup-item.selected .documenttab-popup-checkmark {
   list-style-image: url("chrome://browser/skin/images/checkmark-hdpi.png");
 }
 
 .documenttab-popup-label {
   -moz-box-flex: 1;
--- a/mobile/themes/core/honeycomb/defines.inc
+++ b/mobile/themes/core/honeycomb/defines.inc
@@ -19,17 +19,17 @@
 %define color_background_header #6699ff
 %define color_text_header #fff
 %define color_background_scroller #9a9a9a
 %define color_background_textbox #fff
 %define color_text_textbox #000
 %define color_text_button #000
 %define color_text_disabled #808080
 %define color_text_placeholder #808080
-%define color_text_as_link #febc2b
+%define color_text_as_link #69f
 %define color_background_panelrow #c8c8c8
 %define color_text_panelrow #222222
 %define color_text_toolbutton_inverse #666666
 
 %define color_background_highlight #a7c5f4
 %define color_background_highlight_overlay rgba(167, 197, 244, 0.8)
 %define color_text_highlight #000
 %define color_selection #c0e49a
deleted file mode 100644
index 0e6454797144cbba3615bb3731836743d149eba1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 05e66d735511e57e87eb2e6af1db9984a2a0db43..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index daf52a6846c7e6da385ac4ed52156c57a6f21892..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0ef93455d999f16666d981cea5c6d777ae71b0ad..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e395ef620888c992d70b9efa6ac8dd270b431a18..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7d510880b48d910cfd5c9d873643993234206eab..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
index c601ec80ba7c2321811ac11a28c29afbdfb1c489..ba09bbef4c300f4e5018683930d50870a2c8cc8c
GIT binary patch
literal 27202
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
index 0e6454797144cbba3615bb3731836743d149eba1..536eb48b3bf31fdbd013a6129062a5c92bcb5e5a
GIT binary patch
literal 1305
zc$@(l1?KvRP)<h;3K|Lk000e1NJLTq002M$002M;0ssI2B@5<>0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$yGcYrRA}DaTH96}HxR7S|9_2>6F(%z
zhCsNp3)t{CYClLVb+<IYNdg;XIPA_WJXCd8^<`#x^4AUZNF)g|k)S;Qe+GikD*zzM
zTe$-2+w2ek(q8~Tq<$a}k$NrVfS%~JNESiXYyNqD>(P$~%wM3t6>NR!rv_@HV^Fti
zMc!TwjYa_GJRX$;PtWfZK9t4=frNTm6H@Zfk^1;glh8?s&4NIB{1tk}7J=MIX5rbz
zt_MCv0!h`AH0V}9l|V^|QPL*-K}Yqy5zw<jBzMsu5>OI6yWFL>pzlsF3aZfQV!q)6
z@oA8*r5<+JkOPp{Iq>{yuf`?Gl#Fb;Hwd8dXesC->P8qdK!etMpfS<7+f+!dgmN^o
z<o;3S`SspPKe;zWKl&Kz1_Rwm|1}NCK*OW}=EZZ!)&r77cyWDi#bZ^JlFB7H^wGVH
z26)pUk%mo0=a5xPc{H(P5nkRr6bYpik^mx+FQWf@&}TG6UgRJUWXUcYIg3c<<?TcA
z;+a)akG==~A3*ms^asWX^A3=`ka%_bm=wM{VRZ9*p?`&gW0Li)o$&hZvBo{2f={R=
zG--cJ4!srrzj?HA!g9!^UsW@R6d@J)AWP=W-S_SA`y{{?QM}7xds&}?Flob@1m5hv
zr!M_uIK+8wsQmB9p?P{b|CEfBwD5NSV;cV20g9mbQRqhwf{Y40&yv8~{f}gePc5g@
zak`HQ@6VwR6q6+6+{zK}_D>Cc8it_*gnuImVWP;I6W-lFMg4?U@bTf_PC{q`l7+kb
zr<r~dYab>*KKwojy&c<iOjX3){ZmS`qeS;Kni)Pk{2>Y26LM5h=I-Iy8DP|pcCkYc
zXuWKvqOuQE0_lZW2nQyxvC7mcw10RuT}-EmgB##Q8<aVsoN)j6tfCJNu4`~QlmXNR
zxfRng7#SZ|0=@*f4sb{Z4?ectpcNt|kev9_f1w1;3X$K-vgAsjsDF#Vfeg@W&}PyJ
z0sK!gu($^nuR^Q$f#o~#`m@mT)9C8^!15c}@;mYJcO{m;FSPufx#jPTE`N7=`R4=6
zKcQLv8QJnrDVKjvy!?~;<-aSj{I^w>|Gv=j-`HCIJ9EcpH@57|^U&l!>BkjwW3pXJ
zop(*??}Ml91DF#Ki(Ul$c6vSfl{4>#&BlA!31(}?5S5Nkgg3%4idr`}^v&7)dU~bi
z40RJmO&GU=ARsylp{v=zi&?oMkJ%>BXHpF4A;PaGS4e0a{P+p$W2++&W;O7gzy?1u
z@D$t_S5O-X1qVAVp%p3~om>`3k%PY}G#c2JpEycHCq(tnrl7$F&DHkSkVg*zzZ_pM
zGH`Zv%ZzVfld-zhQf`gSz8Q;QF}5?64aTa9vMdY#IKGIXWoH6g`W+2#g5Cod#-P}P
zeN(XQth?DK!kfGO)=&BSw{!a8CTw5ycP0FKztP1=zSsgLy-cCEWb}prt0y>z0Q~jy
zk(YvQy#^$`Ve3DS4ImWKZ3T7YR!yQyS+sWGV+05Am(NEX&jfAoYoy`B%{Sio5?@an
zIR|}kwr5m_Kz{n|OV|<>XHP}{i=|;sXe-aFBsBIdBdx(rpkoNU-#>o>gLgIOM-nAZ
P00000NkvXXu0mjfzO{A0
index 05e66d735511e57e87eb2e6af1db9984a2a0db43..2c2a04dc47547058dfa3ae19d0dfed6e2c17a70c
GIT binary patch
literal 1029
zc$|GxPiWIn9F9(KP6tx(usP+C&5PLl>(bC{ab1(v70oDJ!JcGk^0tO9c`<og(+M&~
zk=?xb=cFk9IS8WQMLoEih#vIj#T`|UF$6DyqA%TAMd=<SdB5NLzVH3s?|oS=Odjj)
z>F=Q^sy9EO70EXpJ>A>M`_S%>%M{f`+odut>nCIrIgDYU3S>gZqoOf77J7zRgBVoc
ztnDiF`tuhwuq}l?De9c=sjzBKEc$S2ak6AC*36Vej~xZ0p-coEhz$@rb8aAq3f<I|
z$vjH4G-yI_O`*r51yI%tKt(<TBE!W^F3Eu;&+v(1Ns^8Lf#W%r6Ifn|^OBqpWR3%y
zgC@KA){I=#a+`aRNTI73dos(`>vg7{V30q{@~KoR(h!6=LBxZGi;Xbu27@gH4F;xf
zd)P)Uh+?CH=CMN4ts^*ITh<LW+e8}1hK9%T49ETj)b*{Qj?+d5xCm#qMhB&a2iYPF
z(7bO#0w0XXo~-)Nz{oElG}r24p^7jHs>lQCln8XgwB0Cf;&olly8$*_6XrFACK<-I
zEm>40E++^{O-SZ=Udv@PDV0?@J}Idxm(7f~xEeC&9q8f~*ZRYiI&vc`Y_OqkFF-5j
zBL_5(EZd!H8SY%m2G{Cbi`bFNl496@F1nQ>?un*t+mfJdeCQIl`^45~uHl{Jm*~UU
zGM+*+xNi86+UR@UF=oll7*^x-D>zC(jl4Eqs;;iRf7QFfb?->W?*2Ob;pM&VvAvbg
z(@zGj-W(F2uJ)gz{u_f|UgPxl{cG;6>)R5KM$Uar6!z^J?%MNMeD*VToLcF>l3qV>
yd8w~_W9j~d_??SGZ%4XfRCzV?Y2ebE+PB+hV-K{%k9P|PBe8sTQhS)0KK~n#FG4~9
index daf52a6846c7e6da385ac4ed52156c57a6f21892..0c579f5856f53d20424efc1d5fc210080a920309
GIT binary patch
literal 1016
zc$@+F0|)$xP)<h;3K|Lk000e1NJLTq002M$002M;0ssI2B@5<>0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#nn^@KRA}DqTHAKhFc6&em+QSB(-aD{
zl)?*rp<D~4(88}+JV>_pCfP}76ZO<5Cy||(ncbP)m2Eoy8i>F@D4c>o$ftRYyv~bs
zMf}Jkj$Z%}W4;*2>uDXQbv|VubxJS3g{9~@0SHR@OD_B)4g}O<q%jcSSSuXp<yDwP
zFPKQ^6K)BbJPt8>ry~JLLjf&upjTG`9h8cSWD;DS4HoYSw2~8(&A6J#Faimg&49~c
zAn-j<2Lh;DDx`!}$DZa4U~Ld}9)yZ!4bUS3bn=5qsG17j1||=49yWepG?o}3U+jkr
zoLn;#cWa_o5~|1Ewem(L&f!l4POpQ&-BsOe2&@ggLc<U!N~mWZIQ<zqC7!Nai^|n=
z^P^l({qXlfNc8$9xZ+99&cwhRTrQnkv51C4LWx1~5YR_5baoTaAtj+R;>k2@Gu}S%
zrBv89Y@j2ek3f$;g3f+99w-*m`$J#m;1|%*182Vj4}bQ9Y75XD?(t9=fG+$g@M99_
z&26oWs!IBQbwBTiavzw=Xd<9J;1!~WLC-mqN|5lt`R(9=**1LN;;9I!oCG?*Gi7ww
z;a`%3sf?cAO(u5R@D9T7CBZi1Y~r_nybJ);0Yfc%`0%SF#2!GdLOKJQKv&)d?0|v4
zF_<`H0%Zem5A5WqkD@US1h@gZ!X{?t1k$3HHlTNZgA@BbFhJ1;s*Gj=U3nJTl>sU?
z;2wAs1nOOE4+vCx*%N`iAn;`3Js{9-A85W4KZ;qX`DwK2{Xp|OviA4Ht>2Ys{=QK2
zcjlVEH`@N)>DHeQH2;LA`DbL!Kc#H`IdSt(>YIO8qWQN~ntxxY`8T$je`oIaOITYx
zMmgNawIoDshUofu9U;;4&tWa`Or^76fZ6$iJHbL1xEBbCo_z{-X!CW?#KUQ*kgq{t
zNQi(gXQ5g}0%D&Cu%QiReiqPqCB?Mf(gPU{oEkcgbg<~tEOhiSXoZx-W17I^fe|rD
z@TL*)7A7)KX$1u#rN8LtGQe)Ttav;cqIxc~LCF9pKvzN%1b`SptIMFOyDuJDF}aXR
zLxiFsx|kd&w0NMEV}&#lrqzc4)1fL+uZTxgPpV9EY>ZnjB#S-*w7NKettt$Y9XZ97
zjdwOtj&$B^r%IC=TC;=>FAfO)Y)oFOazsy_Yv(dB{YHN@Qf;pEFCD%=m_;uJ2SY$x
mmge>Y(f7twRUw9pI){HnwLTxvqu2xh0000<MNUMnLSTXlo67+J
index 0ef93455d999f16666d981cea5c6d777ae71b0ad..c6f9dafc75ed74e3f6bd4d64a1b9bb26ffd97186
GIT binary patch
literal 221
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1G^`0({AsP4HUfamqV8G)N$R3zh^ejm_E9wm2LWgPd&429r
zJ-z3%)uK<ifqxiKLBrA8%H7OMxK;*yW(i`Fd11Ra>;#vm!fEe0R~h#(3%$@YWLJ5h
zz0gTT&9L*o&w+BO2Fa~X_ZWqW9a^U`&Z{nRXtle;&CIQT(L83U3dlfDS3j3^P6<r_
D-8e_m
index e395ef620888c992d70b9efa6ac8dd270b431a18..8472b738bca21f25ea3fec6025bc13b9e8de330e
GIT binary patch
literal 1195
zc$@*N1XTNpP)<h;3K|Lk000e1NJLTq002M$002M;0ssI2B@5<>0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$O-V#SRA}DqTHA8fFbtIP|33f^y<Y~N
zptR6Z_=55b<x&a<X#XN2PGWl{JC`%1=hPjVnZ!w9x-0KWvJ>7u{zlA9?a^G_sU3xJ
z|AgFt!r|__|IiKGiTnw!>PO;8;40yPG#7t#7x!G^S#azQ-afgSgWms(o(V#axH$r6
zeM=q`-U0)p5h#ev;J`a4R|@e2dVh=116WSO&S~&HZ~-Prql>=G<iI<xzbo{lIRx~P
z6+&kvpF}?y_;wVCh@yd54Tr$3ebNxP4$$ok45DX<xQ9ONfQVb{P$2p;i-V`ZyKk;r
zB$WqQjiB$w9(ja55P8m6SP~|IhJ+aqncz@+3)BsPA13gQLy8_`!xlQ?=8@nl9wsA2
z8w<)Q$DziDynFf+#WUc95b}sVq@kI(N12#Z)a9Zf4&oKmnt1PYk%)&`ap(<_G4Vj^
zS(*kI84cjkQ$Vj%kP{N`oh=gaR3IwQeLo<+Tj0m10;WN%ANt7GC?wuLTM$>7z=tvF
z9&$g^KLM|6n<Vp~3WB6l!TWE2wYWw(+&}tR91`@+JTwG;C(x_VSHuDwvi`lHw;cM)
z0LJZ=RU?g_Ko5E_{3}AA<uE!4H6NV+@eWSIU$JW4`0hDpnY@H`tvS_p5;_kw1OoJ_
z@UH^B<uEo0Z5ll|ztL5!it3Mz!-~X{3dy%d*aG?4=seI7h?DRD!arvcf{OU?-OZSO
zVg_9?eu~XpXee?jY6#q#E-1R0SRJb;00%Uosv|N4Is;T|*Uy-W8Uuh09Dzv#tO-A;
zXxIjP`2My<Tyfq2Ytv7fi*g-x-4lqifqMMV2-uFgtHdpV$}VVB1z4YeV3B64LFh&u
z0mz}4g4XNc0Uy_j0R1QMFbEXyf%3CZ(RHBsO8f|Vq0+n2!q)@EugD(3nz;B~iNg1V
zir<-g1bd^U?@pKgexUd_G{wIoEB-BI`R|EKe^X!lw-V)lty22;LdAcvRs1(|TgP89
zx&wY7D8pX*DGeYqkb@NX40PaNYcOTdI}>lc`l8#Olmq3af`EpS(2{i^F50~<Y~a<t
zkVfxjVDsp6(z=n>57AH>Rq^J5^glvDw4*a=6s94A-pzm`(EaTk2elxEsnAuJlh8Ad
z0JoV)G$Rvuvn*EVoryP(E`vJ<IK<y|QvtGP?OxXLXPrewn*kD$>VilG9$6*morE@C
zUNR<f+>y2`den}hq08B1A=Z^3g&x%;dTB=5&F;P-@CgGMIe^?*A+}2boricxMj{y=
zxpEfsj|qG<c>FE##*2^S#X*oUP2eMXyDn2qh$hwuqIe{@ac!WCt+!afKm7Fh2PFoT
zAw!i_V$sr1z-G*lm40qP(^Cm~wZGNdM806R_YHvyD`?#%0CrRgXZr|VdMTp=Zws{A
zT>&k|C;a5uMG{V?OtH$+h<zwvpH~M!I;2VhKv!EVnU!aA`3sCxm0Y(E0ucZJ002ov
JPDHLkV1hP_EEfO(
index 7d510880b48d910cfd5c9d873643993234206eab..8e308c5a9cfe7272bcfa1efd532207a1b84ecd59
GIT binary patch
literal 232
zc%17D@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1GU7jwEAsP4H-q^_7V8G)N*u3e#!4)0XiA;erWIY;n?EMd1
z|EpZM?eU&PpWX!4Frb2leq*H|ru}LYG#MGzdfRl>*Z1hmXJ}Q~aI5hZ=Mtgd4kwXC
z0q<A4{N#(!)Vxx&a3g;JP^gG+i(RMf`rq6;&jfmOP8X_p=c%X~H$(i{O^drCA<Sn%
OCVRU2xvX<aXaWFG$WDj=
index c601ec80ba7c2321811ac11a28c29afbdfb1c489..a1e551ea3753d779c610cf10e62df01e0c35e689
GIT binary patch
literal 40011
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
--- a/mobile/themes/core/jar.mn
+++ b/mobile/themes/core/jar.mn
@@ -329,22 +329,16 @@ chrome.jar:
   skin/honeycomb/images/popup-bg-hdpi.png             (honeycomb/images/popup-bg-hdpi.png)
   skin/honeycomb/images/popup-selected-item-hdpi.png  (honeycomb/images/popup-selected-item-hdpi.png)
   skin/honeycomb/images/arrowbox-up.png               (honeycomb/images/arrowbox-up.png)
   skin/honeycomb/images/arrowbox-down.png             (honeycomb/images/arrowbox-down.png)
   skin/honeycomb/images/arrowbox-horiz.png            (honeycomb/images/arrowbox-horiz.png)
   skin/honeycomb/images/dropmarker-hdpi.png           (honeycomb/images/dropmarker-hdpi.png)
   skin/honeycomb/images/ratings-18.png                (images/ratings-18.png)
   skin/honeycomb/images/favicon-default-32.png        (honeycomb/images/favicon-default-32.png)
-  skin/honeycomb/images/endcap-default-bg.png         (honeycomb/images/endcap-default-bg.png)
-  skin/honeycomb/images/endcap-active-bg.png          (honeycomb/images/endcap-active-bg.png)
-  skin/honeycomb/images/endcap-ev-default-bg.png      (honeycomb/images/endcap-ev-default-bg.png)
-  skin/honeycomb/images/endcap-ev-active-bg.png       (honeycomb/images/endcap-ev-active-bg.png)
-  skin/honeycomb/images/endcap-ssl-default-bg.png     (honeycomb/images/endcap-ssl-default-bg.png)
-  skin/honeycomb/images/endcap-ssl-active-bg.png      (honeycomb/images/endcap-ssl-active-bg.png)
   skin/honeycomb/images/throbber.png                  (honeycomb/images/throbber.png)
   skin/honeycomb/images/navigation-magnifier-30.png   (honeycomb/images/navigation-magnifier-30.png)
   skin/honeycomb/images/folder-32.png                 (honeycomb/images/folder-32.png)
   skin/honeycomb/images/stop-hdpi.png                 (honeycomb/images/stop-hdpi.png)
   skin/honeycomb/images/reload-hdpi.png               (honeycomb/images/reload-hdpi.png)
   skin/honeycomb/images/alert-addons-30.png           (honeycomb/images/alert-addons-30.png)
   skin/honeycomb/images/alert-downloads-30.png        (honeycomb/images/alert-downloads-30.png)
   skin/honeycomb/images/addons-default-hdpi.png       (honeycomb/images/addons-default-hdpi.png)
deleted file mode 100644
--- a/modules/zlib/standalone/Makefile.in
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#   Samir Gehani <sgehani@netscape.com>
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 2 or later (the "GPL"), or
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-DEPTH		= ../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-include $(srcdir)/../src/objs.mk
-
-MODULE		= zlib
-LIBRARY_NAME	= mozz_s
-
-CSRCS		= $(MODULES_ZLIB_SRC_LCSRCS)
-
-FORCE_STATIC_LIB = 1
-SRCS_IN_OBJDIR	= 1
-
-ifeq ($(OS_ARCH),WINNT)
-USE_STATIC_LIBS=1
-endif
-
-ifeq ($(OS_ARCH),OS2)
-USE_STATIC_LIBS=1
-endif
-
-EXTRA_DSO_LDOPTS += $(MOZ_COMPONENT_NSPR_LIBS)
-
-GARBAGE		+= $(MODULES_ZLIB_SRC_LCSRCS) $(wildcard *.$(OBJ_SUFFIX))
-
-ifeq ($(OS_ARCH),WINNT)
-GARBAGE		+= $(addprefix $(srcdir)/,$(MODULES_ZLIB_SRC_LCSRCS))
-endif
-
-include $(topsrcdir)/config/rules.mk
-
-LOCAL_INCLUDES = -I$(srcdir)/../src
-
-export:: $(MODULES_ZLIB_SRC_CSRCS)
-	$(INSTALL) $^ .
-
--- a/toolkit/components/places/tests/cpp/places_test_harness_tail.h
+++ b/toolkit/components/places/tests/cpp/places_test_harness_tail.h
@@ -110,17 +110,17 @@ disable_idle_service()
   do_check_success(rv);
 }
 
 int
 main(int aArgc,
      char** aArgv)
 {
   ScopedXPCOM xpcom(TEST_NAME);
-  nsCOMPtr<ShutdownObserver> shutdownObserver = new ShutdownObserver();
+  nsRefPtr<ShutdownObserver> shutdownObserver = new ShutdownObserver();
 
 
   // Tinderboxes are constantly on idle.  Since idle tasks can interact with
   // tests, causing random failures, disable the idle service.
   disable_idle_service();
 
   do_test_pending();
   run_next_test();
--- a/toolkit/toolkit-makefiles.sh
+++ b/toolkit/toolkit-makefiles.sh
@@ -709,20 +709,16 @@ MAKEFILES_accessible="
   accessible/src/xforms/Makefile
   accessible/src/xul/Makefile
   accessible/src/msaa/Makefile
   accessible/src/atk/Makefile
   accessible/src/mac/Makefile
   accessible/build/Makefile
 "
 
-MAKEFILES_zlib="
-  modules/zlib/standalone/Makefile
-"
-
 MAKEFILES_libmar="
   modules/libmar/Makefile
   modules/libmar/src/Makefile
   modules/libmar/tool/Makefile
 "
 
 MAKEFILES_extensions="
   extensions/cookie/Makefile
@@ -770,17 +766,16 @@ add_makefiles "
   $MAKEFILES_widget
   $MAKEFILES_xpcom
   $MAKEFILES_xpcom_tests
   $MAKEFILES_xpfe
   $MAKEFILES_embedding
   $MAKEFILES_xulapp
   $MAKEFILES_libpr0n
   $MAKEFILES_accessible
-  $MAKEFILES_zlib
   $MAKEFILES_libmar
   $MAKEFILES_extensions
   $MAKEFILES_startupcache
 "
 
 #
 # Conditional makefiles
 #
--- a/toolkit/toolkit-tiers.mk
+++ b/toolkit/toolkit-tiers.mk
@@ -72,21 +72,16 @@ endif
 #
 # "external" - 3rd party individual libraries
 #
 
 ifndef MOZ_NATIVE_JPEG
 tier_platform_dirs	+= jpeg
 endif
 
-# Installer needs standalone libjar, hence standalone zlib
-ifdef MOZ_INSTALLER
-tier_platform_dirs	+= modules/zlib/standalone
-endif
-
 ifdef MOZ_UPDATER
 ifndef MOZ_NATIVE_BZ2
 tier_platform_dirs += modules/libbz2
 endif
 tier_platform_dirs += modules/libmar
 tier_platform_dirs += other-licenses/bsdiff
 endif