Title: [106957] trunk/Source/WebCore
- Revision
- 106957
- Author
- [email protected]
- Date
- 2012-02-07 09:38:00 -0800 (Tue, 07 Feb 2012)
Log Message
Web Inspector: CodeGeneratorInspector.py: extend Array validator functionality
https://bugs.webkit.org/show_bug.cgi?id=77919
Patch by Peter Rybin <[email protected]> on 2012-02-07
Patch by Peter Rybin <[email protected]> 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):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (106956 => 106957)
--- trunk/Source/WebCore/ChangeLog 2012-02-07 17:34:59 UTC (rev 106956)
+++ trunk/Source/WebCore/ChangeLog 2012-02-07 17:38:00 UTC (rev 106957)
@@ -1,3 +1,20 @@
+2012-02-07 Peter Rybin <[email protected]>
+
+ Web Inspector: CodeGeneratorInspector.py: extend Array validator functionality
+ https://bugs.webkit.org/show_bug.cgi?id=77919
+
+ Patch by Peter Rybin <[email protected]> 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):
+
2012-02-07 Dean Jackson <[email protected]>
Apple/Safari: Enable WebGL multisampling on ATI cards
Modified: trunk/Source/WebCore/inspector/CodeGeneratorInspector.py (106956 => 106957)
--- trunk/Source/WebCore/inspector/CodeGeneratorInspector.py 2012-02-07 17:34:59 UTC (rev 106956)
+++ trunk/Source/WebCore/inspector/CodeGeneratorInspector.py 2012-02-07 17:38:00 UTC (rev 106957)
@@ -422,7 +422,11 @@
@staticmethod
def get_validate_method_params():
- raise Exception("TODO")
+ class ValidateMethodParams:
+ name = "Boolean"
+ var_type = "bool"
+ as_method_name = "Boolean"
+ return ValidateMethodParams
@staticmethod
def get_output_pass_model():
@@ -1122,7 +1126,7 @@
}
""" % class_name)
- writer.newline(" typedef StructItemTraits ItemTraits;\n")
+ writer.newline(" typedef TypeBuilder::StructItemTraits ItemTraits;\n")
for prop_data in resolve_data.optional_properties:
prop_name = prop_data.p["name"]
@@ -1167,22 +1171,29 @@
validator_writer.newline(" RefPtr<InspectorObject> object;\n")
validator_writer.newline(" bool castRes = value->asObject(&object);\n")
validator_writer.newline(" ASSERT_UNUSED(castRes, castRes);\n")
- validator_writer.newline(" InspectorObject::iterator it;\n")
for prop_data in resolve_data.main_properties:
- validator_writer.newline(" it = object->find(\"%s\");\n" % prop_data.p["name"])
- validator_writer.newline(" ASSERT(it != object->end());\n")
- validator_writer.newline(" %s(it->second.get());\n" % prop_data.param_type_binding.get_validator_call_text())
+ validator_writer.newline(" {\n")
+ it_name = "%sPos" % prop_data.p["name"]
+ validator_writer.newline(" InspectorObject::iterator %s;\n" % it_name)
+ validator_writer.newline(" %s = object->find(\"%s\");\n" % (it_name, prop_data.p["name"]))
+ validator_writer.newline(" ASSERT(%s != object->end());\n" % it_name)
+ validator_writer.newline(" %s(%s->second.get());\n" % (prop_data.param_type_binding.get_validator_call_text(), it_name))
+ validator_writer.newline(" }\n")
- validator_writer.newline(" int count = %s;\n" % len(resolve_data.main_properties))
+ validator_writer.newline(" int foundPropertiesCount = %s;\n" % len(resolve_data.main_properties))
for prop_data in resolve_data.optional_properties:
- validator_writer.newline(" it = object->find(\"%s\");\n" % prop_data.p["name"])
- validator_writer.newline(" if (it != object->end()) {\n")
- validator_writer.newline(" %s(it->second.get());\n" % prop_data.param_type_binding.get_validator_call_text())
- validator_writer.newline(" ++count;\n")
+ validator_writer.newline(" {\n")
+ it_name = "%sPos" % prop_data.p["name"]
+ validator_writer.newline(" InspectorObject::iterator %s;\n" % it_name)
+ validator_writer.newline(" %s = object->find(\"%s\");\n" % (it_name, prop_data.p["name"]))
+ validator_writer.newline(" if (%s != object->end()) {\n" % it_name)
+ validator_writer.newline(" %s(%s->second.get());\n" % (prop_data.param_type_binding.get_validator_call_text(), it_name))
+ validator_writer.newline(" ++foundPropertiesCount;\n")
+ validator_writer.newline(" }\n")
validator_writer.newline(" }\n")
- validator_writer.newline(" ASSERT(count == object->size());\n")
+ validator_writer.newline(" ASSERT(foundPropertiesCount == object->size());\n")
validator_writer.newline("}\n\n\n")
writer.newline("};\n\n")
@@ -2143,8 +2154,28 @@
return adoptRef(new Array<T>());
}
+ static PassRefPtr<Array<T> > runtimeCast(PassRefPtr<InspectorValue> value)
+ {
+ RefPtr<InspectorArray> array;
+ bool castRes = value->asArray(&array);
+ ASSERT_UNUSED(castRes, castRes);
+#if !ASSERT_DISABLED
+ assertCorrectValue(array.get());
+#endif // !ASSERT_DISABLED
+ COMPILE_ASSERT(sizeof(Array<T>) == sizeof(InspectorArray), type_cast_problem);
+ return static_cast<Array<T>*>(array.get());
+ }
+
#if """ + VALIDATOR_IFDEF_NAME + """
- static void assertCorrectValue(InspectorValue* value);
+ static void assertCorrectValue(InspectorValue* value)
+ {
+ RefPtr<InspectorArray> array;
+ bool castRes = value->asArray(&array);
+ ASSERT_UNUSED(castRes, castRes);
+ for (unsigned i = 0; i < array->length(); i++)
+ ArrayItemHelper<T>::Traits::template assertCorrectValue<T>(array->get(i).get());
+ }
+
#endif // """ + VALIDATOR_IFDEF_NAME + """
};
@@ -2219,16 +2250,6 @@
#if """ + VALIDATOR_IFDEF_NAME + """
-template<typename T>
-void TypeBuilder::Array<T>::assertCorrectValue(InspectorValue* value)
-{
- RefPtr<InspectorArray> array;
- bool castRes = value->asArray(&array);
- ASSERT_UNUSED(castRes, castRes);
- for (unsigned i = 0; i < array->length(); i++)
- ArrayItemHelper<T>::Traits::template assertCorrectValue<T>(array->get(i).get());
-}
-
$validatorCode
#endif // """ + VALIDATOR_IFDEF_NAME + """
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes