Closed Bug 890573 Opened 11 years ago Closed 11 years ago

about:support breaks when webgl.disable-extensions is true

Categories

(Core :: General, defect)

x86
Windows Vista
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla25

People

(Reporter: dncook, Assigned: dncook)

Details

Attachments

(1 file, 1 obsolete file)

Attached patch dont_disable_renderer_info.patch (obsolete) — Splinter Review
User Agent: Mozilla/5.0 (Windows NT 6.0; rv:22.0) Gecko/20100101 Firefox/22.0 (Beta/Release)
Build ID: 20130618035212

Steps to reproduce:

1. Set webgl.disable-extensions to true in about:config
2. Go to about:support


Actual results:

The following error gets logged, and the Graphics, JavaScript, Accessibility, and Library Versions sections don't show up properly.

Timestamp: 7/5/2013 9:05:03 PM
Error: Troubleshoot data provider failed: graphics
TypeError: ext is null
Source File: resource://gre/modules/Troubleshoot.jsm
Line: 101


Expected results:

No errors, everything shows up

I have attached a proposed patch to fix this by making the chrome-only WebGL extension WEBGL_debug_renderer_info ignore the webgl.disable-extensions preference.
Attachment #771724 - Flags: review?(bjacob)
Comment on attachment 771724 [details] [diff] [review]
dont_disable_renderer_info.patch

Over to Jeff Gilbert, as I am currently on vacation. This seems basically fine, but needs an explicit comment (we need to enable this chrome-only extension even with disable-extensions because about:support requires it).
Attachment #771724 - Flags: review?(bjacob) → review?(jgilbert)
Ah, wait, here is another possible approach: when mDisableExtensions is initialized, only honor the webgl.disable-extensions preference if the context is *not* chrome, as determined by this

   xpc::AccessCheck::isChrome(js::GetContextCompartment(cx))

check. If the context is chrome, just let mDisableExtensions be false. Jeff, opinion? Anyway, see you around the 18th.
Flags: needinfo?(jgilbert)
Attachment #771724 - Attachment is patch: true
Comment on attachment 771724 [details] [diff] [review]
dont_disable_renderer_info.patch

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

Good, but I think it'd be better if this were inverted.
At this point, it doesn't really matter though.

::: content/canvas/src/WebGLContext.cpp
@@ +965,5 @@
>  bool WebGLContext::IsExtensionSupported(JSContext *cx, WebGLExtensionID ext) const
>  {
> +    switch (ext) {
> +        case WEBGL_debug_renderer_info:
> +            return xpc::AccessCheck::isChrome(js::GetContextCompartment(cx));

Let's invert these:

if is chrome:
  switch (ext):
    case debug_foo:
    case debug_bar:
      return true
Attachment #771724 - Flags: review?(jgilbert) → review+
Flags: needinfo?(jgilbert)
(In reply to Benoit Jacob [:bjacob] (On vacation, be back on july 18) from comment #2)
> Ah, wait, here is another possible approach: when mDisableExtensions is
> initialized, only honor the webgl.disable-extensions preference if the
> context is *not* chrome, as determined by this
> 
>    xpc::AccessCheck::isChrome(js::GetContextCompartment(cx))
> 
> check. If the context is chrome, just let mDisableExtensions be false. Jeff,
> opinion? Anyway, see you around the 18th.

I think it's best not to do this, since chrome webgl might want to test with extensions disabled. Also, keeping it as special-cased means that what we see in about:support will always be accurate to what actual apps will see.
Addressed review comments
Attachment #771724 - Attachment is obsolete: true
Keywords: checkin-needed
Attachment #772514 - Flags: review+
https://hg.mozilla.org/mozilla-central/rev/3302257b7549
Status: UNCONFIRMED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla25
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: