OK - btw - I think its v8_np_utils where you could add the v8->npobject
functions for your arrays.
And then you shouldn't need anything on the bridge - just
CppBoundClass::BindProperty should work.
I don't know quite how to do the KJS side of this, though. And now I see
why you were trying to hit the bridge; cppboundobject currently isn't v8
specific, which is I guess why you were asking. You could create a NPObject
related helper function to implement in each JS engine. Give it a common
name (like the other _NPN stuff?) and implement in each.
Mike
On Wed, Oct 1, 2008 at 10:45 AM, Marshall Greenblatt <[EMAIL PROTECTED]
> wrote:
> Hi Mike,
>
> On Wed, Oct 1, 2008 at 1:02 PM, Mike Belshe <[EMAIL PROTECTED]> wrote:
>
>>
>> Generally, I don't think you should touch the bridge (btw - the bridge is
>> going away as we reconcile differences w/ webkit- it will be the
>> scriptController, I believe).
>>
>> I don't have source in front of me; but there is a file like "np_v8_util"
>> or np_v8_object" where there are some conversion utilities for converting v8
>> types to NPObjects. This routine (v8array to NPObject) probably belongs in
>> there (for v8). I'm fairly clueless about the JSC code. (we used to refer
>> to JavaScriptCore as KJS; but we now refer to it as JSC since that is the
>> proper name)
>>
>> I'd assume that you'd create the NPObject direct from the CppBoundClass by
>> calling this function. The last problem is making your newly created object
>> reachable from your JS code; and for that, I think there is a BindToXXXX
>> call (I believe it is on the bridge), which allows you to hang a custom
>> property off the window object.
>>
>> While you described what you are trying to do (make arrays from C++
>> accessible to JS), I need more context to understand the best way to hook
>> into the system. Are you augmenting an existing CppBoundObject? Or
>> creating something new?
>>
>> Mike
>>
>
> Sorry for not being clear -- I posted about this in a separate message on
> the chromium-dev list about a week ago. The overall goal is to add the
> following methods to the existing webkit/glue/CppVariant class in the least
> intrusive manner possible. The new JS Array NPObject would be created in
> the Set() methods and assigned to the NPVariant underlying the CppVariant
> instance.
>
> // Methods for assigning vectors of different data types
> void Set(const std::vector<std::wstring>& value);
> void Set(const std::vector<int32_t>& value);
> void Set(const std::vector<double>& value);
> void Set(const std::vector<bool>& value);
>
> // Evaluate the elements in the NPObject and determine
> // the most appropriate vector data type to use.
> enum VectorType {
> VECTOR_TYPE_STRING,
> VECTOR_TYPE_INT32,
> VECTOR_TYPE_DOUBLE,
> VECTOR_TYPE_BOOLEAN
> };
> VectorType GetVectorTypeHint() const;
>
> // Methods for retrieving vectors of different data types
> std::vector<std::wstring> ToStringVector() const; // this method already
> exists
> std::vector<int32_t> ToInt32Vector() const;
> std::vector<double> ToDoubleVector() const;
> std::vector<bool> ToBooleanVector() const;
>
> Adding these methods will make it easier to use JS array objects as
> arguments and return values for CppBoundClass callback functions.
>
> I see that, as you mentioned, JSBridge will disappear with the pending
> chrome_webkit_merge_branch merge. It was supposed to land on trunk
> yesterday, but I guess it got postponed? In any case, I'll look around in
> chrome_webkit_merge_branch and try to identify the appropriate place to add
> the CreateSimpleArrayObject() methods that will do the actual NPObject
> creation work.
>
> Regards,
> Marshall
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Chromium-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/chromium-dev?hl=en
-~----------~----~----~----~------~----~------~--~---