Skip to content

Commit

Permalink
Fix fragment against no relative scheme base URL again.
Browse files Browse the repository at this point in the history
Switching to the relative state had undesired side effects such as
setting the relative flag.

https://www.w3.org/Bugs/Public/show_bug.cgi?id=28600
http://krijnhoetmer.nl/irc-logs/whatwg/20150616#l-368

Thanks @Sebmaster!
  • Loading branch information
annevk committed Jun 16, 2015
1 parent 7876306 commit 7f5036c
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 41 deletions.
45 changes: 25 additions & 20 deletions url.bs
Original file line number Diff line number Diff line change
Expand Up @@ -1051,6 +1051,17 @@ optionally with an <a>encoding</a>
attribute's setter ability to change <var>base</var>'s <a lt="URL scheme">scheme</a>,
<var>base</var>'s <a>relative flag</a> is not used here.

<p>Otherwise, if <var>base</var>'s <a lt="URL scheme">scheme</a> is not a
<a>relative scheme</a> and <a>c</a> is "<code>#</code>", set
<var>url</var>'s <a lt="URL scheme">scheme</a> to
<var>base</var>'s <a lt="URL scheme">scheme</a>
<var>url</var>'s <a lt="URL scheme data">scheme data</a> to
<var>base</var>'s <a lt="URL scheme data">scheme data</a>,
<var>url</var>'s <a lt='URL query'>query</a> to
<var>base</var>'s <a lt='URL query'>query</a>
<var>url</var>'s <a lt="URL fragment">fragment</a> to the empty string, and
<var>state</var> to <a>fragment state</a>.

<p>Otherwise, set <var>state</var> to <a>relative state</a>,
and decrease <var>pointer</var> by one.

Expand Down Expand Up @@ -1113,26 +1124,20 @@ optionally with an <a>encoding</a>
and <var>state</var> to <a>query state</a>.

<dt>"<code>#</code>"
<dd>
<p>Set <var>url</var>'s <a lt="URL scheme data">scheme data</a> to
<var>base</var>'s <a lt="URL scheme data">scheme data</a>,
<var>url</var>'s <a lt="URL username">username</a> to
<var>base</var>'s <a lt="URL username">username</a>,
<var>url</var>'s <a lt="URL password">password</a> to
<var>base</var>'s <a lt="URL password">password</a>,
<var>url</var>'s <a lt="URL host">host</a> to
<var>base</var>'s <a lt="URL host">host</a>,
<var>url</var>'s <a lt="URL port">port</a> to
<var>base</var>'s <a lt="URL port">port</a>,
<var>url</var>'s <a lt="URL path">path</a> to
<var>base</var>'s <a lt="URL path">path</a>,
<var>url</var>'s <a lt="URL query">query</a> to
<var>base</var>'s <a lt="URL query">query</a>,
<var>url</var>'s <a lt="URL fragment">fragment</a> to the empty string,
and <var>state</var> to <a>fragment state</a>.

<p class="note no-backref">This also copies <a lt="URL scheme data">scheme data</a>
as all <a>URLs</a> support relative <a lt="URL fragment">fragments</a>.
<dd><p>Set <var>url</var>'s <a lt="URL username">username</a> to
<var>base</var>'s <a lt="URL username">username</a>,
<var>url</var>'s <a lt="URL password">password</a> to
<var>base</var>'s <a lt="URL password">password</a>,
<var>url</var>'s <a lt="URL host">host</a> to
<var>base</var>'s <a lt="URL host">host</a>,
<var>url</var>'s <a lt="URL port">port</a> to
<var>base</var>'s <a lt="URL port">port</a>,
<var>url</var>'s <a lt="URL path">path</a> to
<var>base</var>'s <a lt="URL path">path</a>,
<var>url</var>'s <a lt="URL query">query</a> to
<var>base</var>'s <a lt="URL query">query</a>,
<var>url</var>'s <a lt="URL fragment">fragment</a> to the empty string,
and <var>state</var> to <a>fragment state</a>.

<dt>Otherwise
<dd>
Expand Down
47 changes: 26 additions & 21 deletions url.html
Original file line number Diff line number Diff line change
Expand Up @@ -1595,6 +1595,18 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
attribute’s setter ability to change <var>base</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a>,
<var>base</var>’s <a data-link-type="dfn" href="#relative-flag">relative flag</a> is not used here.

</p>
<p>Otherwise, if <var>base</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a> is not a
<a data-link-type="dfn" href="#relative-scheme">relative scheme</a> and <a data-link-type="dfn" href="#c">c</a> is "<code>#</code>", set
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-scheme">scheme</a>
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-scheme-data">scheme data</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-scheme-data">scheme data</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-query">query</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-query">query</a>
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-fragment">fragment</a> to the empty string, and
<var>state</var> to <a data-link-type="dfn" href="#fragment-state">fragment state</a>.

</p>
<p>Otherwise, set <var>state</var> to <a data-link-type="dfn" href="#relative-state">relative state</a>,
and decrease <var>pointer</var> by one.
Expand Down Expand Up @@ -1685,27 +1697,20 @@ <h3 class="heading settled" data-level="4.2" id="url-parsing"><span class="secno
<dt>"<code>#</code>"

<dd>

<p>Set <var>url</var>’s <a data-link-type="dfn" href="#concept-url-scheme-data">scheme data</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-scheme-data">scheme data</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-username">username</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-username">username</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-password">password</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-password">password</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-host">host</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-host">host</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-port">port</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-port">port</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-path">path</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-path">path</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-query">query</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-query">query</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-fragment">fragment</a> to the empty string,
and <var>state</var> to <a data-link-type="dfn" href="#fragment-state">fragment state</a>.

</p>
<p class="note no-backref" role="note">This also copies <a data-link-type="dfn" href="#concept-url-scheme-data">scheme data</a>
as all <a data-link-type="dfn" href="#concept-url">URLs</a> support relative <a data-link-type="dfn" href="#concept-url-fragment">fragments</a>.
<p>Set <var>url</var>’s <a data-link-type="dfn" href="#concept-url-username">username</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-username">username</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-password">password</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-password">password</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-host">host</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-host">host</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-port">port</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-port">port</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-path">path</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-path">path</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-query">query</a> to
<var>base</var>’s <a data-link-type="dfn" href="#concept-url-query">query</a>,
<var>url</var>’s <a data-link-type="dfn" href="#concept-url-fragment">fragment</a> to the empty string,
and <var>state</var> to <a data-link-type="dfn" href="#fragment-state">fragment state</a>.

</p>
<dt>Otherwise
Expand Down

0 comments on commit 7f5036c

Please sign in to comment.