| Index: Source/WebCore/dom/make_names.pl
|
| diff --git a/Source/WebCore/dom/make_names.pl b/Source/WebCore/dom/make_names.pl
|
| index 9acffd1cf41720349c109e971e9c4e65a3426cd9..eaaa94f514249763019355e46ec6809ac5b156c8 100755
|
| --- a/Source/WebCore/dom/make_names.pl
|
| +++ b/Source/WebCore/dom/make_names.pl
|
| @@ -44,6 +44,7 @@ sub readAttrs($$);
|
| my $printFactory = 0;
|
| my $printWrapperFactory = 0;
|
| my $printWrapperFactoryV8 = 0;
|
| +my $printWrapperFactoryDart = 0;
|
| my $fontNamesIn = "";
|
| my $tagsFile = "";
|
| my $attrsFile = "";
|
| @@ -80,6 +81,7 @@ GetOptions(
|
| 'preprocessor=s' => \$preprocessor,
|
| 'wrapperFactory' => \$printWrapperFactory,
|
| 'wrapperFactoryV8' => \$printWrapperFactoryV8,
|
| + 'wrapperFactoryDart' => \$printWrapperFactoryDart,
|
| 'fonts=s' => \$fontNamesIn
|
| );
|
|
|
| @@ -159,15 +161,12 @@ if ($printFactory) {
|
| printFactoryHeaderFile("$factoryBasePath.h");
|
| }
|
|
|
| -die "You cannot specify both --wrapperFactory and --wrapperFactoryV8" if $printWrapperFactory && $printWrapperFactoryV8;
|
| -my $wrapperFactoryType = "";
|
| -if ($printWrapperFactory) {
|
| - $wrapperFactoryType = "JS";
|
| -} elsif ($printWrapperFactoryV8) {
|
| - $wrapperFactoryType = "V8";
|
| -}
|
| +my @wrapperFactoryTypes = ();
|
| +push(@wrapperFactoryTypes, "JS") if $printWrapperFactory;
|
| +push(@wrapperFactoryTypes, "V8") if $printWrapperFactoryV8;
|
| +push(@wrapperFactoryTypes, "Dart") if $printWrapperFactoryDart;
|
|
|
| -if ($wrapperFactoryType) {
|
| +foreach my $wrapperFactoryType (@wrapperFactoryTypes) {
|
| printWrapperFactoryCppFile($outputDir, $wrapperFactoryType, $wrapperFactoryFileName);
|
| printWrapperFactoryHeaderFile($outputDir, $wrapperFactoryType, $wrapperFactoryFileName);
|
| }
|
| @@ -1027,6 +1026,40 @@ static v8::Handle<v8::Value> create${JSInterfaceName}Wrapper($parameters{namespa
|
| END
|
| ;
|
| }
|
| + } elsif ($wrapperFactoryType eq "Dart") {
|
| + # Hack for the media tags
|
| + # FIXME: This should have been done via a CustomWrapper attribute and a separate *Custom file.
|
| + if ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
|
| + print F <<END
|
| +static Dart_Handle create${JSInterfaceName}Wrapper($parameters{namespace}Element* element)
|
| +{
|
| + Settings* settings = element->document()->settings();
|
| + if (!MediaPlayer::isAvailable() || (settings && !settings->isMediaEnabled()))
|
| + return toDartValue(element);
|
| + return toDartValue(static_cast<${JSInterfaceName}*>(element));
|
| +}
|
| +
|
| +END
|
| +;
|
| + } elsif (${JSInterfaceName} eq "HTMLElement") {
|
| + print F <<END
|
| +static Dart_Handle create${JSInterfaceName}Wrapper($parameters{namespace}Element* element)
|
| +{
|
| + return DartDOMWrapper::toDart<DartHTMLElement>(element);
|
| +}
|
| +
|
| +END
|
| +;
|
| + } else {
|
| + print F <<END
|
| +static Dart_Handle create${JSInterfaceName}Wrapper($parameters{namespace}Element* element)
|
| +{
|
| + return toDartValue(static_cast<${JSInterfaceName}*>(element));
|
| +}
|
| +
|
| +END
|
| +;
|
| + }
|
| }
|
|
|
| if ($conditional) {
|
| @@ -1082,6 +1115,11 @@ END
|
| #include <v8.h>
|
| END
|
| ;
|
| + } elsif ($wrapperFactoryType eq "Dart") {
|
| + print F <<END
|
| +#include "Dart$parameters{namespace}Element.h"
|
| +END
|
| +;
|
| }
|
|
|
| print F <<END
|
| @@ -1104,6 +1142,12 @@ typedef v8::Handle<v8::Value> (*Create$parameters{namespace}ElementWrapperFuncti
|
|
|
| END
|
| ;
|
| + } elsif ($wrapperFactoryType eq "Dart") {
|
| + print F <<END
|
| +typedef Dart_Handle (*Create$parameters{namespace}ElementWrapperFunction)($parameters{namespace}Element*);
|
| +
|
| +END
|
| +;
|
| }
|
|
|
| printWrapperFunctions($F, $wrapperFactoryType);
|
| @@ -1126,6 +1170,15 @@ v8::Handle<v8::Value> createV8$parameters{namespace}Wrapper($parameters{namespac
|
| if (map.isEmpty()) {
|
| END
|
| ;
|
| + } elsif ($wrapperFactoryType eq "Dart") {
|
| + print F <<END
|
| +Dart_Handle createDart$parameters{namespace}Wrapper($parameters{namespace}Element* element)
|
| +{
|
| + typedef HashMap<WTF::AtomicStringImpl*, Create$parameters{namespace}ElementWrapperFunction> FunctionMap;
|
| + DEFINE_STATIC_LOCAL(FunctionMap, map, ());
|
| + if (map.isEmpty()) {
|
| +END
|
| +;
|
| }
|
|
|
| for my $tag (sort keys %enabledTags) {
|
| @@ -1164,6 +1217,12 @@ END
|
| return V8$parameters{fallbackInterfaceName}::wrap(static_cast<$parameters{fallbackInterfaceName}*>(element), forceNewObject);
|
| END
|
| ;
|
| + } elsif ($wrapperFactoryType eq "Dart") {
|
| + print F <<END
|
| + return createWrapperFunction(element);
|
| + return toDartValue(static_cast<$parameters{fallbackInterfaceName}*>(element));
|
| +END
|
| +;
|
| }
|
| print F <<END
|
| }
|
| @@ -1225,6 +1284,18 @@ namespace WebCore {
|
| }
|
| END
|
| ;
|
| + } elsif ($wrapperFactoryType eq "Dart") {
|
| + print F <<END
|
| +#include "dart_api.h"
|
| +
|
| +namespace WebCore {
|
| +
|
| + class $parameters{namespace}Element;
|
| +
|
| + Dart_Handle createDart$parameters{namespace}Wrapper($parameters{namespace}Element*);
|
| +}
|
| +END
|
| +;
|
| }
|
|
|
| print F "#endif // $parameters{guardFactoryWith}\n\n" if $parameters{guardFactoryWith};
|
|
|