Skip to content

Commit 233dd50

Browse files
committed
Fix removeUnintentionalBlank option (#36, #38)
1 parent 55f3d46 commit 233dd50

File tree

2 files changed

+55
-6
lines changed

2 files changed

+55
-6
lines changed

chrome/content/tabutils.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -586,9 +586,9 @@ tabutils._tabOpeningOptions = function() {
586586
&& aStatus == 0
587587
&& TU_getPref("extensions.tabutils.removeUnintentionalBlank", true)) {
588588
let win = aWebProgress.DOMWindow;
589-
win._closeTimer = win.setTimeout(function(self) {
590-
self.mTabBrowser.isBlankTab(self.mTab) && self.mTabBrowser.removeTab(self.mTab);
591-
}, 250, this);
589+
win._closeTimer = win.setTimeout(function() {
590+
this.mTabBrowser.isBlankTab(this.mTab) && this.mTabBrowser.removeTab(this.mTab);
591+
}.bind(this), 750);
592592
}
593593
});
594594

chrome/content/unknownContentType.xul

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,62 @@
11
<?xml version="1.0"?>
22
<overlay id="tabutils-unknownContentType" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
3+
<script type="application/javascript" src="tulib.js"/>
34
<script type="application/javascript">
45
<![CDATA[
56
var win = window.opener;
67
if (win && win._closeTimer) {
78
win.clearTimeout(win._closeTimer);
8-
window.addEventListener("unload", function() {
9-
win && win.setTimeout(function() {this.close();}, 250);
10-
}, false);
9+
10+
function isUsableDirectory(aDirectory)
11+
{
12+
return aDirectory.exists() && aDirectory.isDirectory() &&
13+
aDirectory.isWritable();
14+
}
15+
16+
const PREF_BD_USEDOWNLOADDIR = "browser.download.useDownloadDir";
17+
const nsITimer = Components.interfaces.nsITimer;
18+
19+
try {
20+
var downloadModule = {};
21+
Components.utils.import("resource://gre/modules/DownloadLastDir.jsm", downloadModule); // Bug 722995 [Fx19]
22+
Components.utils.import("resource://gre/modules/DownloadLastDir.jsm");
23+
Components.utils.import("resource://gre/modules/Downloads.jsm");
24+
Components.utils.import("resource://gre/modules/FileUtils.jsm");
25+
Components.utils.import("resource://gre/modules/Services.jsm");
26+
Components.utils.import("resource://gre/modules/Task.jsm");
27+
} catch (e) {}
28+
29+
if ("promptForSaveToFileAsync" in dialog) // Bug 854299 [Fx23]
30+
TU_hookCode("dialog.promptForSaveToFileAsync", /.*saveDestinationAvailable.*/g, function(s) (function() {
31+
{
32+
$0;
33+
aContext.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
34+
.getInterface(Components.interfaces.nsIDOMWindow)
35+
.close();
36+
}
37+
}).toString().replace(/^.*{|}$/g, "").replace("$0", s));
38+
39+
TU_hookCode("dialog.promptForSaveToFile", /(return;|return null;|return result;)/g, function(s) (function() {
40+
{
41+
aContext.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
42+
.getInterface(Components.interfaces.nsIDOMWindow)
43+
.close();
44+
$0;
45+
}
46+
}).toString().replace(/^.*{|}$/g, "").replace("$0", s));
47+
48+
TU_hookCode("dialog.onOK", /(?=return true;)/, function() {
49+
if (!this._saveToDiskTimer)
50+
this.mContext.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
51+
.getInterface(Components.interfaces.nsIDOMWindow)
52+
.close();
53+
});
54+
55+
TU_hookCode("dialog.onCancel", /(?=return true;)/, function() {
56+
this.mContext.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
57+
.getInterface(Components.interfaces.nsIDOMWindow)
58+
.close();
59+
});
1160
}
1261
]]>
1362
</script>

0 commit comments

Comments
 (0)