1. 14 Oct, 2020 6 commits
    • Robert Knight's avatar
      Fix `document.evaluate` feature test in Edge Legacy · 2e6b8a6e
      Robert Knight authored
      This API is available in Edge Legacy but with a quirk that arguments
      that are optional in the spec are required in this browser.
      
      This fixes an issue that the client would incorrectly abort startup in
      Edge Legacy with a warning that the browser is unsupported.
      2e6b8a6e
    • Robert Knight's avatar
      Remove `createNodeIterator` polyfill · 7545b9a2
      Robert Knight authored
      This polyfilled the optional-ness of the `filter` and deprecated
      `expandEntityRefrences` arguments of `document.createNodeIterator` in IE
      11, which is no longer supported.
      7545b9a2
    • Robert Knight's avatar
      Remove `document.baseURI` polyfill · 93d916b8
      Robert Knight authored
      This was only needed for IE 11, which is no longer supported.
      93d916b8
    • Robert Knight's avatar
      Remove `custom-event` polyfill · c837812e
      Robert Knight authored
      This was only needed for IE 11, which is no longer supported.
      c837812e
    • Robert Knight's avatar
      Remove `document.evaluate` polyfill · 9588558a
      Robert Knight authored
      This was only needed for IE 11, which is no longer supported.
      9588558a
    • Robert Knight's avatar
      Gracefully abort startup in old browsers · e1f314b3
      Robert Knight authored
      Run a series of feature tests at the very start of the boot process and
      abort with a console warning if they fail.
      
      We display a console warning rather than a louder warning to avoid being
      disruptive on sites maintained by publishers which embed Hypothesis and
      which still want to support older browsers. On those sites the
      Hypothesis annotation feature will simply be missing.
      e1f314b3
  2. 13 Oct, 2020 9 commits
  3. 12 Oct, 2020 6 commits
  4. 09 Oct, 2020 2 commits
    • Kyle Keating's avatar
      Fix mobile cursor from jumping to bottom · 3a28eddf
      Kyle Keating authored
      When selecting text on the android, it was possible to also highlight the text inside the buttons in the adder. When this happened, the range would grab everything from where you started to highlight to the very end of the dom because the adder is attached as the last node inside body.
      
      The simple fix is to prohibit text selection inside the adder which prevents the selection from getting the adder itself.
      3a28eddf
    • Lyza Danger Gardner's avatar
      Add a non-OCR'd PDF to the dev-server documents · 150e15b9
      Lyza Danger Gardner authored
      Add a non-OCR'd PDF available to the local dev server to aid
      developers
      150e15b9
  5. 08 Oct, 2020 4 commits
  6. 07 Oct, 2020 6 commits
  7. 06 Oct, 2020 7 commits
    • Lyza Danger Gardner's avatar
      Apply hover styling consistently to focused buttons · 484b4f11
      Lyza Danger Gardner authored
      The recently-added `button-hover` mixin, used by the base `button`
      mixin and thus inherited by other button mixins, applied hover styling
      to focused buttons, but other button mixins that adjust hover styling
      were not applying hover styling to focused buttons.
      
      Update mixins to consistently apply hovered styling to focused buttons
      
      Fixes #2610
      484b4f11
    • Kyle Keating's avatar
      Remove commented out assert.equal test · bf9a06fc
      Kyle Keating authored
      bf9a06fc
    • Robert Knight's avatar
      Handle case where `nodeFromXPath` returns a non-Element result · 275ea593
      Robert Knight authored
      Handle scenarios flagged by type checking where `nodeFromXPath` may
      return `null` or a non-Element node. Previously it could never return
      `null` but would throw an exception if the node was not found. In the
      new code a check is needed.
      
      The case where `nodeFromXPath` returned a non-Element node would never
      happen with XPaths generated by the client but could happen if an
      annotation was created via the API with a non-simple XPath.
      275ea593
    • Robert Knight's avatar
      Fix issue with `getTextNodes` and nodes from other iframes · 908c8159
      Robert Knight authored
      I don't believe this issue will ever occur in the real application, but
      we currently have tests (in `html-test.js`) where the passed node comes from
      a different iframe and therefore a different JS environment where globals including
      `Text` and `Element` have different identities.
      908c8159
    • Robert Knight's avatar
      Remove an unnecessary conditional · 28300faf
      Robert Knight authored
      The expression `n.data.length` cannot be nullish. This was left over
      from a previous version that read `n.nodeValue?.length`.
      28300faf
    • Robert Knight's avatar
      Add missing `return` to async test · feff02a8
      Robert Knight authored
      Rewrite an async test to use async/await syntax for readability and add
      a missing `return` so that mocha correctly waits for the test to finish
      before continuing.
      feff02a8
    • Robert Knight's avatar
      Fix range selector anchoring in XHTML documents · 39a806fc
      Robert Knight authored
      In HTML documents that have been served with an XML mime type,
      `document.evaluate` handles element names differently. In HTML documents
      the XPath segments do not require prefixes on element names. In XHTML
      documents however they do. Since the client always generates the same
      un-prefixed XPaths regardless of document type, evaluation always
      failed. There was a fallback path but it was only executed if
      `document.evaluate` threw an error, not if it returned `null` as in this
      case.
      
      This commit resolves the issue by first attempting to evaluate the XPath
      using custom logic that only handles simple XPaths and then using
      `document.evaluate` only for more complex XPaths. The _simple XPath_
      logic behaves the same in HTML and XML documents and ignores namespaces.
      As a result it works with the XPaths that the client generates
      regardless of document type and also regardless of whether the XPath
      references only HTML elements or elements from other namespaces (eg.
      MathML or SVG).
      
      We could change the way that the client generates XPaths in future in
      XML documents or SVG/MathML content within HTML documents, but the
      client would still need to handle `RangeSelector` selectors on existing
      annotations.
      
      For more details, see https://github.com/hypothesis/client/pull/2590#issuecomment-702132563
      
      Fixes #2592
      39a806fc