Last Comment Bug 778128 - nsIDOMCanvasRenderingContext2D.putImageData NS_ERROR_NOT_IMPLEMENTED in nightly with non-Azure canvas when using the addon SDK
: nsIDOMCanvasRenderingContext2D.putImageData NS_ERROR_NOT_IMPLEMENTED in night...
Status: RESOLVED FIXED
: regression
Product: Core
Classification: Components
Component: Canvas: 2D (show other bugs)
: 16 Branch
: x86 Linux
: -- normal (vote)
: mozilla17
Assigned To: Boris Zbarsky [:bz]
:
Mentors:
Depends on:
Blocks: 762651 773545
  Show dependency treegraph
 
Reported: 2012-07-27 06:41 PDT by Thomasy
Modified: 2012-11-12 02:48 PST (History)
11 users (show)
bzbarsky: in‑testsuite+
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---
unaffected
+
verified
+
verified


Attachments
Make putImageData and createImageData on non-Azure canvas work with Xrays. (14.55 KB, patch)
2012-07-30 18:45 PDT, Boris Zbarsky [:bz]
peterv: review+
lukasblakk+bugs: approval‑mozilla‑aurora+
Details | Diff | Review

Description Thomasy 2012-07-27 06:41:38 PDT
User Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:17.0) Gecko/17.0 Firefox/17.0
Build ID: 20120724053527

Steps to reproduce:

Using 
Nightly 17.0a1 (2012-07-24)
Install 
https://addons.mozilla.org/en-US/firefox/addon/nctutab/ 
Go to
http://portal.nctu.edu.tw/portal/login.php




Actual results:

error: An exception occurred.
Traceback (most recent call last):
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/panel.js", line 290, in _onShow
    let textColor = win.getComputedStyle(node).getPropertyValue("color");
[Exception... "Operation is not supported"  code: "9" nsresult: "0x80530009 (NotSupportedError)"  location: "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/cuddlefish.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/panel.js Line: 290"]
error: An exception occurred.
Traceback (most recent call last):
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 195, in onReady
    self._createWorker(window);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 203, in _createWorker
    onError: this._onUncaughtError
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 403, in Worker
    this._contentWorker = WorkerSandbox(this);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 204, in WorkerSandbox
    this._importScripts(contentScriptFile);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 260, in _importScripts
    load(this._sandbox, String(uri));
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js", line 43, in load
    return scriptLoader.loadSubScript(uri, sandbox, 'UTF-8');
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 762, in null
    document.nctutab.init();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 19, in null
    this.inject_portal();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 42, in null
    this.captcha_portal();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 528, in null
    document.nctutab.runFilter('canvas', document.nctutab.threshold_with_bgremove, 75);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 618, in null
    ctx.putImageData(idata, 0, 0);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/data/content-proxy.js", line 100, in null
    let unwrapResult = Function.prototype.apply.apply(fun, [obj, args]);
[Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIDOMCanvasRenderingContext2D.putImageData]"  nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)"  location: "JS frame :: resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/cuddlefish.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/data/content-proxy.js :: <TOP_LEVEL> :: line 100"  data: no]



Expected results:

No Exception in 14.0.1
Comment 1 Thomasy 2012-07-27 08:03:56 PDT
Exception is at 


            var idata = document.nctutab.filterImage(filter, document.nctutab.img, arg1, arg2, arg3);
            c.width = idata.width;
            c.height = idata.height;
            var ctx = c.getContext('2d');
            ctx.putImageData(idata, 0, 0); // <-- this line
            c.style.display = 'inline';
Comment 3 Thomasy 2012-07-28 10:55:16 PDT
The error message is


error: An exception occurred.
Traceback (most recent call last):
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 198, in onReady
    self._createWorker(window);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 207, in _createWorker
    onError: this._onUncaughtError
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 428, in Worker
    this._contentWorker = WorkerSandbox(this);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 227, in WorkerSandbox
    this._importScripts(contentScriptFile);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 283, in _importScripts
    load(this._sandbox, String(uri));
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js", line 43, in load
    return scriptLoader.loadSubScript(uri, sandbox, 'UTF-8');
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 773, in null
    document.nctutab.init();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 19, in null
    this.inject_portal();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 42, in null
    this.captcha_portal();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 543, in null
    document.nctutab.runFilter('canvas', document.nctutab.threshold_with_bgremove, 75);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 630, in null
    ctx.putImageData(idata, 0, 0);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/content-proxy.js", line 107, in null
    let unwrapResult = Function.prototype.apply.apply(fun, [obj, args]);
[Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIDOMCanvasRenderingContext2D.putImageData]"  nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)"  location: "JS frame :: resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/cuddlefish.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/content-proxy.js :: <TOP_LEVEL> :: line 107"  data: no]
Comment 4 Thomasy 2012-07-28 10:56:05 PDT
And I also try addon SDK trunk version. It looks the same:


