diff --git a/Makefile.in b/Makefile.in
index 2b1c3b88a62..5f823293f57 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -213,6 +213,8 @@ maybe_clobber_profiledbuild:
endif
else
maybe_clobber_profiledbuild:
+ $(RM) $(DIST)/bin/*.pgc
+ find $(DIST)/$(MOZ_APP_NAME) -name "*.pgc" -exec mv {} $(DIST)/bin \;
endif
.PHONY: maybe_clobber_profiledbuild
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index aa9f364d2f8..e4b30bf3703 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1008,6 +1008,9 @@ pref("devtools.inspector.enabled", true);
// Enable the style inspector
pref("devtools.styleinspector.enabled", true);
+// Enable the rules view
+pref("devtools.ruleview.enabled", true);
+
// Enable the Scratchpad tool.
pref("devtools.scratchpad.enabled", true);
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 24ee6669f09..13a8c8103a0 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -3908,12 +3908,29 @@ var FullScreen = {
}
},
+ exitDomFullScreen : function(e) {
+ document.mozCancelFullScreen();
+ },
+
enterDomFullScreen : function(event) {
- if (!document.mozFullScreen) {
+ // 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) {
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).
+ window.addEventListener("deactivate", this.exitDomFullScreen, true);
+
// Cancel any "hide the toolbar" animation which is in progress, and make
// the toolbar hide immediately.
clearInterval(this._animationInterval);
@@ -3946,6 +3963,10 @@ var FullScreen = {
fullScrToggler.removeEventListener("dragenter", this._expandCallback, false);
}
this.cancelWarning();
+ gBrowser.tabContainer.removeEventListener("TabOpen", this.exitDomFullScreen);
+ gBrowser.tabContainer.removeEventListener("TabClose", this.exitDomFullScreen);
+ gBrowser.tabContainer.removeEventListener("TabSelect", this.exitDomFullScreen);
+ window.removeEventListener("deactivate", this.exitDomFullScreen, true);
}
},
@@ -8169,7 +8190,7 @@ let DownloadMonitorPanel = {
let maxTime = -Infinity;
let dls = gDownloadMgr.activeDownloads;
while (dls.hasMoreElements()) {
- let dl = dls.getNext().QueryInterface(Ci.nsIDownload);
+ let dl = dls.getNext();
if (dl.state == gDownloadMgr.DOWNLOAD_DOWNLOADING) {
// Figure out if this download takes longer
if (dl.speed > 0 && dl.size > 0)
diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
index d078c39b64e..1ca600b86d9 100644
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -967,7 +967,7 @@
-