Merge. Write barriers have not yet been integrated.
authorSean Stangl <sstangl@mozilla.com>
Wed, 16 Nov 2011 15:10:34 -0800
changeset 105343 7c70058ad7b7503b674d110cd91209605fa80bfe
parent 105340 c259b1e4c95aadb71122deb808a96c2031522d09 (current diff)
parent 80356 30161b298513513dba7fc9dfcfcd915fd244ba46 (diff)
child 105344 83dbfff7f193864e3e35c3ea2b8a67db4ef1a898
push id1075
push uservporof@mozilla.com
push dateThu, 13 Sep 2012 10:46:49 +0000
treeherderfx-team@f39786e8364d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone11.0a1
Merge. Write barriers have not yet been integrated.
.hgtags
accessible/src/base/NotificationController.cpp
accessible/src/base/nsAccDocManager.cpp
browser/app/profile/firefox.js
browser/base/content/browser.js
browser/base/content/browser.xul
browser/base/content/nsContextMenu.js
browser/base/content/tabbrowser.xml
browser/components/nsBrowserGlue.js
browser/components/sessionstore/src/nsSessionStore.js
browser/components/sessionstore/test/browser/Makefile.in
browser/components/sessionstore/test/browser/browser_476161.js
browser/components/sessionstore/test/browser/browser_476161_sample.html
browser/components/shell/src/nsMacShellService.cpp
browser/components/shell/src/nsWindowsShellService.cpp
browser/components/shell/src/nsWindowsShellService.h
browser/config/version.txt
browser/devtools/highlighter/test/Makefile.in
browser/devtools/jar.mn
browser/devtools/styleinspector/CssHtmlTree.jsm
browser/devtools/styleinspector/CssLogic.jsm
browser/locales/en-US/chrome/browser/browser.dtd
browser/locales/en-US/chrome/browser/browser.properties
browser/locales/en-US/chrome/browser/devtools/styleinspector.properties
browser/themes/gnomestripe/browser/Geolocation-16.png
browser/themes/gnomestripe/browser/Geolocation-64.png
browser/themes/gnomestripe/browser/Go-arrow.png
browser/themes/gnomestripe/browser/Info.png
browser/themes/gnomestripe/browser/KUI-close.png
browser/themes/gnomestripe/browser/Makefile.in
browser/themes/gnomestripe/browser/Privacy-16.png
browser/themes/gnomestripe/browser/Privacy-32.png
browser/themes/gnomestripe/browser/Privacy-48.png
browser/themes/gnomestripe/browser/Privacy-64.png
browser/themes/gnomestripe/browser/Secure.png
browser/themes/gnomestripe/browser/Security-broken.png
browser/themes/gnomestripe/browser/Toolbar-small.png
browser/themes/gnomestripe/browser/Toolbar.png
browser/themes/gnomestripe/browser/aboutCertError.css
browser/themes/gnomestripe/browser/aboutPrivateBrowsing.css
browser/themes/gnomestripe/browser/aboutSessionRestore-window-icon.png
browser/themes/gnomestripe/browser/aboutSessionRestore.css
browser/themes/gnomestripe/browser/aboutSyncTabs.css
browser/themes/gnomestripe/browser/actionicon-tab.png
browser/themes/gnomestripe/browser/browser.css
browser/themes/gnomestripe/browser/devtools/arrows.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-end-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-end-selected-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-end-selected.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-end.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-middle-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-middle-selected-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-middle-selected.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-middle.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-start-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-start-selected-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-start-selected.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/ltr-start.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-end-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-end-selected-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-end-selected.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-end.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-middle-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-middle-selected-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-middle-selected.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-middle.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-start-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-start-selected-pressed.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-start-selected.png
browser/themes/gnomestripe/browser/devtools/breadcrumbs/rtl-start.png
browser/themes/gnomestripe/browser/devtools/csshtmltree.css
browser/themes/gnomestripe/browser/devtools/gcli.css
browser/themes/gnomestripe/browser/devtools/goto-mdn.png
browser/themes/gnomestripe/browser/engineManager.css
browser/themes/gnomestripe/browser/feeds/audioFeedIcon.png
browser/themes/gnomestripe/browser/feeds/audioFeedIcon16.png
browser/themes/gnomestripe/browser/feeds/feedIcon.png
browser/themes/gnomestripe/browser/feeds/feedIcon16.png
browser/themes/gnomestripe/browser/feeds/subscribe-ui.css
browser/themes/gnomestripe/browser/feeds/subscribe.css
browser/themes/gnomestripe/browser/feeds/videoFeedIcon.png
browser/themes/gnomestripe/browser/feeds/videoFeedIcon16.png
browser/themes/gnomestripe/browser/fullscreen-video.css
browser/themes/gnomestripe/browser/icon.png
browser/themes/gnomestripe/browser/identity.png
browser/themes/gnomestripe/browser/inspector.css
browser/themes/gnomestripe/browser/jar.mn
browser/themes/gnomestripe/browser/monitor.png
browser/themes/gnomestripe/browser/monitor_16-10.png
browser/themes/gnomestripe/browser/page-livemarks.png
browser/themes/gnomestripe/browser/pageInfo.css
browser/themes/gnomestripe/browser/pageInfo.png
browser/themes/gnomestripe/browser/places/bookmarksMenu.png
browser/themes/gnomestripe/browser/places/bookmarksToolbar.png
browser/themes/gnomestripe/browser/places/calendar.png
browser/themes/gnomestripe/browser/places/downloads.png
browser/themes/gnomestripe/browser/places/editBookmarkOverlay.css
browser/themes/gnomestripe/browser/places/livemark-item.png
browser/themes/gnomestripe/browser/places/organizer.css
browser/themes/gnomestripe/browser/places/organizer.xml
browser/themes/gnomestripe/browser/places/pageStarred.png
browser/themes/gnomestripe/browser/places/places.css
browser/themes/gnomestripe/browser/places/query.png
browser/themes/gnomestripe/browser/places/searching_16.png
browser/themes/gnomestripe/browser/places/starPage.png
browser/themes/gnomestripe/browser/places/starred48.png
browser/themes/gnomestripe/browser/places/tag.png
browser/themes/gnomestripe/browser/places/toolbarDropMarker.png
browser/themes/gnomestripe/browser/places/unsortedBookmarks.png
browser/themes/gnomestripe/browser/places/unstarred48.png
browser/themes/gnomestripe/browser/preferences/Options-sync.png
browser/themes/gnomestripe/browser/preferences/Options.png
browser/themes/gnomestripe/browser/preferences/aboutPermissions.css
browser/themes/gnomestripe/browser/preferences/alwaysAsk.png
browser/themes/gnomestripe/browser/preferences/applications.css
browser/themes/gnomestripe/browser/preferences/mail.png
browser/themes/gnomestripe/browser/preferences/preferences.css
browser/themes/gnomestripe/browser/preview.png
browser/themes/gnomestripe/browser/sanitizeDialog.css
browser/themes/gnomestripe/browser/searchbar.css
browser/themes/gnomestripe/browser/section_collapsed-rtl.png
browser/themes/gnomestripe/browser/section_collapsed.png
browser/themes/gnomestripe/browser/section_expanded.png
browser/themes/gnomestripe/browser/setDesktopBackground.css
browser/themes/gnomestripe/browser/sync-128.png
browser/themes/gnomestripe/browser/sync-16-throbber.png
browser/themes/gnomestripe/browser/sync-16.png
browser/themes/gnomestripe/browser/sync-24-throbber.png
browser/themes/gnomestripe/browser/sync-32.png
browser/themes/gnomestripe/browser/sync-bg.png
browser/themes/gnomestripe/browser/sync-desktopIcon.png
browser/themes/gnomestripe/browser/sync-mobileIcon.png
browser/themes/gnomestripe/browser/sync-notification-24.png
browser/themes/gnomestripe/browser/syncCommon.css
browser/themes/gnomestripe/browser/syncProgress.css
browser/themes/gnomestripe/browser/syncQuota.css
browser/themes/gnomestripe/browser/syncSetup.css
browser/themes/gnomestripe/browser/tabbrowser/alltabs.png
browser/themes/gnomestripe/browser/tabbrowser/connecting.png
browser/themes/gnomestripe/browser/tabbrowser/loading.png
browser/themes/gnomestripe/browser/tabbrowser/tab-overflow-border.png
browser/themes/gnomestripe/browser/tabbrowser/tab.png
browser/themes/gnomestripe/browser/tabbrowser/tabDragIndicator.png
browser/themes/gnomestripe/browser/tabview/edit-light.png
browser/themes/gnomestripe/browser/tabview/search.png
browser/themes/gnomestripe/browser/tabview/stack-expander.png
browser/themes/gnomestripe/browser/tabview/tabview.css
browser/themes/gnomestripe/browser/tabview/tabview.png
browser/themes/gnomestripe/browser/urlbar-arrow.png
browser/themes/pinstripe/browser/Geolocation-16.png
browser/themes/pinstripe/browser/Geolocation-64.png
browser/themes/pinstripe/browser/Info.png
browser/themes/pinstripe/browser/KUI-background.png
browser/themes/pinstripe/browser/KUI-close.png
browser/themes/pinstripe/browser/Makefile.in
browser/themes/pinstripe/browser/Privacy-16.png
browser/themes/pinstripe/browser/Privacy-32.png
browser/themes/pinstripe/browser/Privacy-48.png
browser/themes/pinstripe/browser/Privacy-64.png
browser/themes/pinstripe/browser/Search.png
browser/themes/pinstripe/browser/Secure-Glyph-White.png
browser/themes/pinstripe/browser/Toolbar-lion.png
browser/themes/pinstripe/browser/Toolbar.png
browser/themes/pinstripe/browser/aboutCertError.css
browser/themes/pinstripe/browser/aboutPrivateBrowsing.css
browser/themes/pinstripe/browser/aboutSessionRestore-window-icon.png
browser/themes/pinstripe/browser/aboutSessionRestore.css
browser/themes/pinstripe/browser/aboutSyncTabs.css
browser/themes/pinstripe/browser/actionicon-tab.png
browser/themes/pinstripe/browser/browser.css
browser/themes/pinstripe/browser/devtools/arrows.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-end-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-end-selected-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-end-selected.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-end.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-middle-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-middle-selected-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-middle-selected.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-middle.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-start-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-start-selected-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-start-selected.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/ltr-start.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-end-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-end-selected-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-end-selected.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-end.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-middle-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-middle-selected-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-middle-selected.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-middle.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-start-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-start-selected-pressed.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-start-selected.png
browser/themes/pinstripe/browser/devtools/breadcrumbs/rtl-start.png
browser/themes/pinstripe/browser/devtools/csshtmltree.css
browser/themes/pinstripe/browser/devtools/gcli.css
browser/themes/pinstripe/browser/devtools/goto-mdn.png
browser/themes/pinstripe/browser/devtools/toolbarbutton-close.png
browser/themes/pinstripe/browser/engineManager.css
browser/themes/pinstripe/browser/feeds/audioFeedIcon.png
browser/themes/pinstripe/browser/feeds/audioFeedIcon16.png
browser/themes/pinstripe/browser/feeds/feedIcon.png
browser/themes/pinstripe/browser/feeds/feedIcon16.png
browser/themes/pinstripe/browser/feeds/subscribe-ui.css
browser/themes/pinstripe/browser/feeds/subscribe.css
browser/themes/pinstripe/browser/feeds/videoFeedIcon.png
browser/themes/pinstripe/browser/feeds/videoFeedIcon16.png
browser/themes/pinstripe/browser/fullscreen-video.css
browser/themes/pinstripe/browser/home.png
browser/themes/pinstripe/browser/hud-style-check-box-checked.png
browser/themes/pinstripe/browser/hud-style-check-box-empty.png
browser/themes/pinstripe/browser/hud-style-dropmarker-double-arrows.png
browser/themes/pinstripe/browser/hud-style-expander-closed.png
browser/themes/pinstripe/browser/hud-style-expander-open.png
browser/themes/pinstripe/browser/hud-style-new-folder-plus-sign.png
browser/themes/pinstripe/browser/hud-style-twisties.png
browser/themes/pinstripe/browser/icon.png
browser/themes/pinstripe/browser/identity.png
browser/themes/pinstripe/browser/inspector.css
browser/themes/pinstripe/browser/jar.mn
browser/themes/pinstripe/browser/keyhole-circle-lion.png
browser/themes/pinstripe/browser/keyhole-circle.png
browser/themes/pinstripe/browser/livemark-item.png
browser/themes/pinstripe/browser/menu-back.png
browser/themes/pinstripe/browser/menu-forward.png
browser/themes/pinstripe/browser/monitor.png
browser/themes/pinstripe/browser/monitor_16-10.png
browser/themes/pinstripe/browser/page-livemarks.png
browser/themes/pinstripe/browser/pageInfo.css
browser/themes/pinstripe/browser/places/allBookmarks.png
browser/themes/pinstripe/browser/places/bookmarksMenu.png
browser/themes/pinstripe/browser/places/bookmarksToolbar.png
browser/themes/pinstripe/browser/places/downloads.png
browser/themes/pinstripe/browser/places/editBookmarkOverlay.css
browser/themes/pinstripe/browser/places/expander-closed-active.png
browser/themes/pinstripe/browser/places/expander-closed.png
browser/themes/pinstripe/browser/places/expander-open-active.png
browser/themes/pinstripe/browser/places/expander-open.png
browser/themes/pinstripe/browser/places/folderDropArrow.png
browser/themes/pinstripe/browser/places/history.png
browser/themes/pinstripe/browser/places/minus-active.png
browser/themes/pinstripe/browser/places/minus.png
browser/themes/pinstripe/browser/places/organizer.css
browser/themes/pinstripe/browser/places/places.css
browser/themes/pinstripe/browser/places/plus-active.png
browser/themes/pinstripe/browser/places/plus.png
browser/themes/pinstripe/browser/places/query.png
browser/themes/pinstripe/browser/places/searching_16.png
browser/themes/pinstripe/browser/places/star-icons.png
browser/themes/pinstripe/browser/places/starPage.png
browser/themes/pinstripe/browser/places/starred48.png
browser/themes/pinstripe/browser/places/tag.png
browser/themes/pinstripe/browser/places/toolbar-lion.png
browser/themes/pinstripe/browser/places/toolbar.png
browser/themes/pinstripe/browser/places/toolbarDropMarker.png
browser/themes/pinstripe/browser/places/twisty-closed.gif
browser/themes/pinstripe/browser/places/twisty-open.gif
browser/themes/pinstripe/browser/places/unfiledBookmarks.png
browser/themes/pinstripe/browser/places/unstarred48.png
browser/themes/pinstripe/browser/preferences/Options-sync.png
browser/themes/pinstripe/browser/preferences/Options.png
browser/themes/pinstripe/browser/preferences/aboutPermissions.css
browser/themes/pinstripe/browser/preferences/alwaysAsk.png
browser/themes/pinstripe/browser/preferences/application.png
browser/themes/pinstripe/browser/preferences/applications.css
browser/themes/pinstripe/browser/preferences/preferences.css
browser/themes/pinstripe/browser/preferences/saveFile.png
browser/themes/pinstripe/browser/preview.png
browser/themes/pinstripe/browser/reload-stop-go.png
browser/themes/pinstripe/browser/sanitizeDialog.css
browser/themes/pinstripe/browser/searchbar-dropmarker.png
browser/themes/pinstripe/browser/searchbar.css
browser/themes/pinstripe/browser/section_collapsed-rtl.png
browser/themes/pinstripe/browser/section_collapsed.png
browser/themes/pinstripe/browser/section_expanded.png
browser/themes/pinstripe/browser/setDesktopBackground.css
browser/themes/pinstripe/browser/shared.inc
browser/themes/pinstripe/browser/sync-128.png
browser/themes/pinstripe/browser/sync-16.png
browser/themes/pinstripe/browser/sync-32.png
browser/themes/pinstripe/browser/sync-bg.png
browser/themes/pinstripe/browser/sync-desktopIcon.png
browser/themes/pinstripe/browser/sync-mobileIcon.png
browser/themes/pinstripe/browser/sync-notification-24.png
browser/themes/pinstripe/browser/sync-throbber.png
browser/themes/pinstripe/browser/syncCommon.css
browser/themes/pinstripe/browser/syncProgress.css
browser/themes/pinstripe/browser/syncQuota.css
browser/themes/pinstripe/browser/syncSetup.css
browser/themes/pinstripe/browser/tabbrowser/alltabs-box-bkgnd-icon-lion.png
browser/themes/pinstripe/browser/tabbrowser/alltabs-box-bkgnd-icon.png
browser/themes/pinstripe/browser/tabbrowser/connecting.png
browser/themes/pinstripe/browser/tabbrowser/loading.png
browser/themes/pinstripe/browser/tabbrowser/newtab.png
browser/themes/pinstripe/browser/tabbrowser/tab-arrow-left.png
browser/themes/pinstripe/browser/tabbrowser/tab-arrow-right.png
browser/themes/pinstripe/browser/tabbrowser/tab-bottom-hover-active.png
browser/themes/pinstripe/browser/tabbrowser/tab-bottom-normal-active.png
browser/themes/pinstripe/browser/tabbrowser/tab-bottom-selected-active.png
browser/themes/pinstripe/browser/tabbrowser/tab-overflow-border.png
browser/themes/pinstripe/browser/tabbrowser/tab-top-hover-active.png
browser/themes/pinstripe/browser/tabbrowser/tab-top-normal-active.png
browser/themes/pinstripe/browser/tabbrowser/tab-top-selected-active.png
browser/themes/pinstripe/browser/tabbrowser/tabDragIndicator.png
browser/themes/pinstripe/browser/tabbrowser/tabbar-bottom-bg-active.png
browser/themes/pinstripe/browser/tabbrowser/tabbar-bottom-bg-inactive.png
browser/themes/pinstripe/browser/tabbrowser/tabbar-top-bg-active.png
browser/themes/pinstripe/browser/tabbrowser/tabbar-top-bg-inactive.png
browser/themes/pinstripe/browser/tabview/close.png
browser/themes/pinstripe/browser/tabview/edit-light.png
browser/themes/pinstripe/browser/tabview/search.png
browser/themes/pinstripe/browser/tabview/stack-expander.png
browser/themes/pinstripe/browser/tabview/tabview-lion.png
browser/themes/pinstripe/browser/tabview/tabview.css
browser/themes/pinstripe/browser/tabview/tabview.png
browser/themes/pinstripe/browser/toolbarbutton-dropmarker-lion.png
browser/themes/pinstripe/browser/toolbarbutton-dropmarker.png
browser/themes/pinstripe/browser/urlbar-arrow.png
browser/themes/pinstripe/browser/urlbar-history-dropmarker.png
browser/themes/pinstripe/browser/urlbar-popup-blocked.png
browser/themes/winstripe/browser/Geolocation-16.png
browser/themes/winstripe/browser/Geolocation-64.png
browser/themes/winstripe/browser/Info-aero.png
browser/themes/winstripe/browser/Info.png
browser/themes/winstripe/browser/KUI-background.png
browser/themes/winstripe/browser/KUI-close.png
browser/themes/winstripe/browser/Makefile.in
browser/themes/winstripe/browser/Privacy-16-aero.png
browser/themes/winstripe/browser/Privacy-16.png
browser/themes/winstripe/browser/Privacy-32-aero.png
browser/themes/winstripe/browser/Privacy-32.png
browser/themes/winstripe/browser/Privacy-48-aero.png
browser/themes/winstripe/browser/Privacy-48.png
browser/themes/winstripe/browser/Privacy-64-aero.png
browser/themes/winstripe/browser/Privacy-64.png
browser/themes/winstripe/browser/Secure24-aero.png
browser/themes/winstripe/browser/Secure24.png
browser/themes/winstripe/browser/Toolbar-inverted.png
browser/themes/winstripe/browser/Toolbar.png
browser/themes/winstripe/browser/aboutCertError.css
browser/themes/winstripe/browser/aboutPrivateBrowsing.css
browser/themes/winstripe/browser/aboutSessionRestore-window-icon-aero.png
browser/themes/winstripe/browser/aboutSessionRestore-window-icon.png
browser/themes/winstripe/browser/aboutSessionRestore.css
browser/themes/winstripe/browser/aboutSyncTabs.css
browser/themes/winstripe/browser/actionicon-tab.png
browser/themes/winstripe/browser/appmenu-dropmarker.png
browser/themes/winstripe/browser/appmenu-icons.png
browser/themes/winstripe/browser/browser-aero.css
browser/themes/winstripe/browser/browser.css
browser/themes/winstripe/browser/devtools/arrows.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-end-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-end-selected-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-end-selected.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-end.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-middle-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-middle-selected-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-middle-selected.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-middle.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-start-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-start-selected-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-start-selected.png
browser/themes/winstripe/browser/devtools/breadcrumbs/ltr-start.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-end-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-end-selected-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-end-selected.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-end.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-middle-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-middle-selected-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-middle-selected.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-middle.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-start-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-start-selected-pressed.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-start-selected.png
browser/themes/winstripe/browser/devtools/breadcrumbs/rtl-start.png
browser/themes/winstripe/browser/devtools/csshtmltree.css
browser/themes/winstripe/browser/devtools/gcli.css
browser/themes/winstripe/browser/devtools/goto-mdn.png
browser/themes/winstripe/browser/devtools/toolbarbutton-close.png
browser/themes/winstripe/browser/engineManager.css
browser/themes/winstripe/browser/feeds/audioFeedIcon-aero.png
browser/themes/winstripe/browser/feeds/audioFeedIcon.png
browser/themes/winstripe/browser/feeds/audioFeedIcon16-aero.png
browser/themes/winstripe/browser/feeds/audioFeedIcon16.png
browser/themes/winstripe/browser/feeds/feedIcon-aero.png
browser/themes/winstripe/browser/feeds/feedIcon.png
browser/themes/winstripe/browser/feeds/feedIcon16-aero.png
browser/themes/winstripe/browser/feeds/feedIcon16.png
browser/themes/winstripe/browser/feeds/subscribe-ui.css
browser/themes/winstripe/browser/feeds/subscribe.css
browser/themes/winstripe/browser/feeds/videoFeedIcon-aero.png
browser/themes/winstripe/browser/feeds/videoFeedIcon.png
browser/themes/winstripe/browser/feeds/videoFeedIcon16-aero.png
browser/themes/winstripe/browser/feeds/videoFeedIcon16.png
browser/themes/winstripe/browser/fullscreen-video.css
browser/themes/winstripe/browser/icon-aero.png
browser/themes/winstripe/browser/icon.png
browser/themes/winstripe/browser/identity-aero.png
browser/themes/winstripe/browser/identity.png
browser/themes/winstripe/browser/inspector.css
browser/themes/winstripe/browser/jar.mn
browser/themes/winstripe/browser/keyhole-forward-mask.svg
browser/themes/winstripe/browser/livemark-folder-aero.png
browser/themes/winstripe/browser/livemark-folder.png
browser/themes/winstripe/browser/livemark-item-aero.png
browser/themes/winstripe/browser/livemark-item.png
browser/themes/winstripe/browser/mainwindow-dropdown-arrow-aero.png
browser/themes/winstripe/browser/mainwindow-dropdown-arrow-inverted.png
browser/themes/winstripe/browser/mainwindow-dropdown-arrow.png
browser/themes/winstripe/browser/menu-back-aero.png
browser/themes/winstripe/browser/menu-back.png
browser/themes/winstripe/browser/menu-forward-aero.png
browser/themes/winstripe/browser/menu-forward.png
browser/themes/winstripe/browser/monitor.png
browser/themes/winstripe/browser/monitor_16-10.png
browser/themes/winstripe/browser/pageInfo-aero.png
browser/themes/winstripe/browser/pageInfo.css
browser/themes/winstripe/browser/pageInfo.png
browser/themes/winstripe/browser/places/allBookmarks-aero.png
browser/themes/winstripe/browser/places/allBookmarks.png
browser/themes/winstripe/browser/places/bookmark.png
browser/themes/winstripe/browser/places/bookmarksMenu-aero.png
browser/themes/winstripe/browser/places/bookmarksMenu.png
browser/themes/winstripe/browser/places/bookmarksToolbar-aero.png
browser/themes/winstripe/browser/places/bookmarksToolbar.png
browser/themes/winstripe/browser/places/calendar-aero.png
browser/themes/winstripe/browser/places/calendar.png
browser/themes/winstripe/browser/places/downloads.png
browser/themes/winstripe/browser/places/editBookmark.png
browser/themes/winstripe/browser/places/editBookmarkOverlay.css
browser/themes/winstripe/browser/places/history-aero.png
browser/themes/winstripe/browser/places/history.png
browser/themes/winstripe/browser/places/libraryToolbar-aero.png
browser/themes/winstripe/browser/places/libraryToolbar.png
browser/themes/winstripe/browser/places/organizer-aero.css
browser/themes/winstripe/browser/places/organizer.css
browser/themes/winstripe/browser/places/places-aero.css
browser/themes/winstripe/browser/places/places.css
browser/themes/winstripe/browser/places/query-aero.png
browser/themes/winstripe/browser/places/query.png
browser/themes/winstripe/browser/places/searching_16-aero.png
browser/themes/winstripe/browser/places/searching_16.png
browser/themes/winstripe/browser/places/starred48-aero.png
browser/themes/winstripe/browser/places/starred48.png
browser/themes/winstripe/browser/places/tag-aero.png
browser/themes/winstripe/browser/places/tag.png
browser/themes/winstripe/browser/places/toolbarDropMarker-aero.png
browser/themes/winstripe/browser/places/toolbarDropMarker.png
browser/themes/winstripe/browser/places/unsortedBookmarks-aero.png
browser/themes/winstripe/browser/places/unsortedBookmarks.png
browser/themes/winstripe/browser/places/unstarred48.png
browser/themes/winstripe/browser/preferences/Options-aero.png
browser/themes/winstripe/browser/preferences/Options-sync.png
browser/themes/winstripe/browser/preferences/Options.png
browser/themes/winstripe/browser/preferences/aboutPermissions.css
browser/themes/winstripe/browser/preferences/alwaysAsk-aero.png
browser/themes/winstripe/browser/preferences/alwaysAsk.png
browser/themes/winstripe/browser/preferences/application-aero.png
browser/themes/winstripe/browser/preferences/application.png
browser/themes/winstripe/browser/preferences/applications.css
browser/themes/winstripe/browser/preferences/mail-aero.png
browser/themes/winstripe/browser/preferences/mail.png
browser/themes/winstripe/browser/preferences/plugin-aero.png
browser/themes/winstripe/browser/preferences/preferences.css
browser/themes/winstripe/browser/preferences/saveFile-aero.png
browser/themes/winstripe/browser/preferences/saveFile.png
browser/themes/winstripe/browser/preview.png
browser/themes/winstripe/browser/reload-stop-go.png
browser/themes/winstripe/browser/sanitizeDialog.css
browser/themes/winstripe/browser/searchbar.css
browser/themes/winstripe/browser/section_collapsed-rtl.png
browser/themes/winstripe/browser/section_collapsed.png
browser/themes/winstripe/browser/section_expanded.png
browser/themes/winstripe/browser/setDesktopBackground.css
browser/themes/winstripe/browser/sync-128.png
browser/themes/winstripe/browser/sync-16.png
browser/themes/winstripe/browser/sync-32.png
browser/themes/winstripe/browser/sync-bg.png
browser/themes/winstripe/browser/sync-desktopIcon.png
browser/themes/winstripe/browser/sync-mobileIcon.png
browser/themes/winstripe/browser/sync-notification-24.png
browser/themes/winstripe/browser/sync-throbber.png
browser/themes/winstripe/browser/syncCommon.css
browser/themes/winstripe/browser/syncProgress.css
browser/themes/winstripe/browser/syncQuota.css
browser/themes/winstripe/browser/syncSetup.css
browser/themes/winstripe/browser/tabbrowser/alltabs.png
browser/themes/winstripe/browser/tabbrowser/connecting.png
browser/themes/winstripe/browser/tabbrowser/loading.png
browser/themes/winstripe/browser/tabbrowser/newtab-inverted.png
browser/themes/winstripe/browser/tabbrowser/newtab.png
browser/themes/winstripe/browser/tabbrowser/tab-arrow-left-inverted.png
browser/themes/winstripe/browser/tabbrowser/tab-arrow-left.png
browser/themes/winstripe/browser/tabbrowser/tab-overflow-border.png
browser/themes/winstripe/browser/tabbrowser/tab.png
browser/themes/winstripe/browser/tabbrowser/tabDragIndicator.png
browser/themes/winstripe/browser/tabview/close.png
browser/themes/winstripe/browser/tabview/edit-light.png
browser/themes/winstripe/browser/tabview/grain.png
browser/themes/winstripe/browser/tabview/search.png
browser/themes/winstripe/browser/tabview/stack-expander.png
browser/themes/winstripe/browser/tabview/tabview-inverted.png
browser/themes/winstripe/browser/tabview/tabview.css
browser/themes/winstripe/browser/tabview/tabview.png
browser/themes/winstripe/browser/urlbar-arrow.png
browser/themes/winstripe/browser/urlbar-history-dropmarker.png
browser/themes/winstripe/browser/urlbar-popup-blocked.png
build/mobile/devicemanagerADB.py
build/poster.zip
config/autoconf.mk.in
config/milestone.txt
configure.in
content/base/public/nsContentUtils.h
content/base/public/nsDOMFile.h
content/base/public/nsIContent.h
content/base/public/nsIDocument.h
content/base/public/nsIImageLoadingContent.idl
content/base/public/nsINode.h
content/base/public/nsIScriptElement.h
content/base/src/Makefile.in
content/base/src/nsCCUncollectableMarker.cpp
content/base/src/nsContentUtils.cpp
content/base/src/nsDataDocumentContentPolicy.cpp
content/base/src/nsDocument.cpp
content/base/src/nsDocumentEncoder.cpp
content/base/src/nsFrameLoader.cpp
content/base/src/nsFrameMessageManager.cpp
content/base/src/nsGenericDOMDataNode.cpp
content/base/src/nsGenericDOMDataNode.h
content/base/src/nsGenericElement.cpp
content/base/src/nsGenericElement.h
content/base/src/nsGkAtomList.h
content/base/src/nsImageLoadingContent.cpp
content/base/src/nsImageLoadingContent.h
content/base/src/nsNameSpaceManager.cpp
content/base/src/nsRange.cpp
content/base/src/nsScriptElement.cpp
content/base/src/nsScriptElement.h
content/base/src/nsScriptLoader.cpp
content/base/src/nsScriptLoader.h
content/base/src/nsStubImageDecoderObserver.cpp
content/base/src/nsXMLHttpRequest.cpp
content/base/test/Makefile.in
content/canvas/src/WebGLContextGL.cpp
content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
content/events/src/nsDOMDataTransfer.cpp
content/events/src/nsEventStateManager.cpp
content/html/content/src/nsGenericHTMLElement.cpp
content/html/content/src/nsGenericHTMLElement.h
content/html/content/src/nsHTMLAnchorElement.cpp
content/html/content/src/nsHTMLAreaElement.cpp
content/html/content/src/nsHTMLButtonElement.cpp
content/html/content/src/nsHTMLCanvasElement.cpp
content/html/content/src/nsHTMLDNSPrefetch.cpp
content/html/content/src/nsHTMLFieldSetElement.cpp
content/html/content/src/nsHTMLFontElement.cpp
content/html/content/src/nsHTMLFormElement.cpp
content/html/content/src/nsHTMLFormElement.h
content/html/content/src/nsHTMLImageElement.cpp
content/html/content/src/nsHTMLInputElement.cpp
content/html/content/src/nsHTMLInputElement.h
content/html/content/src/nsHTMLLabelElement.cpp
content/html/content/src/nsHTMLLegendElement.cpp
content/html/content/src/nsHTMLLegendElement.h
content/html/content/src/nsHTMLLinkElement.cpp
content/html/content/src/nsHTMLMediaElement.cpp
content/html/content/src/nsHTMLMetaElement.cpp
content/html/content/src/nsHTMLObjectElement.cpp
content/html/content/src/nsHTMLOutputElement.cpp
content/html/content/src/nsHTMLScriptElement.cpp
content/html/content/src/nsHTMLSelectElement.cpp
content/html/content/src/nsHTMLSelectElement.h
content/html/content/src/nsHTMLSharedElement.cpp
content/html/content/src/nsHTMLSharedObjectElement.cpp
content/html/content/src/nsHTMLStyleElement.cpp
content/html/content/src/nsHTMLTableCellElement.cpp
content/html/content/src/nsHTMLTableElement.cpp
content/html/content/src/nsHTMLTableElement.h
content/html/content/src/nsHTMLTableRowElement.cpp
content/html/content/src/nsHTMLTableSectionElement.cpp
content/html/content/src/nsHTMLTextAreaElement.cpp
content/html/content/src/nsHTMLTitleElement.cpp
content/html/content/src/nsHTMLVideoElement.cpp
content/html/content/test/file_fullscreen-api.html
content/html/content/test/reflect.js
content/html/document/src/ImageDocument.cpp
content/html/document/src/MediaDocument.cpp
content/html/document/src/MediaDocument.h
content/html/document/src/VideoDocument.cpp
content/html/document/src/nsHTMLContentSink.cpp
content/html/document/src/nsHTMLDocument.cpp
content/mathml/content/src/nsMathMLElement.cpp
content/mathml/content/src/nsMathMLElement.h
content/media/nsBuiltinDecoder.h
content/media/nsBuiltinDecoderStateMachine.cpp
content/media/nsBuiltinDecoderStateMachine.h
content/smil/nsSMILParserUtils.cpp
content/smil/nsSMILTimeValueSpec.cpp
content/smil/nsSMILTimeValueSpec.h
content/smil/nsSMILTimedElement.cpp
content/smil/nsSMILTimedElement.h
content/svg/content/src/SVGLengthList.cpp
content/svg/content/src/SVGNumberList.cpp
content/svg/content/src/nsSVGAElement.cpp
content/svg/content/src/nsSVGAElement.h
content/svg/content/src/nsSVGPathElement.cpp
content/svg/content/src/nsSVGPathElement.h
content/svg/content/src/nsSVGSVGElement.cpp
content/svg/content/src/nsSVGScriptElement.cpp
content/svg/content/src/nsSVGTitleElement.cpp
content/xbl/src/nsXBLBinding.cpp
content/xbl/src/nsXBLBinding.h
content/xbl/src/nsXBLDocumentInfo.cpp
content/xbl/src/nsXBLProtoImpl.cpp
content/xbl/src/nsXBLProtoImpl.h
content/xbl/src/nsXBLProtoImplField.cpp
content/xbl/src/nsXBLProtoImplMethod.h
content/xbl/src/nsXBLProtoImplProperty.cpp
content/xbl/src/nsXBLPrototypeBinding.cpp
content/xbl/src/nsXBLPrototypeBinding.h
content/xml/document/src/nsXMLContentSink.cpp
content/xslt/src/base/txCore.h
content/xslt/src/base/txList.h
content/xslt/src/xml/txDOM.h
content/xslt/src/xml/txXMLUtils.cpp
content/xslt/src/xml/txXMLUtils.h
content/xslt/src/xpath/txBooleanResult.cpp
content/xslt/src/xpath/txCoreFunctionCall.cpp
content/xslt/src/xpath/txExprParser.cpp
content/xslt/src/xpath/txExprParser.h
content/xslt/src/xpath/txExprResult.h
content/xslt/src/xpath/txIXPathContext.h
content/xslt/src/xpath/txNameTest.cpp
content/xslt/src/xpath/txPathExpr.cpp
content/xslt/src/xslt/txDocumentFunctionCall.cpp
content/xslt/src/xslt/txFormatNumberFunctionCall.cpp
content/xslt/src/xslt/txMozillaXMLOutput.cpp
content/xslt/src/xslt/txNodeSorter.cpp
content/xslt/src/xslt/txStylesheet.h
content/xslt/src/xslt/txStylesheetCompileHandlers.cpp
content/xslt/src/xslt/txStylesheetCompiler.cpp
content/xslt/src/xslt/txTextHandler.cpp
content/xslt/src/xslt/txXSLTNumber.cpp
content/xslt/src/xslt/txXSLTNumber.h
content/xslt/src/xslt/txXSLTPatterns.cpp
content/xslt/src/xslt/txXSLTPatterns.h
content/xslt/src/xslt/txXSLTProcessor.cpp
content/xtf/src/nsXTFElementWrapper.cpp
content/xtf/src/nsXTFElementWrapper.h
content/xul/content/src/nsXULContextMenuBuilder.cpp
content/xul/content/src/nsXULElement.cpp
content/xul/document/src/nsXULDocument.cpp
content/xul/document/src/nsXULPrototypeDocument.cpp
content/xul/templates/src/nsXULContentBuilder.cpp
docshell/base/nsDefaultURIFixup.cpp
docshell/base/nsDocShell.cpp
docshell/base/nsDocShell.h
docshell/build/nsDocShellModule.cpp
dom/base/nsDOMWindowUtils.cpp
dom/base/nsDOMWindowUtils.h
dom/base/nsFocusManager.cpp
dom/base/nsGlobalWindow.cpp
dom/base/nsIScriptContext.h
dom/base/nsJSEnvironment.cpp
dom/base/nsJSEnvironment.h
dom/base/nsJSTimeoutHandler.cpp
dom/indexedDB/AsyncConnectionHelper.cpp
dom/indexedDB/AsyncConnectionHelper.h
dom/indexedDB/CheckPermissionsHelper.h
dom/indexedDB/IDBCursor.cpp
dom/indexedDB/IDBDatabase.cpp
dom/indexedDB/IDBEvents.h
dom/indexedDB/IDBFactory.cpp
dom/indexedDB/IDBIndex.cpp
dom/indexedDB/IDBObjectStore.cpp
dom/indexedDB/IDBTransaction.cpp
dom/interfaces/base/nsIDOMWindowUtils.idl
dom/interfaces/css/nsIDOMCSS2Properties.idl
dom/interfaces/threads/Makefile.in
dom/interfaces/threads/nsIDOMWorkers.idl
dom/ipc/ContentChild.cpp
dom/ipc/ContentChild.h
dom/ipc/ContentParent.cpp
dom/ipc/PContent.ipdl
dom/ipc/TabChild.h
dom/ipc/TabParent.cpp
dom/ipc/TabParent.h
dom/plugins/base/PluginPRLibrary.cpp
dom/plugins/base/PluginPRLibrary.h
dom/plugins/base/nsNPAPIPlugin.cpp
dom/plugins/base/nsNPAPIPluginInstance.cpp
dom/plugins/base/nsNPAPIPluginInstance.h
dom/plugins/base/nsPluginHost.cpp
dom/plugins/base/nsPluginHost.h
dom/plugins/base/nsPluginInstanceOwner.cpp
dom/plugins/ipc/PluginLibrary.h
dom/plugins/ipc/PluginModuleParent.cpp
dom/plugins/ipc/PluginModuleParent.h
dom/src/geolocation/nsGeolocation.cpp
dom/src/storage/nsDOMStorage.cpp
dom/workers/WorkerPrivate.cpp
dom/workers/WorkerScope.cpp
dom/workers/XMLHttpRequest.cpp
dom/workers/XMLHttpRequestPrivate.cpp
editor/composer/src/nsEditingSession.cpp
editor/libeditor/html/nsHTMLEditor.cpp
embedding/android/AndroidManifest.xml.in
embedding/android/GeckoApp.java
embedding/android/GeckoAppShell.java
embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
embedding/browser/webBrowser/nsWebBrowser.cpp
embedding/components/printingui/src/mac/nsPrintProgress.cpp
embedding/components/printingui/src/mac/nsPrintingPromptServiceX.mm
embedding/components/printingui/src/os2/nsPrintProgress.cpp
embedding/components/printingui/src/os2/nsPrintingPromptService.cpp
embedding/components/printingui/src/unixshared/nsPrintProgress.cpp
embedding/components/printingui/src/unixshared/nsPrintingPromptService.cpp
embedding/components/printingui/src/win/nsPrintProgress.cpp
embedding/components/printingui/src/win/nsPrintingPromptService.cpp
embedding/tests/winEmbed/WebBrowserChrome.cpp
extensions/auth/nsAuthSSPI.cpp
gfx/layers/basic/BasicImages.cpp
gfx/layers/basic/BasicLayers.cpp
gfx/layers/d3d9/CanvasLayerD3D9.cpp
gfx/layers/d3d9/CanvasLayerD3D9.h
gfx/src/nsDeviceContext.cpp
gfx/thebes/GLContext.cpp
gfx/thebes/GLContext.h
gfx/thebes/GLContextProviderEGL.cpp
gfx/thebes/gfxBlur.cpp
gfx/thebes/gfxBlur.h
gfx/thebes/gfxRect.cpp
gfx/thebes/gfxRect.h
gfx/thebes/gfxWindowsPlatform.cpp
image/decoders/nsJPEGDecoder.cpp
image/decoders/nsJPEGDecoder.h
image/encoders/bmp/nsBMPEncoder.cpp
image/encoders/jpeg/nsJPEGEncoder.cpp
image/public/imgIContainer.idl
image/src/Decoder.cpp
image/src/Decoder.h
image/src/RasterImage.cpp
image/src/RasterImage.h
image/src/VectorImage.cpp
image/src/VectorImage.h
image/src/imgRequest.cpp
image/src/imgRequestProxy.cpp
image/src/imgRequestProxy.h
image/src/imgStatusTracker.cpp
image/src/imgStatusTracker.h
image/test/mochitest/Makefile.in
ipc/glue/GeckoChildProcessHost.cpp
js/jsd/jsd_xpc.cpp
js/jsd/jsd_xpc.h
js/src/Makefile.in
js/src/config/milestone.txt
js/src/configure.in
js/src/frontend/BytecodeCompiler.cpp
js/src/frontend/BytecodeEmitter.cpp
js/src/frontend/BytecodeEmitter.h
js/src/frontend/FoldConstants.cpp
js/src/frontend/ParseNode.cpp
js/src/frontend/ParseNode.h
js/src/frontend/Parser.cpp
js/src/frontend/Parser.h
js/src/frontend/SemanticAnalysis.cpp
js/src/gc/Statistics.h
js/src/jit-test/jit_test.py
js/src/jsanalyze.cpp
js/src/jsapi-tests/Makefile.in
js/src/jsapi-tests/testBug604087.cpp
js/src/jsapi-tests/testConservativeGC.cpp
js/src/jsapi-tests/testThreadGC.cpp
js/src/jsapi-tests/testThreads.cpp
js/src/jsapi.cpp
js/src/jsapi.h
js/src/jsarray.cpp
js/src/jsarray.h
js/src/jsatom.cpp
js/src/jsatom.h
js/src/jscell.h
js/src/jscntxt.cpp
js/src/jscntxt.h
js/src/jscntxtinlines.h
js/src/jscompartment.cpp
js/src/jscompartment.h
js/src/jsdbgapi.cpp
js/src/jsdbgapi.h
js/src/jsexn.cpp
js/src/jsfriendapi.cpp
js/src/jsfriendapi.h
js/src/jsfun.cpp
js/src/jsfun.h
js/src/jsfuninlines.h
js/src/jsgc.cpp
js/src/jsgc.h
js/src/jsgcinlines.h
js/src/jsgcmark.cpp
js/src/jsgcmark.h
js/src/jsgcstats.cpp
js/src/jsinfer.cpp
js/src/jsinfer.h
js/src/jsinterp.cpp
js/src/jsiter.cpp
js/src/jsiter.h
js/src/jsobj.cpp
js/src/jsobj.h
js/src/jsobjinlines.h
js/src/jsopcode.cpp
js/src/jsopcode.h
js/src/jsopcode.tbl
js/src/jsprobes.cpp
js/src/jsproxy.cpp
js/src/jsprvtd.h
js/src/jsreflect.cpp
js/src/jsscope.cpp
js/src/jsscript.cpp
js/src/jsscript.h
js/src/jsscriptinlines.h
js/src/jsstr.cpp
js/src/jstracer.cpp
js/src/jstracer.h
js/src/jstypedarray.cpp
js/src/jstypedarray.h
js/src/jsutil.h
js/src/jsweakmap.cpp
js/src/jswrapper.cpp
js/src/jswrapper.h
js/src/jsxdrapi.h
js/src/jsxml.cpp
js/src/methodjit/BaseAssembler.h
js/src/methodjit/Compiler.cpp
js/src/methodjit/Compiler.h
js/src/methodjit/FastOps.cpp
js/src/methodjit/LoopState.cpp
js/src/methodjit/MethodJIT.h
js/src/methodjit/MonoIC.cpp
js/src/methodjit/PolyIC.cpp
js/src/methodjit/StubCalls.cpp
js/src/methodjit/StubCalls.h
js/src/shell/js.cpp
js/src/shell/jsworkers.cpp
js/src/tracejit/Writer.cpp
js/src/tracejit/Writer.h
js/src/vm/Debugger.cpp
js/src/vm/GlobalObject.cpp
js/src/vm/RegExpObject-inl.h
js/src/vm/RegExpObject.cpp
js/src/vm/RegExpObject.h
js/src/vm/Stack.h
js/xpconnect/idl/nsIXPConnect.idl
js/xpconnect/loader/mozJSComponentLoader.cpp
js/xpconnect/shell/xpcshell.cpp
js/xpconnect/src/XPCCallContext.cpp
js/xpconnect/src/XPCComponents.cpp
js/xpconnect/src/XPCJSRuntime.cpp
js/xpconnect/src/XPCQuickStubs.cpp
js/xpconnect/src/XPCQuickStubs.h
js/xpconnect/src/XPCWrappedJS.cpp
js/xpconnect/src/XPCWrappedNative.cpp
js/xpconnect/src/XPCWrappedNativeInfo.cpp
js/xpconnect/src/XPCWrappedNativeProto.cpp
js/xpconnect/src/XPCWrappedNativeScope.cpp
js/xpconnect/src/dom_quickstubs.qsconf
js/xpconnect/src/nsXPConnect.cpp
js/xpconnect/src/qsgen.py
js/xpconnect/src/xpcprivate.h
layout/base/FrameLayerBuilder.cpp
layout/base/FrameLayerBuilder.h
layout/base/nsBidiPresUtils.cpp
layout/base/nsBidiPresUtils.h
layout/base/nsCSSFrameConstructor.cpp
layout/base/nsCaret.cpp
layout/base/nsFrameManager.cpp
layout/base/nsImageLoader.cpp
layout/base/nsImageLoader.h
layout/base/nsLayoutUtils.cpp
layout/base/nsLayoutUtils.h
layout/base/nsPresShell.cpp
layout/base/nsRefreshDriver.cpp
layout/base/nsRefreshDriver.h
layout/base/tests/Makefile.in
layout/build/nsLayoutModule.cpp
layout/build/nsLayoutStatics.cpp
layout/forms/nsComboboxControlFrame.cpp
layout/forms/nsComboboxControlFrame.h
layout/forms/nsListControlFrame.cpp
layout/forms/nsListControlFrame.h
layout/forms/nsProgressFrame.cpp
layout/forms/nsSelectsAreaFrame.cpp
layout/forms/nsTextControlFrame.cpp
layout/forms/nsTextControlFrame.h
layout/generic/TextOverflow.cpp
layout/generic/crashtests/crashtests.list
layout/generic/nsBRFrame.cpp
layout/generic/nsBlockFrame.cpp
layout/generic/nsBulletFrame.cpp
layout/generic/nsBulletFrame.h
layout/generic/nsFloatManager.h
layout/generic/nsFrame.cpp
layout/generic/nsGfxScrollFrame.cpp
layout/generic/nsHTMLReflowState.cpp
layout/generic/nsHTMLReflowState.h
layout/generic/nsIFrame.h
layout/generic/nsImageFrame.cpp
layout/generic/nsImageFrame.h
layout/generic/nsInlineFrame.cpp
layout/generic/nsLineLayout.cpp
layout/generic/nsLineLayout.h
layout/generic/nsObjectFrame.cpp
layout/generic/nsSelection.cpp
layout/generic/nsTextFrame.h
layout/generic/nsTextFrameThebes.cpp
layout/reftests/bugs/reftest.list
layout/reftests/svg/as-image/img-foreignObject-embed-2-helper.svg
layout/reftests/svg/as-image/img-foreignObject-embed-2.html
layout/reftests/svg/as-image/reftest.list
layout/reftests/text/reftest.list
layout/style/Loader.cpp
layout/style/Loader.h
layout/style/StyleRule.cpp
layout/style/StyleRule.h
layout/style/crashtests/crashtests.list
layout/style/nsCSSParser.cpp
layout/style/nsCSSRuleProcessor.cpp
layout/style/nsCSSRuleProcessor.h
layout/style/nsComputedDOMStyle.cpp
layout/style/nsComputedDOMStyle.h
layout/style/nsFontFaceLoader.cpp
layout/style/nsNthIndexCache.cpp
layout/style/nsNthIndexCache.h
layout/style/nsRuleNode.cpp
layout/style/nsRuleProcessorData.h
layout/style/nsStyleStruct.cpp
layout/style/nsStyleStruct.h
layout/style/nsStyleUtil.cpp
layout/style/nsStyleUtil.h
layout/style/test/property_database.js
layout/svg/base/src/nsSVGForeignObjectFrame.cpp
layout/svg/base/src/nsSVGGeometryFrame.cpp
layout/svg/base/src/nsSVGGlyphFrame.cpp
layout/svg/base/src/nsSVGImageFrame.cpp
layout/svg/base/src/nsSVGLeafFrame.cpp
layout/svg/base/src/nsSVGMarkerFrame.cpp
layout/svg/base/src/nsSVGMarkerFrame.h
layout/tables/nsTableRowGroupFrame.cpp
layout/xul/base/public/nsXULPopupManager.h
layout/xul/base/src/nsBoxFrame.cpp
layout/xul/base/src/nsBoxLayoutState.h
layout/xul/base/src/nsImageBoxFrame.cpp
layout/xul/base/src/nsImageBoxFrame.h
layout/xul/base/src/nsXULPopupManager.cpp
layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp
layout/xul/base/src/tree/src/nsTreeBodyFrame.h
layout/xul/base/src/tree/src/nsTreeImageListener.cpp
layout/xul/base/src/tree/src/nsTreeImageListener.h
layout/xul/base/test/test_resizer.xul
memory/jemalloc/jemalloc.c
mfbt/Util.h
mobile/app/mobile.js
mobile/chrome/tests/Makefile.in
mobile/confvars.sh
modules/libpref/src/init/all.js
netwerk/base/src/nsStandardURL.cpp
netwerk/cache/nsDiskCacheMap.cpp
netwerk/protocol/device/Makefile.in
netwerk/protocol/device/nsDeviceChannel.cpp
netwerk/protocol/http/nsHttpChannel.cpp
netwerk/protocol/http/nsHttpConnectionMgr.cpp
netwerk/protocol/http/nsHttpHandler.cpp
netwerk/protocol/http/nsHttpHandler.h
netwerk/protocol/http/nsHttpNTLMAuth.cpp
netwerk/protocol/http/nsHttpPipeline.cpp
netwerk/streamconv/converters/nsMultiMixedConv.cpp
other-licenses/android/APKOpen.cpp
parser/html/nsHtml5Parser.cpp
parser/html/nsHtml5Parser.h
parser/html/nsHtml5TreeOpExecutor.cpp
parser/html/nsHtml5TreeOperation.cpp
parser/htmlparser/public/nsIParser.h
parser/htmlparser/src/nsParser.cpp
parser/htmlparser/src/nsParser.h
security/manager/boot/src/nsSecureBrowserUIImpl.cpp
services/sync/tests/unit/xpcshell.ini
services/sync/version.txt
storage/src/mozStorageConnection.cpp
testing/jetpack/jetpack-location.txt
testing/testsuite-targets.mk
toolkit/components/alerts/mac/nsAlertsService.mm
toolkit/components/downloads/nsDownloadManager.cpp
toolkit/components/downloads/nsDownloadProxy.h
toolkit/components/places/History.cpp
toolkit/components/places/nsNavHistory.cpp
toolkit/components/places/nsNavHistory.h
toolkit/components/statusfilter/nsBrowserStatusFilter.cpp
toolkit/components/telemetry/TelemetryHistograms.h
toolkit/components/telemetry/TelemetryPing.js
toolkit/components/telemetry/tests/unit/test_TelemetryPing.js
toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
toolkit/components/url-classifier/nsUrlClassifierPrefixSet.h
toolkit/content/license.html
toolkit/mozapps/extensions/AddonRepository.jsm
toolkit/mozapps/extensions/XPIProvider.jsm
toolkit/mozapps/extensions/content/extensions.js
toolkit/mozapps/extensions/test/browser/browser_bug623950.js
toolkit/mozapps/installer/packager.mk
toolkit/mozapps/update/nsUpdateService.js
toolkit/mozapps/update/test/unit/test_0040_general.js
toolkit/system/gnome/nsAlertsIconListener.cpp
toolkit/xre/nsAppRunner.cpp
toolkit/xre/nsXREDirProvider.cpp
uriloader/base/nsDocLoader.cpp
uriloader/base/nsDocLoader.h
uriloader/exthandler/nsExternalHelperAppService.cpp
uriloader/prefetch/nsOfflineCacheUpdateService.cpp
uriloader/prefetch/nsPrefetchService.cpp
widget/public/Makefile.in
widget/public/nsIMenuRollup.h
widget/public/nsIRollupListener.h
widget/public/nsIWidget.h
widget/src/android/AndroidBridge.cpp
widget/src/android/AndroidBridge.h
widget/src/android/AndroidJNI.cpp
widget/src/android/nsAppShell.cpp
widget/src/android/nsWindow.cpp
widget/src/android/nsWindow.h
widget/src/cocoa/nsAppShell.mm
widget/src/cocoa/nsChildView.h
widget/src/cocoa/nsChildView.mm
widget/src/cocoa/nsCocoaWindow.h
widget/src/cocoa/nsCocoaWindow.mm
widget/src/cocoa/nsMenuItemIconX.mm
widget/src/cocoa/nsMenuX.mm
widget/src/cocoa/nsToolkit.mm
widget/src/gtk2/nsWindow.cpp
widget/src/gtk2/nsWindow.h
widget/src/os2/nsWindow.cpp
widget/src/os2/nsWindow.h
widget/src/os2/os2FrameWindow.cpp
widget/src/qt/nsWindow.cpp
widget/src/qt/nsWindow.h
widget/src/windows/GfxInfo.cpp
widget/src/windows/WinTaskbar.cpp
widget/src/windows/nsWindow.cpp
widget/src/windows/nsWindow.h
widget/src/xpwidgets/PuppetWidget.h
widget/tests/TestWinTSF.cpp
xpcom/base/nsConsoleService.cpp
xpcom/base/nsCycleCollector.cpp
xpcom/base/nsMemoryReporterManager.cpp
xpcom/build/Omnijar.cpp
xpcom/build/nsXPCOMPrivate.h
xpcom/components/Module.h
xpcom/components/nsComponentManager.cpp
xpcom/glue/AutoRestore.h
xpcom/glue/nsTArray.h
xpcom/io/nsLocalFileUnix.cpp
xpcom/io/nsStorageStream.cpp
xpcom/reflect/xptcall/src/md/unix/Makefile.in
xpfe/appshell/src/nsChromeTreeOwner.cpp
xpfe/appshell/src/nsWebShellWindow.cpp
xpfe/components/directory/nsDirectoryViewer.cpp
xpfe/components/directory/nsDirectoryViewer.h
--- a/.gitignore
+++ b/.gitignore
@@ -8,21 +8,21 @@ TAGS
 tags
 ID
 .DS_Store*
 
 # Vim swap files.
 .*.sw[a-z]
 
 # User files that may appear at the root