error: An exception occurred.
Traceback (most recent call last):
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 198, in onReady
    self._createWorker(window);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 207, in _createWorker
    onError: this._onUncaughtError
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 428, in Worker
    this._contentWorker = WorkerSandbox(this);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 227, in WorkerSandbox
    this._importScripts(contentScriptFile);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 283, in _importScripts
    load(this._sandbox, String(uri));
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js", line 43, in load
    return scriptLoader.loadSubScript(uri, sandbox, 'UTF-8');
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 758, in null
    document.nctutab.init();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 19, in null
    this.inject_portal();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 42, in null
    this.captcha_portal();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 528, in null
    document.nctutab.runFilter('canvas', document.nctutab.threshold_with_bgremove, 75);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 615, in null
    ctx.putImageData(idata, 0, 0);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/content-proxy.js", line 111, in null
    let unwrapResult = Function.prototype.apply.apply(fun, [obj, args]);
[Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIDOMCanvasRenderingContext2D.putImageData]"  nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)"  location: "JS frame :: resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/loader.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/content-proxy.js :: <TOP_LEVEL> :: line 111"  data: no]
Comment 5 Thomasy 2012-07-28 11:09:45 PDT
Same in Win7 + Aurora 
16.0a2 (2012-07-20)


An exception occurred.
Traceback (most recent call last):
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 198, in onReady
    self._createWorker(window);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/addon-kit/lib/page-mod.js", line 207, in _createWorker
    onError: this._onUncaughtError
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 428, in Worker
    this._contentWorker = WorkerSandbox(this);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/traits.js", line 110, in Trait
    return self.constructor.apply(self, arguments) || self._public;
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 227, in WorkerSandbox
    this._importScripts(contentScriptFile);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/worker.js", line 283, in _importScripts
    load(this._sandbox, String(uri));
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js", line 43, in load
    return scriptLoader.loadSubScript(uri, sandbox, 'UTF-8');
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 773, in null
    document.nctutab.init();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 21, in null
    this.inject_regist();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 49, in null
    this.captcha_regist();
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 579, in null
    document.nctutab.runFilter('canvas', document.nctutab.threshold, 35);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js", line 630, in null
    ctx.putImageData(idata, 0, 0);
  File "resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/content-proxy.js", line 107, in null
    let unwrapResult = Function.prototype.apply.apply(fun, [obj, args]);
[Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIDOMCanvasRenderingContext2D.putImageData]"  nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)"  location: "JS frame :: resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/cuddlefish.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/content-proxy.js :: <TOP_LEVEL> :: line 107"  data: no]
Comment 6 Boris Zbarsky [:bz] 2012-07-28 19:12:18 PDT
I tried installing the extension from comment 0 in a current trunk debug build and then loading http://portal.nctu.edu.tw/portal/login.php and I see no exceptions anywhere...

I also looked over the actual code in the extension, as it is now on AMO, and I don't see any obvious problems, which matches me not getting an exception.

