[webkit-dev] Isolated world tests
Oliver Hunt
oliver at apple.com
Mon Jul 6 18:59:37 PDT 2009
On Jul 6, 2009, at 6:58 PM, Maciej Stachowiak wrote:
>
> On Jul 6, 2009, at 6:44 PM, Oliver Hunt wrote:
>
>>
>> On Jul 6, 2009, at 5:37 PM, Eric Seidel wrote:
>>
>>> Currently WebKit avoids this need for Safari directly, by having
>>> separate Obj-C and JS bindings around DOM objects. Properties/
>>> getters/setters added through JS do not affect the Obj-C
>>> bindings. Other embedders which call directly through the JS
>>> bindings could currently have implementation problems w/o Isolated
>>> World functionality.
>>
>> I'm unsure what you mean by this? V8 could just as easily have COM
>> or C bindings. The specific issue that "Isolated Worlds" is a
>> feature designed specifically to deal with potential
>> vulnerabilities in JavaScript so bindings for other languages
>> aren't really relevant.
>
> My understanding of "Isolated Worlds" is that it's meant to let
> privileged JavaScript code access the DOM of a Web page without the
> risk of undesired side effects from pages that are deliberately
> trying to hack the privileged JavaScript code. This is to some
> extent the same position the Web Inspector finds itself in, for
> example. Even with the new proxying code to enable out-of-process
> Web Inspector, the Web Inspector may want any code it runs in the
> context of the Web page to use Isolated World style bindings. On the
> other hand, it needs to be able to break through to the underlying
> DOM object as well.
I was meaning JavaScript in the context of the DOM (my bad) -- native
code is implicitly trusted so we don't have the same xss, etc concerns.
--Oliver
>
> - Maciej
>
>>
>> --Oliver
>>
>>>
>>> -eric
>>>
>>> On Wed, Jul 1, 2009 at 11:07 PM, Oliver Hunt <oliver at apple.com>
>>> wrote:
>>>
>>> On Jul 1, 2009, at 10:59 PM, Adam Barth wrote:
>>>
>>> On Wed, Jul 1, 2009 at 7:50 PM, Maciej Stachowiak<mjs at apple.com>
>>> wrote:
>>> We generally wouldn't accept WebKit features that only work with
>>> V8, even if
>>> other ports may not immediately plan to use them.
>>>
>>> I support this principle.
>>>
>>> I haven't thought through whether this particular feature
>>> should be an exception.
>>>
>>> The main arguments are as follows:
>>>
>>> 1) Isolated worlds is not a web platform feature. Adding the
>>> feature
>>> to V8 and not to JSC does not create an incompatibility between the
>>> two engines. The observable behavior from web content is the same.
>>>
>>> WebKit is not just a web platform API -- it is used in a wide
>>> variety different applications -- that said, if this feature
>>> wasn't relevant to WebKit it wouldn't need to be in WebKit
>>>
>>>
>>>
>>> 2) The purpose of implementing isolated worlds is so the app can
>>> implement an app-specific feature (extensions). Implementing
>>> extensions in another app requires a lot more than just isolated
>>> worlds.
>>>
>>> However if isolated worlds is necessary to provide effective
>>> security controls in any application that wished to be extensible
>>> in the face of arbitrary untrusted content, and it needs to be in
>>> webcore (if it doesn't my prior comment applies, this doesn't need
>>> to be in the webkit tree) then any application that wishes to use
>>> webkit will need webkit to provide this unless every application
>>> shipped its own copy of webkit with its own implementation of
>>> isolated worlds.
>>>
>>>
>>>
>>> 3) I don't foresee the implementation touching any source files
>>> outside of WebCore/bindings/v8. Other ports do not need to bear any
>>> costs because of isolated worlds.
>>>
>>> As i've said if isolated worlds has a real usecase then there is
>>> no reason to not actually provide it
>>>
>>>
>>>
>>> In general, I think using regression tests for features that are not
>>> directly exposed to Web content, but implemented in WebCore/
>>> WebKit, is
>>> reasonable. For example we have tests that check that WebKit's
>>> delegate
>>> methods relating to load progress are dispatched in the correct
>>> order.
>>>
>>> Perhaps I've been indoctrinated into the cult, but I wouldn't want
>>> to
>>> work on something without writing tests.
>>>
>>> Agreed, and what JS engine is being used should not effect the
>>> results of those tests.
>>>
>>>
>>> _______________________________________________
>>> webkit-dev mailing list
>>> webkit-dev at lists.webkit.org
>>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>>>
>>
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20090706/995a6d5f/attachment.html>
More information about the webkit-dev
mailing list