-.mozconfig
-mozconfig
-configure
-config.cache
-config.log
+/.mozconfig*
+/mozconfig
+/configure
+/config.cache
+/config.log
 
 # Empty marker file that's generated when we check out NSS
 security/manager/.nss.checkout
 
 # Build directories
 obj/*
 
 # Build directories for js shell
--- a/.hgtags
+++ b/.hgtags
@@ -65,8 +65,9 @@ a95d426422816513477e5863add1b00ac7041dcb
 138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R14
 9eae975b3d6fb7748fe5a3c0113d449b1c7cc0b2 AURORA_BASE_20110524
 138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R14
 462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R14
 5eb553dd2ceae5f88d80f27afc5ef3935c5d43b0 AURORA_BASE_20110705
 41b84b87c816403e1b74963d8094cff0406c989e AURORA_BASE_20110816
 c0983049bcaa9551e5f276d5a77ce154c151e0b0 AURORA_BASE_20110927
 462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R15
+54bfd8bf682e295ffd7f22fa921ca343957b6c1c AURORA_BASE_20111108
--- a/Makefile.in
+++ b/Makefile.in
@@ -60,17 +60,17 @@ TIERS += base
 #
 tier_base_dirs = \
 	config \
 	build \
 	probes \
 	$(NULL)
 
 ifndef LIBXUL_SDK
-ifeq ($(OS_TARGET),Android)
+ifeq (android,$(MOZ_WIDGET_TOOLKIT))
 tier_base_dirs += other-licenses/android
 endif
 
 tier_base_dirs += memory
 endif
 
 ifdef COMPILE_ENVIRONMENT
 include $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk
--- a/accessible/src/base/NotificationController.cpp
+++ b/accessible/src/base/NotificationController.cpp
@@ -587,29 +587,29 @@ NotificationController::CoalesceSelChang
   }
 
   // Unpack the packed selection change event because we've got one
   // more selection add/remove.
   if (aThisEvent->mEventType == nsIAccessibleEvent::EVENT_SELECTION) {
     if (aThisEvent->mPackedEvent) {
       aThisEvent->mPackedEvent->mEventType =
         aThisEvent->mPackedEvent->mSelChangeType == AccSelChangeEvent::eSelectionAdd ?
-          nsIAccessibleEvent::EVENT_SELECTION_ADD :
-          nsIAccessibleEvent::EVENT_SELECTION_REMOVE;
+          static_cast<PRUint32>(nsIAccessibleEvent::EVENT_SELECTION_ADD) :
+          static_cast<PRUint32>(nsIAccessibleEvent::EVENT_SELECTION_REMOVE);
 
       aThisEvent->mPackedEvent->mEventRule =
         AccEvent::eCoalesceSelectionChange;
 
       aThisEvent->mPackedEvent = nsnull;
     }
 
     aThisEvent->mEventType =
       aThisEvent->mSelChangeType == AccSelChangeEvent::eSelectionAdd ?
-        nsIAccessibleEvent::EVENT_SELECTION_ADD :
-        nsIAccessibleEvent::EVENT_SELECTION_REMOVE;
+        static_cast<PRUint32>(nsIAccessibleEvent::EVENT_SELECTION_ADD) :
+        static_cast<PRUint32>(nsIAccessibleEvent::EVENT_SELECTION_REMOVE);
 
     return;
   }
 
   // Convert into selection add since control has single selection but other
   // selection events for this control are queued.
   if (aTailEvent->mEventType == nsIAccessibleEvent::EVENT_SELECTION)
     aTailEvent->mEventType = nsIAccessibleEvent::EVENT_SELECTION_ADD;
--- a/accessible/src/base/nsAccDocManager.cpp
+++ b/accessible/src/base/nsAccDocManager.cpp
@@ -233,17 +233,18 @@ nsAccDocManager::OnProgressChange(nsIWeb
                                   PRInt32 aMaxTotalProgress)
 {
   NS_NOTREACHED("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsAccDocManager::OnLocationChange(nsIWebProgress *aWebProgress,
-                                  nsIRequest *aRequest, nsIURI *aLocation)
+                                  nsIRequest *aRequest, nsIURI *aLocation,
+                                  PRUint32 aFlags)
 {
   NS_NOTREACHED("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsAccDocManager::OnStatusChange(nsIWebProgress *aWebProgress,
                                 nsIRequest *aRequest, nsresult aStatus,
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -53,20 +53,24 @@ pref("browser.hiddenWindowChromeURL", "c
 
 // Enables some extra Extension System Logging (can reduce performance)
 pref("extensions.logging.enabled", false);
 
 // Enables strict compatibility. To be toggled in bug 698653, to make addons
 // compatibile by default.
 pref("extensions.strictCompatibility", true);
 
+// Specifies a minimum maxVersion an addon needs to say it's compatible with
+// for it to be compatible by default.
+pref("extensions.minCompatibleAppVersion", "4.0");
+
 // Preferences for AMO integration
 pref("extensions.getAddons.cache.enabled", true);
 pref("extensions.getAddons.maxResults", 15);
-pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%");
+pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=%OS%&appVersion=%VERSION%");
 pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%");
 pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%?src=firefox");
 pref("extensions.webservice.discoverURL", "https://services.addons.mozilla.org/%LOCALE%/firefox/discovery/pane/%VERSION%/%OS%");
 
 // Blocklist preferences
 pref("extensions.blocklist.enabled", true);
 pref("extensions.blocklist.interval", 86400);
 // Controls what level the blocklist switches from warning about items to forcibly
@@ -999,16 +1003,17 @@ pref("services.sync.prefs.sync.spellchec
 pref("services.sync.prefs.sync.xpinstall.whitelist.required", true);
 #endif
 
 // Disable the error console
 pref("devtools.errorconsole.enabled", false);
 
 // Enable the Inspector
 pref("devtools.inspector.enabled", true);
+pref("devtools.inspector.htmlHeight", 112);
 
 // Enable the style inspector
 pref("devtools.styleinspector.enabled", true);
 
 // Enable the rules view
 pref("devtools.ruleview.enabled", true);
 
 // Enable the Scratchpad tool.
@@ -1058,8 +1063,11 @@ pref("devtools.editor.component", "orion
 // Whether the character encoding menu is under the main Firefox button. This
 // preference is a string so that localizers can alter it.
 pref("browser.menu.showCharacterEncoding", "chrome://browser/locale/browser.properties");
 
 // Allow using tab-modal prompts when possible.
 pref("prompts.tab_modal.enabled", true);
 // Whether the Panorama should animate going in/out of tabs
 pref("browser.panorama.animate_zoom", true);
+
+// Enable the DOM full-screen API.
+pref("full-screen-api.enabled", true);
--- a/browser/base/content/aboutSyncTabs.js
+++ b/browser/base/content/aboutSyncTabs.js
@@ -132,20 +132,19 @@ let RemoteTabViewer = {
     let uri = Weave.Utils.makeURI(item.getAttribute("url"));
     let title = item.getAttribute("title");
     PlacesUIUtils.showBookmarkDialog({ action: "add"
                                      , type: "bookmark"
                                      , uri: uri
                                      , title: title
                                      , hiddenRows: [ "description"
                                                    , "location"
-                                                   , "folderPicker"
                                                    , "loadInSidebar"
                                                    , "keyword" ]
-                                     });
+                                     }, window.top);
   },
 
   bookmarkSelectedTabs: function() {
     let items = this._tabsList.selectedItems;
     let URIs = [];
     for (let i = 0;i < items.length;i++) {
       if (items[i].getAttribute("type") == "tab") {
         let uri = Weave.Utils.makeURI(items[i].getAttribute("url"));
@@ -155,17 +154,17 @@ let RemoteTabViewer = {
         URIs.push(uri);
       }
     }
     if (URIs.length) {
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: "folder"
                                        , URIList: URIs
                                        , hiddenRows: [ "description" ]
-                                       });
+                                       }, window.top);
     }
   },
 
   _generateTabList: function() {
     let engine = Weave.Engines.get("tabs");
     let list = this._tabsList;
 
     // clear out existing richlistitems
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -381,25 +381,24 @@ var PlacesCommandHook = {
     if (itemId == -1) {
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: "bookmark"
                                        , uri: linkURI
                                        , title: aTitle
                                        , hiddenRows: [ "description"
                                                      , "location"
                                                      , "loadInSidebar"
-                                                     , "folderPicker"
                                                      , "keyword" ]
-                                       });
+                                       }, window);
     }
     else {
       PlacesUIUtils.showBookmarkDialog({ action: "edit"
                                        , type: "bookmark"
                                        , itemId: itemId
-                                       });
+                                       }, window);
     }
   },
 
   /**
    * List of nsIURI objects characterizing the tabs currently open in the
    * browser, modulo pinned tabs.  The URIs will be in the order in which their
    * corresponding tabs appeared and duplicates are discarded.
    */
