Open Bug 1253527 Opened 8 years ago Updated 2 years ago

Image saved from WebGL animation website is blank

Categories

(Core :: Graphics: CanvasWebGL, defect, P3)

46 Branch
defect

Tracking

()

People

(Reporter: kkumari, Unassigned)

Details

(Whiteboard: [gfx-noted])

Attachments

(2 files)

[Affected versions]:

-Latest Developer Edition 46.0a2
-Released 44.0.2
-Latest Nightly 47.0a1 
-(Only tested on above versions - could be on other versions too)


[Affected platforms]:
- Win 7 x64
- Win 10 x64
-(Only tested on above versions - could be on other platforms too)

[Steps to reproduce]:
1. Visit https://dl.dropboxusercontent.com/u/6983010/wserv/gexp_pulpo/index.html
2. On the WebGL animation, Right Click -> Save Image AS and save the image on the system
3. View the saved image

Note: issue can also be observed through Right Click -> View Image

[Expected result]:
- Image should be saved as the snapshot of the animation when the image was saved

[Actual result]:
- Image saved from WebGL animation website is blank (please see the attached image from Firefox)


[Additional notes]:
- Chrome Browser saves the image correctly (please see the attached image from Chrome)
- Browser Console in Firefox displays following error after the image is saved


unsafe CPOW usage contentAreaUtils.js:404:0
unsafe CPOW usage PrivateBrowsingUtils.jsm:49:4
unsafe CPOW usage PrivateBrowsingUtils.jsm:49:11
unsafe CPOW usage PrivateBrowsingUtils.jsm:33:11
[Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIAnnotationService.setPageAnnotation]"  nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)"  location: "JS frame :: resource://app/modules/DownloadsCommon.jsm :: onDownloadChanged :: line 737"  data: no] DownloadsCommon.jsm:743:0
Attached image Chrome_WebGL_Image.png
Were all versions E10S enabled?  If so, it'd be good to know if the problem also happens without E10S.
Flags: needinfo?(kkumari)
Whiteboard: [gfx-noted]
This is to confirm that issue is not specific to E10. Problem can be duplicated with both E10 enabled and disabled.
Flags: needinfo?(kkumari)

The problem here is Firefox is (incorrectly) saving the drawingBuffer of a WebGL canvas, not the front buffer.

The functions HTMLCanvasElement.prototype.toDataURL and HTMLCanvasElement.prototype.toBlob correctly save the drawingBuffer but right clicking a canvas and picking "SaveAs" should save the front buffer, always. The user should arguably get what they see.

My guess is the "canvas save as" feature is incorrectly using the same path as those other 2 functions or is incorrectly being passed the drawingBuffer instead of the front buffer.

Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: