| 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;
|
|
|