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

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: Address comments 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 | tools/ipc_fuzzer/mutate/rand_util.h » ('j') | 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..a7bf4ee2d680d1e672275ca927f25bd57b9c8f1f 100644
--- a/tools/ipc_fuzzer/mutate/generate.cc
+++ b/tools/ipc_fuzzer/mutate/generate.cc
@@ -400,7 +400,7 @@ struct GenerateTraits<Tuple<A, B, C, D, E>> {
template <class A>
struct GenerateTraits<std::vector<A> > {
static bool Generate(std::vector<A>* p, Generator* generator) {
- size_t count = ++g_depth > 3 ? 0 : RandInRange(20);
+ size_t count = ++g_depth > 3 ? 0 : RandElementCount();
p->resize(count);
for (size_t i = 0; i < count; ++i) {
if (!GenerateParam(&p->at(i), generator)) {
@@ -417,7 +417,7 @@ template <class A>
struct GenerateTraits<std::set<A> > {
static bool Generate(std::set<A>* p, Generator* generator) {
static int g_depth = 0;
- size_t count = ++g_depth > 3 ? 0 : RandInRange(20);
+ size_t count = ++g_depth > 3 ? 0 : RandElementCount();
A a;
for (size_t i = 0; i < count; ++i) {
if (!GenerateParam(&a, generator)) {
@@ -436,7 +436,7 @@ template <class A, class B>
struct GenerateTraits<std::map<A, B> > {
static bool Generate(std::map<A, B>* p, Generator* generator) {
static int g_depth = 0;
- size_t count = ++g_depth > 3 ? 0 : RandInRange(10);
+ size_t count = ++g_depth > 3 ? 0 : RandElementCount();
std::pair<A, B> place_holder;
for (size_t i = 0; i < count; ++i) {
if (!GenerateParam(&place_holder, generator)) {
@@ -709,16 +709,125 @@ struct GenerateTraits<blink::WebGamepadButton> {
template <>
struct GenerateTraits<cc::CompositorFrame> {
- // FIXME: this should actually generate something
static bool Generate(cc::CompositorFrame* p, Generator* generator) {
- return true;
+ if (!GenerateParam(&p->metadata, generator))
+ return false;
+ switch (RandInRange(4)) {
+ case 0: {
+ p->delegated_frame_data.reset(new cc::DelegatedFrameData());
+ if (!GenerateParam(p->delegated_frame_data.get(), generator))
+ return false;
+ return true;
+ }
+ case 1: {
+ p->gl_frame_data.reset(new cc::GLFrameData());
+ if (!GenerateParam(p->gl_frame_data.get(), generator))
+ return false;
+ return true;
+ }
+ case 2: {
+ p->software_frame_data.reset(new cc::SoftwareFrameData());
+ if (!GenerateParam(p->software_frame_data.get(), generator))
+ return false;
+ return true;
+ }
+ default:
+ // Generate nothing to handle the no frame case.
+ 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) {
+ // TODO(mbarbella): This should actually generate something.
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<cc::QuadList> {
+ static bool Generate(cc::QuadList* p, Generator* generator) {
+ // TODO(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))
+ return false;
+ if (!GenerateParam(&p->shared_quad_state_list, generator))
+ return false;
+ // Omitting |copy_requests| as it is not sent over IPC.
+ return true;
+ }
+};
+
+template <>
+struct GenerateTraits<cc::RenderPassList> {
+ static bool Generate(cc::RenderPassList* p, Generator* generator) {
+ size_t count = RandElementCount();
+ 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 +1172,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 +1216,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 | tools/ipc_fuzzer/mutate/rand_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698