1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-15 08:04:49 +01:00

client side fixes for proxy obj:

- add general override_func_first_arg_proxy_to_obj() to dereference proxy->obj for first arg
- used for MutationObserver.observe() and Node.compareDocumentPosition() for now
This commit is contained in:
Ilya Kreymer 2017-08-16 22:08:00 -07:00 committed by Ilya Kreymer
parent 2115817792
commit bbe3cebd2f

View File

@ -2138,15 +2138,15 @@ var _WBWombat = function($wbwindow, wbinfo) {
}
//============================================
function init_mo_from_proxy() {
var orig_observe = $wbwindow.MutationObserver.prototype.observe;
function override_func_first_arg_proxy_to_obj(prototype, method) {
var orig = prototype[method];
function observe_deproxy(target, options) {
target = proxy_to_obj(target);
return orig_observe.call(this, target, options);
function deproxy() {
arguments[0] = proxy_to_obj(arguments[0]);
orig.apply(this, arguments);
}
$wbwindow.MutationObserver.prototype.observe = observe_deproxy;
prototype[method] = deproxy;
}
//============================================
@ -2817,6 +2817,10 @@ var _WBWombat = function($wbwindow, wbinfo) {
override_iframe_content_access("contentWindow");
override_iframe_content_access("contentDocument");
// override funcs to convert first arg proxy->obj
override_func_first_arg_proxy_to_obj($wbwindow.MutationObserver.prototype, "observe");
override_func_first_arg_proxy_to_obj($wbwindow.Node.prototype, "compareDocumentPosition");
override_frames_access($wbwindow);
// setAttribute
@ -2880,8 +2884,6 @@ var _WBWombat = function($wbwindow, wbinfo) {
init_window_obj_proxy($wbwindow);
init_document_obj_proxy($wbwindow.document);
init_mo_from_proxy();
// expose functions
var obj = {}
obj.extract_orig = extract_orig;