diff options
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/fp_code_builders.js')
-rw-r--r-- | data/extensions/jsr@javascriptrestrictor/fp_code_builders.js | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/data/extensions/jsr@javascriptrestrictor/fp_code_builders.js b/data/extensions/jsr@javascriptrestrictor/fp_code_builders.js index 02467fa..0d98e9f 100644 --- a/data/extensions/jsr@javascriptrestrictor/fp_code_builders.js +++ b/data/extensions/jsr@javascriptrestrictor/fp_code_builders.js @@ -23,6 +23,10 @@ /** * Additional wrappers for specialized purposes. */ +var additional_wrappers_init_code = ` + WrapHelper.shared["fpd_offsetHeight_set_cnt"] = 0; + WrapHelper.shared["fpd_offsetWidth_set_cnt"] = 0; +`; var additional_wrappers = [ { parent_object: "HTMLElement.prototype", @@ -49,7 +53,10 @@ var additional_wrappers = [ property_value: `function() { // workaround - style property is bound to HTMLElement instance, check fontFamily value with every access let font = this.style.fontFamily; - updateCount("CSSStyleDeclaration.prototype.fontFamily", "set", [font]); + if (WrapHelper.shared["fpd_offsetHeight_set_cnt"] < 1000) { + updateCount("CSSStyleDeclaration.prototype.fontFamily", "set", [font]); + WrapHelper.shared["fpd_offsetHeight_set_cnt"] += 1; + } return originalD_get.call(this); }` } @@ -82,7 +89,10 @@ var additional_wrappers = [ property_value: `function() { // workaround - style property is bound to HTMLElement instance, check fontFamily value with every access let font = this.style.fontFamily; - updateCount("CSSStyleDeclaration.prototype.fontFamily", "set", [font]); + if (WrapHelper.shared["fpd_offsetWidth_set_cnt"] < 1000) { + updateCount("CSSStyleDeclaration.prototype.fontFamily", "set", [font]); + WrapHelper.shared["fpd_offsetWidth_set_cnt"] += 1; + } return originalD_get.call(this); }` } @@ -99,7 +109,7 @@ var additional_wrappers = [ * * \returns Injectable code created from FPD wrappers. */ -function fp_generate_from_wrappers(fpd_wrappers) { +function fp_generate_from_wrappers(fpd_wrappers, fpdTrackCallers) { // define wrapper for each FPD endpoint (using default JSS definition of wrappers) let tmp_build_wrapping_code = {}; for (let wrap_item of fpd_wrappers) { @@ -124,7 +134,7 @@ function fp_generate_from_wrappers(fpd_wrappers) { let fp_wrapped_codes = {}; for (let build_item in tmp_build_wrapping_code) { try { - fp_wrapped_codes[build_item] = build_code(tmp_build_wrapping_code[build_item]); + fp_wrapped_codes[build_item] = build_code(fpdTrackCallers, tmp_build_wrapping_code[build_item]); } catch (e) { console.error(e); fp_wrapped_codes[build_item] = ""; @@ -142,12 +152,12 @@ function fp_generate_from_wrappers(fpd_wrappers) { * * \returns Modified injectable code that also contains FPD wrapping code. */ -function fp_update_wrapping_code(code, jss_wrappers, fpd_wrappers) { +function fp_update_wrapping_code(code, jss_wrappers, fpd_wrappers, fpdTrackCallers) { const jss_wrapper_resources = jss_wrappers.map(x => x[0]); const fpd_wrappers_filtered = fpd_wrappers.filter(w => !jss_wrapper_resources.includes(w[0])); - const fpd_wrapped_codes = fp_generate_from_wrappers(fpd_wrappers_filtered); + const fpd_wrapped_codes = fp_generate_from_wrappers(fpd_wrappers_filtered, fpdTrackCallers); const fpd_code = joinWrappingCode(Object.values(fpd_wrapped_codes)); - return code.replace("// FPD_S\n", `// FPD_S\n ${fpd_code}`); + return code.replace("// FPD_S\n", `// FPD_S\n${additional_wrappers_init_code} ${fpd_code}`); } /** @@ -157,9 +167,9 @@ function fp_update_wrapping_code(code, jss_wrappers, fpd_wrappers) { * * \returns Injectable code containing only FPD wrapping code. */ -function fp_generate_wrapping_code(fpd_wrappers) { - let fpd_wrapped_codes = fp_generate_from_wrappers(fpd_wrappers); - return generate_code("// FPD_S\n" + joinWrappingCode(Object.values(fpd_wrapped_codes)) + "\n// FPD_E"); +function fp_generate_wrapping_code(fpd_wrappers, fpdTrackCallers) { + let fpd_wrapped_codes = fp_generate_from_wrappers(fpd_wrappers, fpdTrackCallers); + return generate_code("// FPD_S\n" + additional_wrappers_init_code + joinWrappingCode(Object.values(fpd_wrapped_codes)) + "\n// FPD_E"); } /** |