Remove chrome.filesystem and use only standard apis

This commit is contained in:
Tankred Hase 2014-09-24 12:46:19 +02:00
parent 53341f02a2
commit 0613016581
5 changed files with 17 additions and 80 deletions

View File

@ -49,26 +49,12 @@ define(function(require) {
var file = 'whiteout_mail_' + userId + '_' + keyId.substring(8, keyId.length); var file = 'whiteout_mail_' + userId + '_' + keyId.substring(8, keyId.length);
dl.createDownload({ dl.createDownload({
content: keys.publicKey.publicKey + keys.privateKey.encryptedKey, content: keys.publicKey.publicKey + '\r\n' + keys.privateKey.encryptedKey,
filename: file + '.asc', filename: file + '.asc',
contentType: 'text/plain' contentType: 'text/plain'
}, onExport); });
}); });
}; };
function onExport(err) {
if (err) {
$scope.onError(err);
return;
}
$scope.state.account.toggle(false);
$scope.$apply();
$scope.onError({
title: 'Success',
message: 'Exported keypair to file.'
});
}
}; };
return AccountCtrl; return AccountCtrl;

View File

@ -67,7 +67,7 @@ define(function(require) {
function checkPublicKey(user) { function checkPublicKey(user) {
user.secure = undefined; user.secure = undefined;
if(!keychain) { if (!keychain) {
return; return;
} }
@ -94,7 +94,7 @@ define(function(require) {
content: attachment.content, content: attachment.content,
filename: attachment.filename, filename: attachment.filename,
contentType: attachment.mimeType contentType: attachment.mimeType
}, $scope.onError); });
return; return;
} }
@ -200,7 +200,7 @@ define(function(require) {
var iframe = elm[0]; var iframe = elm[0];
scope.$watch('state.read.open', function(open) { scope.$watch('state.read.open', function(open) {
if(open) { if (open) {
// trigger rendering of iframe // trigger rendering of iframe
// otherwise scale to fit would not compute correct dimensions on mobile // otherwise scale to fit would not compute correct dimensions on mobile
displayText(scope.state.mailList.selected ? scope.state.mailList.selected.body : undefined); displayText(scope.state.mailList.selected ? scope.state.mailList.selected.body : undefined);
@ -267,7 +267,7 @@ define(function(require) {
var w = elm.width(); var w = elm.width();
var scale = ''; var scale = '';
if(w > parentWidth) { if (w > parentWidth) {
scale = parentWidth / w; scale = parentWidth / w;
scale = 'scale(' + scale + ',' + scale + ')'; scale = 'scale(' + scale + ',' + scale + ')';
} }

View File

@ -5,7 +5,7 @@ define(function(require) {
var dl = {}; var dl = {};
dl.createDownload = function(options, callback) { dl.createDownload = function(options) {
var contentType = options.contentType || 'application/octet-stream'; var contentType = options.contentType || 'application/octet-stream';
var filename = options.filename || 'file'; var filename = options.filename || 'file';
var content = options.content; var content = options.content;
@ -16,28 +16,7 @@ define(function(require) {
supportsBlob = !!new Blob(); supportsBlob = !!new Blob();
} catch (e) {} } catch (e) {}
if (window.chrome && window.chrome.fileSystem) { if (typeof a.download !== "undefined" && supportsBlob) {
// chrome app
chrome.fileSystem.chooseEntry({
type: 'saveFile',
suggestedName: filename
}, function(file) {
if (!file) {
callback();
return;
}
file.createWriter(function(writer) {
writer.onerror = callback;
writer.onwriteend = function() {
callback();
};
writer.write(new Blob([content], {
type: contentType
}));
}, callback);
});
return;
} else if (typeof a.download !== "undefined" && supportsBlob) {
// ff 30+, chrome 27+ (android: 37+) // ff 30+, chrome 27+ (android: 37+)
document.body.appendChild(a); document.body.appendChild(a);
a.style = "display: none"; a.style = "display: none";

View File

@ -11,9 +11,7 @@
"196": "img/icon-196.png" "196": "img/icon-196.png"
}, },
"permissions": [ "permissions": [
"unlimitedStorage", { "unlimitedStorage",
"fileSystem": ["write"]
},
"notifications", "notifications",
"https://keys-test.whiteout.io/", "https://keys-test.whiteout.io/",
"https://keychain-test.whiteout.io/", "https://keychain-test.whiteout.io/",

View File

@ -63,7 +63,7 @@ define(function(require) {
}); });
}); });
describe('export to key file', function() { describe('export to key file', function() {
it('should work', function(done) { it('should work', function() {
var createDownloadMock = sinon.stub(dl, 'createDownload'); var createDownloadMock = sinon.stub(dl, 'createDownload');
keychainMock.getUserKeyPair.withArgs(emailAddress).yields(null, { keychainMock.getUserKeyPair.withArgs(emailAddress).yields(null, {
publicKey: { publicKey: {
@ -75,18 +75,15 @@ define(function(require) {
} }
}); });
createDownloadMock.withArgs(sinon.match(function(arg) { createDownloadMock.withArgs(sinon.match(function(arg) {
return arg.content === 'ab' && arg.filename === 'whiteout_mail_' + emailAddress + '_' + expectedKeyId + '.asc' && arg.contentType === 'text/plain'; return arg.content === 'a\r\nb' && arg.filename === 'whiteout_mail_' + emailAddress + '_' + expectedKeyId + '.asc' && arg.contentType === 'text/plain';
})).yields(); })).returns();
scope.onError = function(err) {
expect(err.title).to.equal('Success'); scope.exportKeyFile();
expect(scope.state.lightbox).to.equal(undefined); expect(scope.state.lightbox).to.equal(undefined);
expect(keychainMock.getUserKeyPair.calledOnce).to.be.true; expect(keychainMock.getUserKeyPair.calledOnce).to.be.true;
expect(dl.createDownload.calledOnce).to.be.true; expect(dl.createDownload.calledOnce).to.be.true;
dl.createDownload.restore(); dl.createDownload.restore();
done();
};
scope.exportKeyFile();
}); });
it('should not work when key export failed', function(done) { it('should not work when key export failed', function(done) {
@ -99,29 +96,6 @@ define(function(require) {
scope.exportKeyFile(); scope.exportKeyFile();
}); });
it('should not work when create download failed', function(done) {
var createDownloadMock = sinon.stub(dl, 'createDownload');
keychainMock.getUserKeyPair.withArgs(emailAddress).yields(null, {
publicKey: {
_id: dummyKeyId,
publicKey: 'a'
},
privateKey: {
encryptedKey: 'b'
}
});
createDownloadMock.withArgs().yields(new Error('asdasd'));
scope.onError = function(err) {
expect(err.message).to.equal('asdasd');
expect(keychainMock.getUserKeyPair.calledOnce).to.be.true;
expect(dl.createDownload.calledOnce).to.be.true;
dl.createDownload.restore();
done();
};
scope.exportKeyFile();
});
}); });
}); });
}); });