class Selenium::WebDriver::Firefox::Options

def add_argument(arg)

def add_argument(arg)
  @options[:args] << arg
end

def add_preference(name, value)

def add_preference(name, value)
  @options[:prefs][name] = value
end

def camelize?(key)

def camelize?(key)
  key != 'prefs'
end

def enable_android(package: 'org.mozilla.firefox', serial_number: nil, activity: nil, intent_arguments: nil)

def enable_android(package: 'org.mozilla.firefox', serial_number: nil, activity: nil, intent_arguments: nil)
  @options[:android_package] = package
  @options[:android_activity] = activity unless activity.nil?
  @options[:android_device_serial] = serial_number unless serial_number.nil?
  @options[:android_intent_arguments] = intent_arguments unless intent_arguments.nil?
end

def initialize(log_level: nil, **opts)

def initialize(log_level: nil, **opts)
  @debugger_address = opts.delete(:debugger_address) { true }
  opts[:accept_insecure_certs] = true unless opts.key?(:accept_insecure_certs)
  super(**opts)
  @options[:args] ||= []
  @options[:prefs] ||= {}
  # Firefox 129 onwards the CDP protocol will not be enabled by default. Setting this preference will enable it.
  # https://fxdx.dev/deprecating-cdp-support-in-firefox-embracing-the-future-with-webdriver-bidi/.
  @options[:prefs]['remote.active-protocols'] = 3
  @options[:env] ||= {}
  @options[:log] ||= {level: log_level} if log_level
  process_profile(@options.delete(:profile))
end

def log_level

def log_level
  @options.dig(:log, :level)
end

def log_level=(level)

def log_level=(level)
  @options[:log] = {level: level}
end

def process_browser_options(browser_options)

def process_browser_options(browser_options)
  browser_options['moz:debuggerAddress'] = true if @debugger_address
  options = browser_options[KEY]
  options['binary'] ||= Firefox.path if Firefox.path
  options['profile'] = @profile if @profile
end

def process_profile(profile)

def process_profile(profile)
  @profile = case profile
             when nil
               nil
             when Profile
               profile
             else
               Profile.from_name(profile)
             end
end

def profile=(profile)

def profile=(profile)
  process_profile(profile)
end