This commit is contained in:
deepak1556 2016-08-23 11:29:21 +05:30
Родитель d2e40d4fc1
Коммит be4bc6b7ef
3 изменённых файлов: 68 добавлений и 4 удалений

Просмотреть файл

@ -93,7 +93,7 @@ The `uploadData` is an array of `data` objects:
* `data` Object
* `bytes` Buffer - Content being sent.
* `file` String - Path of file being uploaded.
* `blobUUId` String - UUID of blob data.
* `blobUUID` String - UUID of blob data.
To handle the `request`, the `callback` should be called with either the file's
path or an object that has a `path` property, e.g. `callback(filePath)` or

Просмотреть файл

@ -326,13 +326,13 @@ This doesn't affect existing `WebContents`, and each `WebContents` can use
Returns a `String` representing the user agent for this session.
#### `ses.getBlobDataForUUID(uuid, callback)`
#### `ses.getBlobData(identifier, callback)`
* `uuid` String
* `identifier` String - Valid UUID or public blob URL.
* `callback` Function
* `result` Buffer - Blob data.
Returns the blob data associated with `uuid`.
Returns the blob data associated with the `identifier`.
### Instance Properties

Просмотреть файл

@ -402,4 +402,68 @@ describe('session module', function () {
})
})
})
describe('ses.getblobData(identifier, callback)', function () {
it('returns blob data for public url', function (done) {
let data = JSON.stringify({
type: 'blob',
value: 'hello'
})
let blob = new Blob([data], {type: 'application/json'})
let blobURL = URL.createObjectURL(blob)
session.defaultSession.getBlobData(blobURL, function (result) {
assert.equal(result.toString(), data)
done()
})
})
it('returns blob data for uuid', function (done) {
const scheme = 'temp'
const protocol = session.defaultSession.protocol
const url = scheme + '://host'
before(function () {
if (w != null) w.destroy()
w = new BrowserWindow({show: false})
})
after(function (done) {
protocol.unregisterProtocol(scheme, () => {
closeWindow(w).then(() => {
w = null
done()
})
})
})
const postData = JSON.stringify({
type: 'blob',
value: 'hello'
})
const content = `<html>
<script>
const {webFrame} = require('electron')
webFrame.registerURLSchemeAsPrivileged('${scheme}')
let fd = new FormData();
fd.append('file', new Blob(['${postData}'], {type:'application/json'}));
fetch('${url}', {method:'POST', body: fd });
</script>
</html>`
protocol.registerStringProtocol(scheme, function (request, callback) {
if (request.method === 'GET') {
callback({data: content, mimeType: 'text/html'})
} else if (request.method === 'POST') {
let uuid = request.uploadData[1].blobUUID
assert(uuid)
session.defaultSession.getBlobData(uuid, function (result) {
assert.equal(result.toString(), postData)
done()
})
}
}, function (error) {
if (error) return done(error)
w.loadURL(url)
})
})
})
})