Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: tools/ipc_fuzzer/mutate/generate.cc

Issue 873253004: Add IPC fuzzer GenerateTraits for some cc types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Properly generate gfx::Transform Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/ipc_fuzzer/mutate/generate.cc
diff --git a/tools/ipc_fuzzer/mutate/generate.cc b/tools/ipc_fuzzer/mutate/generate.cc
index d002d8b72f4e44446bdf5b99580b2e0ff4f25607..1fcef4d15d3c44b57c2a7d1770ff439538c91748 100644
--- a/tools/ipc_fuzzer/mutate/generate.cc
+++ b/tools/ipc_fuzzer/mutate/generate.cc
@@ -709,16 +709,111 @@ struct GenerateTraits<blink::WebGamepadButton> {
template <>
struct GenerateTraits<cc::CompositorFrame> {
- // FIXME: this should actually generate something
static bool Generate(cc::CompositorFrame* p, Generator* generator) {
+ if (!GenerateParam(&p->metadata, generator))
+ return false;
+ p->delegated_frame_data.reset(new cc::DelegatedFrameData);
inferno 2015/01/28 22:44:36 empty constructor for clarity everywhere s/p->dele
inferno 2015/01/28 22:44:36 Should we be generating all of these three at once
Martin Barbella 2015/01/28 23:03:59 Yeah, it looks like we should only be generating o
Martin Barbella 2015/01/28 23:32:59 Both comments addressed.
+ if (!GenerateParam(p->delegated_frame_data.get(), generator))
+ return false;
+ p->gl_frame_data.reset(new cc::GLFrameData);
+ if (!GenerateParam(p->gl_frame_data.get(), generator))
+ return false;
+ p->software_frame_data.reset(new cc::SoftwareFrameData);
+ if (!GenerateParam(p->software_frame_data.get(), generator))
+ return false;
return true;
}
};
template <>
struct GenerateTraits<cc::CompositorFrameAck> {
- // FIXME: this should actually generate something
static bool Generate(cc::CompositorFrameAck* p, Generator* generator) {
+ if (!GenerateParam(&p->resources, generator))
+ return false;
+ if (!GenerateParam(&p->last_software_frame_id, generator))
+ return false;
+ p->gl_frame_data.reset(new cc::GLFrameData);
+ if (!GenerateParam(p->gl_frame_data.get(), generator))
+ return false;
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<cc::DelegatedFrameData> {
+ static bool Generate(cc::DelegatedFrameData* p, Generator* generator) {
+ if (!GenerateParam(&p->device_scale_factor, generator))
+ return false;
+ if (!GenerateParam(&p->resource_list, generator))
+ return false;
+ if (!GenerateParam(&p->render_pass_list, generator))
+ return false;
+ return true;
+ }
+};
+
+template <class A>
+struct GenerateTraits<cc::ListContainer<A>> {
+ static bool Generate(cc::ListContainer<A>* p, Generator* generator) {
+ // FIXME(mbarbella): This should actually generate something.
Tom Sepez 2015/01/28 22:58:09 nit: style guide says TODO(mbarbella): ..
Martin Barbella 2015/01/28 23:32:59 Done.
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<cc::QuadList> {
+ static bool Generate(cc::QuadList* p, Generator* generator) {
+ // FIXME(mbarbella): This should actually generate something.
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<cc::RenderPass> {
+ static bool Generate(cc::RenderPass* p, Generator* generator) {
+ if (!GenerateParam(&p->id, generator))
+ return false;
+ if (!GenerateParam(&p->output_rect, generator))
+ return false;
+ if (!GenerateParam(&p->damage_rect, generator))
+ return false;
+ if (!GenerateParam(&p->transform_to_root_target, generator))
+ return false;
+ if (!GenerateParam(&p->has_transparent_background, generator))
+ return false;
+ if (!GenerateParam(&p->quad_list, generator))
inferno 2015/01/28 22:44:36 please add fixme for https://code.google.com/p/chr
Martin Barbella 2015/01/28 23:03:59 I didn't add it because it doesn't seem to be gett
Martin Barbella 2015/01/28 23:32:59 Left a comment here. Could you take a look to make
+ return false;
+ if (!GenerateParam(&p->shared_quad_state_list, generator))
+ return false;
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<cc::RenderPassList> {
+ static bool Generate(cc::RenderPassList* p, Generator* generator) {
+ size_t count = RandInRange(5);
inferno 2015/01/28 22:44:36 Why just 5 ? lets probably put that 10 we use othe
Martin Barbella 2015/01/28 23:32:59 Done.
+ for (size_t i = 0; i < count; ++i) {
+ scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
+ if (!GenerateParam(render_pass.get(), generator))
+ return false;
+ p->push_back(render_pass.Pass());
+ }
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<cc::SoftwareFrameData> {
+ static bool Generate(cc::SoftwareFrameData* p, Generator* generator) {
+ if (!GenerateParam(&p->id, generator))
+ return false;
+ if (!GenerateParam(&p->size, generator))
+ return false;
+ if (!GenerateParam(&p->damage_rect, generator))
+ return false;
+ if (!GenerateParam(&p->bitmap_id, generator))
+ return false;
return true;
}
};
@@ -1063,34 +1158,6 @@ struct GenerateTraits<gfx::PointF> {
};
template <>
-struct GenerateTraits<gfx::Size> {
- static bool Generate(gfx::Size *p, Generator* generator) {
- int w;
- int h;
- if (!GenerateParam(&w, generator))
- return false;
- if (!GenerateParam(&h, generator))
- return false;
- p->SetSize(w, h);
- return true;
- }
-};
-
-template <>
-struct GenerateTraits<gfx::SizeF> {
- static bool Generate(gfx::SizeF *p, Generator* generator) {
- float w;
- float h;
- if (!GenerateParam(&w, generator))
- return false;
- if (!GenerateParam(&h, generator))
- return false;
- p->SetSize(w, h);
- return true;
- }
-};
-
-template <>
struct GenerateTraits<gfx::Rect> {
static bool Generate(gfx::Rect *p, Generator* generator) {
gfx::Point origin;
@@ -1135,6 +1202,48 @@ struct GenerateTraits<gfx::Range> {
};
template <>
+struct GenerateTraits<gfx::Size> {
+ static bool Generate(gfx::Size* p, Generator* generator) {
+ int w;
+ int h;
+ if (!GenerateParam(&w, generator))
+ return false;
+ if (!GenerateParam(&h, generator))
+ return false;
+ p->SetSize(w, h);
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<gfx::SizeF> {
+ static bool Generate(gfx::SizeF* p, Generator* generator) {
+ float w;
+ float h;
+ if (!GenerateParam(&w, generator))
+ return false;
+ if (!GenerateParam(&h, generator))
+ return false;
+ p->SetSize(w, h);
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<gfx::Transform> {
+ static bool Generate(gfx::Transform* p, Generator* generator) {
+ SkMScalar matrix[16];
+ if (!GenerateParamArray(&matrix[0], arraysize(matrix), generator))
+ return false;
+ *p = gfx::Transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4],
+ matrix[5], matrix[6], matrix[7], matrix[8], matrix[9],
+ matrix[10], matrix[11], matrix[12], matrix[13],
+ matrix[14], matrix[15]);
+ return true;
+ }
+};
+
+template <>
struct GenerateTraits<gfx::Vector2d> {
static bool Generate(gfx::Vector2d *p, Generator* generator) {
int x;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698