@@ -422,17 +421,17 @@ var PlacesCommandHook = {
    */
   bookmarkCurrentPages: function PCH_bookmarkCurrentPages() {
     let pages = this.uniqueCurrentPages;
     if (pages.length > 1) {
     PlacesUIUtils.showBookmarkDialog({ action: "add"
                                      , type: "folder"
                                      , URIList: pages
                                      , hiddenRows: [ "description" ]
-                                     });
+                                     }, window);
     }
   },
 
   /**
    * Updates disabled state for the "Bookmark All Tabs" command.
    */
   updateBookmarkAllTabsCommand:
   function PCH_updateBookmarkAllTabsCommand() {
@@ -473,17 +472,17 @@ var PlacesCommandHook = {
                                      , feedURI: feedURI
                                      , siteURI: gBrowser.currentURI
                                      , title: title
                                      , description: description
                                      , defaultInsertionPoint: toolbarIP
                                      , hiddenRows: [ "feedLocation"
                                                    , "siteLocation"
                                                    , "description" ]
-                                     });
+                                     }, window);
   },
 
   /**
    * Opens the Places Organizer. 
    * @param   aLeftPaneRoot
    *          The query to select in the organizer window - options
    *          are: History, AllBookmarks, BookmarksMenu, BookmarksToolbar,
    *          UnfiledBookmarks and Tags.
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -357,18 +357,18 @@ window[chromehidden~="toolbar"] toolbar:
   background: black;
 }
 
 #full-screen-warning-container {
   pointer-events: none;
   position: fixed;
   top: 0;
   left: 0;
-  min-width: 100%;
-  min-height: 100%;
+  width: 100%;
+  height: 100%;
 }
 
 #full-screen-warning-container[fade-warning-out] {
   -moz-transition-property: opacity !important;
   -moz-transition-duration: 500ms !important;
   opacity: 0.0;
 }
 
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -3158,19 +3158,18 @@ var bookmarksButtonObserver = {
     try {
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: "bookmark"
                                        , uri: makeURI(url)
                                        , title: name
                                        , hiddenRows: [ "description"
                                                      , "location"
                                                      , "loadInSidebar"
-                                                     , "folderPicker"
                                                      , "keyword" ]
-                                       });
+                                       }, window);
     } catch(ex) { }
   },
 
   onDragOver: function (aEvent)
   {
     browserDragAndDrop.dragOver(aEvent);
     aEvent.dropEffect = "link";
   },
@@ -3908,24 +3907,46 @@ var FullScreen = {
     }
   },
 
   exitDomFullScreen : function(e) {
     document.mozCancelFullScreen();
   },
 
   enterDomFullScreen : function(event) {
+    if (!document.mozFullScreen) {
+      return;
+    }
+
     // We receive "mozfullscreenchange" events for each subdocument which
     // is an ancestor of the document containing the element which requested
     // full-screen. Only add listeners and show warning etc when the event we
     // receive is targeted at the chrome document, i.e. only once every time
     // we enter DOM full-screen mode.
-    if (!document.mozFullScreen || event.target.ownerDocument != document) {
+    let targetDoc = event.target.ownerDocument ? event.target.ownerDocument : event.target;
+    if (targetDoc != document) {
+      // However, if we receive a "mozfullscreenchange" event for a document
+      // which is not a subdocument of the currently selected tab, we know that
+      // we've switched tabs since the request to enter full-screen was made,
+      // so we should exit full-screen since the "full-screen document" isn't
+      // acutally visible.
+      if (targetDoc.defaultView.top != gBrowser.contentWindow) {
+        document.mozCancelFullScreen();
+      }
       return;
     }
+
+    let focusManger = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager);
+    if (focusManger.activeWindow != window) {
+      // The top-level window has lost focus since the request to enter
+      // full-screen was made. Cancel full-screen.
+      document.mozCancelFullScreen();
+      return;
+    }
+
     this.showWarning(true);
 
     // Exit DOM full-screen mode upon open, close, or change tab.
     gBrowser.tabContainer.addEventListener("TabOpen", this.exitDomFullScreen);
     gBrowser.tabContainer.addEventListener("TabClose", this.exitDomFullScreen);
     gBrowser.tabContainer.addEventListener("TabSelect", this.exitDomFullScreen);
 
     // Exit DOM full-screen mode when the browser window loses focus (ALT+TAB, etc).
@@ -4559,17 +4580,17 @@ var XULBrowserWindow = {
           this.throbberElement.removeAttribute("busy");
 
         this.stopCommand.setAttribute("disabled", "true");
         CombinedStopReload.switchToReload(aRequest instanceof Ci.nsIRequest);
       }
     }
   },
 
-  onLocationChange: function (aWebProgress, aRequest, aLocationURI) {
+  onLocationChange: function (aWebProgress, aRequest, aLocationURI, aFlags) {
     var location = aLocationURI ? aLocationURI.spec : "";
     this._hostChanged = true;
 
     // Hide the form invalid popup.
     if (gFormSubmitObserver.panelIsOpen()) {
       gFormSubmitObserver.panel.hidePopup();
     }
 
@@ -5025,17 +5046,18 @@ var TabsProgressListener = {
         aBrowser.removeEventListener("pagehide", arguments.callee, true);
       }, true);
 
       // We also want to make changes to page UI for unprivileged about pages.
       BrowserOnAboutPageLoad(aWebProgress.DOMWindow.document);
     }
   },
 
-  onLocationChange: function (aBrowser, aWebProgress, aRequest, aLocationURI) {
+  onLocationChange: function (aBrowser, aWebProgress, aRequest, aLocationURI,
+                              aFlags) {
     // Filter out any sub-frame loads
     if (aBrowser.contentWindow == aWebProgress.DOMWindow)
       FullZoom.onLocationChange(aLocationURI, false, aBrowser);
   },
 
   onRefreshAttempted: function (aBrowser, aWebProgress, aURI, aDelay, aSameURI) {
     if (gPrefService.getBoolPref("accessibility.blockautorefresh")) {
       let brandBundle = document.getElementById("bundle_brand");
@@ -5764,19 +5786,18 @@ function contentAreaClick(event, isPanel
       // the title that should be used for the sidebar panel.
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: "bookmark"
                                        , uri: makeURI(href)
                                        , title: linkNode.getAttribute("title")
                                        , loadBookmarkInSidebar: true
                                        , hiddenRows: [ "description"
                                                      , "location"
-                                                     , "folderPicker"
                                                      , "keyword" ]
-                                       });
+                                       }, window);
       event.preventDefault();
       return true;
     }
   }
 
   handleLinkClick(event, href, linkNode);
 
   // Mark the page as a user followed link.  This is done so that history can
@@ -6811,19 +6832,20 @@ function AddKeywordForSearchField() {
                                    , type: "bookmark"
                                    , uri: makeURI(spec)
                                    , title: title
                                    , description: description
                                    , keyword: ""
                                    , postData: postData
                                    , charSet: charset
                                    , hiddenRows: [ "location"
-                                                 , "loadInSidebar"
-                                                 , "folderPicker" ]
-                                   });
+                                                 , "description"
+                                                 , "tags"
+                                                 , "loadInSidebar" ]
+                                   }, window);
 }
 
 function SwitchDocumentDirection(aWindow) {
   aWindow.document.dir = (aWindow.document.dir == "ltr" ? "rtl" : "ltr");
   for (var run = 0; run < aWindow.frames.length; run++)
     SwitchDocumentDirection(aWindow.frames[run]);
 }
 
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -971,17 +971,17 @@
           style="min-width: 18em; width: 22em; max-width: 42em;" persist="width">
       <toolbar id="devtools-sidebar-toolbar" nowindowdrag="true"/>
       <deck id="devtools-sidebar-deck" flex="1"/>
     </vbox>
     <vbox id="browser-border-end" hidden="true" layer="true"/>
   </hbox>
 
   <hbox id="full-screen-warning-container" hidden="true" fadeout="true">
-    <hbox style="min-width: 100%;" pack="center"> <!-- Inner hbox needed due to bug 579776. -->
+    <hbox style="width: 100%;" pack="center"> <!-- Inner hbox needed due to bug 579776. -->
       <hbox id="full-screen-warning-message">
         <description id="full-screen-warning-text" value="&domFullScreenWarning.label;"></description>
       </hbox>
     </hbox>
   </hbox>
 
   <vbox id="browser-bottombox" layer="true">
     <toolbar id="inspector-toolbar"
@@ -1058,16 +1058,20 @@
   </svg:svg>
 #endif
 #ifdef XP_MACOSX
   <svg:svg height="0">
     <svg:mask id="pinstripe-keyhole-forward-mask" maskContentUnits="objectBoundingBox">
       <svg:rect x="0" y="0" width="1" height="1" fill="white"/>
       <svg:circle cx="-0.41" cy="0.5" r="0.65"/>
     </svg:mask>
+    <svg:mask id="pinstripe-urlbar-back-button-mask" maskContentUnits="userSpaceOnUse">
+      <svg:rect x="0" y="-5" width="10000" height="55" fill="white"/>
+      <svg:circle cx="-9" cy="11" r="15"/>
+    </svg:mask>
     <svg:mask id="pinstripe-tab-ontop-left-curve-mask" maskContentUnits="userSpaceOnUse">
       <svg:circle cx="9" cy="3" r="3" fill="white"/>
       <svg:rect x="9" y="0" width="3" height="3" fill="white"/>
       <svg:rect x="6" y="3" width="6" height="19" fill="white"/>
       <svg:rect x="1" y="17" width="5" height="5" fill="white"/>
       <svg:circle cx="1" cy="17" r="5"/>
       <svg:rect x="0" y="22" width="12" height="1" fill="white"/>
     </svg:mask>
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -1401,25 +1401,24 @@ nsContextMenu.prototype = {
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: "bookmark"
                                        , uri: uri
                                        , title: title
                                        , description: description
                                        , hiddenRows: [ "description"
                                                      , "location"
                                                      , "loadInSidebar"
-                                                     , "folderPicker"
                                                      , "keyword" ]
-                                       });
+                                       }, window.top);
     }
     else {
       PlacesUIUtils.showBookmarkDialog({ action: "edit"
                                        , type: "bookmark"
                                        , itemId: itemId
-                                       });
+                                       }, window.top);
     }
   },
 
   savePageAs: function CM_savePageAs() {
     saveDocument(this.browser.contentDocument);
   },
 
   sendPage: function CM_sendPage() {
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -603,17 +603,18 @@
                 // reset cached temporary values at beginning and end
                 this.mMessage = "";
                 this.mTotalProgress = 0;
               }
               this.mStateFlags = aStateFlags;
               this.mStatus = aStatus;
             },
 
-            onLocationChange: function (aWebProgress, aRequest, aLocation) {
+            onLocationChange: function (aWebProgress, aRequest, aLocation,
+                                        aFlags) {
               // OnLocationChange is called for both the top-level content
               // and the subframes.
               let topLevel = aWebProgress.DOMWindow == this.mBrowser.contentWindow;
 
               if (topLevel) {
                 // The document loaded correctly, clear the value if we should
                 if (this.mBrowser.userTypedClear > 0)
                   this.mBrowser.userTypedValue = null;
@@ -636,17 +637,18 @@
                 if (aLocation.spec != "about:blank") {
                   autocomplete.registerOpenPage(aLocation);
                   this.mBrowser.registeredOpenURI = aLocation;
                 }
               }
 
               if (!this.mBlank) {
                 this._callProgressListeners("onLocationChange",
-                                            [aWebProgress, aRequest, aLocation]);
+                                            [aWebProgress, aRequest, aLocation,
+                                             aFlags]);
               }
 
               if (topLevel)
                 this.mBrowser.lastURI = aLocation;
             },
 
             onStatusChange: function (aWebProgress, aRequest, aStatus, aMessage) {
               if (this.mBlank)
@@ -885,17 +887,18 @@
 #ifdef MOZ_E10S_COMPAT
             // Bug 666801 - WebProgress support for e10s and
             // Bug 666809 - SecurityUI support for e10s
 #else
             var webProgress = this.mCurrentBrowser.webProgress;
             var securityUI = this.mCurrentBrowser.securityUI;
 
             this._callProgressListeners(null, "onLocationChange",
-                                        [webProgress, null, loc], true, false);
+                                        [webProgress, null, loc, 0], true,
+                                        false);
 
             if (securityUI) {
               this._callProgressListeners(null, "onSecurityChange",
                                           [webProgress, null, securityUI.state], true, false);
             }
 #endif
 
             var listener = this.mTabListeners[this.tabContainer.selectedIndex] || null;
--- a/browser/base/content/test/browser_alltabslistener.js
+++ b/browser/base/content/test/browser_alltabslistener.js
@@ -12,17 +12,17 @@ var gFrontProgressListener = {
   onStateChange: function (aWebProgress, aRequest, aStateFlags, aStatus) {
     var state = "onStateChange";
     info("FrontProgress: " + state + " 0x" + aStateFlags.toString(16));
     ok(gFrontNotificationsPos < gFrontNotifications.length, "Got an expected notification for the front notifications listener");
     is(state, gFrontNotifications[gFrontNotificationsPos], "Got a notification for the front notifications listener");
     gFrontNotificationsPos++;
   },
 
-  onLocationChange: function (aWebProgress, aRequest, aLocationURI) {
+  onLocationChange: function (aWebProgress, aRequest, aLocationURI, aFlags) {
     var state = "onLocationChange";
     info("FrontProgress: " + state + " " + aLocationURI.spec);
     ok(gFrontNotificationsPos < gFrontNotifications.length, "Got an expected notification for the front notifications listener");
     is(state, gFrontNotifications[gFrontNotificationsPos], "Got a notification for the front notifications listener");
     gFrontNotificationsPos++;
   },
   
   onStatusChange: function (aWebProgress, aRequest, aStatus, aMessage) {
@@ -48,17 +48,18 @@ var gAllProgressListener = {
 
     if ((aStateFlags & gCompleteState) == gCompleteState) {
       ok(gAllNotificationsPos == gAllNotifications.length, "Saw the expected number of notifications");
       ok(gFrontNotificationsPos == gFrontNotifications.length, "Saw the expected number of frontnotifications");
       executeSoon(gNextTest);
     }
   },
 
-  onLocationChange: function (aBrowser, aWebProgress, aRequest, aLocationURI) {
+  onLocationChange: function (aBrowser, aWebProgress, aRequest, aLocationURI,
+                              aFlags) {
     var state = "onLocationChange";
     info("AllProgress: " + state + " " + aLocationURI.spec);
     ok(aBrowser == gTestBrowser, state + " notification came from the correct browser");
     ok(gAllNotificationsPos < gAllNotifications.length, "Got an expected notification for the all notifications listener");
     is(state, gAllNotifications[gAllNotificationsPos], "Got a notification for the all notifications listener");
     gAllNotificationsPos++;
   },
   
--- a/browser/base/content/test/browser_bug422590.js
+++ b/browser/base/content/test/browser_bug422590.js
@@ -1,10 +1,11 @@
 function test() {
   waitForExplicitFinish();
+  ignoreAllUncaughtExceptions();
   
   // test the main (normal) browser window
   testCustomize(window, testChromeless);
 }
 
 function testChromeless() {
   // test a chromeless window
   var newWin = openDialog("chrome://browser/content/", "_blank",
--- a/browser/base/content/test/browser_bug599325.js
+++ b/browser/base/content/test/browser_bug599325.js
@@ -1,10 +1,11 @@
 function test() {
   waitForExplicitFinish();
+  ignoreAllUncaughtExceptions();
 
   testCustomize(window, finish);
 }
 
 function testCustomize(aWindow, aCallback) {
   var addonBar = aWindow.document.getElementById("addon-bar");
   ok(addonBar, "got addon bar");
   ok(!isElementVisible(addonBar), "addon bar initially hidden");
--- a/browser/base/content/test/browser_urlbarTrimURLs.js
+++ b/browser/base/content/test/browser_urlbarTrimURLs.js
@@ -27,17 +27,23 @@ function test() {
   testVal("http://mozilla.imaginatory/", "mozilla.imaginatory");
   testVal("http://www.mozilla.org/", "www.mozilla.org");
   testVal("http://sub.mozilla.org/", "sub.mozilla.org");
   testVal("http://sub1.sub2.sub3.mozilla.org/", "sub1.sub2.sub3.mozilla.org");
   testVal("http://mozilla.org/file.ext", "mozilla.org/file.ext");
   testVal("http://mozilla.org/sub/", "mozilla.org/sub/");
 
   testVal("http://ftp.mozilla.org/", "http://ftp.mozilla.org");
+  testVal("http://ftp1.mozilla.org/", "http://ftp1.mozilla.org");
+  testVal("http://ftp42.mozilla.org/", "http://ftp42.mozilla.org");
+  testVal("http://ftpx.mozilla.org/", "ftpx.mozilla.org");
   testVal("ftp://ftp.mozilla.org/", "ftp://ftp.mozilla.org");
+  testVal("ftp://ftp1.mozilla.org/", "ftp://ftp1.mozilla.org");
+  testVal("ftp://ftp42.mozilla.org/", "ftp://ftp42.mozilla.org");
+  testVal("ftp://ftpx.mozilla.org/", "ftp://ftpx.mozilla.org");
 
   testVal("https://user:pass@mozilla.org/", "https://user:pass@mozilla.org");
   testVal("http://user:pass@mozilla.org/", "http://user:pass@mozilla.org");
   testVal("http://sub.mozilla.org:666/", "sub.mozilla.org:666");
 
   testVal("https://[fe80::222:19ff:fe11:8c76]/file.ext");
   testVal("http://[fe80::222:19ff:fe11:8c76]/", "[fe80::222:19ff:fe11:8c76]");
   testVal("https://user:pass@[fe80::222:19ff:fe11:8c76]:666/file.ext");
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -630,13 +630,15 @@ function openPrefsHelp() {
   // since its probably behind the window.
   var instantApply = getBoolPref("browser.preferences.instantApply");
 
   var helpTopic = document.getElementsByTagName("prefwindow")[0].currentPane.helpTopic;
   openHelpLink(helpTopic, !instantApply);
 }
 
 function trimURL(aURL) {
+  // This function must not modify the given URL such that calling
+  // nsIURIFixup::createFixupURI with the result will produce a different URI.
   return aURL /* remove single trailing slash for http/https/ftp URLs */
              .replace(/^((?:http|https|ftp):\/\/[^/]+)\/$/, "$1")
-              /* remove http:// unless the host starts with "ftp." or contains "@" */
-             .replace(/^http:\/\/((?!ftp\.)[^\/@]+(?:\/|$))/, "$1");
+              /* remove http:// unless the host starts with "ftp\d*\." or contains "@" */
+             .replace(/^http:\/\/((?!ftp\d*\.)[^\/@]+(?:\/|$))/, "$1");
 }
--- a/browser/base/content/web-panels.js
+++ b/browser/base/content/web-panels.js
@@ -67,17 +67,17 @@ var panelProgressListener = {
         }
         else if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
                 aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK) {
             window.parent.document.getElementById('sidebar-throbber').removeAttribute("loading");
         }
     }
     ,
 
-    onLocationChange : function(aWebProgress, aRequest, aLocation) {
+    onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags) {
         UpdateBackForwardCommands(getPanelBrowser().webNavigation);
     },
 
     onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) {
     },
 
     onSecurityChange : function(aWebProgress, aRequest, aState) { 
     },
--- a/browser/components/about/Makefile.in
+++ b/browser/components/about/Makefile.in
@@ -39,17 +39,16 @@ topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = browserabout
 LIBRARY_NAME = browserabout_s
 FORCE_STATIC_LIB = 1
-FORCE_USE_PIC = 1
 ifndef MOZ_MEMORY
 USE_STATIC_LIBS = 1
 endif
 
 
 EXPORTS_NAMESPACES = mozilla/browser
 
 EXPORTS_mozilla/browser = AboutRedirector.h
