* `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
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
})
})
})
+
+ 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)
+ })
+ })
+ })
})