Set getUserMedia permission to true by default on WTR
[WebKit-https.git] / Tools / WebKitTestRunner / Options.h
1 /*
2  * Copyright (C) 2013 University of Szeged. All rights reserved.
3  * Copyright (C) 2013 Samsung Electronics. All rights reserved.
4  * Copyright (C) 2015 Apple Inc. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF SZEGED OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #ifndef Options_h
29 #define Options_h
30
31 #include <functional>
32 #include <stdio.h>
33 #include <string>
34 #include <vector>
35 #include <wtf/Vector.h>
36
37 namespace WTR {
38
39 struct Options {
40     Options();
41     bool useWaitToDumpWatchdogTimer;
42     bool forceNoTimeout;
43     bool verbose;
44     bool gcBetweenTests;
45     bool shouldDumpPixelsForAllTests;
46     bool printSupportedFeatures;
47     bool forceComplexText;
48     bool shouldUseAcceleratedDrawing;
49     bool shouldUseRemoteLayerTree;
50     bool shouldShowWebView;
51     std::vector<std::string> paths;
52     std::vector<std::string> allowedHosts;
53 };
54
55 class Option {
56 public:
57     Option(const char* name, const char* description, std::function<bool(Options&, const char*, const char*)> parameterHandler, bool hasArgument = false);
58     bool matches(const char*);
59     const char* name;
60     const char* description;
61     std::function<bool(Options&, const char*, const char*)> parameterHandler;
62     bool hasArgument;
63 };
64
65 class OptionsHandler {
66 public:
67     explicit OptionsHandler(Options&);
68     bool parse(int argc, const char* argv[]);
69     void printHelp(FILE* channel = stderr);
70 private:
71     Vector<Option> optionList;
72     Options& options;
73     static const char* usage;
74     static const char* help;
75 };
76
77 } // namespace WTR
78
79 #endif // Options_h