# File lib/selenium/webdriver/safari/options.rb, line 8 def initialize(opts = {}) @extensions = [] extract_options(opts) end
# File lib/selenium/webdriver/safari/options.rb, line 13 def add_extension(ext) @extensions << verify_safari_extension(ext) end
# File lib/selenium/webdriver/safari/options.rb, line 32 def as_json { 'port' => port, 'dataDir' => data_dir, 'cleanSession' => clean_session?, 'extensions' => extensions_as_json, 'skipExtensionInstallation' => skip_extension_installation? } end
# File lib/selenium/webdriver/safari/options.rb, line 17 def clean_session? !!@clean_session end
# File lib/selenium/webdriver/safari/options.rb, line 21 def skip_extension_installation? !!@skip_extension_installation end
# File lib/selenium/webdriver/safari/options.rb, line 25 def to_capabilities caps = Remote::Capabilities.safari caps.merge!('safari.options' => as_json) caps end
# File lib/selenium/webdriver/safari/options.rb, line 44 def extensions_as_json @extensions.map do |path| {'filename' => path.basename, 'contents' => Base64.strict_encode64(path.read) } end end
# File lib/selenium/webdriver/safari/options.rb, line 50 def extract_options(opts) @port = Integer(opts[:port] || PortProber.random) @data_dir = opts[:custom_data_dir] || opts[:data_dir] @clean_session = opts[:clean_session] Array(opts[:extensions]).each { |ext| add_extension(ext) } if opts.key?(:install_extension) @skip_extension_installation = !opts[:install_extension] elsif opts.key?(:skip_extension_installation) @skip_extension_installation = opts[:skip_extension_installation] else @skip_extension_installation = false end end
# File lib/selenium/webdriver/safari/options.rb, line 66 def verify_safari_extension(path) pn = Pathname.new(path) unless pn.file? && pn.extname == '.safariextz' raise ArgumentError, "invalid Safari extension path: #{path}" end pn end