Changeset 106957 in webkit


Ignore:
Timestamp:
Feb 7, 2012 9:38:00 AM (12 years ago)
Author:
vsevik@chromium.org
Message:

Web Inspector: CodeGeneratorInspector.py: extend Array validator functionality
https://bugs.webkit.org/show_bug.cgi?id=77919

Patch by Peter Rybin <peter.rybin@gmail.com> on 2012-02-07
Patch by Peter Rybin <peter.rybin@gmail.com> on 2012-02-07
Reviewed by Yury Semikhatsky.

Array validator method runtimeCast is added, internal backing method
is moved from .cpp to .h (it's template anyway), boolean validator is
supported.

  • inspector/CodeGeneratorInspector.py:

(RawTypes.Bool.get_validate_method_params.ValidateMethodParams):
(RawTypes.Bool.get_validate_method_params):
(TypeBuilder):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r106956 r106957  
     12012-02-07  Peter Rybin  <peter.rybin@gmail.com>
     2
     3        Web Inspector: CodeGeneratorInspector.py: extend Array validator functionality
     4        https://bugs.webkit.org/show_bug.cgi?id=77919
     5
     6        Patch by Peter Rybin <peter.rybin@gmail.com> on 2012-02-07
     7        Reviewed by Yury Semikhatsky.
     8
     9        Array validator method runtimeCast is added, internal backing method
     10        is moved from .cpp to .h (it's template anyway), boolean validator is
     11        supported.
     12
     13        * inspector/CodeGeneratorInspector.py:
     14        (RawTypes.Bool.get_validate_method_params.ValidateMethodParams):
     15        (RawTypes.Bool.get_validate_method_params):
     16        (TypeBuilder):
     17
    1182012-02-07  Dean Jackson  <dino@apple.com>
    219
  • trunk/Source/WebCore/inspector/CodeGeneratorInspector.py

    r106777 r106957  
    423423        @staticmethod
    424424        def get_validate_method_params():
    425             raise Exception("TODO")
     425            class ValidateMethodParams:
     426                name = "Boolean"
     427                var_type = "bool"
     428                as_method_name = "Boolean"
     429            return ValidateMethodParams
    426430
    427431        @staticmethod
     
    11231127""" % class_name)
    11241128
    1125                                 writer.newline("    typedef StructItemTraits ItemTraits;\n")
     1129                                writer.newline("    typedef TypeBuilder::StructItemTraits ItemTraits;\n")
    11261130
    11271131                                for prop_data in resolve_data.optional_properties:
     
    11681172                                    validator_writer.newline("    bool castRes = value->asObject(&object);\n")
    11691173                                    validator_writer.newline("    ASSERT_UNUSED(castRes, castRes);\n")
    1170                                     validator_writer.newline("    InspectorObject::iterator it;\n")
    11711174                                    for prop_data in resolve_data.main_properties:
    1172                                         validator_writer.newline("    it = object->find(\"%s\");\n" % prop_data.p["name"])
    1173                                         validator_writer.newline("    ASSERT(it != object->end());\n")
    1174                                         validator_writer.newline("    %s(it->second.get());\n" % prop_data.param_type_binding.get_validator_call_text())
    1175 
    1176                                     validator_writer.newline("    int count = %s;\n" % len(resolve_data.main_properties))
     1175                                        validator_writer.newline("    {\n")
     1176                                        it_name = "%sPos" % prop_data.p["name"]
     1177                                        validator_writer.newline("        InspectorObject::iterator %s;\n" % it_name)
     1178                                        validator_writer.newline("        %s = object->find(\"%s\");\n" % (it_name, prop_data.p["name"]))
     1179                                        validator_writer.newline("        ASSERT(%s != object->end());\n" % it_name)
     1180                                        validator_writer.newline("        %s(%s->second.get());\n" % (prop_data.param_type_binding.get_validator_call_text(), it_name))
     1181                                        validator_writer.newline("    }\n")
     1182
     1183                                    validator_writer.newline("    int foundPropertiesCount = %s;\n" % len(resolve_data.main_properties))
    11771184
    11781185                                    for prop_data in resolve_data.optional_properties:
    1179                                         validator_writer.newline("    it = object->find(\"%s\");\n" % prop_data.p["name"])
    1180                                         validator_writer.newline("    if (it != object->end()) {\n")
    1181                                         validator_writer.newline("        %s(it->second.get());\n" % prop_data.param_type_binding.get_validator_call_text())
    1182                                         validator_writer.newline("        ++count;\n")
     1186                                        validator_writer.newline("    {\n")
     1187                                        it_name = "%sPos" % prop_data.p["name"]
     1188                                        validator_writer.newline("        InspectorObject::iterator %s;\n" % it_name)
     1189                                        validator_writer.newline("        %s = object->find(\"%s\");\n" % (it_name, prop_data.p["name"]))
     1190                                        validator_writer.newline("        if (%s != object->end()) {\n" % it_name)
     1191                                        validator_writer.newline("            %s(%s->second.get());\n" % (prop_data.param_type_binding.get_validator_call_text(), it_name))
     1192                                        validator_writer.newline("            ++foundPropertiesCount;\n")
     1193                                        validator_writer.newline("        }\n")
    11831194                                        validator_writer.newline("    }\n")
    11841195
    1185                                     validator_writer.newline("    ASSERT(count == object->size());\n")
     1196                                    validator_writer.newline("    ASSERT(foundPropertiesCount == object->size());\n")
    11861197                                    validator_writer.newline("}\n\n\n")
    11871198
     
    21442155    }
    21452156
     2157    static PassRefPtr<Array<T> > runtimeCast(PassRefPtr<InspectorValue> value)
     2158    {
     2159        RefPtr<InspectorArray> array;
     2160        bool castRes = value->asArray(&array);
     2161        ASSERT_UNUSED(castRes, castRes);
     2162#if !ASSERT_DISABLED
     2163        assertCorrectValue(array.get());
     2164#endif  // !ASSERT_DISABLED
     2165        COMPILE_ASSERT(sizeof(Array<T>) == sizeof(InspectorArray), type_cast_problem);
     2166        return static_cast<Array<T>*>(array.get());
     2167    }
     2168
    21462169#if """ + VALIDATOR_IFDEF_NAME + """
    2147     static void assertCorrectValue(InspectorValue* value);
     2170    static void assertCorrectValue(InspectorValue* value)
     2171    {
     2172        RefPtr<InspectorArray> array;
     2173        bool castRes = value->asArray(&array);
     2174        ASSERT_UNUSED(castRes, castRes);
     2175        for (unsigned i = 0; i < array->length(); i++)
     2176            ArrayItemHelper<T>::Traits::template assertCorrectValue<T>(array->get(i).get());
     2177    }
     2178
    21482179#endif // """ + VALIDATOR_IFDEF_NAME + """
    21492180};
     
    22192250
    22202251#if """ + VALIDATOR_IFDEF_NAME + """
    2221 
    2222 template<typename T>
    2223 void TypeBuilder::Array<T>::assertCorrectValue(InspectorValue* value)
    2224 {
    2225     RefPtr<InspectorArray> array;
    2226     bool castRes = value->asArray(&array);
    2227     ASSERT_UNUSED(castRes, castRes);
    2228     for (unsigned i = 0; i < array->length(); i++)
    2229         ArrayItemHelper<T>::Traits::template assertCorrectValue<T>(array->get(i).get());
    2230 }
    22312252
    22322253$validatorCode
Note: See TracChangeset for help on using the changeset viewer.