document.js.map 44.7 KB
{"version":3,"sources":["document.js"],"names":[],"mappings":"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","file":"document.js","sourcesContent":["// Exports a function for creating/loading new documents.\n\nconst assert          = require('assert');\nconst browserFeatures = require('jsdom/lib/jsdom/browser/documentfeatures');\nconst Fetch           = require('./fetch');\nconst DOM             = require('./dom');\nconst EventSource     = require('eventsource');\nconst iconv           = require('iconv-lite');\nconst QS              = require('querystring');\nconst resourceLoader  = require('jsdom/lib/jsdom/browser/resource-loader');\nconst Resources       = require('./resources');\nconst URL             = require('url');\nconst Utils           = require('jsdom/lib/jsdom/utils');\nconst VM              = require('vm');\nconst WebSocket       = require('ws');\nconst Window          = require('jsdom/lib/jsdom/browser/Window');\nconst XMLHttpRequest  = require('./xhr');\n\n\n// File access, not implemented yet\nclass File {\n}\n\n\n// Screen object provides access to screen dimensions\nclass Screen {\n  constructor() {\n    this.top = this.left = 0;\n    this.width = 1280;\n    this.height = 800;\n  }\n\n  get availLeft() {\n    return 0;\n  }\n  get availTop() {\n    return 0;\n  }\n  get availWidth() {\n    return 1280;\n  }\n  get availHeight() {\n    return 800;\n  }\n  get colorDepth() {\n    return 24;\n  }\n  get pixelDepth() {\n    return 24;\n  }\n}\n\n\n// DOM implementation of URL class\nclass DOMURL {\n\n  constructor(url, base) {\n    if (url == null)\n       throw new TypeError('Failed to construct \\'URL\\': Invalid URL');\n    if (base)\n      url = Utils.resolveHref(base, url);\n    const parsed = URL.parse(url || 'about:blank');\n    const origin = parsed.protocol && parsed.hostname && `${parsed.protocol}//${parsed.hostname}`;\n    Object.defineProperties(this, {\n      hash:     { value: parsed.hash,         enumerable: true },\n      host:     { value: parsed.host,         enumerable: true },\n      hostname: { value: parsed.hostname,     enumerable: true },\n      href:     { value: URL.format(parsed),  enumerable: true },\n      origin:   { value: origin,              enumerable: true },\n      password: { value: parsed.password,     enumerable: true },\n      pathname: { value: parsed.pathname,     enumerable: true },\n      port:     { value: parsed.port,         enumerable: true },\n      protocol: { value: parsed.protocol,     enumerable: true  },\n      search:   { value: parsed.search,       enumerable: true },\n      username: { value: parsed.username,     enumerable: true }\n    });\n  }\n\n  toString() {\n    return this.href;\n  }\n\n}\n\n\nfunction setupWindow(window, args) {\n  const { document }          = window;\n  const { browser, history }  = args;\n  const { parent, opener }    = args;\n\n  let   closed        = false;\n\n  // Catch all errors\n  window.onerror = ((message, filename, lineno, colno, error) => {\n    window._eventQueue.enqueue(() => browser.emit('error', error));\n  });\n\n  // Access to browser\n  Object.defineProperty(window, 'browser', {\n    value:      browser,\n    enumerable: true\n  });\n\n  window.name     = args.name || '';\n\n  // If this was opened from another window\n  window.opener   = opener && opener._globalProxy;\n  // Frames provide their own parent reference\n  window._parent  = (parent || window);\n  window._top     = (parent || window).top;\n\n  window.console = browser.console;\n\n  // All the resources loaded by this window.\n  window.resources = new Resources(window);\n\n  // javaEnabled, present in browsers, not in spec Used by Google Analytics see\n  /// https://developer.mozilla.org/en/DOM/window.navigator.javaEnabled\n  const emptySet = [];\n  emptySet.item = ()=> undefined;\n  emptySet.namedItem = ()=> undefined;\n  window.navigator = {\n    appName:        'Zombie',\n    appVersion:     browser.constructor.VERSION,\n    cookieEnabled:  true,\n    javaEnabled:    ()=> false,\n    language:       browser.language,\n    mimeTypes:      emptySet,\n    noUI:           true,\n    platform:       process.platform,\n    plugins:        emptySet,\n    userAgent:      browser.userAgent,\n    vendor:         'Zombie Industries'\n  };\n\n  // Add cookies, storage, alerts/confirm, XHR, WebSockets, JSON, Screen, etc\n  Object.defineProperty(window, 'cookies', {\n    get() {\n      return browser.cookies.serialize(this.location.hostname, this.location.pathname);\n    }\n  });\n  browser._storages.extend(window);\n\n  window.File =           File;\n  window.Event =          DOM.Event;\n  window.MouseEvent =     DOM.MouseEvent;\n  window.MutationEvent =  DOM.MutationEvent;\n  window.UIEvent =        DOM.UIEvent;\n  window.screen =         new Screen();\n\n  // Fetch API\n  window.fetch =          window.resources._fetch.bind(window.resources);\n  window.Request =        Fetch.Request;\n  window.Response =       Fetch.Response;\n  window.FormData =       Fetch.FormData;\n\n  // Base-64 encoding/decoding\n  window.atob = (string)=> new Buffer(string, 'base64').toString('utf8');\n  window.btoa = (string)=> new Buffer(string, 'utf8').toString('base64');\n\n  // Constructor for XHLHttpRequest\n  window.XMLHttpRequest = ()=> new XMLHttpRequest(window);\n  window.URL = DOMURL;\n\n  // Web sockets\n  window._allWebSockets = [];\n\n  window.WebSocket = function(url, protocol) {\n    url = resourceLoader.resolveResourceUrl(document, url);\n    const origin = `${window.location.protocol}//${window.location.host}`;\n    const ws = new WebSocket(url, { origin, protocol });\n\n    // The < 1.x implementations of ws used to allows 'buffer' to be defined\n    // as the binary type in node environments. Now, the supported type is\n    // 'nodebuffer'. Version of engine.io-client <= 1.6.12 use the 'buffer'\n    // type and this is a shim to allow that to keep working unti that version\n    // of engine.io-client does not need to be supported anymore\n    const origProperty = Object.getOwnPropertyDescriptor(WebSocket.prototype, 'binaryType');\n    Object.defineProperty(ws, 'binaryType', {\n      get: function get() {\n        return origProperty.get.call(this);\n      },\n      set: function set(type) {\n        if (type === 'buffer') {\n          type = 'nodebuffer';\n        }\n        return origProperty.set.call(this, type);\n      }\n    });\n    window._allWebSockets.push(ws);\n    return ws;\n  };\n\n  window.Image = function(width, height) {\n    const img   = new DOM.HTMLImageElement(window.document);\n    img.width   = width;\n    img.height  = height;\n    return img;\n  };\n\n  // DataView: get from globals\n  window.DataView = DataView;\n\n  window.resizeTo = function(width, height) {\n    window.outerWidth   = window.innerWidth   = width;\n    window.outerHeight  = window.innerHeight  = height;\n  };\n  window.resizeBy = function(width, height) {\n    window.resizeTo(window.outerWidth + width,  window.outerHeight + height);\n  };\n\n  // Some libraries (e.g. Backbone) check that this property exists before\n  // deciding to use onhashchange, so we need to set it to null.\n  window.onhashchange = null;\n\n\n\n  // -- JavaScript evaluation\n\n  // Evaluate in context of window. This can be called with a script (String) or a function.\n  window._evaluate = function(code, filename) {\n    const originalInScope = browser._windowInScope;\n    try {\n      // The current window, postMessage and window.close need this\n      browser._windowInScope = window;\n      let result;\n      if (typeof code === 'string' || code instanceof String)\n        result = VM.runInContext(code, window, { filename });\n      else if (code)\n        result = code.call(window);\n      browser.emit('evaluated', code, result, filename);\n      return result;\n    } catch (error) {\n      error.filename = error.filename || filename;\n      throw error;\n    } finally {\n      browser._windowInScope = originalInScope;\n    }\n  };\n\n\n  // -- Event loop --\n\n  const eventQueue = browser._eventLoop.createEventQueue(window);\n  Object.defineProperty(window, '_eventQueue', {\n    value: eventQueue\n  });\n  window.setTimeout     = eventQueue.setTimeout.bind(eventQueue);\n  window.clearTimeout   = eventQueue.clearTimeout.bind(eventQueue);\n  window.setInterval    = eventQueue.setInterval.bind(eventQueue);\n  window.clearInterval  = eventQueue.clearInterval.bind(eventQueue);\n  window.setImmediate   = (fn)=> eventQueue.setTimeout(fn, 0);\n  window.clearImmediate = eventQueue.clearTimeout.bind(eventQueue);\n  window.requestAnimationFrame  = window.setImmediate;\n  window.cancelAnimationFrame   = window.clearImmediate;\n\n\n  // Constructor for EventSource, URL is relative to document's.\n  window.EventSource = function(url) {\n    url = resourceLoader.resolveResourceUrl(document, url);\n    const eventSource = new EventSource(url);\n    eventQueue.addEventSource(eventSource);\n    return eventSource;\n  };\n\n\n  // -- Interaction --\n\n  window.alert = function(message) {\n    const handled = browser.emit('alert', message);\n    if (!handled)\n      browser.log('Unhandled window.alert(\"%s\")');\n    browser.log('alert(\"%s\")', message);\n  };\n\n  window.confirm = function(question) {\n    const event     = { question, response: true };\n    const handled   = browser.emit('confirm', event);\n    if (!handled)\n      browser.log('Unhandled window.confirm(\"%s\")');\n    const response  = !!event.response;\n    browser.log('confirm(\"%s\") -> %ss', question, response);\n    return response;\n  };\n\n  window.prompt = function(question, value) {\n    const event     = { question, response: value || '' };\n    const handled   = browser.emit('prompt', event);\n    if (!handled)\n      browser.log('Unhandled window.prompt(\"%s\")');\n    const response  = (event.response || '').toString();\n    browser.log('prompt(\"..\") -> \"%s\"', question, response);\n    return response;\n  };\n\n\n  // -- Opening and closing --\n\n  // Open one window from another.\n  window.open = function(url, name) {\n    url = url && resourceLoader.resolveResourceUrl(document, url);\n    return browser.tabs.open({ name: name, url: url, opener: window });\n  };\n\n  // Indicates if window was closed\n  Object.defineProperty(window, 'closed', {\n    get() { return closed; },\n    enumerable: true\n  });\n\n  // Used by window.close() and also from history.destroy/replace/etc\n  // global.\n  window._destroy = function() {\n    // We call history.destroy which calls destroy on all windows, so need to\n    // avoid infinite loop.\n    if (closed)\n      return;\n    closed = true;\n\n    for (const ws of window._allWebSockets) {\n      ws.removeAllListeners();\n      ws.close();\n    }\n\n    // Close all frames first\n    for (let i = 0; i < window._length; ++i)\n      if (window[i])\n        window[i].close();\n    // kill event queue, document and window.\n    eventQueue.destroy();\n    document.close();\n  };\n\n  // window.close actually closes the tab, and disposes of all windows in the history.\n  // Also used to close iframe.\n  window.close = function() {\n    if (parent || closed)\n      return;\n\n    // Only opener window can close window; any code that's not running from\n    // within a window's context can also close window.\n    if (browser._windowInScope === opener || browser._windowInScope === null) {\n      browser.tabs._closed(window);\n      // Only parent window gets the close event\n      browser.emit('closed', window);\n      history.destroy(); // do this last to prevent infinite loop\n    } else\n      browser.log('Scripts may not close windows that were not opened by script');\n  };\n\n\n  // -- Navigating --\n\n  // Each window maintains its own view of history\n  const windowHistory = {\n    forward() {\n      windowHistory.go(1);\n    },\n    back() {\n      windowHistory.go(-1);\n    },\n    go(amount) {\n      history.go(amount);\n    },\n    pushState(...stateArgs) {\n      history.pushState(...stateArgs);\n    },\n    replaceState(...stateArgs) {\n      history.replaceState(...stateArgs);\n    },\n    dump(output) {\n      history.dump(output);\n    }\n  };\n  Object.defineProperties(windowHistory, {\n    length: {\n      get() { return history.length; },\n      enumerable: true\n    },\n    state: {\n      get() { return history.state; },\n      enumerable: true\n    }\n  });\n\n  // DOM History object\n  window.history  = windowHistory;\n  /// Actual history, see location getter/setter\n  window._history = history;\n\n  // Read/write access to window.location\n  Object.defineProperty(window, 'location', {\n    get() {\n      return document.location;\n    },\n    set(url) {\n      history.assign(url);\n    }\n  });\n\n\n  // Form submission uses this\n  window._submit = function(formArgs) {\n    const url     = resourceLoader.resolveResourceUrl(document, formArgs.url);\n    const target  = formArgs.target || '_self';\n    browser.emit('submit', url, target);\n    // Figure out which history is going to handle this\n    const targetWindow =\n      (target === '_self')   ? window :\n      (target === '_parent') ? window.parent :\n      (target === '_top')    ? window.top :\n      browser.tabs.open({ name: target });\n    const modified = Object.assign({}, formArgs, { url, target });\n    targetWindow._history.submit(modified);\n  };\n\n  // Overload jsdom postMessage function, which is added to the window object\n  // when created jsdom/lib/jsdom/browser/Window.js.\n  // This is needed because jsdom's implementation does not define the source\n  // and origin attributes in the issued events.\n  // This implementation should be dropped in favor of\n  // jsdom/lib/jsdom/living/post-message.js when it supports source and origin.\n  window.postMessage = function(data) {\n    // Window A (source) calls B.postMessage, to determine A we need the\n    // caller's window.\n\n    // DDOPSON-2012-11-09 - _windowInScope.getGlobal() is used here so that for\n    // website code executing inside the sandbox context, event.source ==\n    // window. Even though the _windowInScope object is mapped to the sandboxed\n    // version of the object returned by getGlobal, they are not the same object\n    // ie, _windowInScope.foo == _windowInScope.getGlobal().foo, but\n    // _windowInScope != _windowInScope.getGlobal()\n    const source = (this.browser._windowInScope || this);\n\n    const origin = source.location;\n    const eventOrigin = URL.format({ protocol: origin.protocol, host: origin.host });\n\n    const event = this.document.createEvent('MessageEvent');\n    event.initMessageEvent('message', false, false, data, eventOrigin, null, source, []);\n\n    this.dispatchEvent(event);\n  };\n\n  // Inject HTMLDocument.hasFocus function\n  // https://developer.mozilla.org/en-US/docs/Web/API/Document/hasFocus\n  window._document.hasFocus = function() {\n    return browser.tabs.current.document === this;\n  };\n\n  // JSDOM fires DCL event on document but not on window\n  function windowLoaded(event) {\n    document.removeEventListener('DOMContentLoaded', windowLoaded);\n\n    // JSDom > 7.1 does not allow re-dispatching the same event, so\n    // a copy of the event needs to be created for the new dispatch\n    const windowContentLoaded = document.createEvent('HTMLEvents');\n    windowContentLoaded.initEvent('DOMContentLoaded', false, false);\n    window.dispatchEvent(windowContentLoaded);\n  }\n  document.addEventListener('DOMContentLoaded', windowLoaded);\n\n  // Window is now open, next load the document.\n  browser.emit('opened', window);\n}\n\n\n// Change location\nDOM.Document.prototype.__defineSetter__('location', function(url) {\n  this.defaultView.location = url;\n});\n\n\n// Creates an returns a new document attached to the window.\nfunction createDocument(args) {\n  const { browser } = args;\n\n  const features = {\n    FetchExternalResources:   [],\n    ProcessExternalResources: [],\n    MutationEvents:           '2.0'\n  };\n  if (args.browser.hasFeature('scripts', true)) {\n    features.FetchExternalResources.push('script');\n    features.ProcessExternalResources.push('script');\n  }\n  if (args.browser.hasFeature('css', false)) {\n    features.FetchExternalResources.push('css');\n    features.FetchExternalResources.push('link');\n  }\n  if (args.browser.hasFeature('img', false))\n    features.FetchExternalResources.push('img');\n  if (args.browser.hasFeature('iframe', true))\n    features.FetchExternalResources.push('iframe');\n\n  const window  = new Window({\n    parsingMode:  'html',\n    contentType:  'text/html',\n    url:          args.url,\n    referrer:     args.referrer\n  });\n  const { document } = window;\n  browserFeatures.applyDocumentFeatures(document, features);\n  setupWindow(window, args);\n\n  // Give event handler chance to register listeners.\n  args.browser.emit('loading', document);\n  return document;\n}\n\n\n// Get refresh URL and timeout from <meta> tag\nfunction getMetaRefresh(document) {\n  const refresh = document.querySelector('meta[http-equiv=\"refresh\"]');\n  if (refresh) {\n    const content = refresh.getAttribute('content');\n    const match   = content.match(/^\\s*(\\d+)(?:\\s*;\\s*url\\s*=\\s*(.*?))?\\s*(?:;|$)/i);\n    if (match) {\n      const refreshTimeout = parseInt(match[1], 10);\n      const refreshURL     = match[2] || document.location.href;\n      if (refreshTimeout >= 0)\n        return { refreshTimeout, refreshURL };\n    }\n  }\n  return null;\n}\n\n\n// Find the charset= value of the meta tag\nconst MATCH_CHARSET = /<meta(?!\\s*(?:name|value)\\s*=)[^>]*?charset\\s*=[\\s\"']*([^\\s\"'\\/>]*)/i;\n\n// Extract HTML from response with the proper encoding:\n// - If content type header indicates charset use that\n// - Otherwise, look for <meta> tag with charset in body\n// - Otherwise, browsers default to windows-1252 encoding\nfunction getHTMLFromResponseBody(buffer, contentType) {\n  const [mimeType, ...typeOptions]  = contentType.split(/;\\s*/);\n\n  // Pick charset from content type\n  if (mimeType)\n    for (let typeOption of typeOptions) {\n      if (/^charset=/i.test(typeOption)) {\n        const charset = typeOption.split('=')[1];\n        return iconv.decode(buffer, charset);\n      }\n    }\n\n  // Otherwise, HTML documents only, pick charset from meta tag\n  // Otherwise, HTML documents only, default charset in US is windows-1252\n  const charsetInMetaTag = buffer.toString().match(MATCH_CHARSET);\n  if (charsetInMetaTag)\n    return iconv.decode(buffer, charsetInMetaTag[1]);\n  else\n    return iconv.decode(buffer, 'windows-1252');\n}\n\n\n// Builds and returns a new Request, adding form parameters to URL (GET) or\n// request body (POST).\nfunction buildRequest(args) {\n  const { browser, method } = args;\n  const params  = args.params || new Map();\n  const site    = /^(https?:|file:)/i.test(browser.site) ? browser.site : `http://${browser.site || 'locahost'}`;\n  const url     = Utils.resolveHref(site, URL.format(args.url));\n\n  const headers = new Fetch.Headers(args.headers);\n\n  // HTTP header Referer, but Document property referrer\n  const referrer = args.referrer || browser.referrer || browser.referer || args.history.url;\n  if (referrer && !headers.has('Referer'))\n    headers.set('Referer', referrer);\n  if (!headers.has('Accept'))\n    headers.set('Accept', 'text/html,*/*');\n\n  if (/^GET|HEAD|DELETE$/i.test(method)) {\n    const uri = URL.parse(url, true);\n    // These methods use query string parameters instead\n    for (let [name, values] of params)\n      uri.query[name] = values;\n    return new Fetch.Request(URL.format(uri), { method, headers });\n  }\n\n  const mimeType = (args.encoding || '').split(';')[0].toLowerCase();\n  // Default mime type, but can also be specified in form encoding\n  if (mimeType === '' || mimeType === 'application/x-www-form-urlencoded') {\n    const urlEncoded = [...params]\n      .map(function([name, values]) {\n        return values.map(value => `${QS.escape(name)}=${QS.escape(value)}`).join('&');\n      })\n      .join('&');\n\n    headers.set('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n    return new Fetch.Request(url, { method, headers, body: urlEncoded });\n  }\n\n  if (mimeType === 'multipart/form-data') {\n    const form = new Fetch.FormData();\n    for (let [name, values] of params)\n      for (let value of values)\n        form.append(name, value);\n    return new Fetch.Request(url, { method, headers, body: form });\n  }\n\n  throw new TypeError(`Unsupported content type ${mimeType}`);\n}\n\n\n// Parse HTML response and setup document\nfunction parseResponse({ browser, history, document, response }) {\n  const window      = document.defaultView;\n  window._request   = response.request;\n  window._response  = response;\n  history.updateLocation(window, response._url);\n\n  const done = window._eventQueue.waitForCompletion();\n  response\n    ._consume()\n    .then(function(body) {\n\n      const contentType = response.headers.get('Content-Type') || '';\n      const html        = getHTMLFromResponseBody(body, contentType);\n      response.body     = html;\n      document.write(html || '<html></html>');\n      document.close();\n\n      browser.emit('loaded', document);\n      if (response.status >= 400)\n        throw new Error(`Server returned status code ${response.status} from ${response.url}`);\n      if (!document.documentElement)\n        throw new Error(`Could not parse document at ${response.url}`);\n\n    })\n    .then(function() {\n\n      // Handle meta refresh.  Automatically reloads new location and counts\n      // as a redirect.\n      //\n      // If you need to check the page before refresh takes place, use this:\n      //   browser.wait({\n      //     function: function() {\n      //       return browser.query('meta[http-equiv=\"refresh\"]');\n      //     }\n      //   });\n      const refresh = getMetaRefresh(document);\n\n      if (refresh) {\n        const { refreshTimeout } = refresh;\n        const { refreshURL }     = refresh;\n\n        window._eventQueue.setTimeout(function() {\n          // Allow completion function to run\n          window._eventQueue.enqueue(function() {\n            window._eventQueue.enqueue(function() {\n              // Count a meta-refresh in the redirects count.\n              history.replace(refreshURL);\n              // This results in a new window getting loaded\n              const newWindow = history.current.window;\n              newWindow.addEventListener('load', function() {\n                ++newWindow._request._redirectCount;\n              });\n            });\n          });\n        }, refreshTimeout * 1000);\n      }\n\n    })\n    .catch(function(error) {\n      browser.emit('error', error);\n    })\n    .then(done);\n}\n\n\n// Load/create a new document.\n//\n// Named arguments:\n// browser   - The browser (required)\n// history   - Window history (required)\n// url       - URL of document to open (defaults to \"about:blank\")\n// method    - HTTP method (defaults to \"GET\")\n// encoding  - Request content type (forms use this)\n// params    - Additional request parameters (Map)\n// html      - Create document with this content instead of loading from URL\n// name      - Window name\n// referrer  - HTTP referer header\n// parent    - Parent document (for frames)\n// opener    - Opening window (for window.open)\n// target    - Target window name (for form.submit)\n//\n// Returns a new document with a new window.  The document contents is loaded\n// asynchronously, and will trigger a loaded/error event.\nmodule.exports = function loadDocument(args) {\n  const { browser, history, html, url } = args;\n  assert(browser && browser.visit, 'Missing parameter browser');\n  assert(history && history.reload, 'Missing parameter history');\n\n  const document = createDocument(Object.assign({ url }, args));\n  const window   = document.defaultView;\n\n  if (html) {\n    window._eventQueue.enqueue(function() {\n      document.write(html);\n      document.close();\n      browser.emit('loaded', document);\n    });\n    return document;\n  }\n\n  // Let's handle the specifics of each protocol\n  if (!url || /^about:/.test(url)) {\n    window._eventQueue.enqueue(function() {\n      document.close();\n      browser.emit('loaded', document);\n    });\n    return document;\n  }\n\n  if (/^javascript:/.test(url)) {\n    window._eventQueue.enqueue(function() {\n      document.close();\n      try {\n        window._evaluate(url.slice(11), 'javascript:');\n        browser.emit('loaded', document);\n      } catch (error) {\n        browser.emit('error', error);\n      }\n    });\n    return document;\n  }\n\n  const request = buildRequest(args);\n  window._eventQueue.http(request, (error, response)=> {\n    if (error) {\n      document.write(`<html><body>${error.message}</body></html>`);\n      document.close();\n      browser.emit('error', error);\n    } else\n      parseResponse({ browser, history, document, response });\n\n  });\n  return document;\n};\n"]}