Following up on this. Let's imagine that I don't define a V8ClassIndex enum
for the common base class (so, in my case, I get rid of WORKERCONTEXT, and
have only DEDICATEDWORKERCONTEXT and SHAREDWORKERCONTEXT (the derived
classes).
Now, let's say I'm defining an ACCESSOR_GETTER on the base class - the first
thing I want to do is get a pointer to the native object. I don't know which
concrete class the native object is (DedicatedWorkerContext or
SharedWorkerContext), but I do know that it's guaranteed to be an instance
of the base native class (WorkerContext).
Currently I'm doing this:
WorkerContext* workerContext =
V8DOMWrapper::convertToNativeObject<WorkerContext>(V8ClassIndex::WORKERCONTEXT,
info.Holder());
If I remove V8ClassIndex::WORKERCONTEXT, then I can't pass that in to
convertToNativeObject. It looks like the passed-in enum is only used for
error checking currently, so I guess what I should use instead is
convertDOMWrapperToNative()?:
WorkerContext* workerContext =
V8DOMWrapper::convertDOMWrapperToNative<WorkerContext>(info.Holder());
Is that the general pattern people use for cases like this?
-atw
On Mon, Jul 20, 2009 at 3:21 PM, Drew Wilson <[email protected]> wrote:
> <resending from correct acct>:
>
> Currently, Web Workers have a class (WorkerContext) which represents the
> global scope for a worker. The custom V8 bindings for this class are defined
> in V8WorkerContextCustom, and we also define V8ClassIndex::WORKERCONTEXT for
> the wrapper object.
> I'm refactoring the WebCore impl class, so WorkerContext becomes
> (essentially) an abstract base class, and the actual worker context will be
> one of two derived classes: DedicatedWorkerContext or SharedWorkerContext.
> In my refactoring, I've only implemented a single derived class
> (DedicatedWorkerContext) for now.
>
> I'm trying to figure out the correct way to structure the V8 bindings -
> I've already made a pass at it that passes all of the unit tests:
>
> https://bugs.webkit.org/show_bug.cgi?id=27420
>
> I've defined V8ClassIndex::DEDICATEDWORKERCONTEXT, but I'm not certain if I
> need to remove V8ClassIndex::WORKERCONTEXT or not, since there shouldn't
> ever be a wrapper object created for that base class. Are the wrapper types
> defined in V8Index.h only for actually instantiable wrapper objects (in
> which case I should only define them for the "leaves" of the tree), or is it
> used for other things like instanceof?
>
> -atw
>
>
--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: [email protected]
View archives, change email options, or unsubscribe:
http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---