Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdlib.h> | 5 #include <stdlib.h> |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iostream> | 8 #include <iostream> |
| 9 #include <ostream> | 9 #include <ostream> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 443 --g_depth; | 443 --g_depth; |
| 444 return false; | 444 return false; |
| 445 } | 445 } |
| 446 p->insert(place_holder); | 446 p->insert(place_holder); |
| 447 } | 447 } |
| 448 --g_depth; | 448 --g_depth; |
| 449 return true; | 449 return true; |
| 450 } | 450 } |
| 451 }; | 451 }; |
| 452 | 452 |
| 453 template <class A, class B, class C, class D> | |
|
Tom Sepez
2015/02/02 23:58:53
This may be implementation-dependent, eg. the __1
Martin Barbella
2015/02/03 00:04:07
Done.
| |
| 454 struct GenerateTraits<std::__1::map<A, B, C, D>> { | |
| 455 static bool Generate(std::map<A, B, C, D>* p, Generator* generator) { | |
| 456 static int g_depth = 0; | |
| 457 size_t count = ++g_depth > 3 ? 0 : RandElementCount(); | |
| 458 std::pair<A, B> place_holder; | |
| 459 for (size_t i = 0; i < count; ++i) { | |
| 460 if (!GenerateParam(&place_holder, generator)) { | |
| 461 --g_depth; | |
| 462 return false; | |
| 463 } | |
| 464 p->insert(place_holder); | |
| 465 } | |
| 466 --g_depth; | |
| 467 return true; | |
| 468 } | |
| 469 }; | |
| 470 | |
| 453 template <class A, class B> | 471 template <class A, class B> |
| 454 struct GenerateTraits<std::pair<A, B> > { | 472 struct GenerateTraits<std::pair<A, B> > { |
| 455 static bool Generate(std::pair<A, B>* p, Generator* generator) { | 473 static bool Generate(std::pair<A, B>* p, Generator* generator) { |
| 456 return | 474 return |
| 457 GenerateParam(&p->first, generator) && | 475 GenerateParam(&p->first, generator) && |
| 458 GenerateParam(&p->second, generator); | 476 GenerateParam(&p->second, generator); |
| 459 } | 477 } |
| 460 }; | 478 }; |
| 461 | 479 |
| 462 // Specializations to generate hand-coded types. | 480 // Specializations to generate hand-coded types. |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 496 struct GenerateTraits<base::File::Info> { | 514 struct GenerateTraits<base::File::Info> { |
| 497 static bool Generate(base::File::Info* p, Generator* generator) { | 515 static bool Generate(base::File::Info* p, Generator* generator) { |
| 498 double last_modified; | 516 double last_modified; |
| 499 double last_accessed; | 517 double last_accessed; |
| 500 double creation_time; | 518 double creation_time; |
| 501 if (!GenerateParam(&p->size, generator)) | 519 if (!GenerateParam(&p->size, generator)) |
| 502 return false; | 520 return false; |
| 503 if (!GenerateParam(&p->is_directory, generator)) | 521 if (!GenerateParam(&p->is_directory, generator)) |
| 504 return false; | 522 return false; |
| 505 if (!GenerateParam(&last_modified, generator)) | 523 if (!GenerateParam(&last_modified, generator)) |
| 506 return false; | 524 return false; |
|
Tom Sepez
2015/02/02 23:58:53
nice catch.
| |
| 507 if (GenerateParam(&last_accessed, generator)) | 525 if (!GenerateParam(&last_accessed, generator)) |
| 508 return false; | 526 return false; |
| 509 if (GenerateParam(&creation_time, generator)) | 527 if (!GenerateParam(&creation_time, generator)) |
| 510 return false; | 528 return false; |
| 511 p->last_modified = base::Time::FromDoubleT(last_modified); | 529 p->last_modified = base::Time::FromDoubleT(last_modified); |
| 512 p->last_accessed = base::Time::FromDoubleT(last_accessed); | 530 p->last_accessed = base::Time::FromDoubleT(last_accessed); |
| 513 p->creation_time = base::Time::FromDoubleT(creation_time); | 531 p->creation_time = base::Time::FromDoubleT(creation_time); |
| 514 return true; | 532 return true; |
| 515 } | 533 } |
| 516 }; | 534 }; |
| 517 | 535 |
| 518 template <> | 536 template <> |
| 519 struct GenerateTraits<base::Time> { | 537 struct GenerateTraits<base::Time> { |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 934 case 2: { | 952 case 2: { |
| 935 *p = content::IndexedDBKeyPath(); | 953 *p = content::IndexedDBKeyPath(); |
| 936 break; | 954 break; |
| 937 } | 955 } |
| 938 } | 956 } |
| 939 return true; | 957 return true; |
| 940 } | 958 } |
| 941 }; | 959 }; |
| 942 | 960 |
| 943 template <> | 961 template <> |
| 962 struct GenerateTraits<content::NPIdentifier_Param> { | |
| 963 static bool Generate(content::NPIdentifier_Param* p, Generator* generator) { | |
| 964 // TODO(mbarbella): This should actually generate something. | |
| 965 *p = content::NPIdentifier_Param(); | |
| 966 return true; | |
| 967 } | |
| 968 }; | |
| 969 | |
| 970 template <> | |
| 971 struct GenerateTraits<content::NPVariant_Param> { | |
| 972 static bool Generate(content::NPVariant_Param* p, Generator* generator) { | |
| 973 // TODO(mbarbella): This should actually generate something. | |
| 974 *p = content::NPVariant_Param(); | |
| 975 return true; | |
| 976 } | |
| 977 }; | |
| 978 | |
| 979 template <> | |
| 944 struct GenerateTraits<content::PageState> { | 980 struct GenerateTraits<content::PageState> { |
| 945 static bool Generate(content::PageState *p, Generator* generator) { | 981 static bool Generate(content::PageState* p, Generator* generator) { |
| 946 std::string junk; | 982 std::string junk; |
| 947 if (!GenerateParam(&junk, generator)) | 983 if (!GenerateParam(&junk, generator)) |
| 948 return false; | 984 return false; |
| 949 *p = content::PageState::CreateFromEncodedData(junk); | 985 *p = content::PageState::CreateFromEncodedData(junk); |
| 950 return true; | 986 return true; |
| 951 } | 987 } |
| 952 }; | 988 }; |
| 953 | 989 |
| 954 template <> | 990 template <> |
| 991 struct GenerateTraits<content::SyntheticGesturePacket> { | |
| 992 static bool Generate(content::SyntheticGesturePacket* p, | |
| 993 Generator* generator) { | |
| 994 scoped_ptr<content::SyntheticGestureParams> gesture_params; | |
| 995 switch (RandInRange(3)) { | |
| 996 case 0: { | |
| 997 content::SyntheticSmoothScrollGestureParams* params = | |
| 998 new content::SyntheticSmoothScrollGestureParams(); | |
| 999 if (!GenerateParam(¶ms->anchor, generator)) | |
| 1000 return false; | |
| 1001 if (!GenerateParam(¶ms->distances, generator)) | |
| 1002 return false; | |
| 1003 if (!GenerateParam(¶ms->prevent_fling, generator)) | |
| 1004 return false; | |
| 1005 if (!GenerateParam(¶ms->speed_in_pixels_s, generator)) | |
| 1006 return false; | |
| 1007 gesture_params.reset(params); | |
| 1008 break; | |
| 1009 } | |
| 1010 case 1: { | |
| 1011 content::SyntheticPinchGestureParams* params = | |
| 1012 new content::SyntheticPinchGestureParams(); | |
| 1013 if (!GenerateParam(¶ms->anchor, generator)) | |
| 1014 return false; | |
| 1015 if (!GenerateParam(¶ms->relative_pointer_speed_in_pixels_s, | |
| 1016 generator)) | |
| 1017 return false; | |
| 1018 gesture_params.reset(params); | |
| 1019 break; | |
| 1020 } | |
| 1021 case 2: { | |
| 1022 content::SyntheticTapGestureParams* params = | |
| 1023 new content::SyntheticTapGestureParams(); | |
| 1024 if (!GenerateParam(¶ms->position, generator)) | |
| 1025 return false; | |
| 1026 if (!GenerateParam(¶ms->duration_ms, generator)) | |
| 1027 return false; | |
| 1028 gesture_params.reset(params); | |
| 1029 break; | |
| 1030 } | |
| 1031 } | |
| 1032 p->set_gesture_params(gesture_params.Pass()); | |
| 1033 return true; | |
| 1034 } | |
| 1035 }; | |
| 1036 | |
| 1037 template <> | |
| 1038 struct GenerateTraits<content::WebCursor> { | |
| 1039 static bool Generate(content::WebCursor* p, Generator* generator) { | |
| 1040 blink::WebCursorInfo::Type type; | |
| 1041 if (!GenerateParam(&type, generator)) | |
| 1042 return false; | |
| 1043 *p = content::WebCursor(content::WebCursor::CursorInfo(type)); | |
| 1044 return true; | |
| 1045 } | |
| 1046 }; | |
| 1047 | |
| 1048 template <> | |
| 1049 struct GenerateTraits<ContentSettingsPattern> { | |
| 1050 static bool Generate(ContentSettingsPattern* p, Generator* generator) { | |
| 1051 // This can crash if arbitrary strings are passed to it, so intentially | |
| 1052 // create an empty pattern to avoid problems during generation. | |
| 1053 *p = ContentSettingsPattern(); | |
| 1054 return true; | |
| 1055 } | |
| 1056 }; | |
| 1057 | |
| 1058 template <> | |
| 1059 struct GenerateTraits<ExtensionMsg_PermissionSetStruct> { | |
| 1060 static bool Generate(ExtensionMsg_PermissionSetStruct* p, | |
| 1061 Generator* generator) { | |
| 1062 // TODO(mbarbella): This should actually generate something. | |
| 1063 *p = ExtensionMsg_PermissionSetStruct(); | |
| 1064 return true; | |
| 1065 } | |
| 1066 }; | |
| 1067 | |
| 1068 template <> | |
| 955 struct GenerateTraits<extensions::URLPatternSet> { | 1069 struct GenerateTraits<extensions::URLPatternSet> { |
| 956 static bool Generate(extensions::URLPatternSet* p, Generator* generator) { | 1070 static bool Generate(extensions::URLPatternSet* p, Generator* generator) { |
| 957 std::set<URLPattern> patterns; | 1071 std::set<URLPattern> patterns; |
| 958 if (!GenerateParam(&patterns, generator)) | 1072 if (!GenerateParam(&patterns, generator)) |
| 959 return false; | 1073 return false; |
| 960 *p = extensions::URLPatternSet(patterns); | 1074 *p = extensions::URLPatternSet(patterns); |
| 961 return true; | 1075 return true; |
| 962 } | 1076 } |
| 963 }; | 1077 }; |
| 964 | |
| 965 template <> | |
| 966 struct GenerateTraits<gpu::Mailbox> { | |
| 967 static bool Generate(gpu::Mailbox *p, Generator* generator) { | |
| 968 generator->GenerateBytes(p->name, sizeof(p->name)); | |
| 969 return true; | |
| 970 } | |
| 971 }; | |
| 972 | |
| 973 template <> | |
| 974 struct GenerateTraits<gpu::MailboxHolder> { | |
| 975 static bool Generate(gpu::MailboxHolder *p, Generator* generator) { | |
| 976 gpu::Mailbox mailbox; | |
| 977 uint32_t texture_target; | |
| 978 uint32_t sync_point; | |
| 979 if (!GenerateParam(&mailbox, generator)) | |
| 980 return false; | |
| 981 if (!GenerateParam(&texture_target, generator)) | |
| 982 return false; | |
| 983 if (!GenerateParam(&sync_point, generator)) | |
| 984 return false; | |
| 985 *p = gpu::MailboxHolder(mailbox, texture_target, sync_point); | |
| 986 return true; | |
| 987 } | |
| 988 }; | |
| 989 | |
| 990 template <> | |
| 991 struct GenerateTraits<gpu::ValueState> { | |
| 992 static bool Generate(gpu::ValueState* p, Generator* generator) { | |
| 993 gpu::ValueState state; | |
| 994 if (!GenerateParamArray(&state.float_value[0], 4, generator)) | |
| 995 return false; | |
| 996 if (!GenerateParamArray(&state.int_value[0], 4, generator)) | |
| 997 return false; | |
| 998 *p = state; | |
| 999 return true; | |
| 1000 } | |
| 1001 }; | |
| 1002 | |
| 1003 template <> | |
| 1004 struct GenerateTraits<GURL> { | |
| 1005 static bool Generate(GURL *p, Generator* generator) { | |
| 1006 const char url_chars[] = "Ahtp0:/.?+\\%&#"; | |
| 1007 size_t count = RandInRange(100); | |
| 1008 std::string random_url; | |
| 1009 for (size_t i = 0; i < count; ++i) | |
| 1010 random_url += url_chars[RandInRange(sizeof(url_chars) - 1)]; | |
| 1011 int selector = RandInRange(10); | |
| 1012 if (selector == 0) | |
| 1013 random_url = std::string("http://") + random_url; | |
| 1014 else if (selector == 1) | |
| 1015 random_url = std::string("file://") + random_url; | |
| 1016 else if (selector == 2) | |
| 1017 random_url = std::string("javascript:") + random_url; | |
| 1018 else if (selector == 2) | |
| 1019 random_url = std::string("data:") + random_url; | |
| 1020 *p = GURL(random_url); | |
| 1021 return true; | |
| 1022 } | |
| 1023 }; | |
| 1024 | |
| 1025 template <> | |
| 1026 struct GenerateTraits<media::AudioParameters> { | |
| 1027 static bool Generate(media::AudioParameters *p, Generator* generator) { | |
| 1028 int format; | |
| 1029 int channel_layout; | |
| 1030 int sample_rate; | |
| 1031 int bits_per_sample; | |
| 1032 int frames_per_buffer; | |
| 1033 int channels; | |
| 1034 int effects; | |
| 1035 if (!GenerateParam(&format, generator)) | |
| 1036 return false; | |
| 1037 if (!GenerateParam(&channel_layout, generator)) | |
| 1038 return false; | |
| 1039 if (!GenerateParam(&sample_rate, generator)) | |
| 1040 return false; | |
| 1041 if (!GenerateParam(&bits_per_sample, generator)) | |
| 1042 return false; | |
| 1043 if (!GenerateParam(&frames_per_buffer, generator)) | |
| 1044 return false; | |
| 1045 if (!GenerateParam(&channels, generator)) | |
| 1046 return false; | |
| 1047 if (!GenerateParam(&effects, generator)) | |
| 1048 return false; | |
| 1049 media::AudioParameters params( | |
| 1050 static_cast<media::AudioParameters::Format>(format), | |
| 1051 static_cast<media::ChannelLayout>(channel_layout), | |
| 1052 channels, | |
| 1053 sample_rate, | |
| 1054 bits_per_sample, | |
| 1055 frames_per_buffer, | |
| 1056 effects); | |
| 1057 *p = params; | |
| 1058 return true; | |
| 1059 } | |
| 1060 }; | |
| 1061 | |
| 1062 template <> | |
| 1063 struct GenerateTraits<media::VideoCaptureFormat> { | |
| 1064 static bool Generate(media::VideoCaptureFormat *p, Generator* generator) { | |
| 1065 int frame_size_width; | |
| 1066 int frame_size_height; | |
| 1067 int pixel_format; | |
| 1068 if (!GenerateParam(&frame_size_height, generator)) | |
| 1069 return false; | |
| 1070 if (!GenerateParam(&frame_size_width, generator)) | |
| 1071 return false; | |
| 1072 if (!GenerateParam(&pixel_format, generator)) | |
| 1073 return false; | |
| 1074 if (!GenerateParam(&p->frame_rate, generator)) | |
| 1075 return false; | |
| 1076 p->frame_size.SetSize(frame_size_width, frame_size_height); | |
| 1077 p->pixel_format = static_cast<media::VideoPixelFormat>(pixel_format); | |
| 1078 return true; | |
| 1079 } | |
| 1080 }; | |
| 1081 | |
| 1082 | |
| 1083 template <> | |
| 1084 struct GenerateTraits<net::LoadTimingInfo> { | |
| 1085 static bool Generate(net::LoadTimingInfo *p, Generator* generator) { | |
| 1086 return | |
| 1087 GenerateParam(&p->socket_log_id, generator) && | |
| 1088 GenerateParam(&p->socket_reused, generator) && | |
| 1089 GenerateParam(&p->request_start_time, generator) && | |
| 1090 GenerateParam(&p->request_start, generator) && | |
| 1091 GenerateParam(&p->proxy_resolve_start, generator) && | |
| 1092 GenerateParam(&p->proxy_resolve_end, generator) && | |
| 1093 GenerateParam(&p->connect_timing.dns_start, generator) && | |
| 1094 GenerateParam(&p->connect_timing.dns_end, generator) && | |
| 1095 GenerateParam(&p->connect_timing.connect_start, generator) && | |
| 1096 GenerateParam(&p->connect_timing.connect_end, generator) && | |
| 1097 GenerateParam(&p->connect_timing.ssl_start, generator) && | |
| 1098 GenerateParam(&p->connect_timing.ssl_end, generator) && | |
| 1099 GenerateParam(&p->send_start, generator) && | |
| 1100 GenerateParam(&p->send_end, generator) && | |
| 1101 GenerateParam(&p->receive_headers_end, generator); | |
| 1102 } | |
| 1103 }; | |
| 1104 | |
| 1105 template <> | |
| 1106 struct GenerateTraits<net::HostPortPair> { | |
| 1107 static bool Generate(net::HostPortPair *p, Generator* generator) { | |
| 1108 std::string host; | |
| 1109 uint16 port; | |
| 1110 if (!GenerateParam(&host, generator)) | |
| 1111 return false; | |
| 1112 if (!GenerateParam(&port, generator)) | |
| 1113 return false; | |
| 1114 p->set_host(host); | |
| 1115 p->set_port(port); | |
| 1116 return true; | |
| 1117 } | |
| 1118 }; | |
| 1119 | |
| 1120 template <> | |
| 1121 struct GenerateTraits<net::IPEndPoint> { | |
| 1122 static bool Generate(net::IPEndPoint *p, Generator* generator) { | |
| 1123 net::IPAddressNumber address; | |
| 1124 int port; | |
| 1125 if (!GenerateParam(&address, generator)) | |
| 1126 return false; | |
| 1127 if (!GenerateParam(&port, generator)) | |
| 1128 return false; | |
| 1129 net::IPEndPoint ip_endpoint(address, port); | |
| 1130 *p = ip_endpoint; | |
| 1131 return true; | |
| 1132 } | |
| 1133 }; | |
| 1134 | |
| 1135 template <> | |
| 1136 struct GenerateTraits<network_hints::LookupRequest> { | |
| 1137 static bool Generate(network_hints::LookupRequest* p, Generator* generator) { | |
| 1138 network_hints::LookupRequest request; | |
| 1139 if (!GenerateParam(&request.hostname_list, generator)) | |
| 1140 return false; | |
| 1141 *p = request; | |
| 1142 return true; | |
| 1143 } | |
| 1144 }; | |
| 1145 | 1078 |
| 1146 template <> | 1079 template <> |
| 1147 struct GenerateTraits<gfx::Point> { | 1080 struct GenerateTraits<gfx::Point> { |
| 1148 static bool Generate(gfx::Point *p, Generator* generator) { | 1081 static bool Generate(gfx::Point *p, Generator* generator) { |
| 1149 int x; | 1082 int x; |
| 1150 int y; | 1083 int y; |
| 1151 if (!GenerateParam(&x, generator)) | 1084 if (!GenerateParam(&x, generator)) |
| 1152 return false; | 1085 return false; |
| 1153 if (!GenerateParam(&y, generator)) | 1086 if (!GenerateParam(&y, generator)) |
| 1154 return false; | 1087 return false; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1279 if (!GenerateParam(&x, generator)) | 1212 if (!GenerateParam(&x, generator)) |
| 1280 return false; | 1213 return false; |
| 1281 if (!GenerateParam(&y, generator)) | 1214 if (!GenerateParam(&y, generator)) |
| 1282 return false; | 1215 return false; |
| 1283 *p = gfx::Vector2dF(x, y); | 1216 *p = gfx::Vector2dF(x, y); |
| 1284 return true; | 1217 return true; |
| 1285 } | 1218 } |
| 1286 }; | 1219 }; |
| 1287 | 1220 |
| 1288 template <> | 1221 template <> |
| 1222 struct GenerateTraits<gpu::Mailbox> { | |
| 1223 static bool Generate(gpu::Mailbox* p, Generator* generator) { | |
| 1224 generator->GenerateBytes(p->name, sizeof(p->name)); | |
| 1225 return true; | |
| 1226 } | |
| 1227 }; | |
| 1228 | |
| 1229 template <> | |
| 1230 struct GenerateTraits<gpu::MailboxHolder> { | |
| 1231 static bool Generate(gpu::MailboxHolder* p, Generator* generator) { | |
| 1232 gpu::Mailbox mailbox; | |
| 1233 uint32_t texture_target; | |
| 1234 uint32_t sync_point; | |
| 1235 if (!GenerateParam(&mailbox, generator)) | |
| 1236 return false; | |
| 1237 if (!GenerateParam(&texture_target, generator)) | |
| 1238 return false; | |
| 1239 if (!GenerateParam(&sync_point, generator)) | |
| 1240 return false; | |
| 1241 *p = gpu::MailboxHolder(mailbox, texture_target, sync_point); | |
| 1242 return true; | |
| 1243 } | |
| 1244 }; | |
| 1245 | |
| 1246 template <> | |
| 1247 struct GenerateTraits<gpu::ValueState> { | |
| 1248 static bool Generate(gpu::ValueState* p, Generator* generator) { | |
| 1249 gpu::ValueState state; | |
| 1250 if (!GenerateParamArray(&state.float_value[0], 4, generator)) | |
| 1251 return false; | |
| 1252 if (!GenerateParamArray(&state.int_value[0], 4, generator)) | |
| 1253 return false; | |
| 1254 *p = state; | |
| 1255 return true; | |
| 1256 } | |
| 1257 }; | |
| 1258 | |
| 1259 template <> | |
| 1260 struct GenerateTraits<GURL> { | |
| 1261 static bool Generate(GURL* p, Generator* generator) { | |
| 1262 const char url_chars[] = "Ahtp0:/.?+\\%&#"; | |
| 1263 size_t count = RandInRange(100); | |
| 1264 std::string random_url; | |
| 1265 for (size_t i = 0; i < count; ++i) | |
| 1266 random_url += url_chars[RandInRange(sizeof(url_chars) - 1)]; | |
| 1267 int selector = RandInRange(10); | |
| 1268 if (selector == 0) | |
| 1269 random_url = std::string("http://") + random_url; | |
| 1270 else if (selector == 1) | |
| 1271 random_url = std::string("file://") + random_url; | |
| 1272 else if (selector == 2) | |
| 1273 random_url = std::string("javascript:") + random_url; | |
| 1274 else if (selector == 2) | |
| 1275 random_url = std::string("data:") + random_url; | |
| 1276 *p = GURL(random_url); | |
| 1277 return true; | |
| 1278 } | |
| 1279 }; | |
| 1280 | |
| 1281 template <> | |
| 1289 struct GenerateTraits<IPC::Message> { | 1282 struct GenerateTraits<IPC::Message> { |
| 1290 static bool Generate(IPC::Message *p, Generator* generator) { | 1283 static bool Generate(IPC::Message *p, Generator* generator) { |
| 1291 if (g_function_vector.empty()) | 1284 if (g_function_vector.empty()) |
| 1292 return false; | 1285 return false; |
| 1293 size_t index = RandInRange(g_function_vector.size()); | 1286 size_t index = RandInRange(g_function_vector.size()); |
| 1294 IPC::Message* ipc_message = (*g_function_vector[index])(generator); | 1287 IPC::Message* ipc_message = (*g_function_vector[index])(generator); |
| 1295 if (!ipc_message) | 1288 if (!ipc_message) |
| 1296 return false; | 1289 return false; |
| 1297 p = ipc_message; | 1290 p = ipc_message; |
| 1298 return true; | 1291 return true; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1318 p->pipe = IPC::ChannelHandle::PipeHandle(fake_handle); | 1311 p->pipe = IPC::ChannelHandle::PipeHandle(fake_handle); |
| 1319 return true; | 1312 return true; |
| 1320 #elif defined(OS_POSIX) | 1313 #elif defined(OS_POSIX) |
| 1321 return | 1314 return |
| 1322 GenerateParam(&p->name, generator) && | 1315 GenerateParam(&p->name, generator) && |
| 1323 GenerateParam(&p->socket, generator); | 1316 GenerateParam(&p->socket, generator); |
| 1324 #endif | 1317 #endif |
| 1325 } | 1318 } |
| 1326 }; | 1319 }; |
| 1327 | 1320 |
| 1321 template <> | |
| 1322 struct GenerateTraits<media::AudioParameters> { | |
| 1323 static bool Generate(media::AudioParameters* p, Generator* generator) { | |
| 1324 int format; | |
| 1325 int channel_layout; | |
| 1326 int sample_rate; | |
| 1327 int bits_per_sample; | |
| 1328 int frames_per_buffer; | |
| 1329 int channels; | |
| 1330 int effects; | |
| 1331 if (!GenerateParam(&format, generator)) | |
| 1332 return false; | |
| 1333 if (!GenerateParam(&channel_layout, generator)) | |
| 1334 return false; | |
| 1335 if (!GenerateParam(&sample_rate, generator)) | |
| 1336 return false; | |
| 1337 if (!GenerateParam(&bits_per_sample, generator)) | |
| 1338 return false; | |
| 1339 if (!GenerateParam(&frames_per_buffer, generator)) | |
| 1340 return false; | |
| 1341 if (!GenerateParam(&channels, generator)) | |
| 1342 return false; | |
| 1343 if (!GenerateParam(&effects, generator)) | |
| 1344 return false; | |
| 1345 media::AudioParameters params( | |
| 1346 static_cast<media::AudioParameters::Format>(format), | |
| 1347 static_cast<media::ChannelLayout>(channel_layout), channels, | |
| 1348 sample_rate, bits_per_sample, frames_per_buffer, effects); | |
| 1349 *p = params; | |
| 1350 return true; | |
| 1351 } | |
| 1352 }; | |
| 1353 | |
| 1354 template <> | |
| 1355 struct GenerateTraits<media::VideoCaptureFormat> { | |
| 1356 static bool Generate(media::VideoCaptureFormat* p, Generator* generator) { | |
| 1357 int frame_size_width; | |
| 1358 int frame_size_height; | |
| 1359 int pixel_format; | |
| 1360 if (!GenerateParam(&frame_size_height, generator)) | |
| 1361 return false; | |
| 1362 if (!GenerateParam(&frame_size_width, generator)) | |
| 1363 return false; | |
| 1364 if (!GenerateParam(&pixel_format, generator)) | |
| 1365 return false; | |
| 1366 if (!GenerateParam(&p->frame_rate, generator)) | |
| 1367 return false; | |
| 1368 p->frame_size.SetSize(frame_size_width, frame_size_height); | |
| 1369 p->pixel_format = static_cast<media::VideoPixelFormat>(pixel_format); | |
| 1370 return true; | |
| 1371 } | |
| 1372 }; | |
| 1373 | |
| 1374 template <> | |
| 1375 struct GenerateTraits<net::LoadTimingInfo> { | |
| 1376 static bool Generate(net::LoadTimingInfo* p, Generator* generator) { | |
| 1377 return GenerateParam(&p->socket_log_id, generator) && | |
| 1378 GenerateParam(&p->socket_reused, generator) && | |
| 1379 GenerateParam(&p->request_start_time, generator) && | |
| 1380 GenerateParam(&p->request_start, generator) && | |
| 1381 GenerateParam(&p->proxy_resolve_start, generator) && | |
| 1382 GenerateParam(&p->proxy_resolve_end, generator) && | |
| 1383 GenerateParam(&p->connect_timing.dns_start, generator) && | |
| 1384 GenerateParam(&p->connect_timing.dns_end, generator) && | |
| 1385 GenerateParam(&p->connect_timing.connect_start, generator) && | |
| 1386 GenerateParam(&p->connect_timing.connect_end, generator) && | |
| 1387 GenerateParam(&p->connect_timing.ssl_start, generator) && | |
| 1388 GenerateParam(&p->connect_timing.ssl_end, generator) && | |
| 1389 GenerateParam(&p->send_start, generator) && | |
| 1390 GenerateParam(&p->send_end, generator) && | |
| 1391 GenerateParam(&p->receive_headers_end, generator); | |
| 1392 } | |
| 1393 }; | |
| 1394 | |
| 1395 template <> | |
| 1396 struct GenerateTraits<net::HostPortPair> { | |
| 1397 static bool Generate(net::HostPortPair* p, Generator* generator) { | |
| 1398 std::string host; | |
| 1399 uint16 port; | |
| 1400 if (!GenerateParam(&host, generator)) | |
| 1401 return false; | |
| 1402 if (!GenerateParam(&port, generator)) | |
| 1403 return false; | |
| 1404 p->set_host(host); | |
| 1405 p->set_port(port); | |
| 1406 return true; | |
| 1407 } | |
| 1408 }; | |
| 1409 | |
| 1410 template <> | |
| 1411 struct GenerateTraits<net::IPEndPoint> { | |
| 1412 static bool Generate(net::IPEndPoint* p, Generator* generator) { | |
| 1413 net::IPAddressNumber address; | |
| 1414 int port; | |
| 1415 if (!GenerateParam(&address, generator)) | |
| 1416 return false; | |
| 1417 if (!GenerateParam(&port, generator)) | |
| 1418 return false; | |
| 1419 net::IPEndPoint ip_endpoint(address, port); | |
| 1420 *p = ip_endpoint; | |
| 1421 return true; | |
| 1422 } | |
| 1423 }; | |
| 1424 | |
| 1425 template <> | |
| 1426 struct GenerateTraits<network_hints::LookupRequest> { | |
| 1427 static bool Generate(network_hints::LookupRequest* p, Generator* generator) { | |
| 1428 network_hints::LookupRequest request; | |
| 1429 if (!GenerateParam(&request.hostname_list, generator)) | |
| 1430 return false; | |
| 1431 *p = request; | |
| 1432 return true; | |
| 1433 } | |
| 1434 }; | |
| 1435 | |
| 1328 // PP_ traits. | 1436 // PP_ traits. |
| 1329 template <> | 1437 template <> |
| 1330 struct GenerateTraits<PP_Bool> { | 1438 struct GenerateTraits<PP_Bool> { |
| 1331 static bool Generate(PP_Bool *p, Generator* generator) { | 1439 static bool Generate(PP_Bool *p, Generator* generator) { |
| 1332 bool tmp; | 1440 bool tmp; |
| 1333 if (!GenerateParam(&tmp, generator)) | 1441 if (!GenerateParam(&tmp, generator)) |
| 1334 return false; | 1442 return false; |
| 1335 *p = PP_FromBool(tmp); | 1443 *p = PP_FromBool(tmp); |
| 1336 return true; | 1444 return true; |
| 1337 } | 1445 } |
| 1338 }; | 1446 }; |
| 1339 | 1447 |
| 1340 template <> | 1448 template <> |
| 1449 struct GenerateTraits<PP_KeyInformation> { | |
| 1450 static bool Generate(PP_KeyInformation* p, Generator* generator) { | |
| 1451 // TODO(mbarbella): This should actually generate something. | |
| 1452 *p = PP_KeyInformation(); | |
| 1453 return true; | |
| 1454 } | |
| 1455 }; | |
| 1456 | |
| 1457 template <> | |
| 1341 struct GenerateTraits<PP_NetAddress_Private> { | 1458 struct GenerateTraits<PP_NetAddress_Private> { |
| 1342 static bool Generate(PP_NetAddress_Private *p, Generator* generator) { | 1459 static bool Generate(PP_NetAddress_Private *p, Generator* generator) { |
| 1343 p->size = RandInRange(sizeof(p->data) + 1); | 1460 p->size = RandInRange(sizeof(p->data) + 1); |
| 1344 generator->GenerateBytes(&p->data, p->size); | 1461 generator->GenerateBytes(&p->data, p->size); |
| 1345 return true; | 1462 return true; |
| 1346 } | 1463 } |
| 1347 }; | 1464 }; |
| 1348 | 1465 |
| 1349 template <> | 1466 template <> |
| 1467 struct GenerateTraits<ppapi::PPB_X509Certificate_Fields> { | |
| 1468 static bool Generate(ppapi::PPB_X509Certificate_Fields* p, | |
| 1469 Generator* generator) { | |
| 1470 // TODO(mbarbella): This should actually generate something. | |
| 1471 return true; | |
| 1472 } | |
| 1473 }; | |
| 1474 | |
| 1475 template <> | |
| 1476 struct GenerateTraits<ppapi::proxy::PPBFlash_DrawGlyphs_Params> { | |
| 1477 static bool Generate(ppapi::proxy::PPBFlash_DrawGlyphs_Params* p, | |
| 1478 Generator* generator) { | |
| 1479 // TODO(mbarbella): This should actually generate something. | |
| 1480 *p = ppapi::proxy::PPBFlash_DrawGlyphs_Params(); | |
| 1481 return true; | |
| 1482 } | |
| 1483 }; | |
| 1484 | |
| 1485 template <> | |
| 1350 struct GenerateTraits<ppapi::proxy::ResourceMessageCallParams> { | 1486 struct GenerateTraits<ppapi::proxy::ResourceMessageCallParams> { |
| 1351 static bool Generate( | 1487 static bool Generate( |
| 1352 ppapi::proxy::ResourceMessageCallParams *p, Generator* generator) { | 1488 ppapi::proxy::ResourceMessageCallParams *p, Generator* generator) { |
| 1353 PP_Resource resource; | 1489 PP_Resource resource; |
| 1354 int32_t sequence; | 1490 int32_t sequence; |
| 1355 bool has_callback; | 1491 bool has_callback; |
| 1356 if (!GenerateParam(&resource, generator)) | 1492 if (!GenerateParam(&resource, generator)) |
| 1357 return false; | 1493 return false; |
| 1358 if (!GenerateParam(&sequence, generator)) | 1494 if (!GenerateParam(&sequence, generator)) |
| 1359 return false; | 1495 return false; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1379 return false; | 1515 return false; |
| 1380 if (!GenerateParam(&result, generator)) | 1516 if (!GenerateParam(&result, generator)) |
| 1381 return false; | 1517 return false; |
| 1382 *p = ppapi::proxy::ResourceMessageReplyParams(resource, sequence); | 1518 *p = ppapi::proxy::ResourceMessageReplyParams(resource, sequence); |
| 1383 p->set_result(result); | 1519 p->set_result(result); |
| 1384 return true; | 1520 return true; |
| 1385 } | 1521 } |
| 1386 }; | 1522 }; |
| 1387 | 1523 |
| 1388 template <> | 1524 template <> |
| 1525 struct GenerateTraits<ppapi::proxy::SerializedHandle> { | |
| 1526 static bool Generate(ppapi::proxy::SerializedHandle* p, | |
| 1527 Generator* generator) { | |
| 1528 // TODO(mbarbella): This should actually generate something. | |
| 1529 *p = ppapi::proxy::SerializedHandle(); | |
| 1530 return true; | |
| 1531 } | |
| 1532 }; | |
| 1533 | |
| 1534 template <> | |
| 1535 struct GenerateTraits<ppapi::proxy::SerializedFontDescription> { | |
| 1536 static bool Generate(ppapi::proxy::SerializedFontDescription* p, | |
| 1537 Generator* generator) { | |
| 1538 // TODO(mbarbella): This should actually generate something. | |
| 1539 *p = ppapi::proxy::SerializedFontDescription(); | |
| 1540 return true; | |
| 1541 } | |
| 1542 }; | |
| 1543 | |
| 1544 template <> | |
| 1545 struct GenerateTraits<ppapi::proxy::SerializedTrueTypeFontDesc> { | |
| 1546 static bool Generate(ppapi::proxy::SerializedTrueTypeFontDesc* p, | |
| 1547 Generator* generator) { | |
| 1548 // TODO(mbarbella): This should actually generate something. | |
| 1549 *p = ppapi::proxy::SerializedTrueTypeFontDesc(); | |
| 1550 return true; | |
| 1551 } | |
| 1552 }; | |
| 1553 | |
| 1554 template <> | |
| 1555 struct GenerateTraits<ppapi::proxy::SerializedVar> { | |
| 1556 static bool Generate(ppapi::proxy::SerializedVar* p, Generator* generator) { | |
| 1557 // TODO(mbarbella): This should actually generate something. | |
| 1558 *p = ppapi::proxy::SerializedVar(); | |
| 1559 return true; | |
| 1560 } | |
| 1561 }; | |
| 1562 | |
| 1563 template <> | |
| 1389 struct GenerateTraits<ppapi::HostResource> { | 1564 struct GenerateTraits<ppapi::HostResource> { |
| 1390 static bool Generate(ppapi::HostResource *p, Generator* generator) { | 1565 static bool Generate(ppapi::HostResource *p, Generator* generator) { |
| 1391 PP_Instance instance; | 1566 PP_Instance instance; |
| 1392 PP_Resource resource; | 1567 PP_Resource resource; |
| 1393 if (!GenerateParam(&instance, generator)) | 1568 if (!GenerateParam(&instance, generator)) |
| 1394 return false; | 1569 return false; |
| 1395 if (!GenerateParam(&resource, generator)) | 1570 if (!GenerateParam(&resource, generator)) |
| 1396 return false; | 1571 return false; |
| 1397 p->SetHostResource(instance, resource); | 1572 p->SetHostResource(instance, resource); |
| 1398 return true; | 1573 return true; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1459 webrtc::DesktopVector vector; | 1634 webrtc::DesktopVector vector; |
| 1460 if (!GenerateParam(&size, generator)) | 1635 if (!GenerateParam(&size, generator)) |
| 1461 return false; | 1636 return false; |
| 1462 if (!GenerateParam(&vector, generator)) | 1637 if (!GenerateParam(&vector, generator)) |
| 1463 return false; | 1638 return false; |
| 1464 *p = remoting::ScreenResolution(size, vector); | 1639 *p = remoting::ScreenResolution(size, vector); |
| 1465 return true; | 1640 return true; |
| 1466 } | 1641 } |
| 1467 }; | 1642 }; |
| 1468 | 1643 |
| 1469 // FIXME: Actually generate something. | |
| 1470 template <> | 1644 template <> |
| 1471 struct GenerateTraits<SkBitmap> { | 1645 struct GenerateTraits<SkBitmap> { |
| 1472 static bool Generate(SkBitmap* p, Generator* generator) { | 1646 static bool Generate(SkBitmap* p, Generator* generator) { |
| 1647 // TODO(mbarbella): This should actually generate something. | |
| 1473 *p = SkBitmap(); | 1648 *p = SkBitmap(); |
| 1474 return true; | 1649 return true; |
| 1475 } | 1650 } |
| 1476 }; | 1651 }; |
| 1477 | 1652 |
| 1478 template <> | 1653 template <> |
| 1654 struct GenerateTraits<storage::DataElement> { | |
| 1655 static bool Generate(storage::DataElement* p, Generator* generator) { | |
| 1656 switch (RandInRange(5)) { | |
| 1657 case 0: { | |
| 1658 p->SetToEmptyBytes(); | |
| 1659 return true; | |
| 1660 } | |
| 1661 case 1: { | |
| 1662 char bytes[256]; | |
| 1663 int bytes_len = RandInRange(sizeof(bytes)); | |
| 1664 generator->GenerateBytes(&bytes[0], bytes_len); | |
| 1665 p->SetToBytes(&bytes[0], bytes_len); | |
| 1666 return true; | |
| 1667 } | |
| 1668 case 2: { | |
| 1669 base::FilePath path; | |
| 1670 uint64 offset; | |
| 1671 uint64 length; | |
| 1672 base::Time modification_time; | |
| 1673 if (!GenerateParam(&path, generator)) | |
| 1674 return false; | |
| 1675 if (!GenerateParam(&offset, generator)) | |
| 1676 return false; | |
| 1677 if (!GenerateParam(&length, generator)) | |
| 1678 return false; | |
| 1679 if (!GenerateParam(&modification_time, generator)) | |
| 1680 return false; | |
| 1681 p->SetToFilePathRange(path, offset, length, modification_time); | |
| 1682 return true; | |
| 1683 } | |
| 1684 case 3: { | |
| 1685 std::string uuid; | |
| 1686 uint64 offset; | |
| 1687 uint64 length; | |
| 1688 if (!GenerateParam(&uuid, generator)) | |
| 1689 return false; | |
| 1690 if (!GenerateParam(&offset, generator)) | |
| 1691 return false; | |
| 1692 if (!GenerateParam(&length, generator)) | |
| 1693 return false; | |
| 1694 p->SetToBlobRange(uuid, offset, length); | |
| 1695 return true; | |
| 1696 } | |
| 1697 case 4: { | |
| 1698 GURL url; | |
| 1699 uint64 offset; | |
| 1700 uint64 length; | |
| 1701 base::Time modification_time; | |
| 1702 if (!GenerateParam(&url, generator)) | |
| 1703 return false; | |
| 1704 if (!GenerateParam(&offset, generator)) | |
| 1705 return false; | |
| 1706 if (!GenerateParam(&length, generator)) | |
| 1707 return false; | |
| 1708 if (!GenerateParam(&modification_time, generator)) | |
| 1709 return false; | |
| 1710 p->SetToFileSystemUrlRange(url, offset, length, modification_time); | |
| 1711 return true; | |
| 1712 } | |
| 1713 default: { | |
| 1714 NOTREACHED(); | |
| 1715 return false; | |
| 1716 } | |
| 1717 } | |
| 1718 } | |
| 1719 }; | |
| 1720 | |
| 1721 template <> | |
| 1479 struct GenerateTraits<ui::LatencyInfo> { | 1722 struct GenerateTraits<ui::LatencyInfo> { |
| 1480 static bool Generate(ui::LatencyInfo* p, Generator* generator) { | 1723 static bool Generate(ui::LatencyInfo* p, Generator* generator) { |
| 1481 // TODO(inferno): Add param traits for |latency_components|. | 1724 // TODO(inferno): Add param traits for |latency_components|. |
| 1482 p->input_coordinates_size = static_cast<uint32>( | 1725 p->input_coordinates_size = static_cast<uint32>( |
| 1483 RandInRange(ui::LatencyInfo::kMaxInputCoordinates + 1)); | 1726 RandInRange(ui::LatencyInfo::kMaxInputCoordinates + 1)); |
| 1484 if (!GenerateParamArray( | 1727 if (!GenerateParamArray( |
| 1485 &p->input_coordinates[0], p->input_coordinates_size, generator)) | 1728 &p->input_coordinates[0], p->input_coordinates_size, generator)) |
| 1486 return false; | 1729 return false; |
| 1487 if (!GenerateParam(&p->trace_id, generator)) | 1730 if (!GenerateParam(&p->trace_id, generator)) |
| 1488 return false; | 1731 return false; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 1512 static bool Generate(url::Origin* p, Generator* generator) { | 1755 static bool Generate(url::Origin* p, Generator* generator) { |
| 1513 std::string origin; | 1756 std::string origin; |
| 1514 if (!GenerateParam(&origin, generator)) | 1757 if (!GenerateParam(&origin, generator)) |
| 1515 return false; | 1758 return false; |
| 1516 *p = url::Origin(origin); | 1759 *p = url::Origin(origin); |
| 1517 return true; | 1760 return true; |
| 1518 } | 1761 } |
| 1519 }; | 1762 }; |
| 1520 | 1763 |
| 1521 template <> | 1764 template <> |
| 1765 struct GenerateTraits<URLPattern> { | |
| 1766 static bool Generate(URLPattern* p, Generator* generator) { | |
| 1767 int valid_schemes; | |
| 1768 if (!GenerateParam(&valid_schemes, generator)) | |
| 1769 return false; | |
| 1770 *p = URLPattern(valid_schemes); | |
| 1771 return true; | |
| 1772 } | |
| 1773 }; | |
| 1774 | |
| 1775 template <> | |
| 1522 struct GenerateTraits<webrtc::DesktopSize> { | 1776 struct GenerateTraits<webrtc::DesktopSize> { |
| 1523 static bool Generate(webrtc::DesktopSize* p, Generator* generator) { | 1777 static bool Generate(webrtc::DesktopSize* p, Generator* generator) { |
| 1524 int32_t width; | 1778 int32_t width; |
| 1525 int32_t height; | 1779 int32_t height; |
| 1526 if (!GenerateParam(&width, generator)) | 1780 if (!GenerateParam(&width, generator)) |
| 1527 return false; | 1781 return false; |
| 1528 if (!GenerateParam(&height, generator)) | 1782 if (!GenerateParam(&height, generator)) |
| 1529 return false; | 1783 return false; |
| 1530 *p = webrtc::DesktopSize(width, height); | 1784 *p = webrtc::DesktopSize(width, height); |
| 1531 return true; | 1785 return true; |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1559 return false; | 1813 return false; |
| 1560 if (!GenerateParam(&right, generator)) | 1814 if (!GenerateParam(&right, generator)) |
| 1561 return false; | 1815 return false; |
| 1562 if (!GenerateParam(&bottom, generator)) | 1816 if (!GenerateParam(&bottom, generator)) |
| 1563 return false; | 1817 return false; |
| 1564 *p = webrtc::DesktopRect::MakeLTRB(left, top, right, bottom); | 1818 *p = webrtc::DesktopRect::MakeLTRB(left, top, right, bottom); |
| 1565 return true; | 1819 return true; |
| 1566 } | 1820 } |
| 1567 }; | 1821 }; |
| 1568 | 1822 |
| 1823 template <> | |
| 1824 struct GenerateTraits<webrtc::MouseCursor> { | |
| 1825 static bool Generate(webrtc::MouseCursor* p, Generator* generator) { | |
| 1826 webrtc::DesktopVector hotspot; | |
| 1827 if (!GenerateParam(&hotspot, generator)) | |
| 1828 return false; | |
| 1829 // Using a small size here to avoid OOM or overflow on image allocation. | |
| 1830 webrtc::DesktopSize size(RandInRange(100), RandInRange(100)); | |
| 1831 p->set_image(new webrtc::BasicDesktopFrame(size)); | |
| 1832 p->set_hotspot(hotspot); | |
| 1833 return true; | |
| 1834 } | |
| 1835 }; | |
| 1836 | |
| 1569 // Redefine macros to generate generating from traits declarations. | 1837 // Redefine macros to generate generating from traits declarations. |
| 1570 // STRUCT declarations cause corresponding STRUCT_TRAITS declarations to occur. | 1838 // STRUCT declarations cause corresponding STRUCT_TRAITS declarations to occur. |
| 1571 #undef IPC_STRUCT_BEGIN | 1839 #undef IPC_STRUCT_BEGIN |
| 1572 #undef IPC_STRUCT_BEGIN_WITH_PARENT | 1840 #undef IPC_STRUCT_BEGIN_WITH_PARENT |
| 1573 #undef IPC_STRUCT_MEMBER | 1841 #undef IPC_STRUCT_MEMBER |
| 1574 #undef IPC_STRUCT_END | 1842 #undef IPC_STRUCT_END |
| 1575 #define IPC_STRUCT_BEGIN_WITH_PARENT(struct_name, parent) \ | 1843 #define IPC_STRUCT_BEGIN_WITH_PARENT(struct_name, parent) \ |
| 1576 IPC_STRUCT_BEGIN(struct_name) | 1844 IPC_STRUCT_BEGIN(struct_name) |
| 1577 #define IPC_STRUCT_BEGIN(struct_name) IPC_STRUCT_TRAITS_BEGIN(struct_name) | 1845 #define IPC_STRUCT_BEGIN(struct_name) IPC_STRUCT_TRAITS_BEGIN(struct_name) |
| 1578 #define IPC_STRUCT_MEMBER(type, name, ...) IPC_STRUCT_TRAITS_MEMBER(name) | 1846 #define IPC_STRUCT_MEMBER(type, name, ...) IPC_STRUCT_TRAITS_MEMBER(name) |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1771 return EXIT_FAILURE; | 2039 return EXIT_FAILURE; |
| 1772 | 2040 |
| 1773 return EXIT_SUCCESS; | 2041 return EXIT_SUCCESS; |
| 1774 } | 2042 } |
| 1775 | 2043 |
| 1776 } // namespace ipc_fuzzer | 2044 } // namespace ipc_fuzzer |
| 1777 | 2045 |
| 1778 int main(int argc, char** argv) { | 2046 int main(int argc, char** argv) { |
| 1779 return ipc_fuzzer::GenerateMain(argc, argv); | 2047 return ipc_fuzzer::GenerateMain(argc, argv); |
| 1780 } | 2048 } |
| OLD | NEW |