зеркало из
1
0
Форкнуть 0
This commit is contained in:
Braintree 2013-06-27 14:42:40 -05:00
Родитель 0acf90228d
Коммит 1447054777
3 изменённых файлов: 27 добавлений и 5 удалений

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

@ -1,3 +1,7 @@
== 1.3.5
* Fix issue when removing hidden form elements that no longer exist on the page
== 1.3.4
* Fix issue in IE 8 and below or IE 9 in quirksmode where comment nodes were incorrectly being handled

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

@ -8,7 +8,7 @@
var Braintree = {
sjcl: sjcl,
version: "1.3.4"
version: "1.3.5"
};
Braintree.generateAesKey = function () {
@ -157,13 +157,18 @@ Braintree.EncryptionClient = function (publicKey) {
self.encryptForm = function (form) {
var element, encryptedValue,
fieldName, hiddenField,
i, inputs;
i, inputs, ownerDocument;
form = extractForm(form);
inputs = findInputs(form);
while (hiddenFields.length > 0) {
form.removeChild(hiddenFields[0]);
ownerDocument = hiddenFields[0].ownerDocument;
if (ownerDocument.contains && ownerDocument.contains(hiddenFields[0])) {
form.removeChild(hiddenFields[0]);
}
hiddenFields.splice(0, 1);
}

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

@ -3,7 +3,7 @@ describe("Braintree#form", function() {
window.jQuery = $;
});
beforeEach(function() {
function setFormFixture() {
setFixtures("<form action='' id='braintree_form'>" +
"<input type='text' data-encrypted-name='credit-card-number' value='cc number'/>" +
"<input type='text' data-encrypted-name='credit-card-cvv' value='cvv' />" +
@ -17,9 +17,16 @@ describe("Braintree#form", function() {
"</div>" +
"<input type=\"submit\" id=\"click_me\" />" +
"</form>");
}
beforeEach(function() {
setFormFixture();
this.braintree = Braintree.create('foo');
spyOn(this.braintree, 'encrypt').andCallFake(
function(data) {
function (data) {
return 'encrypted ' + data;
});
});
@ -68,6 +75,12 @@ describe("Braintree#form", function() {
expect($('input[type="hidden"][name="credit-card-number"]').length).toBe(1);
});
it("shouldn't throw DOM exceptions when attempting to remove hidden inputs that no longer exist in the document", function() {
this.braintree.encryptForm('braintree_form');
setFormFixture();
this.braintree.encryptForm('braintree_form');
});
it("shouldn't throw DOM exceptions when encrypting multiple times", function() {
this.braintree.encryptForm('braintree_form');
this.braintree.encryptForm('braintree_form');