[webkit-reviews] review granted: [Bug 96637] Remove V8DOMWindowShell::getEntered : [Attachment 163847] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Sep 13 10:34:11 PDT 2012
Adam Barth <abarth at webkit.org> has granted Dan Carney <dcarney at google.com>'s
request for review:
Bug 96637: Remove V8DOMWindowShell::getEntered
https://bugs.webkit.org/show_bug.cgi?id=96637
Attachment 163847: Patch
https://bugs.webkit.org/attachment.cgi?id=163847&action=review
------- Additional Comments from Adam Barth <abarth at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=163847&action=review
This looks great! A few very minor comments below.
I suspect we'll eventually to unify this data with V8PerContextData, but
currently the lifetimes are a bit different. This is great for now though.
> Source/WebCore/bindings/v8/ScopedPersistent.h:86
> + void clearWeak(void* parameter, v8::WeakReferenceCallback callback)
> + {
> + ASSERT(!m_handle.IsEmpty());
> + m_handle.MakeWeak(parameter, callback);
> + m_handle.Clear();
> + }
Rather than encouraging this tricky lifetime semantics by adding this feature
to ScopedPersistent, it might be better if we provide a way to leak the handle.
For example:
v8::Persistent<T> leakHandle()
{
v8::Persistent<T> handle = m_handle;
m_handel.Clear();
return handle;
}
Then the caller can write:
m_whatever.leakHandle().MakeWeak(...)
and then the caller will know that it is responsible for disposing the handle
because the word "leak" appears at the call site.
> Source/WebCore/bindings/v8/ScriptController.cpp:398
> + delete isolatedWorldShell;
Normally I would complain about raw calls to delete, but I know you're going to
make these into OwnPtrs shortly. :)
> Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:179
> -V8DOMWindowShell* V8DOMWindowShell::enteredIsolatedWorldContext()
> +V8DOMWindowShell::IsolatedContextData*
V8DOMWindowShell::enteredIsolatedContextData(v8::Local<v8::Context> context)
enteredIsolatedContextData -> toIsolatedContextData
The word "entered" in these functions refers to the V8 API concept of the
"entered" v8::Context. For example, in v8::Context::GetEntered(). Here,
you're asking the caller to supply the context. They might supply the entered
context or they might supply whatever context they want.
nit: Local -> Handle. We try to use the more general type whenever it doesn't
mater. I see that you're mirroring setIsolatedWorldField, but that should also
use Handle rather than Local.
> Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:360
> + m_isolatedContextData = IsolatedContextData::create(m_world.get(),
m_perContextData.release(), m_isolatedWorldShellSecurityOrigin.get());
Can't you skip these get() calls?
> Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:622
> +
m_isolatedContextData->setSecurityOrigin(m_isolatedWorldShellSecurityOrigin.get
());
ditto
> Source/WebCore/bindings/v8/V8DOMWindowShell.h:71
> + private:
This line should have a blank line before it.
> Source/WebCore/bindings/v8/V8DOMWindowShell.h:73
> + IsolatedContextData(PassRefPtr<DOMWrapperWorld> world,
PassOwnPtr<V8PerContextData> perContextData,
> + PassRefPtr<SecurityOrigin> securityOrigin)
This can all go on one line.
> Source/WebCore/bindings/v8/V8DOMWindowShell.h:76
> + , m_securityOrigin(securityOrigin) { }
These { } should each be on a separate line and have a blank line after them.
More information about the webkit-reviews
mailing list