summaryrefslogtreecommitdiff
path: root/data/extensions/jsr@javascriptrestrictor/fp_code_builders.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/fp_code_builders.js')
-rw-r--r--data/extensions/jsr@javascriptrestrictor/fp_code_builders.js30
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");
}
/**