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



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

def method_name
  @method_name
end

#params_classObject

Returns the value of attribute params_class

Returns:

  • (Object)

    the current value of params_class



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

def params_class
  @params_class
end

#result_refObject

Returns the value of attribute result_ref

Returns:

  • (Object)

    the current value of result_ref



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

def result_ref
  @result_ref
end

#shared_paramsObject

Returns the value of attribute shared_params

Returns:

  • (Object)

    the current value of shared_params



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

def shared_params
  @shared_params
end

#spec_hrefObject

Returns the value of attribute spec_href

Returns:

  • (Object)

    the current value of spec_href



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

def spec_href
  @spec_href
end

#vendor_paramsObject

Returns the value of attribute vendor_params

Returns:

  • (Object)

    the current value of vendor_params



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

def vendor_params
  @vendor_params
end

#wire_nameObject

Returns the value of attribute wire_name

Returns:

  • (Object)

    the current value of wire_name



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

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.



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

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.



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

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.



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

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.



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

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.



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

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.



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

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.



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

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