title: decodeURIComponent fails from URI provided from form submit to chrome.webRequest
body: <p>i have the following situation.</p>
  
  <ul>
  <li>i do a GET request via an HTML form
  
  <ul>
  <li>i have one text field and the field has the contents of <code>&lt;&lt; BLAH &gt;alert (”BLAH”);//&lt;&lt;/ blah &gt;</code>.  It's known invalid, hypothetical markup.</li>
  </ul></li>
  <li>i have an event listener on <code>webRequest</code></li>
  <li>i attempt to <code>decodeURIComponent</code> on the full url of the webrequest, trigged by form submission</li>
  <li>decoding fails, contrary to expectation.
  
  <ul>
  <li>i expect that decodeURIComponent should be able to decode anything the browser encodes from a form.  this appears to be a wrong assumption, or a bug in chrome: 55.0.x*</li>
  </ul></li>
  </ul>
  
  <p>If the below JS was in a chrome extension, the following snippet would demonstrate the issue.
  <div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var filter =  { urls: ['&lt;all_urls&gt;'] }
  
  function handler (details) {
    decodeURIComponent(details.url)
  }
  chrome.webRequest.onBeforeRequest.addListener(
    handler,
    filter,
    ['blocking', 'requestBody']
  )</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;form method='get'&gt;
    &lt;input type='text' name='field'/&gt;
    &lt;button type='submit'&gt;submit&lt;/button&gt;
  &lt;/form&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p>Of course you can't actually run this--webRequest is part of the chrome extension API.</p>
  
  <p>Looking for tips.  Thanks!</p>