New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 834642 link

Starred by 6 users

Issue metadata

Status: Verified
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug



Sign in to add a comment

WebGLRenderingContext removed when mime type is application/xhtml+xml

Reported by geert.ro...@gmail.com, Apr 19 2018

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36

Steps to reproduce the problem:
1. open any file with the extension .xhtml
2. check window.WebGLRenderingContext, which is now undefined

What is the expected behavior?
window.WebGLRenderingContext should still exist. Renaming the file to have the extension html solves the issue immediately.

What went wrong?
The pixi.js animation framework uses the existence of window.WebGLRenderingContext as a condition to allow WebGL rendering. With Chrome 66 this fails for us, and we have traced the fault to the Content-type of our index files. It is not easy to switch all our applications to use index.html instead of index.xhtml, even when that seems to be solving the issue.

Did this work before? N/A 

Chrome version: 66.0.3359.117  Channel: n/a
OS Version: OS X 10.13.4
Flash Version: 

The problem seems to be with the MIME type "application/xhtml+xml":
If I make my Apache daemon serve a file ending in xhtml with the MIME type text/html, WebGLRenderingContext is available. If I configure Apache to serve the html extension with the MIME type application/xhtml+xml, then WebGLRenderingContext disappears when loading html files.
 
Components: -Blink Blink>Bindings
Can reproduce this. Not sure of the cause; over to the bindings team.
Labels: RegressedIn-66
Owner: peria@chromium.org
Status: Assigned (was: Unconfirmed)
Over to peria@

I can confirm this used to work fine in M65, and that it's related to the V8 context snapshots -- disabling use_v8_context_snapshot in GN allows things to work again in master. An older January checkout used to work fine, but applying https://chromium-review.googlesource.com/c/chromium/src/+/903523 causes things to fail in content_shell.
Possibly due to V8ContextSnapshot::TakeSnapshot() calling RuntimeEnabledFeatures::SetStableFeaturesEnabled(false); and webgl_rendering_context.idl having

    Exposed(Worker OffscreenCanvas, Window StableBlinkFeatures)

Comment 4 by peria@chromium.org, Apr 20 2018

Labels: -Pri-2 OS-Linux OS-Windows Pri-1
Status: Started (was: Assigned)
Thank you for reporting this!

It seems no runtime enabled features are enabled if either of following conditions are fullfilled.
- Document other than HTMLDocument, or
- non main world (e.g. extensions)
This issue can happen only with V8 context snapsphot.

I'll work for this ASAP, and will upstream the patch in stable/beta branches.
Project Member

Comment 5 by bugdroid1@chromium.org, Apr 27 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/01ccd7810f7835135ec976d78868c61f6e159117

commit 01ccd7810f7835135ec976d78868c61f6e159117
Author: Hitoshi Yoshida <peria@chromium.org>
Date: Fri Apr 27 07:34:28 2018

bindings: Prepare Blink modules before setting up the main thread

Before this CL, the main thread is set up only for core module.
i.e. In V8ContextSnapshot::EnsureTemplate, it creates V8Window
function template for modules, and it is used for default contexts.
After this CL, those elements are set with modules component.


Bug:  834642 
Change-Id: I94bb23376d8138abbf9806b7bbad4f59eaee6d8f
Reviewed-on: https://chromium-review.googlesource.com/1030530
Commit-Queue: Hitoshi Yoshida <peria@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#554335}
[modify] https://crrev.com/01ccd7810f7835135ec976d78868c61f6e159117/third_party/blink/renderer/controller/blink_initializer.cc

Labels: TE-Verified-68.0.3415.0 TE-Verified-M68
Able to reproduce the issue on mac 10.13.3 using chrome reported version #66.0.3359.117.

Verified the fix on Mac 10.13.3, Win-10 and Ubuntu 17.10 using Chrome version #68.0.3415.0 as per the comment #0.
Attaching screen cast for reference.
Observed that window.WebGLRenderingContext still exist without any issues when opened any file with the extension .xhtml.
Hence, the fix is working as expected. 
Adding the verified labels.

Thanks...!!
834642.mp4
420 KB View Download

Comment 7 by peria@chromium.org, May 1 2018

Status: Verified (was: Started)
Thank you for verification!
Shouldn't this be merged into M66 and M67?

Comment 9 by peria@chromium.org, May 2 2018

Yes, this change should be merged into them.
I'm preparing a test to verify the fix.
Project Member

Comment 10 by bugdroid1@chromium.org, May 2 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9fcf7a93e16663969afc3b0204e6526434b106be

commit 9fcf7a93e16663969afc3b0204e6526434b106be
Author: Hitoshi Yoshida <peria@chromium.org>
Date: Wed May 02 08:34:38 2018

test: Add a layout test to test if window function template is set up correctly

For V8ContextEnabled feature, we create and update function templates
of some interfaces in some places.
This test tests if the prepared templates for default contexts are
set up correctly.


