module Selenium::EmulatedFeatures::ResponseHeaders

Public Instance Methods

response_headers() click to toggle source
# File lib/selenium/emulated_features/response_headers.rb, line 4
      def response_headers
        dom_str = execute_script <<-js
          if(document.__SEF__ && document.__SEF__.request) {
            return document.__SEF__.request.getAllResponseHeaders();
          }

          var baseURI = document.baseURI;

          /* Firefox */
          if (/about:neterror/.test(baseURI)) return null;

          /* Safari */
          if (/Safari.app/.test(baseURI)) return null;

          /* Chrome */
          if (/chromewebdata/.test(baseURI)) return null;

          document.__SEF__ = {};
          document.__SEF__.request = new XMLHttpRequest();

          document.__SEF__.request.open("GET", document.location, false);
          document.__SEF__.request.send(null);
          return document.__SEF__.request.getAllResponseHeaders();
        js

        return nil unless dom_str

        dom_str.split("\n").inject({}) do |headers, line|
          field, value = line.split(": ")
          headers.merge({ field.downcase => [value.strip] })
        end

      rescue
        nil
      end