Skip to content

Commit 643b3ca

Browse files
authored
Rewrite fix 3.7.6 (#144)
- deproxy assignment to TreeWalker.currentNode - ensure generic attributes (src and href) are not rewritten on custom web-component elements (elements that contain a '-') - add nop override for navigator.getInstalledRelatedApps() if it is defined - Proxy defineProperty: don't pull in value from object if either getter or setter are provided - bump to 3.7.6
1 parent a6f3097 commit 643b3ca

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@webrecorder/wombat",
3-
"version": "3.7.5",
3+
"version": "3.7.6",
44
"main": "index.js",
55
"license": "AGPL-3.0-or-later",
66
"author": "Ilya Kreymer, Webrecorder Software",

src/wombat.js

+27-2
Original file line numberDiff line numberDiff line change
@@ -2010,7 +2010,7 @@ Wombat.prototype.performAttributeRewrite = function(
20102010
*/
20112011
Wombat.prototype.rewriteAttr = function(elem, name, absUrlOnly) {
20122012
var changed = false;
2013-
if (!elem || !elem.getAttribute || elem._no_rewrite || elem['_' + name]) {
2013+
if (!elem || !elem.getAttribute || elem._no_rewrite || elem['_' + name] || (elem.tagName && elem.tagName.indexOf('-') > 0)) {
20142014
return changed;
20152015
}
20162016

@@ -3007,6 +3007,26 @@ Wombat.prototype.overridePropExtract = function(proto, prop) {
30073007
}
30083008
};
30093009

3010+
/**
3011+
* Applies an attribute setter override to de-proxy the prop
3012+
* @param {Object} proto
3013+
* @param {string} prop
3014+
* @param {*} [cond]
3015+
*/
3016+
Wombat.prototype.overrideDeProxyPropAssign = function(proto, prop) {
3017+
var orig_setter = this.getOrigSetter(proto, prop);
3018+
var orig_getter = this.getOrigGetter(proto, prop);
3019+
var wombat = this;
3020+
if (orig_setter) {
3021+
var new_setter = function (value) {
3022+
return orig_setter.call(wombat.proxyToObj(this), wombat.proxyToObj(value));
3023+
};
3024+
this.defProp(proto, prop, new_setter, orig_getter);
3025+
}
3026+
};
3027+
3028+
3029+
30103030

30113031
/**
30123032
* Overrides referrer -- if top-replay frame, referrer should be "", otherwise extractOriginURL
@@ -5954,6 +5974,9 @@ Wombat.prototype.initMiscNavigatorOverrides = function() {
59545974
if (this.$wbwindow.navigator.mediaDevices) {
59555975
this.$wbwindow.navigator.mediaDevices.setCaptureHandleConfig = function() {};
59565976
}
5977+
if (this.$wbwindow.navigator.getInstalledRelatedApps) {
5978+
this.$wbwindow.navigator.getInstalledRelatedApps = function() { return Promise.resolve([]); };
5979+
}
59575980
};
59585981

59595982

@@ -6280,7 +6303,7 @@ Wombat.prototype.initWindowObjProxy = function($wbwindow) {
62806303
},
62816304
defineProperty: function(target, prop, desc) {
62826305
var ndesc = desc || {};
6283-
if (ndesc.value === undefined && ndesc.get === undefined) {
6306+
if (!ndesc.hasOwnProperty('value') && !ndesc.hasOwnProperty('get') && !ndesc.hasOwnProperty('set')) {
62846307
ndesc.value = $wbwindow[prop];
62856308
}
62866309
Reflect.defineProperty($wbwindow, prop, ndesc);
@@ -6777,6 +6800,8 @@ Wombat.prototype.wombatInit = function() {
67776800
'dispatchEvent'
67786801
);
67796802

6803+
this.overrideDeProxyPropAssign(this.$wbwindow.TreeWalker.prototype, 'currentNode');
6804+
67806805
this.initTimeoutIntervalOverrides();
67816806

67826807
this.overrideFramesAccess(this.$wbwindow);

0 commit comments

Comments
 (0)