--- a/browser/components/dirprovider/Makefile.in
+++ b/browser/components/dirprovider/Makefile.in
@@ -45,17 +45,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE = browserdir
 LIBRARY_NAME = browserdir_s
 
 ifdef ENABLE_TESTS
 DIRS = tests
 endif
 
 FORCE_STATIC_LIB = 1
-FORCE_USE_PIC = 1
 
 # Because we are an application component, link against the CRT statically
 # (on Windows, but only if we're not building our own CRT for jemalloc)
 ifndef MOZ_MEMORY
 USE_STATIC_LIBS      = 1
 endif
 
 EXPORTS_NAMESPACES = mozilla/browser
--- a/browser/components/feeds/src/Makefile.in
+++ b/browser/components/feeds/src/Makefile.in
@@ -39,17 +39,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = browser_feeds
 LIBRARY_NAME = browser_feeds_s
 FORCE_STATIC_LIB = 1
-FORCE_USE_PIC = 1
 ifndef MOZ_MEMORY
 USE_STATIC_LIBS = 1
 endif
 
 DEFINES += \
 	-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
 	-DMOZ_APP_DISPLAYNAME=$(MOZ_APP_DISPLAYNAME) \
 	$(NULL)
--- a/browser/components/migration/src/Makefile.in
+++ b/browser/components/migration/src/Makefile.in
@@ -39,17 +39,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= migration
 LIBRARY_NAME	= migration_s
 FORCE_STATIC_LIB = 1
