Class: BiDiGenerate::VendorCommand Private

Inherits:
Struct
  • Object
show all
Defined in:
lib/selenium/webdriver/bidi/support/bidi_generate.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

A browser-specific extension to a command, kept out of the shared class so a non-matching browser never sees it. shared_params are the base command's own (required) params, forwarded verbatim; vendor_params are the typed extra fields, composed into the extensible params record's passthrough bag under their exact wire keys. params_class/result_ref/wire_name mirror the base command.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#method_nameObject

Returns the value of attribute method_name

Returns:

  • (Object)

    the current value of method_name



234
235
236
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 234

def method_name
  @method_name
end

#params_classObject

Returns the value of attribute params_class

Returns:

  • (Object)

    the current value of params_class



234
235
236
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 234

def params_class
  @params_class
end

#result_refObject

Returns the value of attribute result_ref

Returns:

  • (Object)

    the current value of result_ref



234
235
236
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 234

def result_ref
  @result_ref
end

#shared_paramsObject

Returns the value of attribute shared_params

Returns:

  • (Object)

    the current value of shared_params



234
235
236
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 234

def shared_params
  @shared_params
end

#spec_hrefObject

Returns the value of attribute spec_href

Returns:

  • (Object)

    the current value of spec_href



234
235
236
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 234

def spec_href
  @spec_href
end

#vendor_paramsObject

Returns the value of attribute vendor_params

Returns:

  • (Object)

    the current value of vendor_params



234
235
236
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 234

def vendor_params
  @vendor_params
end

#wire_nameObject

Returns the value of attribute wire_name

Returns:

  • (Object)

    the current value of wire_name



234
235
236
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 234

def wire_name
  @wire_name
end

Instance Method Details

#def_header(indent) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



236
237
238
239
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 236

def def_header(indent)
  BiDiGenerate.wrap_call("def #{method_name}", shared_params.map(&:sig_part) + vendor_params.map(&:sig_part),
                         indent)
end

#doc_lines(pad) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



250
251
252
253
254
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 250

def doc_lines(pad)
  lines = ["#{pad}# @api private", "#{pad}# @see #{BiDiGenerate::BIDI_DOC_URL}"]
  lines << "#{pad}# @see #{spec_href}" if spec_href
  lines
end

#execute_line(body, indent) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



268
269
270
271
272
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 268

def execute_line(body, indent)
  args = ["cmd: '#{wire_name}'", 'params: params']
  args << "result: #{result_ref}" if result_ref
  "#{body}#{BiDiGenerate.wrap_call('execute', args, indent + 2)}"
end

#extensions_lines(body, indent) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The extensible passthrough bag, carrying each set vendor field under its exact wire key.



257
258
259
260
261
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 257

def extensions_lines(body, indent)
  inner = ' ' * (indent + 4)
  entries = vendor_params.map { |p| "#{inner}'#{p.wire_name}' => #{p.ruby_name}" }.join(",\n")
  ["#{body}extensions = {", entries, "#{body}}.reject { |_, value| Serialization::UNSET.equal?(value) }"]
end

#params_line(body, indent) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



263
264
265
266
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 263

def params_line(body, indent)
  kwargs = shared_params.map { |p| "#{p.ruby_name}: #{p.ruby_name}" } + ['extensions: extensions']
  "#{body}#{BiDiGenerate.wrap_call("params = #{params_class}.new", kwargs, indent + 2)}"
end

#rbs_signatureObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



274
275
276
277
278
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 274

def rbs_signature
  params = (shared_params.map(&:rbs_part) + vendor_params.map(&:rbs_part)).join(', ')
  ret = result_ref ? "::Selenium::WebDriver::BiDi::Protocol::#{result_ref}" : 'untyped'
  "(#{params}) -> #{ret}"
end

#render_lines(indent) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The full def … end method block, fully indented from indent. Optional vendor fields are placed into the passthrough bag only when set (UNSET stays omitted), so they serialize exactly like a field on the extensible record.



244
245
246
247
248
# File 'lib/selenium/webdriver/bidi/support/bidi_generate.rb', line 244

def render_lines(indent)
  body = ' ' * (indent + 2)
  [*doc_lines(' ' * indent), "#{' ' * indent}#{def_header(indent)}", *extensions_lines(body, indent),
   params_line(body, indent), execute_line(body, indent), "#{' ' * indent}end"]
end