@@ -40,16 +40,6 @@ class Options < WebDriver::Options
40
40
perf_logging_prefs : 'perfLoggingPrefs' ,
41
41
window_types : 'windowTypes' } . freeze
42
42
43
- CAPABILITIES . each_key do |key |
44
- define_method key do
45
- @options [ key ]
46
- end
47
-
48
- define_method "#{ key } =" do |value |
49
- @options [ key ] = value
50
- end
51
- end
52
-
53
43
# Create a new Options instance.
54
44
#
55
45
# @example
@@ -74,12 +64,21 @@ class Options < WebDriver::Options
74
64
# @option opts [Array<String>] :window_types A list of window types to appear in the list of window handles
75
65
#
76
66
77
- def initialize ( profile : nil , encoded_extensions : nil , **opts )
67
+ def initialize ( profile : nil , encoded_extensions : [ ] , **opts )
78
68
super ( **opts )
79
69
80
70
@profile = profile
81
- @options [ :encoded_extensions ] = encoded_extensions if encoded_extensions
82
- @options [ :extensions ] &.each ( &method ( :validate_extension ) )
71
+ @options [ :encoded_extensions ] = encoded_extensions
72
+
73
+ @options [ :args ] ||= [ ]
74
+ @options [ :prefs ] ||= { }
75
+ @options [ :emulation ] ||= { }
76
+ @options [ :local_state ] ||= { }
77
+ @options [ :exclude_switches ] ||= [ ]
78
+ @options [ :perf_logging_prefs ] ||= { }
79
+ @options [ :window_types ] ||= [ ]
80
+ @options [ :extensions ] ||= [ ]
81
+ @options [ :extensions ] . each ( &method ( :validate_extension ) )
83
82
end
84
83
85
84
#
@@ -94,7 +93,6 @@ def initialize(profile: nil, encoded_extensions: nil, **opts)
94
93
95
94
def add_extension ( path )
96
95
validate_extension ( path )
97
- @options [ :extensions ] ||= [ ]
98
96
@options [ :extensions ] << path
99
97
end
100
98
@@ -109,7 +107,6 @@ def add_extension(path)
109
107
#
110
108
111
109
def add_encoded_extension ( encoded )
112
- @options [ :encoded_extensions ] ||= [ ]
113
110
@options [ :encoded_extensions ] << encoded
114
111
end
115
112
alias_method :encoded_extension= , :add_encoded_extension
@@ -125,7 +122,6 @@ def add_encoded_extension(encoded)
125
122
#
126
123
127
124
def add_argument ( arg )
128
- @options [ :args ] ||= [ ]
129
125
@options [ :args ] << arg
130
126
end
131
127
@@ -141,7 +137,6 @@ def add_argument(arg)
141
137
#
142
138
143
139
def add_preference ( name , value )
144
- @options [ :prefs ] ||= { }
145
140
@options [ :prefs ] [ name ] = value
146
141
end
147
142
@@ -185,16 +180,13 @@ def add_emulation(**opts)
185
180
def process_browser_options ( browser_options )
186
181
options = browser_options [ KEY ]
187
182
options [ 'binary' ] ||= binary_path if binary_path
188
- ( options [ 'args' ] || [ ] ) << "--user-data-dir=#{ @profile . directory } " if @profile
183
+ options [ 'args' ] << "--user-data-dir=#{ @profile . directory } " if @profile
189
184
merge_extensions ( options )
190
185
end
191
186
192
187
def merge_extensions ( browser_options )
193
- extensions = browser_options [ 'extensions' ] || [ ]
194
- encoded_extensions = browser_options . delete ( :encoded_extensions ) || [ ]
195
-
196
- browser_options [ 'extensions' ] = extensions . map ( &method ( :encode_extension ) ) + encoded_extensions
197
- browser_options . delete ( 'extensions' ) if browser_options [ 'extensions' ] . empty?
188
+ encoded_extensions = browser_options . delete ( :encoded_extensions )
189
+ browser_options [ :extensions ] = extensions . map ( &method ( :encode_extension ) ) + encoded_extensions
198
190
end
199
191
200
192
def binary_path
@@ -210,15 +202,8 @@ def validate_extension(path)
210
202
raise Error ::WebDriverError , "file was not an extension #{ path . inspect } " unless File . extname ( path ) == '.crx'
211
203
end
212
204
213
- def generate_as_json ( value , camelize_keys : true )
214
- if value . is_a? ( Hash )
215
- value . each_with_object ( { } ) do |( key , val ) , hash |
216
- key = convert_json_key ( key , camelize : camelize_keys )
217
- hash [ key ] = generate_as_json ( val , camelize_keys : key != 'prefs' )
218
- end
219
- else
220
- super
221
- end
205
+ def camelize? ( key )
206
+ ![ 'prefs' ] . include? ( key )
222
207
end
223
208
end # Options
224
209
end # Chrome
0 commit comments