-FORCE_USE_PIC = 1
 ifndef MOZ_MEMORY
 USE_STATIC_LIBS = 1
 endif
 
 
 CPPSRCS  = nsProfileMigrator.cpp \
            nsBrowserProfileMigratorUtils.cpp \
            $(NULL)
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -634,18 +634,18 @@ BrowserGlue.prototype = {
                       }
                     }
                   ];
 
     // Set pref to indicate we've shown the notification.
     var currentVersion = Services.prefs.getIntPref("browser.rights.version");
     Services.prefs.setBoolPref("browser.rights." + currentVersion + ".shown", true);
 
-    var box = notifyBox.appendNotification(notifyRightsText, "about-rights", null, notifyBox.PRIORITY_INFO_LOW, buttons);
-    box.persistence = 3; // arbitrary number, just so bar sticks around for a bit
+    var notification = notifyBox.appendNotification(notifyRightsText, "about-rights", null, notifyBox.PRIORITY_INFO_LOW, buttons);
+    notification.persistence = -1; // Until user closes it
   },
 
   _showUpdateNotification: function BG__showUpdateNotification() {
     Services.prefs.clearUserPref("app.update.postupdate");
 
     var um = Cc["@mozilla.org/updates/update-manager;1"].
              getService(Ci.nsIUpdateManager);
     try {
@@ -704,20 +704,20 @@ BrowserGlue.prototype = {
                         accessKey: key,
                         popup:     null,
                         callback: function(aNotificationBar, aButton) {
                           browser.selectedTab = browser.addTab(url);
                         }
                       }
                     ];
 
-      let box = notifyBox.appendNotification(text, "post-update-notification",
-                                             null, notifyBox.PRIORITY_INFO_LOW,
-                                             buttons);
-      box.persistence = 3;
+      let notification = notifyBox.appendNotification(text, "post-update-notification",
+                                                      null, notifyBox.PRIORITY_INFO_LOW,
+                                                      buttons);
+      notification.persistence = -1; // Until user closes it
     }
 
     if (actions.indexOf("showAlert") == -1)
       return;
 
     let notifier;
     try {
       notifier = Cc["@mozilla.org/alerts-service;1"].
@@ -788,17 +788,17 @@ BrowserGlue.prototype = {
     var brandBundle     = Services.strings.createBundle("chrome://branding/locale/brand.properties");
 
     var productName        = brandBundle.GetStringFromName("brandFullName");
     var serverOwner        = Services.prefs.getCharPref(PREF_TELEMETRY_SERVER_OWNER);
     var telemetryPrompt    = browserBundle.formatStringFromName("telemetryPrompt", [productName, serverOwner], 2);
 
     var buttons = [
                     {
-                      label:     browserBundle.GetStringFromName("telemetryYesButtonLabel"),
+                      label:     browserBundle.GetStringFromName("telemetryYesButtonLabel2"),
                       accessKey: browserBundle.GetStringFromName("telemetryYesButtonAccessKey"),
                       popup:     null,
                       callback:  function(aNotificationBar, aButton) {
                         Services.prefs.setBoolPref(PREF_TELEMETRY_ENABLED, true);
                       }
                     },
                     {
                       label:     browserBundle.GetStringFromName("telemetryNoButtonLabel"),
@@ -810,30 +810,31 @@ BrowserGlue.prototype = {
                     }
                   ];
 
     // Set pref to indicate we've shown the notification.
     Services.prefs.setIntPref(PREF_TELEMETRY_PROMPTED, TELEMETRY_PROMPT_REV);
 
     var notification = notifyBox.appendNotification(telemetryPrompt, "telemetry", null, notifyBox.PRIORITY_INFO_LOW, buttons);
     notification.setAttribute("hideclose", true);
-    notification.persistence = 6; // arbitrary number, just so bar sticks around for a bit
+    notification.persistence = -1;  // Until user closes it
 
     let XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
     let link = notification.ownerDocument.createElementNS(XULNS, "label");
     link.className = "text-link telemetry-text-link";
     link.setAttribute("value", browserBundle.GetStringFromName("telemetryLinkLabel"));
     link.addEventListener('click', function() {
       // Open the learn more url in a new tab
       browser.selectedTab = browser.addTab(Services.prefs.getCharPref(PREF_TELEMETRY_INFOURL));
       // Remove the notification on which the user clicked
       notification.parentNode.removeNotification(notification, true);
       // Add a new notification to that tab, with no "Learn more" link
-      var notifyBox = browser.getNotificationBox();
-      notifyBox.appendNotification(telemetryPrompt, "telemetry", null, notifyBox.PRIORITY_INFO_LOW, buttons);
+      notifyBox = browser.getNotificationBox();
+      notification = notifyBox.appendNotification(telemetryPrompt, "telemetry", null, notifyBox.PRIORITY_INFO_LOW, buttons);
+      notification.persistence = -1; // Until user closes it
     }, false);
     let description = notification.ownerDocument.getAnonymousElementByAttribute(notification, "anonid", "messageText");
     description.appendChild(link);
   },
 #endif
 
   _showPluginUpdatePage: function BG__showPluginUpdatePage() {
     Services.prefs.setBoolPref(PREF_PLUGINS_NOTIFYUSER, false);
@@ -1087,20 +1088,20 @@ BrowserGlue.prototype = {
                       popup:     null,
                       callback:  function(aNotificationBar, aButton) {
                         browser.selectedTab = browser.addTab(url);
                       }
                     }
                   ];
 
     var notifyBox = browser.getNotificationBox();
-    var box = notifyBox.appendNotification(text, title, null,
-                                           notifyBox.PRIORITY_CRITICAL_MEDIUM,
-                                           buttons);
-    box.persistence = -1; // Until user closes it
+    var notification = notifyBox.appendNotification(text, title, null,
+                                                    notifyBox.PRIORITY_CRITICAL_MEDIUM,
+                                                    buttons);
+    notification.persistence = -1; // Until user closes it
   },
 
   _migrateUI: function BG__migrateUI() {
     const UI_VERSION = 5;
     const BROWSER_DOCURL = "chrome://browser/content/browser.xul#";
     let currentUIVersion = 0;
     try {
       currentUIVersion = Services.prefs.getIntPref("browser.migration.version");
--- a/browser/components/places/content/bookmarkProperties.js
+++ b/browser/components/places/content/bookmarkProperties.js
@@ -259,18 +259,16 @@ var BookmarkPropertiesPanel = {
 
       if ("description" in dialogInfo)
         this._description = dialogInfo.description;
     }
     else { // edit
       NS_ASSERT("itemId" in dialogInfo);
       this._itemId = dialogInfo.itemId;
       this._title = PlacesUtils.bookmarks.getItemTitle(this._itemId);
-      // Don't show folderPicker when editing
-      this._hiddenRows.push("folderPicker");
       this._readOnly = !!dialogInfo.readOnly;
 
       switch (dialogInfo.type) {
         case "bookmark":
           this._itemType = BOOKMARK_ITEM;
 
           this._uri = PlacesUtils.bookmarks.getBookmarkURI(this._itemId);
           // keyword
--- a/browser/components/places/content/controller.js
+++ b/browser/components/places/content/controller.js
@@ -307,17 +307,17 @@ PlacesController.prototype = {
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: "bookmark"
                                        , hiddenRows: [ "description"
                                                      , "keyword"
                                                      , "location"
                                                      , "loadInSidebar" ]
                                        , uri: NetUtil.newURI(node.uri)
                                        , title: node.title
-                                       }, window.top, true);
+                                       }, window.top);
       break;
     }
   },
 
   onEvent: function PC_onEvent(eventName) { },
 
 
   /**
@@ -715,16 +715,17 @@ PlacesController.prototype = {
       // the correct title for the node.
       itemId = concreteId;
     }
 
     PlacesUIUtils.showBookmarkDialog({ action: "edit"
                                      , type: itemType
                                      , itemId: itemId
                                      , readOnly: isRootItem
+                                     , hiddenRows: [ "folderPicker" ]
                                      }, window.top);
   },
 
   /**
    * This method can be run on a URI parameter to ensure that it didn't
    * receive a string instead of an nsIURI object.
    */
   _assertURINotString: function PC__assertURINotString(value) {
@@ -763,17 +764,17 @@ PlacesController.prototype = {
     if (!ip)
       throw Cr.NS_ERROR_NOT_AVAILABLE;
 
     let performed =
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: aType
                                        , defaultInsertionPoint: ip
                                        , hiddenRows: [ "folderPicker" ]
-                                       }, window);
+                                       }, window.top);
     if (performed) {
       // Select the new item.
       let insertedNodeId = PlacesUtils.bookmarks
                                       .getIdForItemAt(ip.itemId, ip.index);
       this._view.selectItems([insertedNodeId], false);
     }
   },
 