How do I reproduce this bug?
Comment 7 Thomasy 2012-07-28 20:48:41 PDT
(In reply to Boris Zbarsky (:bz) from comment #6)
> I tried installing the extension from comment 0 in a current trunk debug
> build and then loading http://portal.nctu.edu.tw/portal/login.php and I see
> no exceptions anywhere...
> 
> I also looked over the actual code in the extension, as it is now on AMO,
> and I don't see any obvious problems, which matches me not getting an
> exception.
> 
> How do I reproduce this bug?

I use Win7 + firefox-17.0a1  ( 2012-07-28 ) 

http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-17.0a1.en-US.win32.installer.exe

Can produce the bug.

Maybe you should open a new profile
Comment 8 Boris Zbarsky [:bz] 2012-07-28 20:57:13 PDT
I just tried the 2012-07-28 nightly with a clean profile and the steps from comment 0.  I don't see the exception.  I'm on Mac, though.  Is the extension OS-specific somehow?

Just to check, just loading the login page reproduces the problem?  And there is an exception visible in the JS console when the problem happens?
Comment 9 Boris Zbarsky [:bz] 2012-07-28 21:01:44 PDT
Ah, interesting.  I _can_ reproduce this if I turn off Azure canvas (which is always enabled on Mac by default).  Presumably your Windows machine doesn't have d2d available, so you're ending up with fallback to the old canvas code.

Looking into this now.
Comment 10 Boris Zbarsky [:bz] 2012-07-28 21:05:38 PDT
We're landing in nsCanvasRenderingContext2D::PutImageData directly via NS_InvokeByIndex_P.

Which means that the quickstub is not being installed for some reason.
Comment 11 Boris Zbarsky [:bz] 2012-07-28 21:15:13 PDT
This is completely bizarre.  I see us land in the JS_DefineFunction call for the proto in question under xpc_qsDefineQuickStubs, but then we end up calling XPC_WN_CallMethod for some reason....
Comment 12 Boris Zbarsky [:bz] 2012-07-28 21:37:10 PDT
So the actual JS at the callsite looks like this:

    let unwrapResult = Function.prototype.apply.apply(fun, [obj, args]);

and the JS stack looks like this:

0 anonymous(args = undefined, obj = undefined, unwrapResult = undefined, result = undefined, arguments = undefined) ["resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/cuddlefish.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/content/content-proxy.js":107]
    args = undefined
    obj = undefined
    unwrapResult = undefined
    result = undefined
    arguments = undefined
    this = [object CanvasRenderingContext2D @ 0x11f7eb7f0 (native @ 0x12c9fdc88)]
1 <TOP LEVEL> ["<unknown>":0]
    <failed to get 'this' value>
2 anonymous() ["resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/cuddlefish.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/api-utils/lib/sandbox.js -> resource://jid1-kpgzz5f0jye5aa-at-jetpack/nctutab/data/nctutab.js":630]

I have no idea what frame 1 is, but frame 2 line 630 looks like this:

            ctx.putImageData(idata, 0, 0);

So I poked a bit at the outer js_fun_apply frame, which corresponds to the apply() call with "fun" as argument.  In that frame, argv[2] (which should be "fun") is a Function object.  And in fact it's a Function object for a JSNative, and that JSNative is XPC_WN_CallMethod.

I wonder who knows that it is the SDK is doing here exactly to end up with the non-quickstub function somehow...

I guess I can try to at least do some bisecting to see when this first appeared.  Maybe that will give us a clue.




  In that frame, argv[2] (the first argument to apply()) is a proxy around a CanvasRenderingContext2D.  I can't tell what sort of proxy, because it seems to just use a BaseProxyHandler or something?  Can that happen?
Comment 13 Boris Zbarsky [:bz] 2012-07-28 21:41:12 PDT
Er, ignore the last paragraph of comment 12.  That was meant to be deleted.
Comment 14 Boris Zbarsky [:bz] 2012-07-28 22:00:45 PDT
OK, on nightlies I think the regression range is http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=83369c1bb9af&tochange=6e828a4d1348

That's a week before bug 762654.
Comment 15 Boris Zbarsky [:bz] 2012-07-28 22:49:00 PDT
hg bisect says:

The first bad revision is:
changeset:   97007:1f38152fc9f6
user:        Peter Van der Beken <peterv@propagandism.org>
date:        Mon Jun 04 21:41:51 2012 +0200
summary:     Fix for bug 762651 (Add wrappercache to CanvasRenderingContext2D). r=bz.

Peter, do you have any idea what's going on here?  ;)  Did the addition of a parent make us create some new proxy somewhere that manages to screw up getting the right native for putImageData?
Comment 16 Boris Zbarsky [:bz] 2012-07-28 22:51:41 PDT
Is it possible that we weren't getting an Xray here before but are now and Xrays don't know anything about quickstubs?  That last, at least, seems plausible...
Comment 17 Boris Zbarsky [:bz] 2012-07-28 22:56:02 PDT
And if that's what's going on, is it easier to teach Xray about quickstubs or to simply special-case putImageData, since in most cases the non-quickstub XPConnect stuff _does_ work right?
Comment 18 Boris Zbarsky [:bz] 2012-07-29 07:05:29 PDT
Or I guess another option is to fix the XPCOM version of PutImageData to actually work....
Comment 19 Loic 2012-07-29 07:50:28 PDT
(In reply to Boris Zbarsky (:bz) from comment #15)
> hg bisect says:
> 
> The first bad revision is:
> changeset:   97007:1f38152fc9f6
> user:        Peter Van der Beken <peterv@propagandism.org>
> date:        Mon Jun 04 21:41:51 2012 +0200
> summary:     Fix for bug 762651 (Add wrappercache to
> CanvasRenderingContext2D). r=bz.

Yes, that's why I linked this current bug to bug 773545, because they have the same 2 first regression ranges.
After reg #2, the 'long' error message disappears from the error console.

-- 1st regression:
m-c
good=2012-06-20
bad=2012-06-21
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=83369c1bb9af&tochange=6e828a4d1348

Suspected bug:
Peter Van der Beken — Fix for bug 762651 (Add wrappercache to CanvasRenderingContext2D). r=bz.

-- 2nd regression:
m-c
good=2012-06-30
bad=2012-07-01
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=f08d285b63b0&tochange=d9d61d199b11

Suspected bug:
Peter Van der Beken — Fix for bug 762652 (Add the new DOM bindings API to CanvasRenderingContext2D). r=bz.

So after 2012-07-01, no error message. Same result with the latest Nightly.
Comment 20 Boris Zbarsky [:bz] 2012-07-29 11:54:28 PDT
This bug really has nothing to do with bug 762652 or bug 773545...  I'm not sure why you're bothering with suspected bugs when we have a one-changeset regression complete with code-level analysis of what's going wrong, nor what your "second regression" is exactly.
Comment 21 Boris Zbarsky [:bz] 2012-07-30 18:45:32 PDT
Created attachment 647394 [details] [diff] [review]
Make putImageData and createImageData on non-Azure canvas work with Xrays.
Comment 22 Loic 2012-07-31 02:30:59 PDT
(In reply to Boris Zbarsky (:bz) [In and out Aug 1 - 10, out Aug 11-20] from comment #20)
> nor what your "second regression" is exactly.
I mentionned this 2nd regression because the error message appeared only between nightlies from 2012-06-21 to 2012-06-30. Maybe after 2012-06-30, the underlying regression about PutImageData is still here even if the error is not displayed anymore in the error console. :)
Comment 23 Boris Zbarsky [:bz] 2012-07-31 07:26:55 PDT
Oh, I see.

What happened was that from 6/21 to 6/30 the problem appeared in all builds.  On 6/30, the new bindings landed for Azure canvas, so after that it only appeared in builds that were using non-Azure canvas.  You should be able to test that by disabling azure canvas in about:config (requires a restart, I think).
Comment 24 Peter Van der Beken [:peterv] 2012-07-31 07:47:00 PDT
Comment on attachment 647394 [details] [diff] [review]
Make putImageData and createImageData on non-Azure canvas work with Xrays.

Review of attachment 647394 [details] [diff] [review]:
-----------------------------------------------------------------

Hopefully this all goes away soon (when the non-Azure canvas disappears and we can unpref the new binding).
Comment 25 Boris Zbarsky [:bz] 2012-07-31 07:54:39 PDT
Yes, once that happens we can nuke all this code, as well as all the canvas quickstub goop...  Thanks for the review!
Comment 27 Boris Zbarsky [:bz] 2012-07-31 08:39:35 PDT
Comment on attachment 647394 [details] [diff] [review]
Make putImageData and createImageData on non-Azure canvas work with Xrays.

[Approval Request Comment]
Bug caused by (feature/regressing bug #): Bug 762651
User impact if declined: Some extension that touch non-chrome canvases will be
   broken.
Testing completed (on m-c, etc.): Passes manual test steps in this bug, automated
   tests.
Risk to taking this patch (and alternatives if risky): Risk is low: only code
   that touches non-Azure canvas via Xray wrappers is affected, and only the
   putImagedata and createImageData methods.  And without this patch, those
   always throw in this situation.  So the only real risk is that the patch
   introduces a security problem.
String or UUID changes made by this patch: None.
Comment 28 Lukas Blakk [:lsblakk] use ?needinfo 2012-07-31 14:38:02 PDT
bz this is marked as status-firefox15 unaffected, can you confirm that is correct so we know what branches need approval?
Comment 29 Boris Zbarsky [:bz] 2012-07-31 14:44:40 PDT
Comment on attachment 647394 [details] [diff] [review]
Make putImageData and createImageData on non-Azure canvas work with Xrays.

Er, that's correct.  For some reason I thought our beta was already 16.  ;)

This is only needed on Aurora.
Comment 30 Ryan VanderMeulen [:RyanVM] 2012-07-31 19:19:17 PDT
https://hg.mozilla.org/mozilla-central/rev/091d0ed7202d
Comment 31 Thomasy 2012-08-01 10:50:19 PDT
Nightly 17.0a1 (2012-08-01) on both Linux and Win7 is okay. Confirmed here, thanks a lot guys!
Comment 32 Lukas Blakk [:lsblakk] use ?needinfo 2012-08-01 17:24:33 PDT
Comment on attachment 647394 [details] [diff] [review]
Make putImageData and createImageData on non-Azure canvas work with Xrays.

Thanks for clarifying, looks good for Aurora.
Comment 34 Mihaela Velimiroviciu (:mihaelav) 2012-09-24 08:08:27 PDT
Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0 beta 4
Ubuntu 12.04 32bit

Verified the fix on the above build: no errors appear in console.
Comment 35 Virgil Dicu [:virgil] [QA] 2012-11-12 02:48:05 PST
Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/17.0 Firefox/17.0

Verified with Ubuntu 12.04 32 bit on Firefox 17 b5. No error triggered.

Note You need to log in before you can comment on or make changes to this bug.