history.js.map 26.2 KB
{"version":3,"sources":["history.js"],"names":[],"mappings":"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","file":"history.js","sourcesContent":["// Window history.\n//\n// Each window belongs to a history. Think of history as a timeline, with\n// currently active window, and multiple previous and future windows. From that\n// window you can navigate backwards and forwards between all other windows that\n// belong to the same history.\n//\n// Each window also has a container: either a browser tab or an iframe. When\n// navigating in history, a different window (from the same history), replaces\n// the current window within its container.\n//\n// Containers have access to the currently active window, not the history\n// itself, so navigation has to alert the container when there's a change in the\n// currently active window.\n//\n// The history does so by calling a \"focus\" function. To create the first\n// window, the container must first create a new history and supply a focus\n// function. The result is another function it can use to create the new window.\n//\n// From there on, it can navigate in history and add new windows by changing the\n// current location (or using assign/replace).\n//\n// It can be used like this:\n//\n//   active = null\n//   focus = (window)->\n//     active = window\n//   history = createHistory(browser, focus)\n//   window = history(url: url, name: name)\n\n\nconst assert          = require('assert');\nconst loadDocument    = require('./document');\nconst resourceLoader  = require('jsdom/lib/jsdom/browser/resource-loader');\nconst URL             = require('url');\n\n\nclass Location {\n\n  constructor(history, url) {\n    this._history = history;\n    this._url = url || (history.current ? history.current.url : 'about:blank');\n  }\n\n  assign(url) {\n    this._history.assign(url);\n  }\n\n  replace(url) {\n    this._history.replace(url);\n  }\n\n  reload() {\n    this._history.reload();\n  }\n\n  toString() {\n    return this._url;\n  }\n\n  get hostname() {\n    return URL.parse(this._url).hostname;\n  }\n\n  set hostname(hostname) {\n    const newUrl = URL.parse(this._url);\n    if (newUrl.port)\n      newUrl.host = `${hostname}:${newUrl.port}`;\n    else\n      newUrl.host = hostname;\n    this.assign(URL.format(newUrl));\n  }\n\n  get href() {\n    return this._url;\n  }\n\n  set href(href) {\n    this.assign(URL.format(href));\n  }\n\n  get origin() {\n    return `${this.protocol}//${this.host}`;\n  }\n\n  get hash() {\n    return URL.parse(this._url).hash || '';\n  }\n\n  set hash(value) {\n    const url  = Object.assign(URL.parse(this._url), { hash: value });\n    this.assign(URL.format(url));\n  }\n\n  get host() {\n    return URL.parse(this._url).host || '';\n  }\n\n  set host(value) {\n    const url  = Object.assign(URL.parse(this._url), { host: value });\n    this.assign(URL.format(url));\n  }\n\n  get pathname() {\n    return URL.parse(this._url).pathname || '';\n  }\n\n  set pathname(value) {\n    const url  = Object.assign(URL.parse(this._url), { pathname: value });\n    this.assign(URL.format(url));\n  }\n\n  get port() {\n    return URL.parse(this._url).port || '';\n  }\n\n  set port(value) {\n    const url  = Object.assign(URL.parse(this._url), { port: value });\n    this.assign(URL.format(url));\n  }\n\n  get protocol() {\n    return URL.parse(this._url).protocol || '';\n  }\n\n  set protocol(value) {\n    const url  = Object.assign(URL.parse(this._url), { protocol: value });\n    this.assign(URL.format(url));\n  }\n\n  get search() {\n    return URL.parse(this._url).search || '';\n  }\n\n  set search(value) {\n    const url  = Object.assign(URL.parse(this._url), { search: value });\n    this.assign(URL.format(url));\n  }\n}\n\n\n// Returns true if the hash portion of the URL changed between the history entry\n// (entry) and the new URL we want to inspect (url).\nfunction hashChange(entry, url) {\n  if (!entry)\n    return false;\n  const [aBase, aHash] = url.split('#');\n  const [bBase, bHash] = entry.url.split('#');\n  return (aBase === bBase) && (aHash !== bHash);\n}\n\n// If window is not the top level window, return parent for creating new child\n// window, otherwise returns false.\nfunction parentFrom(window) {\n  if (window.parent !== window)\n    return window.parent;\n}\n\n\n// Entry has the following properties:\n// window      - Window for this history entry (may be shared with other entries)\n// url         - URL for this history entry\n// pushState   - Push state state\n// next        - Next entry in history\n// prev        - Previous entry in history\nclass Entry {\n\n  constructor(window, url, pushState) {\n    this.window     = window;\n    this.url        = URL.format(url);\n    this.pushState  = pushState;\n    this.prev       = null;\n    this.next       = null;\n  }\n\n  // Called to destroy this entry. Used when we destroy the entire history,\n  // closing all windows. But also used when we replace one entry with another,\n  // and there are two cases to worry about:\n  // - The current entry uses the same window as the previous entry, we get rid\n  //   of the entry, but must keep the entry intact\n  // - The current entry uses the same window as the new entry, also need to\n  //   keep window intact\n  //\n  // keepAlive - Call destroy on every document except this one, since it's\n  //             being replaced.\n  destroy(keepAlive) {\n    if (this.next) {\n      this.next.destroy(keepAlive || this.window);\n      this.next = null;\n    }\n    // Do not close window if replacing entry with same window\n    if (keepAlive === this.window)\n      return;\n    // Do not close window if used by previous entry in history\n    if (this.prev && this.prev.window === this.window)\n      return;\n    this.window._destroy();\n  }\n\n  append(newEntry, keepAlive) {\n    if (this.next)\n      this.next.destroy(keepAlive);\n    newEntry.prev = this;\n    this.next = newEntry;\n  }\n\n}\n\n\nclass History {\n\n  constructor(browser, focus) {\n    this.browser  = browser;\n    this.focus    = focus;\n    this.first    = null;\n    this.current  = null;\n  }\n\n  // Opens the first window and returns it.\n  open(args) {\n    args.browser = this.browser;\n    args.history = this;\n    const document  = loadDocument(args);\n    const window    = document.defaultView;\n    this.addEntry(window, args.url);\n    return window;\n  }\n\n  // Dispose of all windows in history\n  destroy() {\n    this.focus(null);\n    // Re-entrant\n    const first   = this.first;\n    this.first    = null;\n    this.current  = null;\n    if (first)\n      first.destroy();\n  }\n\n  // Add a new entry.  When a window opens it call this to add itself to history.\n  addEntry(window, url = window.location.href, pushState = undefined) {\n    const entry = new Entry(window, url, pushState);\n    if (this.current) {\n      this.current.append(entry);\n      this.current  = entry;\n    } else {\n      this.first    = entry;\n      this.current  = entry;\n    }\n    this.focus(window);\n  }\n\n  // Replace current entry with a new one.\n  replaceEntry(window, url = window.location.href, pushState = undefined) {\n    const entry = new Entry(window, url, pushState);\n    if (this.current === this.first) {\n      if (this.current)\n        this.current.destroy(window);\n      this.first    = entry;\n      this.current  = entry;\n    } else {\n      this.current.prev.append(entry, window);\n      this.current  = entry;\n    }\n    this.focus(window);\n  }\n\n  // Call with two argument to update window.location and current.url to new URL\n  updateLocation(window, url) {\n    if (window === this.current)\n      this.current.url = url;\n    window.document._URL       = url;\n    window.document._location  = new Location(this, url);\n  }\n\n  // Returns window.location\n  get location() {\n    return new Location(this);\n  }\n\n\n  // Form submission\n  submit(args) {\n    args.browser   = this.browser;\n    args.history   = this;\n    const { window }  = this.current;\n    if (window) {\n      args.name      = window.name;\n      args.parent    = parentFrom(window);\n      args.referrer  = window.location.href;\n    }\n    const document  = loadDocument(args);\n    this.addEntry(document.defaultView, document.location.href);\n  }\n\n  // Returns current URL.\n  get url() {\n    return this.current && this.current.url;\n  }\n\n\n  // -- Implementation of window.history --\n\n  // This method is available from Location, used to navigate to a new page.\n  assign(url) {\n    let name    = '';\n    let parent  = null;\n\n    if (this.current) {\n      url     = resourceLoader.resolveResourceUrl(this.current.window.document, url);\n      name    = this.current.window.name;\n      parent  = parentFrom(this.current.window);\n    }\n    if (this.current && this.current.url === url) {\n      this.replace(url);\n      return;\n    }\n\n    if (hashChange(this.current, url)) {\n      const { window } = this.current;\n      this.updateLocation(window, url);\n      this.addEntry(window, url); // Reuse window with new URL\n      const event = window.document.createEvent('HTMLEvents');\n      event.initEvent('hashchange', true, false);\n      window._eventQueue.enqueue(function() {\n        window.dispatchEvent(event);\n      });\n    } else {\n      const args = {\n        browser:  this.browser,\n        history:  this,\n        name:     name,\n        url:      url,\n        parent:   parent,\n        referrer: this.current && this.current.window.document.referrer\n      };\n      const document = loadDocument(args);\n      this.addEntry(document.defaultView, url);\n    }\n  }\n\n  // This method is available from Location, used to navigate to a new page.\n  replace(url) {\n    url = URL.format(url);\n    let name = '';\n\n    if (this.current) {\n      url = resourceLoader.resolveResourceUrl(this.current.window.document, url);\n      name = this.current.window.name;\n    }\n\n    if (hashChange(this.current, url)) {\n      const { window } = this.current;\n      this.replaceEntry(window, url); // Reuse window with new URL\n      const event = window.document.createEvent('HTMLEvents');\n      event.initEvent('hashchange', true, false);\n      window._eventQueue.enqueue(function() {\n        window.dispatchEvent(event);\n      });\n    } else {\n      const args = {\n        browser:  this.browser,\n        history:  this,\n        name:     name,\n        url:      url,\n        parent:   parentFrom(this.current.window)\n      };\n      const document = loadDocument(args);\n      this.replaceEntry(document.defaultView, url);\n    }\n  }\n\n  reload() {\n    const { window } = this.current;\n    if (window) {\n      const url   = window.location.href;\n      const args  = {\n        browser:  this.browser,\n        history:  this,\n        name:     window.name,\n        url:      url,\n        parent:   parentFrom(window),\n        referrer: window.document.referrer\n      };\n      const document = loadDocument(args);\n      this.replaceEntry(document.defaultView, url);\n    }\n  }\n\n  // This method is available from Location.\n  go(amount) {\n    const was = this.current;\n    while (amount > 0) {\n      if (this.current.next)\n        this.current = this.current.next;\n      --amount;\n    }\n    while (amount < 0) {\n      if (this.current.prev)\n        this.current = this.current.prev;\n      ++amount;\n    }\n\n    // If moving from one page to another\n    if (this.current && was && this.current !== was) {\n      const { window } = this.current;\n      this.updateLocation(window, this.current.url);\n      this.focus(window);\n\n      if (this.current.pushState || was.pushState) {\n        // Created with pushState/replaceState, send popstate event if navigating\n        // within same host.\n        const oldHost = URL.parse(was.url).host;\n        const newHost = URL.parse(this.current.url).host;\n        if (oldHost === newHost) {\n          const popstate = window.document.createEvent('HTMLEvents');\n          popstate.initEvent('popstate', false, false);\n          popstate.state = this.current.pushState;\n          window._eventQueue.enqueue(function() {\n            window.dispatchEvent(popstate);\n          });\n        }\n      } else if (hashChange(was, this.current.url)) {\n        const hashchange = window.document.createEvent('HTMLEvents');\n        hashchange.initEvent('hashchange', true, false);\n        window._eventQueue.enqueue(function() {\n          window.dispatchEvent(hashchange);\n        });\n      }\n    }\n  }\n\n\n  // This method is available from Location.\n  get length() {\n    let entry = this.first;\n    let length = 0;\n    while (entry) {\n      ++length;\n      entry = entry.next;\n    }\n    return length;\n  }\n\n\n  // This method is available from Location.\n  pushState(state, title, url = this.url) {\n    url = resourceLoader.resolveResourceUrl(this.current.window.document, url);\n    // TODO: check same origin\n    this.addEntry(this.current.window, url, state || {});\n    this.updateLocation(this.current.window, url);\n  }\n\n  // This method is available from Location.\n  replaceState(state, title, url = this.url) {\n    url = resourceLoader.resolveResourceUrl(this.current.window.document, url);\n    // TODO: check same origin\n    this.replaceEntry(this.current.window, url, state || {});\n    this.updateLocation(this.current.window, url);\n  }\n\n  // This method is available from Location.\n  get state() {\n    return this.current.pushState;\n  }\n\n\n  dump(output = process.stdout) {\n    for (let entry = this.first, i = 1; entry; entry = entry.next, ++i)\n      output.write(`${i}: ${URL.format(entry.url)}\\n`);\n  }\n}\n\n\n// Creates and returns a new history.\n//\n// browser - The browser object\n// focus   - The focus method, called when a new window is in focus\n//\n// Returns a function for opening a new window, which accepts:\n// name      - Window name (optional)\n// opener    - Opening window (window.open call)\n// parent    - Parent window (for frames)\n// url       - Set document location to this URL upon opening\nmodule.exports = function createHistory(browser, focus) {\n  assert(browser && browser.visit, 'Missing parameter browser');\n  assert(focus && focus.call, 'Missing parameter focus or not a function');\n  const history = new History(browser, focus);\n  return history.open.bind(history);\n};\n\n"]}