--- a/browser/components/places/src/PlacesUIUtils.jsm
+++ b/browser/components/places/src/PlacesUIUtils.jsm
@@ -335,39 +335,46 @@ var PlacesUIUtils = {
   /**
    * Shows the bookmark dialog corresponding to the specified info.
    *
    * @param aInfo
    *        Describes the item to be edited/added in the dialog.
    *        See documentation at the top of bookmarkProperties.js
    * @param aWindow
    *        Owner window for the new dialog.
-   * @param aMinimalUI [optional]
-   *        Whether to open the dialog in "minimal ui" mode. Do not pass this
-   *        for new callers.  It'll be removed in a future release.
+   * @param aResizable [optional]
+   *        Whether the dialog is allowed to resize.  Do not pass this for new
+   *        callers since it's deprecated.  It'll be removed in future releases.
    *
    * @see documentation at the top of bookmarkProperties.js
    * @return true if any transaction has been performed, false otherwise.
    */
   showBookmarkDialog:
-  function PUIU_showBookmarkDialog(aInfo, aParentWindow, aMinimalUI) {
+  function PUIU_showBookmarkDialog(aInfo, aParentWindow, aResizable) {
+    // This is a compatibility shim for add-ons.  It will warn in the Error
+    // Console when used.
     if (!aParentWindow) {
       aParentWindow = this._getWindow(null);
     }
 
     // Preserve size attributes differently based on the fact the dialog has
-    // a folder picker or not.
-    let minimalUI = "hiddenRows" in aInfo &&
-                    aInfo.hiddenRows.indexOf("folderPicker") != -1;
-    let dialogURL = aMinimalUI ?
+    // a folder picker or not.  If the picker is visible, the dialog should
+    // be resizable since it may not show enough content for the folders
+    // hierarchy.
+    let hasFolderPicker = !("hiddenRows" in aInfo) ||
+                          aInfo.hiddenRows.indexOf("folderPicker") == -1;
+    let resizable = aResizable !== undefined ? aResizable : hasFolderPicker;
+    // Use a different chrome url, since this allows to persist different sizes,
+    // based on resizability of the dialog.
+    let dialogURL = resizable ?
                     "chrome://browser/content/places/bookmarkProperties2.xul" :
                     "chrome://browser/content/places/bookmarkProperties.xul";
 
     let features =
-      "centerscreen,chrome,modal,resizable=" + (aMinimalUI ? "yes" : "no");
+      "centerscreen,chrome,modal,resizable=" + (resizable ? "yes" : "no");
 
     aParentWindow.openDialog(dialogURL, "",  features, aInfo);
     return ("performed" in aInfo && aInfo.performed);
   },
 
   _getTopBrowserWin: function PUIU__getTopBrowserWin() {
     return Services.wm.getMostRecentWindow("navigator:browser");
   },
--- a/browser/components/places/tests/browser/browser_library_middleclick.js
+++ b/browser/components/places/tests/browser/browser_library_middleclick.js
@@ -59,17 +59,18 @@ var gTabsListener = {
          "We have opened " + gCurrentTest.URIs.length + " new tab(s)");
     }
 
     var tab = aEvent.target;
     is(tab.ownerDocument.defaultView, window,
        "Tab has been opened in current browser window");
   },
 
