Hi Dmitry.

Two thoughts on this:

(1) If we remove this feature, are Chromium/GMail developers going to 
re-request the other "shared document" features that this feature subsumed? Or 
are y'all now convinced that "shared document" is, in general, not a good idea?

The reason I ask this is that, given your description, I see some problems with 
the shared iframe feature, but I still think it's much better than previously 
proposed alternatives.

(2) I think you should share your data with the relevant standards bodies, and 
suggest a change to the HTML5 spec, if you haven't done so already. I wouldn't 
want to remove this feature just to add it back later for the sake of spec 
compliance.

Thanks,
Geoff

On Mar 19, 2012, at 5:51 PM, Dmitry Titov wrote:

> Hi,
> 
> There is a patch posted for removal of the 'magic iframe' feature. This is 
> the ability to move 'live' iframe from one page to another w/o unloading it.
> If you have interest or ideas about this feature, please reply.
> 
> HISTORY
> This feature was added 2 years ago (bug here). It was intended as a shared 
> app context for complex apps that span several pages. In case when random set 
> of pages is closed, the surviving iframe could be passed between remaining 
> pages and serve as 'app state'.
> This behavior is somewhat described in HTML5 spec: "Removing an iframe from a 
> Document does not cause its browsing context to be discarded. Indeed, an 
> iframe's browsing context can survive its original parent Document if its 
> iframe is moved to another Document."
> All non-WebKit browsers don't have this and always unload the iframe when it 
> is disconnected form the document.
> 
> PROBLEMS
> We did have quite a few issues with this mechanism. The root of the problem 
> seems to be that traditionally, multiple 'permissions' and 'live objects' are 
> associated with a top-level page, or a top frame of some kind, instead of 
> being associated with each Frame. Even HTML specifications often formulate 
> the scope of things like permissions in terms of a page - for example, geo 
> permissions are computed based on the origin of the page. When an iframe is 
> transferred from one page to another, it may enter a different set of 
> permissions while already performing operations authorized before. 
> Association with the top-level page is also used to determine which one 
> should show modal UI for HTTP Auth, per-origin permissions, or certificate 
> issues for example.
> As a result, we had quite a few bugs popping up (and fixed).
> 
> WHY REMOVE
> This is somewhat obscure feature of the platform. Only a few apps that we 
> knew used the feature. Most developers, both app and webkit kind, don't even 
> know about it. When new mechanisms/APIs are implemented, a lot of objects get 
> associated with Page (WebView) level and they are almost 'automatically' 
> broken in case of live iframe transfer because once old page closes, it 
> destroys the objects with lifetimes scoped by it. This makes it somewhat 
> dangerous and difficult to support. The benefits that it gives to the big 
> multi-page applications do not seem to warrant the actual complexity of 
> maintaining this feature.
> Other browsers never implemented the feature, siting difficult design due to 
> various thorny security issues as well.
> 
> This is potentially a compatibility issue for sites that use 
> document.adoptNode(iframe) to ensure live transfer of an iframe from one page 
> to another.
> In the future, if there will be sufficient need, it is possible to design a 
> 'shared module' feature that would explicitly deal with various 
> security/lifetime boundaries.
> 
> Please let us know what you think.
> 
> Thanks,
> Dmitry
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to