[Webkit-unassigned] [Bug 32326] Refactor some security code out of V8 bindings
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Dec 9 13:43:28 PST 2009
https://bugs.webkit.org/show_bug.cgi?id=32326
Charles Reis <creis at chromium.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |creis at chromium.org
--- Comment #7 from Charles Reis <creis at chromium.org> 2009-12-09 13:43:28 PST ---
(In reply to comment #5)
> (From update of attachment 44544 [details])
> Thanks for fixing the style nits. At a high level, this looks great. I have a
> few questions:
>
> + virtual DOMWindow* getActiveWindow() = 0;
>
> Does this need to be virtual, or can we do link-time dispatch here?
>
(See below)
> + // Implement BindingsSecurity methods that depend on V8-specific code.
>
> Don't we want to implement this in a V8BindingsSecurity.cpp file instead of
> V8Proxy? V8Proxy is an all-sing, all-dance dumping ground.
>
Well, reportUnsafeAccessTo (and the enum it relies on) looks like it's only
definied within V8Proxy.cpp, but I could move it to be a static member of
V8Proxy that we can call outside V8Proxy.cpp.
I could also move the immediatelyReportUnsafeAccessTo method to the
BindingsState class, since that already has bindings-specific code. That'll
clean up BindingsSecurity so that it's all shared code.
> + class V8State : public BindingsState {
>
> I'd call this V8BindingsState to mirror the DOMWindow / V8DOMWindow name
> convention.
>
> In general, it's slightly unclear to me whether we actually want a
> V8BindingsState object that derives from BindingsState or whether we want to
> have a single class where some of the methods are implemented by the different
> bindings, like ScriptController. The advantage of the latter is that we'll get
> compile-time dispatch instead of runtime dispatch.
>
> Another option is to have a shared BindingsStateBase and V8 implement a
> subclass BindingsState that the shared code refers to. That way, the bindings
> can override whatever methods they need without incurring a virtual method
> call.
>
> A final option is to use template namespaces. These shared classes would be
>
> template<classname Bindings>
> class ...
>
> and then refer to Bindings::State. Then we can have V8Binding::State derive
> from GenericBinding::State. That's more code, but it might make it easier to
> support things like re-using this code for ObjCBindings::State, etc.
>
> Thoughts?
I think the template approach is probably the most flexible (while still
giving us compile-time dispatch). I'll look into it.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list