Skip to content
This repository was archived by the owner on Mar 13, 2018. It is now read-only.

Commit c4da637

Browse files
atoticarv
authored andcommitted
unwrap(FormData) fails
1 parent cdb189f commit c4da637

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

src/wrappers.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -282,13 +282,15 @@ window.ShadowDOMPolyfill = {};
282282
var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D;
283283
var OriginalWebGLRenderingContext = window.WebGLRenderingContext;
284284
var OriginalSVGElementInstance = window.SVGElementInstance;
285-
285+
var OriginalFormData = window.FormData;
286+
286287
function isWrapper(object) {
287288
return object instanceof wrappers.EventTarget ||
288289
object instanceof wrappers.Event ||
289290
object instanceof wrappers.Range ||
290291
object instanceof wrappers.DOMImplementation ||
291292
object instanceof wrappers.CanvasRenderingContext2D ||
293+
object instanceof wrappers.FormData ||
292294
wrappers.WebGLRenderingContext &&
293295
object instanceof wrappers.WebGLRenderingContext;
294296
}
@@ -301,6 +303,7 @@ window.ShadowDOMPolyfill = {};
301303
object instanceof OriginalRange ||
302304
object instanceof OriginalDOMImplementation ||
303305
object instanceof OriginalCanvasRenderingContext2D ||
306+
object instanceof OriginalFormData ||
304307
OriginalWebGLRenderingContext &&
305308
object instanceof OriginalWebGLRenderingContext ||
306309
OriginalSVGElementInstance &&

src/wrappers/FormData.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
var OriginalFormData = window.FormData;
1414

1515
function FormData(formElement) {
16-
this.impl = new OriginalFormData(formElement && unwrap(formElement));
16+
if (formElement instanceof OriginalFormData)
17+
this.impl = formElement;
18+
else
19+
this.impl = new OriginalFormData(formElement && unwrap(formElement));
1720
}
1821

1922
registerWrapper(OriginalFormData, FormData, new OriginalFormData());

test/js/FormData.js

+10
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
suite('FormData', function() {
88

9+
var wrap = ShadowDOMPolyfill.wrap;
10+
var unwrap = ShadowDOMPolyfill.unwrap;
11+
912
test('instanceof', function() {
1013
var fd = new FormData();
1114
assert.instanceOf(fd, FormData);
@@ -17,4 +20,11 @@ suite('FormData', function() {
1720
assert.instanceOf(fd, FormData);
1821
});
1922

23+
test('wrap/unwrap', function() {
24+
var fd = new FormData();
25+
var unwrapped = unwrap(fd);
26+
var wrapped = wrap(unwrapped);
27+
assert.equal(fd.impl, wrapped.impl);
28+
});
29+
2030
});

0 commit comments

Comments
 (0)