Object
# File lib/selenium/webdriver/safari/server.rb, line 109 def process_handshake @ws = @server.accept hs = WebSocket::Handshake::Server.new req = '' until hs.finished? data = @ws.getc || next req << data.chr hs << data end unless hs.valid? if req.include? "favicon.ico" @ws.close process_handshake return else raise Error::WebDriverError, "#{hs.error}: #{req}" end end @ws.write(hs.to_s) @ws.flush puts "handshake complete, v#{hs.version}" if $DEBUG @server.close @version = hs.version end
# File lib/selenium/webdriver/safari/server.rb, line 94 def process_initial_http_request http = @server.accept req = '' until req.include?("\r\n\r\n") req << http.read(1) end http << HEADERS http << "\r\n\r\n" http << HTML % [ws_uri, ws_uri] http.close end
# File lib/selenium/webdriver/safari/server.rb, line 30 def receive @frame ||= WebSocket::Frame::Incoming::Server.new(:version => @version) until msg = @frame.next end_time = Time.now + @command_timeout begin data = @ws.read_nonblock(1) rescue Errno::EWOULDBLOCK, Errno::EAGAIN now = Time.now if now >= end_time raise Error::TimeOutError, "timed out waiting for Safari to respond" end IO.select([@ws], nil, nil, end_time - now) retry end @frame << data end puts "<<< #{msg}" if $DEBUG WebDriver.json_load msg.to_s end
# File lib/selenium/webdriver/safari/server.rb, line 20 def send(command) json = WebDriver.json_dump(command) puts ">>> #{json}" if $DEBUG frame = WebSocket::Frame::Outgoing::Server.new(:version => @version, :data => json, :type => :text) @ws.write frame.to_s @ws.flush end
# File lib/selenium/webdriver/safari/server.rb, line 11 def start @server = TCPServer.new(Platform.localhost, @port) end
# File lib/selenium/webdriver/safari/server.rb, line 15 def stop @server.close if @server && !@server.closed? @ws.close if @ws && !@ws.closed? end
# File lib/selenium/webdriver/safari/server.rb, line 60 def uri "http://#{Platform.localhost}:#{@port}" end
Generated with the Darkfish Rdoc Generator 2.