Bug:  834642 
Change-Id: I387cc5c8f451fb8b81c59618a95aa47701ea0196
Reviewed-on: https://chromium-review.googlesource.com/1038925
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Hitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555330}
[add] https://crrev.com/9fcf7a93e16663969afc3b0204e6526434b106be/third_party/WebKit/LayoutTests/bindings/function-template-initialization.xhtml

Labels: Merge-Request-67 Merge-Request-66
The test in #10 wend fine through out this weekend.
Can we merge the CL in #5 to M66/67?
Project Member

Comment 12 by sheriffbot@chromium.org, May 7 2018

Labels: -Merge-Request-67 Merge-Review-67 Hotlist-Merge-Review
This bug requires manual review: M67 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), kbleicher@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: gov...@chromium.org
Add govind@ in cc as a milestone owner of desktop.
Cc: abdulsyed@chromium.org
Labels: -Merge-Review-67 Merge-Approved-67
Approving merge for CL listed at #5 to M67 branch 3396 based on comment #6 and #11. Pls merge ASAP. Thank you.

+ abdulsyed@ for M66 merge review.
Project Member

Comment 15 by bugdroid1@chromium.org, May 7 2018

Labels: -merge-approved-67 merge-merged-3396
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54a3f5b7a7029f30bc7910bd7a1454711d9ee480

commit 54a3f5b7a7029f30bc7910bd7a1454711d9ee480
Author: Hitoshi Yoshida <peria@chromium.org>
Date: Mon May 07 05:59:46 2018

bindings: Prepare Blink modules before setting up the main thread

Before this CL, the main thread is set up only for core module.
i.e. In V8ContextSnapshot::EnsureTemplate, it creates V8Window
function template for modules, and it is used for default contexts.
After this CL, those elements are set with modules component.


Bug:  834642 
Change-Id: I94bb23376d8138abbf9806b7bbad4f59eaee6d8f
Reviewed-on: https://chromium-review.googlesource.com/1030530
Commit-Queue: Hitoshi Yoshida <peria@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#554335}(cherry picked from commit 01ccd7810f7835135ec976d78868c61f6e159117)
Reviewed-on: https://chromium-review.googlesource.com/1046406
Reviewed-by: Hitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/branch-heads/3396@{#498}
Cr-Branched-From: 9ef2aa869bc7bc0c089e255d698cca6e47d6b038-refs/heads/master@{#550428}
[modify] https://crrev.com/54a3f5b7a7029f30bc7910bd7a1454711d9ee480/third_party/blink/renderer/controller/blink_initializer.cc

Since M66 is already out in stable, why is this urgent?
This issue affects on limited features in very limited situation, but I think it needs to be merged.

Because of this bug, all runtime enabled features in following situation are disabled regardless the flags.
- browsing xhtml/xml files, or in Chrome extensions
- defined on Window or Document interfaces
- defined in modules component

Especially, like WebGLRenderingContext, 4 more features are enabled with StableBlinkFeatures flag, so they are expected to be always enabled.


Affected cases can be rare, but therefore, this issue should be fixed on Stable Chrome.
How safe is the merge overall? What are the chances of it introducing new regressions? And are you okay with waiting 3 more weeks for this to be fixed in M67?

We are planning a respin for M66 this week, but only merging items that are absolutely critical and user blocking. 
> How safe is the merge overall?
It has no security risk, I believe.

> What are the chances of it introducing new regressions?
I did not confirm yet, but  issue 839167  may happen.

> And are you okay with waiting 3 more weeks for this to be fixed in M67?
Let me check the use counter for the 5 StableBlinkFeatures, though the numbers are counted in HTML.
Re #19, if you confirm this change is causing  issue 839167 , what will be the plan for M67? 
Labels: -Merge-Request-66 Merge-Rejected-66
Per #19, let's punt this to M67 instead. 
#20;
I'd keep picked CL in M67.
- The CL in #5 fixes an issue in behavior. The behavior issue does not affect on most people,
  but the issue should not be left for 9 weeks (from M66).
- I confirmed the regression on Windows (not reproducible on MacOSX/Linux).
- The regression is measurable only with blank pages, so I feel it is not problematic.
- The regression was fixed on trunk, but it is difficult to pick it together.
https://chromium.googlesource.com/chromium/src/+/2b81be59661f7014eab10658327801f80b5b1ebf
Re #22: SGTM. Pls continue to monitor this and let us know if merged CL needs to be reverted from M67. Thank you.
Labels: TE-Verified-M67 TE-Verified-67.0.3396.40
Able to reproduce the issue on mac 10.13.3 using chrome reported version #66.0.3359.117.

Verified the fix on Mac 10.13.3, Win-10 and Ubuntu 17.10 using Chrome version #67.0.3396.40 as per the comment #0.
Attaching screen cast for reference.
Observed that window.WebGLRenderingContext still exist without any issues when opened any file with the extension .xhtml.
Hence, the fix is working as expected. 
Adding the verified labels.

Thanks...!!
834642@M67.png
506 KB View Download

Comment 25 by f...@opera.com, May 11 2018

Cc: vamshi.kommuri@chromium.org
 Issue 841632  has been merged into this issue.

Sign in to add a comment