From 5628d8eb820fead4cd104e9b6e37b388f9b8358e Mon Sep 17 00:00:00 2001 From: Marcel Gerber Date: Thu, 28 Aug 2014 20:54:53 +0200 Subject: [PATCH 1/3] Fix minor TimingFunction validation issue --- .../InlineTimingFunctionEditor/TimingFunctionUtils.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js b/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js index 687239f8309..daec0063491 100644 --- a/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js +++ b/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js @@ -60,15 +60,15 @@ define(function (require, exports, module) { * If string is a number, then convert it. * * @param {string} str value parsed from page. - * @return { isNumber: boolean, value: number } + * @return { isNumber: boolean, value: ?number } */ function _convertToNumber(str) { - if (typeof (str) !== "string") { - return { isNumber: false }; + if (typeof str !== "string" || /[^\d\s.\-]/.test(str)) { + return { isNumber: false, value: null }; } var val = parseFloat(str, 10), - isNum = (typeof (val) === "number") && !isNaN(val) && + isNum = (typeof val === "number") && !isNaN(val) && (val !== Infinity) && (val !== -Infinity); return { From 36d6aa078fb0918369334e99abe3b575409eb2fb Mon Sep 17 00:00:00 2001 From: Marcel Gerber Date: Tue, 9 Sep 2014 14:17:32 +0200 Subject: [PATCH 2/3] Use unary operator to sort out invalid numbers --- .../default/InlineTimingFunctionEditor/TimingFunctionUtils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js b/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js index daec0063491..4896e107911 100644 --- a/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js +++ b/src/extensions/default/InlineTimingFunctionEditor/TimingFunctionUtils.js @@ -63,11 +63,11 @@ define(function (require, exports, module) { * @return { isNumber: boolean, value: ?number } */ function _convertToNumber(str) { - if (typeof str !== "string" || /[^\d\s.\-]/.test(str)) { + if (typeof str !== "string") { return { isNumber: false, value: null }; } - var val = parseFloat(str, 10), + var val = parseFloat(+str, 10), isNum = (typeof val === "number") && !isNaN(val) && (val !== Infinity) && (val !== -Infinity); From 20c9e05edc23f42e3bd70ffbbe171d29d13b30c7 Mon Sep 17 00:00:00 2001 From: Marcel Gerber Date: Tue, 9 Sep 2014 14:25:15 +0200 Subject: [PATCH 3/3] Added unit test --- src/extensions/default/InlineTimingFunctionEditor/unittests.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/extensions/default/InlineTimingFunctionEditor/unittests.js b/src/extensions/default/InlineTimingFunctionEditor/unittests.js index cc85c37a23b..c56764202a7 100644 --- a/src/extensions/default/InlineTimingFunctionEditor/unittests.js +++ b/src/extensions/default/InlineTimingFunctionEditor/unittests.js @@ -215,6 +215,9 @@ define(function (require, exports, module) { it("should correct cubic-bezier function with 5 parameters", function () { testInvalidBezier("cubic-bezier(0, 0, 1, 1, 1)", ["cubic-bezier(0, 0, 1, 1)", "0", "0", "1", "1"]); }); + it("should correct cubic-bezier function with trailing comma", function () { + testInvalidBezier("cubic-bezier(.42, 0, .58, .5,)", ["cubic-bezier(.42, 0, .58, .5)", ".42", "0", ".58", ".5"]); + }); // Real invalid cubic-beziers - they should NOT be corrected automatically it("should not match cubic-bezier function with invalid whitespace", function () {