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 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
654 default: | 654 default: |
655 break; | 655 break; |
656 } | 656 } |
657 } | 657 } |
658 --g_depth; | 658 --g_depth; |
659 return true; | 659 return true; |
660 } | 660 } |
661 }; | 661 }; |
662 | 662 |
663 template <> | 663 template <> |
664 struct GenerateTraits<GURL> { | |
665 static bool Generate(GURL *p, Generator* generator) { | |
666 const char url_chars[] = "Ahtp0:/.?+\\%&#"; | |
667 size_t count = RandInRange(100); | |
668 std::string random_url; | |
669 for (size_t i = 0; i < count; ++i) | |
670 random_url += url_chars[RandInRange(sizeof(url_chars) - 1)]; | |
671 int selector = RandInRange(10); | |
672 if (selector == 0) | |
673 random_url = std::string("http://") + random_url; | |
674 else if (selector == 1) | |
675 random_url = std::string("file://") + random_url; | |
676 else if (selector == 2) | |
677 random_url = std::string("javascript:") + random_url; | |
678 else if (selector == 2) | |
679 random_url = std::string("data:") + random_url; | |
680 *p = GURL(random_url); | |
681 return true; | |
682 } | |
683 }; | |
684 | |
685 // FIXME: Actually generate something. | |
686 template <> | |
687 struct GenerateTraits<SkBitmap> { | |
688 static bool Generate(SkBitmap* p, Generator* generator) { | |
689 *p = SkBitmap(); | |
690 return true; | |
691 } | |
692 }; | |
693 | |
694 template <> | |
695 struct GenerateTraits<cc::CompositorFrame> { | 664 struct GenerateTraits<cc::CompositorFrame> { |
696 // FIXME: this should actually generate something | 665 // FIXME: this should actually generate something |
697 static bool Generate(cc::CompositorFrame* p, Generator* generator) { | 666 static bool Generate(cc::CompositorFrame* p, Generator* generator) { |
698 return true; | 667 return true; |
699 } | 668 } |
700 }; | 669 }; |
701 | 670 |
702 template <> | 671 template <> |
703 struct GenerateTraits<cc::CompositorFrameAck> { | 672 struct GenerateTraits<cc::CompositorFrameAck> { |
704 // FIXME: this should actually generate something | 673 // FIXME: this should actually generate something |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 static bool Generate(content::PageState *p, Generator* generator) { | 789 static bool Generate(content::PageState *p, Generator* generator) { |
821 std::string junk; | 790 std::string junk; |
822 if (!GenerateParam(&junk, generator)) | 791 if (!GenerateParam(&junk, generator)) |
823 return false; | 792 return false; |
824 *p = content::PageState::CreateFromEncodedData(junk); | 793 *p = content::PageState::CreateFromEncodedData(junk); |
825 return true; | 794 return true; |
826 } | 795 } |
827 }; | 796 }; |
828 | 797 |
829 template <> | 798 template <> |
| 799 struct GenerateTraits<dns_prefetch::LookupRequest> { |
| 800 static bool Generate(dns_prefetch::LookupRequest* p, Generator* generator) { |
| 801 dns_prefetch::LookupRequest request; |
| 802 if (!GenerateParam(&request.hostname_list, generator)) |
| 803 return false; |
| 804 *p = request; |
| 805 return true; |
| 806 } |
| 807 }; |
| 808 |
| 809 template <> |
| 810 struct GenerateTraits<extensions::URLPatternSet> { |
| 811 static bool Generate(extensions::URLPatternSet* p, Generator* generator) { |
| 812 std::set<URLPattern> patterns; |
| 813 if (!GenerateParam(&patterns, generator)) |
| 814 return false; |
| 815 *p = extensions::URLPatternSet(patterns); |
| 816 return true; |
| 817 } |
| 818 }; |
| 819 |
| 820 template <> |
830 struct GenerateTraits<gpu::Mailbox> { | 821 struct GenerateTraits<gpu::Mailbox> { |
831 static bool Generate(gpu::Mailbox *p, Generator* generator) { | 822 static bool Generate(gpu::Mailbox *p, Generator* generator) { |
832 generator->GenerateBytes(p->name, sizeof(p->name)); | 823 generator->GenerateBytes(p->name, sizeof(p->name)); |
833 return true; | 824 return true; |
834 } | 825 } |
835 }; | 826 }; |
836 | 827 |
837 template <> | 828 template <> |
| 829 struct GenerateTraits<gpu::MailboxHolder> { |
| 830 static bool Generate(gpu::MailboxHolder *p, Generator* generator) { |
| 831 gpu::Mailbox mailbox; |
| 832 uint32_t texture_target; |
| 833 uint32_t sync_point; |
| 834 if (!GenerateParam(&mailbox, generator)) |
| 835 return false; |
| 836 if (!GenerateParam(&texture_target, generator)) |
| 837 return false; |
| 838 if (!GenerateParam(&sync_point, generator)) |
| 839 return false; |
| 840 *p = gpu::MailboxHolder(mailbox, texture_target, sync_point); |
| 841 return true; |
| 842 } |
| 843 }; |
| 844 |
| 845 template <> |
| 846 struct GenerateTraits<gpu::ValueState> { |
| 847 static bool Generate(gpu::ValueState* p, Generator* generator) { |
| 848 gpu::ValueState state; |
| 849 for (int i = 0; i < 4; i++) { |
| 850 if (!GenerateParam(&state.float_value[i], generator)) |
| 851 return false; |
| 852 if (!GenerateParam(&state.int_value[i], generator)) |
| 853 return false; |
| 854 } |
| 855 *p = state; |
| 856 return true; |
| 857 } |
| 858 }; |
| 859 |
| 860 template <> |
| 861 struct GenerateTraits<GURL> { |
| 862 static bool Generate(GURL *p, Generator* generator) { |
| 863 const char url_chars[] = "Ahtp0:/.?+\\%&#"; |
| 864 size_t count = RandInRange(100); |
| 865 std::string random_url; |
| 866 for (size_t i = 0; i < count; ++i) |
| 867 random_url += url_chars[RandInRange(sizeof(url_chars) - 1)]; |
| 868 int selector = RandInRange(10); |
| 869 if (selector == 0) |
| 870 random_url = std::string("http://") + random_url; |
| 871 else if (selector == 1) |
| 872 random_url = std::string("file://") + random_url; |
| 873 else if (selector == 2) |
| 874 random_url = std::string("javascript:") + random_url; |
| 875 else if (selector == 2) |
| 876 random_url = std::string("data:") + random_url; |
| 877 *p = GURL(random_url); |
| 878 return true; |
| 879 } |
| 880 }; |
| 881 |
| 882 template <> |
838 struct GenerateTraits<media::AudioParameters> { | 883 struct GenerateTraits<media::AudioParameters> { |
839 static bool Generate(media::AudioParameters *p, Generator* generator) { | 884 static bool Generate(media::AudioParameters *p, Generator* generator) { |
840 int format; | 885 int format; |
841 int channel_layout; | 886 int channel_layout; |
842 int sample_rate; | 887 int sample_rate; |
843 int bits_per_sample; | 888 int bits_per_sample; |
844 int frames_per_buffer; | 889 int frames_per_buffer; |
845 int channels; | 890 int channels; |
846 int effects; | 891 int effects; |
847 if (!GenerateParam(&format, generator)) | 892 if (!GenerateParam(&format, generator)) |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 webrtc::DesktopVector vector; | 1195 webrtc::DesktopVector vector; |
1151 if (!GenerateParam(&size, generator)) | 1196 if (!GenerateParam(&size, generator)) |
1152 return false; | 1197 return false; |
1153 if (!GenerateParam(&vector, generator)) | 1198 if (!GenerateParam(&vector, generator)) |
1154 return false; | 1199 return false; |
1155 *p = remoting::ScreenResolution(size, vector); | 1200 *p = remoting::ScreenResolution(size, vector); |
1156 return true; | 1201 return true; |
1157 } | 1202 } |
1158 }; | 1203 }; |
1159 | 1204 |
| 1205 // FIXME: Actually generate something. |
| 1206 template <> |
| 1207 struct GenerateTraits<SkBitmap> { |
| 1208 static bool Generate(SkBitmap* p, Generator* generator) { |
| 1209 *p = SkBitmap(); |
| 1210 return true; |
| 1211 } |
| 1212 }; |
| 1213 |
| 1214 template <> |
| 1215 struct GenerateTraits<url::Origin> { |
| 1216 static bool Generate(url::Origin* p, Generator* generator) { |
| 1217 std::string origin; |
| 1218 if (!GenerateParam(&origin, generator)) |
| 1219 return false; |
| 1220 *p = url::Origin(origin); |
| 1221 return true; |
| 1222 } |
| 1223 }; |
| 1224 |
1160 template <> | 1225 template <> |
1161 struct GenerateTraits<webrtc::DesktopSize> { | 1226 struct GenerateTraits<webrtc::DesktopSize> { |
1162 static bool Generate(webrtc::DesktopSize* p, Generator* generator) { | 1227 static bool Generate(webrtc::DesktopSize* p, Generator* generator) { |
1163 int32_t width; | 1228 int32_t width; |
1164 int32_t height; | 1229 int32_t height; |
1165 if (!GenerateParam(&width, generator)) | 1230 if (!GenerateParam(&width, generator)) |
1166 return false; | 1231 return false; |
1167 if (!GenerateParam(&height, generator)) | 1232 if (!GenerateParam(&height, generator)) |
1168 return false; | 1233 return false; |
1169 *p = webrtc::DesktopSize(width, height); | 1234 *p = webrtc::DesktopSize(width, height); |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1414 return EXIT_FAILURE; | 1479 return EXIT_FAILURE; |
1415 | 1480 |
1416 return EXIT_SUCCESS; | 1481 return EXIT_SUCCESS; |
1417 } | 1482 } |
1418 | 1483 |
1419 } // namespace ipc_fuzzer | 1484 } // namespace ipc_fuzzer |
1420 | 1485 |
1421 int main(int argc, char** argv) { | 1486 int main(int argc, char** argv) { |
1422 return ipc_fuzzer::GenerateMain(argc, argv); | 1487 return ipc_fuzzer::GenerateMain(argc, argv); |
1423 } | 1488 } |
OLD | NEW |