diff --git a/gulpfile.js b/gulpfile.js
index 09b6a43e81f..9f130d30532 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -31,6 +31,9 @@ const filters = {
'!build/safari/**/*',
'!build/downloader/**/*'
],
+ safariDir: [
+ '!build/safari/**/*'
+ ],
webExt: [
'!build/manifest.json'
],
@@ -215,7 +218,7 @@ function safariAppCopyBuild(source, dest) {
return new Promise((resolve, reject) => {
gulp.src(source)
.on('error', reject)
- .pipe(filter(['**'].concat(filters.edge).concat(filters.fonts).concat(filters.safari)
+ .pipe(filter(['**'].concat(filters.edge).concat(filters.fonts).concat(filters.safariDir)
.concat(filters.webExt).concat(filters.nonSafariApp)))
.pipe(gulp.dest(dest))
.on('end', resolve);
diff --git a/src/content/downloader.ts b/src/content/downloader.ts
new file mode 100644
index 00000000000..eb1517f2fdd
--- /dev/null
+++ b/src/content/downloader.ts
@@ -0,0 +1,26 @@
+document.addEventListener('DOMContentLoaded', (event) => {
+ const isSafari = (typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 &&
+ navigator.userAgent.indexOf('Chrome') === -1;
+
+ if (!isSafari) {
+ return;
+ }
+
+ safari.self.addEventListener('message', (msgEvent: any) => {
+ const msg = JSON.parse(msgEvent.message.msg);
+ if (msg.command === 'downloaderPageData') {
+ const blob = new Blob([msg.data.blobData], msg.data.blobOptions);
+ if (navigator.msSaveOrOpenBlob) {
+ navigator.msSaveBlob(blob, msg.data.fileName);
+ } else {
+ const a = document.createElement('a');
+ a.href = URL.createObjectURL(blob);
+ a.download = msg.data.fileName;
+ document.body.appendChild(a);
+ a.click();
+ document.body.removeChild(a);
+ }
+ window.setTimeout(() => window.close(), 1500);
+ }
+ }, false);
+});
diff --git a/src/downloader/downloader.ts b/src/downloader/downloader.ts
index a840309f12e..4c7473764ec 100644
--- a/src/downloader/downloader.ts
+++ b/src/downloader/downloader.ts
@@ -1,30 +1,3 @@
document.addEventListener('DOMContentLoaded', () => {
- const isSafari = (typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 &&
- navigator.userAgent.indexOf('Chrome') === -1;
-
- if (!isSafari) {
- return;
- }
-
- safari.self.addEventListener('message', (msgEvent: any) => {
- doDownload(JSON.parse(msgEvent.message.msg));
- }, false);
-
- function doDownload(msg: any) {
- if (msg.command === 'downloaderPageData' && msg.data) {
- const blob = new Blob([msg.data.blobData], msg.data.blobOptions);
- if (navigator.msSaveOrOpenBlob) {
- navigator.msSaveBlob(blob, msg.data.fileName);
- } else {
- const a = document.createElement('a');
- a.href = URL.createObjectURL(blob);
- a.download = msg.data.fileName;
- document.body.appendChild(a);
- a.click();
- document.body.removeChild(a);
- }
- }
-
- window.setTimeout(() => window.close(), 1500);
- }
+ // TODO
});
diff --git a/src/safari/app/desktop/safari/Info.plist b/src/safari/app/desktop/safari/Info.plist
index 5d5c054f03f..edd7c46e7ca 100644
--- a/src/safari/app/desktop/safari/Info.plist
+++ b/src/safari/app/desktop/safari/Info.plist
@@ -53,6 +53,10 @@
Script
app/content/shortcuts.js
+
+ Script
+ app/content/downloader.js
+
SFSafariToolbarItem
diff --git a/webpack.config.js b/webpack.config.js
index 3e25f5e394e..43ba3cbd62a 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -145,6 +145,7 @@ const config = {
'background': './src/background.ts',
'content/autofill': './src/content/autofill.js',
'content/autofiller': './src/content/autofiller.ts',
+ 'content/downloader': './src/content/downloader.ts',
'content/notificationBar': './src/content/notificationBar.ts',
'content/shortcuts': './src/content/shortcuts.ts',
'notification/bar': './src/notification/bar.js',