-  onLocationChange: function(aBrowser, aWebProgress, aRequest, aLocationURI) {
+  onLocationChange: function(aBrowser, aWebProgress, aRequest, aLocationURI,
+                             aFlags) {
     var spec = aLocationURI.spec;
     ok(true, spec);
     // When a new tab is opened, location is first set to "about:blank", so
     // we can ignore those calls.
     // Ignore multiple notifications for the same URI too.
     if (spec == "about:blank" || this._loadedURIs.indexOf(spec) != -1)
       return;
 
--- a/browser/components/places/tests/browser/browser_sidebarpanels_click.js
+++ b/browser/components/places/tests/browser/browser_sidebarpanels_click.js
@@ -35,16 +35,17 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 // This test makes sure that the items in the bookmarks and history sidebar
 // panels are clickable in both LTR and RTL modes.
 
 function test() {
   waitForExplicitFinish();
+  ignoreAllUncaughtExceptions();
 
   const BOOKMARKS_SIDEBAR_ID = "viewBookmarksSidebar";
   const BOOKMARKS_SIDEBAR_TREE_ID = "bookmarks-view";
   const HISTORY_SIDEBAR_ID = "viewHistorySidebar";
   const HISTORY_SIDEBAR_TREE_ID = "historyTree";
   const TEST_URL = "http://mochi.test:8888/browser/browser/components/places/tests/browser/sidebarpanels_click_test_page.html";
 
   // If a sidebar is already open, close it.
--- a/browser/components/privatebrowsing/src/Makefile.in
+++ b/browser/components/privatebrowsing/src/Makefile.in
@@ -40,17 +40,16 @@ topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = privatebrowsing
 LIBRARY_NAME = privatebrowsing_s
 FORCE_STATIC_LIB = 1
-FORCE_USE_PIC = 1
 ifndef MOZ_MEMORY
 USE_STATIC_LIBS = 1
 endif
 
 
 CPPSRCS = \
 	nsPrivateBrowsingServiceWrapper.cpp \
 	$(NULL)
--- a/browser/components/safebrowsing/content/malware-warden.js
+++ b/browser/components/safebrowsing/content/malware-warden.js
@@ -52,24 +52,24 @@ function PROT_MalwareWarden() {
     this.prefs_.getPref(kMalwareWardenEnabledPref, null);
 
   // Get notifications when the malware warden enabled pref changes
   var malwareWardenPrefObserver =
     BindToObject(this.onMalwareWardenEnabledPrefChanged, this);
   this.prefs_.addObserver(kMalwareWardenEnabledPref, malwareWardenPrefObserver);
 
   // Add a test chunk to the database
-  var testData = "mozilla.com/firefox/its-an-attack.html";
+  var testData = "mozilla.org/firefox/its-an-attack.html";
 
   var testUpdate =
     "n:1000\ni:test-malware-simple\nad:1\n" +
     "a:1:32:" + testData.length + "\n" +
     testData;
     
-  testData = "mozilla.com/firefox/its-a-trap.html";
+  testData = "mozilla.org/firefox/its-a-trap.html";
   testUpdate +=
     "n:1000\ni:test-phish-simple\nad:1\n" +
     "a:1:32:" + testData.length + "\n" +
     testData;
 
   var dbService_ = Cc["@mozilla.org/url-classifier/dbservice;1"]
                    .getService(Ci.nsIUrlClassifierDBService);
 
--- a/browser/components/safebrowsing/content/test/browser_bug400731.js
+++ b/browser/components/safebrowsing/content/test/browser_bug400731.js
@@ -3,32 +3,32 @@
 function test() {
   waitForExplicitFinish();
   
   gBrowser.selectedTab = gBrowser.addTab();
   
   // Navigate to malware site.  Can't use an onload listener here since
   // error pages don't fire onload
   window.addEventListener("DOMContentLoaded", testMalware, true);
-  content.location = "http://www.mozilla.com/firefox/its-an-attack.html";
+  content.location = "http://www.mozilla.org/firefox/its-an-attack.html";
 }
 
 function testMalware() {
   window.removeEventListener("DOMContentLoaded", testMalware, true);
 
   // Confirm that "Ignore this warning" is visible - bug 422410
   var el = content.document.getElementById("ignoreWarningButton");
   ok(el, "Ignore warning button should be present for malware");
   
   var style = content.getComputedStyle(el, null);
   is(style.display, "inline", "Ignore Warning button should be display:inline for malware");
   
   // Now launch the phishing test
   window.addEventListener("DOMContentLoaded", testPhishing, true);
-  content.location = "http://www.mozilla.com/firefox/its-a-trap.html";
+  content.location = "http://www.mozilla.org/firefox/its-a-trap.html";
 }
 
 function testPhishing() {
   window.removeEventListener("DOMContentLoaded", testPhishing, true);
   
   var el = content.document.getElementById("ignoreWarningButton");
   ok(el, "Ignore warning button should be present for phishing");
   
--- a/browser/components/safebrowsing/content/test/browser_bug415846.js
+++ b/browser/components/safebrowsing/content/test/browser_bug415846.js
@@ -32,17 +32,17 @@ function testNormal_PopupListener() {
   var reportMenu = document.getElementById("menu_HelpPopup_reportPhishingtoolmenu");
   var errorMenu = document.getElementById("menu_HelpPopup_reportPhishingErrortoolmenu");
   is(reportMenu.hidden, false, "Report phishing menu should be visible on normal sites");
   is(errorMenu.hidden, true, "Report error menu item should be hidden on normal sites");
   menu.hidePopup();
   
   // Now launch the phishing test.  Can't use onload here because error pages don't
   // fire normal load events.
-  content.location = "http://www.mozilla.com/firefox/its-a-trap.html";
+  content.location = "http://www.mozilla.org/firefox/its-a-trap.html";
   setTimeout(testPhishing, 2000);
 }
 
 function testPhishing() {
   menu.addEventListener("popupshown", testPhishing_PopupListener, false);
   menu.openPopup(null, "", 0, 0, false, null);
 }
 
--- a/browser/components/sessionstore/src/nsSessionStore.js
+++ b/browser/components/sessionstore/src/nsSessionStore.js
@@ -112,21 +112,16 @@ eg: browser.docShell["allow" + aCapabili
 XXX keep these in sync with all the attributes starting
     with "allow" in /docshell/base/nsIDocShell.idl
 */
 const CAPABILITIES = [
   "Subframes", "Plugins", "Javascript", "MetaRedirects", "Images",
   "DNSPrefetch", "Auth", "WindowControl"
 ];
 
-// These keys are for internal use only - they shouldn't be part of the JSON
-// that gets saved to disk nor part of the strings returned by the API.
-const INTERNAL_KEYS = ["_tabStillLoading", "_hosts", "_formDataSaved",
-                       "_shouldRestore", "_host", "_scheme"];
-
 // These are tab events that we listen to.
 const TAB_EVENTS = ["TabOpen", "TabClose", "TabSelect", "TabShow", "TabHide",
                     "TabPinned", "TabUnpinned"];
 
 #ifndef XP_WIN
 #define BROKEN_WM_Z_ORDER
 #endif
 
@@ -211,16 +206,19 @@ SessionStoreService.prototype = {
 
   // time in milliseconds when the session was started (saved across sessions),
   // defaults to now if no session was restored or timestamp doesn't exist
   _sessionStartTime: Date.now(),
 
   // states for all currently opened windows
   _windows: {},
 
+  // internal states for all open windows (data we need to associate, but not write to disk)
+  _internalWindows: {},
+
   // states for all recently closed windows
   _closedWindows: [],
 
   // not-"dirty" windows usually don't need to have their data updated
   _dirtyWindows: {},
 
   // collection of session states yet to be restored
   _statesToRestore: {},
@@ -374,16 +372,21 @@ SessionStoreService.prototype = {
 
           // make sure that at least the first window doesn't have anything hidden
           delete this._initialState.windows[0].hidden;
           // Since nothing is hidden in the first window, it cannot be a popup
           delete this._initialState.windows[0].isPopup;
           // We don't want to minimize and then open a window at startup.
           if (this._initialState.windows[0].sizemode == "minimized")
             this._initialState.windows[0].sizemode = "normal";
+          // clear any lastSessionWindowID attributes since those don't matter
+          // during normal restore
+          this._initialState.windows.forEach(function(aWindow) {
+            delete aWindow.__lastSessionWindowID;
+          });
         }
       }
       catch (ex) { debug("The session file is invalid: " + ex); }
     }
 
     if (this._resume_from_crash) {
       // create a backup if the session data file exists
       try {
@@ -545,27 +548,33 @@ SessionStoreService.prototype = {
       // quit-application notification so the browser is about to exit.
       if (this._loadState == STATE_QUITTING)
         return;
       this._lastSessionState = null;
       let openWindows = {};
       this._forEachBrowserWindow(function(aWindow) {
         Array.forEach(aWindow.gBrowser.tabs, function(aTab) {
           delete aTab.linkedBrowser.__SS_data;
+          delete aTab.linkedBrowser.__SS_tabStillLoading;
+          delete aTab.linkedBrowser.__SS_formDataSaved;
+          delete aTab.linkedBrowser.__SS_hostSchemeData;
           if (aTab.linkedBrowser.__SS_restoreState)
             this._resetTabRestoringState(aTab);
         });
         openWindows[aWindow.__SSi] = true;
       });
       // also clear all data about closed tabs and windows
       for (let ix in this._windows) {
-        if (ix in openWindows)
+        if (ix in openWindows) {
           this._windows[ix]._closedTabs = [];
-        else
+        }
+        else {
           delete this._windows[ix];
+          delete this._internalWindows[ix];
+        }
       }
       // also clear all data about closed windows
       this._closedWindows = [];
       // give the tabbrowsers a chance to clear their histories first
       var win = this._getMostRecentBrowserWindow();
       if (win)
         win.setTimeout(function() { _this.saveState(true); }, 0);
       else if (this._loadState == STATE_RUNNING)
@@ -792,16 +801,20 @@ SessionStoreService.prototype = {
         this._loadState == STATE_QUITTING)
       return;
 
     // assign it a unique identifier (timestamp)
     aWindow.__SSi = "window" + Date.now();
 
     // and create its data object
     this._windows[aWindow.__SSi] = { tabs: [], selected: 0, _closedTabs: [], busy: false };
+
+    // and create its internal data object
+    this._internalWindows[aWindow.__SSi] = { hosts: {} }
+
     if (!this._isWindowLoaded(aWindow))
       this._windows[aWindow.__SSi]._restoring = true;
     if (!aWindow.toolbar.visible)
       this._windows[aWindow.__SSi].isPopup = true;
     
     // perform additional initialization when the first window is loading
     if (this._loadState == STATE_STOPPED) {
       this._loadState = STATE_RUNNING;
@@ -963,17 +976,19 @@ SessionStoreService.prototype = {
     if (this._loadState == STATE_RUNNING) { // window not closed during a regular shut-down 
       // update all window data for a last time
       this._collectWindowData(aWindow);
       
       if (isFullyLoaded) {
         winData.title = aWindow.content.document.title || tabbrowser.selectedTab.label;
         winData.title = this._replaceLoadingTitle(winData.title, tabbrowser,
                                                   tabbrowser.selectedTab);
-        this._updateCookies([winData]);
+        let windows = {};
+        windows[aWindow.__SSi] = winData;
+        this._updateCookies(windows);
       }
 
 #ifndef XP_MACOSX
       // Until we decide otherwise elsewhere, this window is part of a series
       // of closing windows to quit.
       winData._shouldRestore = true;
 #endif
 
@@ -984,16 +999,17 @@ SessionStoreService.prototype = {
         delete winData.busy;
 
         this._closedWindows.unshift(winData);
         this._capClosedWindows();
       }
       
       // clear this window from the list
       delete this._windows[aWindow.__SSi];
+      delete this._internalWindows[aWindow.__SSi];
       
       // save the state without this window to disk
       this.saveStateDelayed();
     }
     
     for (let i = 0; i < tabbrowser.tabs.length; i++) {
       this.onTabRemove(aWindow, tabbrowser.tabs[i], true);
     }
@@ -1041,16 +1057,19 @@ SessionStoreService.prototype = {
     let browser = aTab.linkedBrowser;
     browser.removeEventListener("load", this, true);
     browser.removeEventListener("pageshow", this, true);
     browser.removeEventListener("change", this, true);
     browser.removeEventListener("input", this, true);
     browser.removeEventListener("DOMAutoComplete", this, true);
 
     delete browser.__SS_data;
+    delete browser.__SS_tabStillLoading;
+    delete browser.__SS_formDataSaved;
+    delete browser.__SS_hostSchemeData;
 
     // If this tab was in the middle of restoring or still needs to be restored,
     // we need to reset that state. If the tab was restoring, we will attempt to
     // restore the next tab.
     let previousState;
     if (previousState = browser.__SS_restoreState) {
       this._resetTabRestoringState(aTab);
       if (previousState == TAB_STATE_RESTORING)
@@ -1120,33 +1139,35 @@ SessionStoreService.prototype = {
     // overwriting tabs). We want to return early if the tab hasn't been restored yet.
     if ((aEvent.type != "load" && !aEvent.persisted) ||
         (aBrowser.__SS_restoreState &&
          aBrowser.__SS_restoreState == TAB_STATE_NEEDS_RESTORE)) {
       return;
     }
     
     delete aBrowser.__SS_data;
+    delete aBrowser.__SS_tabStillLoading;
+    delete aBrowser.__SS_formDataSaved;
     this.saveStateDelayed(aWindow);
     
     // attempt to update the current URL we send in a crash report
     this._updateCrashReportURL(aWindow);
   },
 
   /**
    * Called when a browser sends the "input" notification 
    * @param aWindow
    *        Window reference
    * @param aBrowser
    *        Browser reference
    */
   onTabInput: function sss_onTabInput(aWindow, aBrowser) {
-    if (aBrowser.__SS_data)
-      delete aBrowser.__SS_data._formDataSaved;
-    
+    // deleting __SS_formDataSaved will cause us to recollect form data
+    delete aBrowser.__SS_formDataSaved;
+
     this.saveStateDelayed(aWindow, 3000);
   },
 
   /**
    * When a tab is selected, save session data
    * @param aWindow
    *        Window reference
    */
@@ -1703,17 +1724,17 @@ SessionStoreService.prototype = {
    */
   _collectTabData: function sss_collectTabData(aTab, aFullData) {
     var tabData = { entries: [] };
     var browser = aTab.linkedBrowser;
     
     if (!browser || !browser.currentURI)
       // can happen when calling this function right after .addTab()
       return tabData;
-    else if (browser.__SS_data && browser.__SS_data._tabStillLoading) {
+    else if (browser.__SS_data && browser.__SS_tabStillLoading) {
       // use the data to be restored when the tab hasn't been completely loaded
       tabData = browser.__SS_data;
       if (aTab.pinned)
         tabData.pinned = true;
       else
         delete tabData.pinned;
       tabData.hidden = aTab.hidden;
 
@@ -1738,20 +1759,21 @@ SessionStoreService.prototype = {
     if (history && browser.__SS_data &&
         browser.__SS_data.entries[history.index] &&
         browser.__SS_data.entries[history.index].url == browser.currentURI.spec &&
         history.index < this._sessionhistory_max_entries - 1 && !aFullData) {
       tabData = browser.__SS_data;
       tabData.index = history.index + 1;
     }
     else if (history && history.count > 0) {
+      browser.__SS_hostSchemeData = [];
       try {
         for (var j = 0; j < history.count; j++) {
           let entry = this._serializeHistoryEntry(history.getEntryAtIndex(j, false),
-                                                  aFullData, aTab.pinned);
+                                                  aFullData, aTab.pinned, browser.__SS_hostSchemeData);
           tabData.entries.push(entry);
         }
         // If we make it through the for loop, then we're ok and we should clear
         // any indicator of brokenness.
         delete aTab.__SS_broken_history;
       }
       catch (ex) {
         // In some cases, getEntryAtIndex will throw. This seems to be due to
@@ -1830,25 +1852,26 @@ SessionStoreService.prototype = {
    * Get an object that is a serialized representation of a History entry
    * Used for data storage
    * @param aEntry
    *        nsISHEntry instance
    * @param aFullData
    *        always return privacy sensitive data (use with care)
    * @param aIsPinned
    *        the tab is pinned and should be treated differently for privacy
+   * @param aHostSchemeData
+   *        an array of objects with host & scheme keys
    * @returns object
    */
   _serializeHistoryEntry:
-    function sss_serializeHistoryEntry(aEntry, aFullData, aIsPinned) {
+    function sss_serializeHistoryEntry(aEntry, aFullData, aIsPinned, aHostSchemeData) {
     var entry = { url: aEntry.URI.spec };
 
     try {
-      entry._host = aEntry.URI.host;
-      entry._scheme = aEntry.URI.scheme;
+      aHostSchemeData.push({ host: aEntry.URI.host, scheme: aEntry.URI.scheme });
     }
     catch (ex) {
       // We just won't attempt to get cookies for this entry.
     }
 
     if (aEntry.title && aEntry.title != entry.url) {
       entry.title = aEntry.title;
     }
@@ -1941,17 +1964,17 @@ SessionStoreService.prototype = {
     }
     
     if (aEntry.childCount > 0) {
       entry.children = [];
       for (var i = 0; i < aEntry.childCount; i++) {
         var child = aEntry.GetChildAt(i);
         if (child) {
           entry.children.push(this._serializeHistoryEntry(child, aFullData,
-                                                          aIsPinned));
+                                                          aIsPinned, aHostSchemeData));
         }
         else { // to maintain the correct frame order, insert a dummy entry 
           entry.children.push({ url: "about:blank" });
         }
         // don't try to restore framesets containing wyciwyg URLs (cf. bug 424689 and bug 450595)
         if (/^wyciwyg:\/\//.test(entry.children[i].url)) {
           delete entry.children;
           break;
@@ -2039,17 +2062,17 @@ SessionStoreService.prototype = {
    * and innerHTML content of WYSIWYG editors
    * @param aWindow
    *        Window reference
    */
   _updateTextAndScrollData: function sss_updateTextAndScrollData(aWindow) {
     var browsers = aWindow.gBrowser.browsers;
     this._windows[aWindow.__SSi].tabs.forEach(function (tabData, i) {
       if (browsers[i].__SS_data &&
-          browsers[i].__SS_data._tabStillLoading)
+          browsers[i].__SS_tabStillLoading)
         return; // ignore incompletely initialized tabs
       try {
         this._updateTextAndScrollDataForTab(aWindow, browsers[i], tabData);
       }
       catch (ex) { debug(ex); } // get as much data as possible, ignore failures (might succeed the next time)
     }, this);
   },
 
@@ -2076,19 +2099,19 @@ SessionStoreService.prototype = {
                             this._getSelectedPageStyle(aBrowser.contentWindow);
     if (selectedPageStyle)
       aTabData.pageStyle = selectedPageStyle;
     else if (aTabData.pageStyle)
       delete aTabData.pageStyle;
     
     this._updateTextAndScrollDataForFrame(aWindow, aBrowser.contentWindow,
                                           aTabData.entries[tabIndex],
-                                          !aTabData._formDataSaved, aFullData,
+                                          !aBrowser.__SS_formDataSaved, aFullData,
                                           !!aTabData.pinned);
-    aTabData._formDataSaved = true;
+    aBrowser.__SS_formDataSaved = true;
     if (aBrowser.currentURI.spec == "about:config")
       aTabData.entries[tabIndex].formdata = {
         "#textbox": aBrowser.contentDocument.getElementById("textbox").value
       };
   },
 
   /**
    * go through all subframes and store all form data, the current
@@ -2255,108 +2278,133 @@ SessionStoreService.prototype = {
    * @param aHosts
    *        the hash that will be used to store hosts eg, { hostname: true }
    * @param aCheckPrivacy
    *        should we check the privacy level for https
    * @param aIsPinned
    *        is the entry we're evaluating for a pinned tab; used only if
    *        aCheckPrivacy
    */
-  _extractHostsForCookies:
-    function sss__extractHostsForCookies(aEntry, aHosts, aCheckPrivacy, aIsPinned) {
+  _extractHostsForCookiesFromEntry:
+    function sss__extractHostsForCookiesFromEntry(aEntry, aHosts, aCheckPrivacy, aIsPinned) {
 
     let host = aEntry._host,
         scheme = aEntry._scheme;
 
     // If host & scheme aren't defined, then we are likely here in the startup
     // process via _splitCookiesFromWindow. In that case, we'll turn aEntry.url
     // into an nsIURI and get host/scheme from that. This will throw for about:
     // urls in which case we don't need to do anything.
     if (!host && !scheme) {
       try {
         let uri = this._getURIFromString(aEntry.url);
         host = uri.host;
         scheme = uri.scheme;
+        this._extractHostsForCookiesFromHostScheme(host, scheme, aHosts, aCheckPrivacy, aIsPinned);
       }
       catch(ex) { }
     }
 
-    // host and scheme may not be set (for about: urls for example), in which
-    // case testing scheme will be sufficient.
-    if (/https?/.test(scheme) && !aHosts[host] &&
-        (!aCheckPrivacy ||
-         this._checkPrivacyLevel(scheme == "https", aIsPinned))) {
-      // By setting this to true or false, we can determine when looking at
-      // the host in _updateCookies if we should check for privacy.
-      aHosts[host] = aIsPinned;
-    }
-    else if (scheme == "file") {
-      aHosts[host] = true;
-    }
-
     if (aEntry.children) {
       aEntry.children.forEach(function(entry) {
-        this._extractHostsForCookies(entry, aHosts, aCheckPrivacy, aIsPinned);
+        this._extractHostsForCookiesFromEntry(entry, aHosts, aCheckPrivacy, aIsPinned);
       }, this);
     }
   },
 
   /**
+   * extract the base domain from a host & scheme
+   * @param aHost
+   *        the host of a uri (usually via nsIURI.host)
+   * @param aScheme
+   *        the scheme of a uri (usually via nsIURI.scheme)
+   * @param aHosts
+   *        the hash that will be used to store hosts eg, { hostname: true }
+   * @param aCheckPrivacy
+   *        should we check the privacy level for https
+   * @param aIsPinned
+   *        is the entry we're evaluating for a pinned tab; used only if
+   *        aCheckPrivacy
+   */
+  _extractHostsForCookiesFromHostScheme:
+    function sss__extractHostsForCookiesFromHostScheme(aHost, aScheme, aHosts, aCheckPrivacy, aIsPinned) {
+    // host and scheme may not be set (for about: urls for example), in which
+    // case testing scheme will be sufficient.
+    if (/https?/.test(aScheme) && !aHosts[aHost] &&
+        (!aCheckPrivacy ||
+         this._checkPrivacyLevel(aScheme == "https", aIsPinned))) {
+      // By setting this to true or false, we can determine when looking at
+      // the host in _updateCookies if we should check for privacy.
+      aHosts[aHost] = aIsPinned;
+    }
+    else if (aScheme == "file") {
+      aHosts[aHost] = true;
+    }
+  },
+
+  /**
    * store all hosts for a URL
    * @param aWindow
    *        Window reference
    */
   _updateCookieHosts: function sss_updateCookieHosts(aWindow) {
-    var hosts = this._windows[aWindow.__SSi]._hosts = {};
-
-    this._windows[aWindow.__SSi].tabs.forEach(function(aTabData) {
-      aTabData.entries.forEach(function(entry) {
-        this._extractHostsForCookies(entry, hosts, true, !!aTabData.pinned);
-      }, this);
-    }, this);
+    var hosts = this._internalWindows[aWindow.__SSi].hosts = {};
+
+    // Since _updateCookiesHosts is only ever called for open windows during a
+    // session, we can call into _extractHostsForCookiesFromHostScheme directly
+    // using data that is attached to each browser.
+    for (let i = 0; i < aWindow.gBrowser.tabs.length; i++) {
+      let tab = aWindow.gBrowser.tabs[i];
+      let hostSchemeData = tab.linkedBrowser.__SS_hostSchemeData || [];
+      for (let j = 0; j < hostSchemeData.length; j++) {
+        this._extractHostsForCookiesFromHostScheme(hostSchemeData[j].host,
+                                                   hostSchemeData[j].scheme,
+                                                   hosts, true, tab.pinned);
+      }
+    }
   },
 
   /**
    * Serialize cookie data
    * @param aWindows
-   *        array of Window references
+   *        JS object containing window data references
+   *        { id: winData, etc. }
    */
   _updateCookies: function sss_updateCookies(aWindows) {
     function addCookieToHash(aHash, aHost, aPath, aName, aCookie) {
       // lazily build up a 3-dimensional hash, with
       // aHost, aPath, and aName as keys
       if (!aHash[aHost])
         aHash[aHost] = {};
       if (!aHash[aHost][aPath])
         aHash[aHost][aPath] = {};
       aHash[aHost][aPath][aName] = aCookie;
     }
 
-    // collect the cookies per window
-    for (var i = 0; i < aWindows.length; i++)
-      aWindows[i].cookies = [];
-
     var jscookies = {};
     var _this = this;
     // MAX_EXPIRY should be 2^63-1, but JavaScript can't handle that precision
     var MAX_EXPIRY = Math.pow(2, 62);
-    aWindows.forEach(function(aWindow) {
-      if (!aWindow._hosts)
+
+    for (let [id, window] in Iterator(aWindows)) {
+      window.cookies = [];
+      let internalWindow = this._internalWindows[id];
+      if (!internalWindow.hosts)
         return;
-      for (var [host, isPinned] in Iterator(aWindow._hosts)) {
+      for (var [host, isPinned] in Iterator(internalWindow.hosts)) {
         let list;
         try {
           list = CookieSvc.getCookiesFromHost(host);
         }
         catch (ex) {
           debug("getCookiesFromHost failed. Host: " + host);
         }
         while (list && list.hasMoreElements()) {
           var cookie = list.getNext().QueryInterface(Ci.nsICookie2);
-          // aWindow._hosts will only have hosts with the right privacy rules,
+          // window._hosts will only have hosts with the right privacy rules,
           // so there is no need to do anything special with this call to
           // _checkPrivacyLevel.
           if (cookie.isSession && _this._checkPrivacyLevel(cookie.isSecure, isPinned)) {
             // use the cookie's host, path, and name as keys into a hash,
             // to make sure we serialize each cookie only once
             if (!(cookie.host in jscookies &&
                   cookie.path in jscookies[cookie.host] &&
                   cookie.name in jscookies[cookie.host][cookie.path])) {
@@ -2365,26 +2413,25 @@ SessionStoreService.prototype = {
               if (cookie.path) jscookie.path = cookie.path;
               if (cookie.name) jscookie.name = cookie.name;
               if (cookie.isSecure) jscookie.secure = true;
               if (cookie.isHttpOnly) jscookie.httponly = true;
               if (cookie.expiry < MAX_EXPIRY) jscookie.expiry = cookie.expiry;
 
               addCookieToHash(jscookies, cookie.host, cookie.path, cookie.name, jscookie);
             }
-            aWindow.cookies.push(jscookies[cookie.host][cookie.path][cookie.name]);
+            window.cookies.push(jscookies[cookie.host][cookie.path][cookie.name]);
           }
         }
       }
-    });
-
<