Changeset 53890 in webkit


Ignore:
Timestamp:
Jan 26, 2010 8:17:18 PM (14 years ago)
Author:
tkent@chromium.org
Message:

2010-01-26 Kent Tamura <tkent@chromium.org>

Reviewed by Eric Seidel.

Add Date type support for Objective-C binding.
https://bugs.webkit.org/show_bug.cgi?id=32810

The Date type in IDLs is mapped to NSTimeInterval in Objective-C.

  • bindings/objc/DOMInternal.h: Add kit() and core() for NSTimeInterval.
  • bindings/scripts/CodeGenerator.pm: Make Date a primitive type.
  • bindings/scripts/CodeGeneratorJS.pm: Move some code for the CodeGeenrator.pm change.
  • bindings/scripts/CodeGeneratorObjC.pm:
  • bindings/scripts/CodeGeneratorV8.pm: Move some code for the CodeGeenrator.pm change.
  • html/HTMLInputElement.idl: Remove Objective-C exclusion for valueAsDate.
Location:
trunk/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r53886 r53890  
     12010-01-26  Kent Tamura  <tkent@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Add Date type support for Objective-C binding.
     6        https://bugs.webkit.org/show_bug.cgi?id=32810
     7
     8        The Date type in IDLs is mapped to NSTimeInterval in Objective-C.
     9
     10        * bindings/objc/DOMInternal.h: Add kit() and core() for NSTimeInterval.
     11        * bindings/scripts/CodeGenerator.pm: Make Date a primitive type.
     12        * bindings/scripts/CodeGeneratorJS.pm: Move some code for the CodeGeenrator.pm change.
     13        * bindings/scripts/CodeGeneratorObjC.pm:
     14        * bindings/scripts/CodeGeneratorV8.pm: Move some code for the CodeGeenrator.pm change.
     15        * html/HTMLInputElement.idl: Remove Objective-C exclusion for valueAsDate.
     16
    1172010-01-26  Dmitry Titov  <dimich@chromium.org>
    218
  • trunk/WebCore/bindings/objc/DOMInternal.h

    r48513 r53890  
    8888WebCore::XPathNSResolver* core(DOMNativeXPathNSResolver *);
    8989#endif // ENABLE(XPATH)
     90
     91inline NSTimeInterval kit(double msSinceEpoch)
     92{
     93    return msSinceEpoch / 1000.0 - NSTimeIntervalSince1970;
     94}
     95
     96inline double core(NSTimeInterval sec)
     97{
     98    return sec * 1000.0 + NSTimeIntervalSince1970;
     99}
  • trunk/WebCore/bindings/scripts/CodeGenerator.pm

    r52373 r53890  
    4444                         "unsigned long" => 1, "unsigned long long" => 1,
    4545                         "float" => 1, "double" => 1,
    46                          "boolean" => 1, "void" => 1);
     46                         "boolean" => 1, "void" => 1,
     47                         "Date" => 1);
    4748
    4849my %podTypeHash = ("SVGNumber" => 1, "SVGTransform" => 1);
  • trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r53666 r53890  
    170170    if ($codeGenerator->IsPrimitiveType($type) or AvoidInclusionOfType($type)
    171171        or $type eq "DOMString" or $type eq "DOMObject" or $type eq "Array") {
    172     } elsif ($type eq "Date") {
    173         $implIncludes{"<runtime/DateInstance.h>"} = 1;
    174172    } elsif ($type =~ /SVGPathSeg/) {
    175173        $joinedName = $type;
     
    18771875
    18781876    return "jsBoolean($value)" if $type eq "boolean";
    1879    
     1877
     1878    # Need to check Date type before IsPrimitiveType().
     1879    if ($type eq "Date") {
     1880        return "jsDateOrNull(exec, $value)";
     1881    }
    18801882    if ($codeGenerator->IsPrimitiveType($type) or $type eq "SVGPaintType" or $type eq "DOMTimeStamp") {
    18811883        $implIncludes{"<runtime/JSNumberCell.h>"} = 1;
     
    19531955        $implIncludes{"$type.h"} = 1;
    19541956        return "$value->deserialize(exec)";
    1955     } elsif ($type eq "Date") {
    1956         $implIncludes{"<runtime/DateInstance.h>"} = 1;
    1957         return "jsDateOrNull(exec, $value)";
    19581957    } else {
    19591958        # Default, include header with same name.
  • trunk/WebCore/bindings/scripts/CodeGeneratorObjC.pm

    r53574 r53890  
    317317    return "unsigned" if $name eq "unsigned long";
    318318    return "int" if $name eq "long";
     319    return "NSTimeInterval" if $name eq "Date";
    319320    return "DOMAbstractView" if $name eq "DOMWindow";
    320321    return $name if $codeGenerator->IsPrimitiveType($name) or $name eq "DOMImplementation" or $name eq "DOMTimeStamp";
     
    12231224            } elsif ($attribute->signature->extendedAttributes->{"ConvertFromString"}) {
    12241225                $getterContentTail .= ".toInt()";
    1225             } elsif ($codeGenerator->IsPodType($idlType)) {
     1226            } elsif ($codeGenerator->IsPodType($idlType) or $idlType eq "Date") {
    12261227                $getterContentHead = "kit($getterContentHead";
    12271228                $getterContentTail .= ")";
     
    12921293                unless ($codeGenerator->IsPrimitiveType($idlType) or $codeGenerator->IsStringType($idlType)) {
    12931294                    push(@implContent, "    ASSERT($argName);\n\n");
     1295                }
     1296
     1297                if ($idlType eq "Date") {
     1298                    $arg = "core(" . $arg . ")";
    12941299                }
    12951300
  • trunk/WebCore/bindings/scripts/CodeGeneratorV8.pm

    r53760 r53890  
    157157    # When we're finished with the one-file-per-class
    158158    # reorganization, we won't need these special cases.
    159     if ($codeGenerator->IsPrimitiveType($type) or AvoidInclusionOfType($type) or $type eq "Date") {
     159    if ($codeGenerator->IsPrimitiveType($type) or AvoidInclusionOfType($type)) {
    160160    } elsif ($type =~ /SVGPathSeg/) {
    161161        $joinedName = $type;
     
    25312531    return "return v8::Integer::NewFromUnsigned($value)" if $nativeType eq "unsigned";
    25322532
     2533    return "return v8DateOrNull($value);" if $type eq "Date";
    25332534    return "return v8::Number::New($value)" if $codeGenerator->IsPrimitiveType($type) or $type eq "SVGPaintType";
    25342535
     
    25872588    }
    25882589
    2589     if ($type eq "Date") {
    2590         return "return v8DateOrNull($value);";
    2591     }
    2592 
    25932590    else {
    25942591        $implIncludes{"wtf/RefCounted.h"} = 1;
  • trunk/WebCore/html/HTMLInputElement.idl

    r52921 r53890  
    5858                 attribute [ConvertNullToNullString] DOMString useMap;
    5959                 attribute [ConvertNullToNullString] DOMString value;
    60 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
    61                  // FIXME: Add Date support for Objective-C and COM.
    6260                 attribute Date            valueAsDate setter raises(DOMException);
    63 #endif
    6461#if defined(ENABLE_DATALIST) && ENABLE_DATALIST
    6562        readonly attribute HTMLOptionElement selectedOption;
Note: See TracChangeset for help on using the changeset viewer.