From b8ba76300e4222ddcaf55cde2c96a801be77cc45 Mon Sep 17 00:00:00 2001 From: kkapsner Date: Tue, 10 May 2016 08:01:21 +0200 Subject: [PATCH] Introduced maxFakeSize. --- ...sBlocker@kkapsner.de-0.3.1-Development.xpi | Bin 41260 -> 16316 bytes data/frame.js | 15 +++++---- lib/intercept.js | 4 +-- lib/modifiedAPI.js | 31 ++++++++++-------- locale/de-DE.json | 2 ++ locale/en-US.json | 2 ++ package.json | 6 ++++ 7 files changed, 37 insertions(+), 23 deletions(-) diff --git a/CanvasBlocker@kkapsner.de-0.3.1-Development.xpi b/CanvasBlocker@kkapsner.de-0.3.1-Development.xpi index 7672fc5fe14f785f0d0802d9bb4517bdacea6f05..2bba2e7a068364c79acbdddf451ff9e420ead9e0 100644 GIT binary patch literal 16316 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 literal 41260 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

08VG@P)y?l@ zNV;s`%TrH;O;;!p;D`^W(?{{d-e;RBLKY?XEQEgQoU; z-UL95Lx)m;;l-7sIU>D8bnE5 zzZjwpMgv40Zim{*LA9zUl}5H}DeyJPsC2+phl@V5$Hr{xN6?5E`Z(;xd zt|2h_v)BH1w)tnKrubn_PCY^MC&?AEGQx0h^pSttle1g>yCzXAuecc@(`%8Z9`|`% zN7zn779A%K5a6N<<%iYkpj>@fs!;^+zjakyej9+exywE5jAz`DR3vpsvYkt?Q-g2m zxiFq5-cGf%KwYO^EUq?;p%?c(?+l7`xUe?z;zS%VN}vKPOta}u2rA0!yy zLXovJI{kv{Rgyu`URc6$(ik&Xqn4_7SN_8HTfDjnUDP7`9c2@`$$#dwqCMC;& zi}z|1FA*W~u=+kNB8=RJ)3v7COjnW>V93D;5g3V2AMSPP!^T1zFY$WA9-HPm?IMoI zZRFBp0MV5S+?29gg_dlr(ZxG$LTXQ1Vsw!Gag{EaPyzXB{RfW%k9gxo=xkt&K3mx_ zvcj$6E+sm>cr&*=ZJESkE+lN9t~wMmW&=#UHU(!1sPlt(>8DqPhY7)+2V)!pfmEH) zWx4yq^U3+#G#g`yt#5woFYSwo?1Os^6VY${7{Q9L@yLna1TmPSDnKM3JWh^ctU<5qpt(91tpJ?Fnr<=l0~%B4W#kfbxt%@O+xN zI|2UDw8|r9p&OE=u+?(B=%69f+H870f_v;6n{gAT)ArJ>+epynB+3th`Du(mJx&9h zL`eaIf>i8*?hkm|tpU=j5eUzbE{DoyD-l_Q1W}G(85%UU)!UAYkB*D8fCs5@avaC9 zg;F%;(ke0951vV4#X z`j92l7o5|vXw7_4v4z+TB>OqAcrHIM5)Fp&Uu^%kU-&OSGd0D}U!-BgjEbSQQ}ggjAgA_?J5DQDQ!SjmDjoX0zfa3%l<1smF% z6gPLx!n@6|%<|aF__{hs;Vx`h74#KA*{dI_4X;j$ZQo45cq-qdE-^^}n>v9e7vm2L zxJsA-cy;;|u3VL1k5^uX#wJ_UrTXask``3pgF9SU$3sZC{H3dLo&{wZaTdHrp*?m- z2w$Vb)}GaGGk6UvC+<@+2??q!M+0H51_P5HudDcgQxhuk_6^wlgt`Pl>+#sD=mfP2 z$f#_b+VC~hldGVNr(McMR`JN8I$n2@UZ{+bgP|CQ@qRSyW3rP2t~>%SDoUah{Y7+z z!2?DjfR6xRujI%sPEyve=Ky+!RR;Txvtn-gqg%nPAR#4pI$T}~uv02<^)>*}TnPi+ z$38-RT#-u6)N`^85lqYx2iRB;W?C7PD^svTIU4k#)F;tdPQoPa0%H<9#t8KLWq)A8 zI5M0J#W)MFBPPD^6l~;3FDY__-|=o7F;ts-L+Vr;8{&dLJ9es7t5e2&xZ67ROpV#3 z#xnfg`Ev)MUN8|1_|LP1r3wfY<4-RG;K}g>U=wOg0xVtjB4VU#?AgVQg$Xit61OZN z)C(>K;}Kqh@E=ZUE~_xVBDyg4tlrp@Fop!VST+&_{bGpWLFFzBfHcqbtYo6gdOHgm zom_@o*^MRk!92FRR=U$$qM;Xi7iVsuWq$2FJfh~AinSe&336Yr<@)yoGd_>TH(#V6 zIz?vnADL|=kbRfmoymli;X0a0WAqWqgL-vJn(aoKRXC<59M*yf4(ZF=3Xcre)yl0P z9##@^SkGDaz-QU{%S~_ukU`-$DwH)6!IPsaCS#v## za9zp1)Iv|_JfF|{00#FKb+io;q_-a0xVH>yb`eHqUDYWpO1R=O`+WA

pA96=6xa5 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 diff --git a/data/frame.js b/data/frame.js index 2b6fb40..e3dea49 100644 --- a/data/frame.js +++ b/data/frame.js @@ -34,17 +34,18 @@ token )[0]; }, - prefs: function(name){ - return sendSyncMessage( - "canvasBlocker-pref-get", - name - )[0]; - } + prefs }); } function notify(data){ sendAsyncMessage("canvasBlocker-notify", data); } + function prefs(name){ + return sendSyncMessage( + "canvasBlocker-pref-get", + name + )[0]; + } function interceptWrapper(ev){ if (enabled){ @@ -55,7 +56,7 @@ var window = ev.target.defaultView; intercept( {subject: window}, - {check, ask: askWrapper, notify} + {check, ask: askWrapper, notify, prefs} ); } } diff --git a/lib/intercept.js b/lib/intercept.js index 800abf3..835f23b 100644 --- a/lib/intercept.js +++ b/lib/intercept.js @@ -9,7 +9,7 @@ var apiNames = Object.keys(changedFunctions); var undef; - exports.intercept = function intercept({subject: window}, {check, ask, notify}){ + exports.intercept = function intercept({subject: window}, {check, ask, notify, prefs}){ apiNames.forEach(function(name){ var changedFunction = changedFunctions[name]; var original = window.wrappedJSObject[changedFunction.object].prototype[name]; @@ -35,7 +35,7 @@ return original; case "fake": notify({url: window.location.href, errorStack: error.stack}, window); - return changedFunction.fake || undef; + return changedFunction.fake || changedFunction.fakeGenerator(prefs) || undef; //case "block": default: return undef; diff --git a/lib/modifiedAPI.js b/lib/modifiedAPI.js index bf19f28..f32662a 100644 --- a/lib/modifiedAPI.js +++ b/lib/modifiedAPI.js @@ -93,21 +93,24 @@ getImageData: { type: "readout", object: "CanvasRenderingContext2D", - fake: function getImageData(sx, sy, sw, sh){ - var window = getWindow(this.canvas); - var context = (sw * sh > 300 * 400)? - this: - window.HTMLCanvasElement.prototype.getContext.call( - getFakeCanvas(window, this.canvas), - "2d" - ); - var data = window.CanvasRenderingContext2D.prototype.getImageData.apply(context, arguments).data; - - var imageData = new window.wrappedJSObject.ImageData(sw, sh); - for (var i = 0, l = data.length; i < l; i += 1){ - imageData.data[i] = data[i]; + fakeGenerator: function(prefs){ + var maxSize = prefs("maxFakeSize") || Number.POSITIVE_INFINITY; + return function getImageData(sx, sy, sw, sh){ + var window = getWindow(this.canvas); + var context = (sw * sh > maxSize)? + this: + window.HTMLCanvasElement.prototype.getContext.call( + getFakeCanvas(window, this.canvas), + "2d" + ); + var data = window.CanvasRenderingContext2D.prototype.getImageData.apply(context, arguments).data; + + var imageData = new window.wrappedJSObject.ImageData(sw, sh); + for (var i = 0, l = data.length; i < l; i += 1){ + imageData.data[i] = data[i]; + } + return imageData; } - return imageData; } }, readPixels: { diff --git a/locale/de-DE.json b/locale/de-DE.json index bfffa8d..2c8361e 100644 --- a/locale/de-DE.json +++ b/locale/de-DE.json @@ -21,6 +21,8 @@ "blockMode_options.block readout API": "Auslese-API blockieren", "blockMode_options.fake readout API": "Auslese-API vortäuschen", "blockMode_title": "Blockiermodus", + "maxFakeSize_description": "Maximale Vortäuschgröße", + "maxFakeSize_": "Canvas, die eine größe Fläche als die hier angegeben Zahl haben, werden nicht vorgetäuscht. (Null eingeben, um es zu deaktivieren.)", "disableNotifications": "Benachrichtigungen deaktivieren", "displayCallingStack": "Aufrufestack anzeigen", "displayFullURL": "URL anzeigen", diff --git a/locale/en-US.json b/locale/en-US.json index 63f4dbd..b39ee96 100644 --- a/locale/en-US.json +++ b/locale/en-US.json @@ -21,6 +21,8 @@ "blockMode_options.block readout API": "block readout API", "blockMode_options.fake readout API": "fake readout API", "blockMode_title": "Block mode", + "maxFakeSize_description": "Maximal fake size", + "maxFakeSize_": "Canvas with a bigger area than this number will not be faked. (Enter zero to disable.)", "disableNotifications": "disable notifications", "displayCallingStack": "display calling stack", "displayFullURL": "display full URL", diff --git a/package.json b/package.json index 83b1e99..6fab15c 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,12 @@ } ] }, + { + "name": "maxFakeSize", + "title": "Maximal fake size", + "type": "integer", + "value": 0 + }, { "name": "askOnlyOnce", "title": "Ask only once",