New issue
Advanced search Search tips

Issue 682972 link

Starred by 3 users

Issue metadata

Status: Duplicate
Merged: issue 605714
Owner: ----
Closed: Mar 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Feature



Sign in to add a comment

Prototype uploading special sandboxed iframes' rendering results to WebGL textures

Project Member Reported by kbr@chromium.org, Jan 20 2017

Issue description

The excellent out-of-process iframe work that's been done in:
http://www.chromium.org/developers/design-documents/oop-iframes

is a great basis for prototyping uploading HTML rendering results to WebGL textures, a longstanding feature request.

As discussed in the WebGL working group, the general direction for this feature that all browser vendors supported was:

1. Adding a new tag understood by the iframe "sandbox" attribute which would mean:

1a. Only allow resource fetches from the same origin as the top-level document. This restriction would prevent cross-origin resources from becoming accessible to untrusted WebGL code, which is not allowed. (The "crossOrigin" attribute on HTMLMediaElement provides a targeted solution for just those elements; a more general solution needs to be devised here, but this severe restriction should make it safe.)

1b. Treat the iframe as incognito mode. This should prevent personally identifiable information from showing up in the rendering results.

2. Adding APIs, which only work in this iframe mode, which would allow dispatching of synthetic mouse and keyboard events into the iframe. These are needed because only the embedding WebGL application knows where clicks should occur.

These security restrictions might limit the utility of the API, but they should make it safe. From a safe beginning, the API can then be relaxed.

An initial prototype (not to be shipped) could try using the out-of-process iframe rendering framework described here:
http://www.chromium.org/developers/design-documents/oop-iframes/oop-iframes-rendering

to see how difficult it is to get it into a WebGL texture. If the security properties above could then be enforced, the prototype could be placed behind a flag.

 
Components: Blink>SecurityFeature

Comment 2 by creis@chromium.org, Jan 20 2017

Components: Internals>Sandbox>SiteIsolation
Happy to chat about this if you'd like.  And yes, kenrb@ as a good resource for the OOPIF rendering architecture.

One note: 1b mentions treating iframes as incognito, which may be challenging to support.  Incognito mode is implemented using a different Profile / BrowserContext, and there's lots of assumptions in the code that all frames of a page belong to the same Profile.  Maybe there's some other way to approach it, though.

Comment 3 by kbr@chromium.org, Jan 23 2017

Thanks creis@ for the input. As a first prototype we can ignore the requirement of incognito mode, though to ship this I think it would need to be added. We'd be eager to work with your team to understand whether the code can be generalized in this way and, if so, to implement it.

Comment 4 by zmo@chromium.org, Mar 30 2017

Mergedinto: 605714
Status: Duplicate (was: Available)

Sign in to add a comment