<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>10418</bug_id>
          
          <creation_ts>2010-08-24 13:11:50 +0000</creation_ts>
          <short_desc>Scoping element inside e.g. &lt;mi&gt; causes insertion mode to switch to secondary insertion mode too early</short_desc>
          <delta_ts>2010-10-04 14:57:00 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>HTML WG</product>
          <component>pre-LC1 HTML5 spec (editor: Ian Hickson)</component>
          <version>unspecified</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Graham">james</reporter>
          <assigned_to name="Ian &apos;Hixie&apos; Hickson">ian</assigned_to>
          <cc>hsivonen</cc>
    
    <cc>ian</cc>
    
    <cc>mike</cc>
    
    <cc>public-html-admin</cc>
    
    <cc>public-html-wg-issue-tracking</cc>
          
          <qa_contact name="HTML WG Bugzilla archive list">public-html-bugzilla</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37753</commentid>
    <comment_count>0</comment_count>
    <who name="James Graham">james</who>
    <bug_when>2010-08-24 13:11:50 +0000</bug_when>
    <thetext>Consider e.g. &lt;math&gt;&lt;mi&gt;&lt;object&gt;&lt;span&gt;&lt;/span&gt;&lt;/object&gt;&lt;mi&gt;

The &lt;/span&gt; will be processed using the rules for &quot;any other end tag&quot; in the &quot;In Foreign Content&quot; mode. Once this is processed, there will be no element in scope with a namespace other than the HTML namespace (since &lt;object&gt; is a scoping element), so the insertion mode will switch to In Body. The next &lt;mi&gt; token will then be inserted in the In Body mode and so put in the HTML namespace, not the MathML namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37765</commentid>
    <comment_count>1</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-08-24 19:05:38 +0000</bug_when>
    <thetext>Your example is confusing, because &lt;math&gt;&lt;mi&gt;&lt;mi&gt; will also put the last &lt;mi&gt; in the HTML namespace. Did you mean to have an end tag or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37789</commentid>
    <comment_count>2</comment_count>
    <who name="James Graham">james</who>
    <bug_when>2010-08-24 20:46:38 +0000</bug_when>
    <thetext>Yes, there should be a &lt;/mi&gt;

&lt;math&gt;&lt;mi&gt;&lt;object&gt;&lt;span&gt;&lt;/span&gt;&lt;/object&gt;&lt;/mi&gt;&lt;mi&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38824</commentid>
    <comment_count>3</comment_count>
    <who name="Henri Sivonen">hsivonen</who>
    <bug_when>2010-09-10 11:55:41 +0000</bug_when>
    <thetext>What are the cases where we&apos;d want the tree builder to be in the &quot;in foreign content&quot; mode when the current element on the stack is in the HTML namespace?

If we never really want that, I think we should lose &quot;in foreign content&quot; as an insertion mode and lose the secondary mode concept and check whether the element on the stack is not in the HTML namespace whenever we currently check if the tree builder is in the &quot;in foreign content&quot; mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39531</commentid>
    <comment_count>4</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-09-26 21:01:42 +0000</bug_when>
    <thetext>EDITOR&apos;S RESPONSE: This is an Editor&apos;s Response to your comment. If you are satisfied with this response, please change the state of this bug to CLOSED. If you have additional information and would like the editor to reconsider, please reopen this bug. If you would like to escalate the issue to the full HTML Working Group, please add the TrackerRequest keyword to this bug, and suggest title and text for the tracker issue; or you may create a tracker issue yourself, if you are able to do so. For more details, see this document:
   http://dev.w3.org/html5/decision-policy/decision-policy.html

Status: Accepted
Change Description: see diff given below
Rationale: I fixed this by not making foreign lands depend on scoping, and by instead resetting the insertion mode regularly. In practice you can optimise this quite a bit if you try (by having the rest of the parser mark the insertion mode as dirty when the stack is changed in ways that affect the reset algorithm, and only resetting when it&apos;s dirty, for example — but I figured I shouldn&apos;t do that in the spec since it&apos;s just an optimisation, and resetting isn&apos;t hugely expensive in most cases anyway).

(In reply to comment #3)
&gt; What are the cases where we&apos;d want the tree builder to be in the &quot;in foreign
&gt; content&quot; mode when the current element on the stack is in the HTML namespace?

The problem isn&apos;t really so much that so much as how to handle going _back_ to the foreign lands. I don&apos;t think we want to check for foreign lands all the time, that would be bad for perf (I assume foreign lands are relatively rare).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39533</commentid>
    <comment_count>5</comment_count>
    <who name="">contributor</who>
    <bug_when>2010-09-26 21:03:44 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r5520.
Check-in comment: &lt;math&gt;&lt;mi&gt;&lt;object&gt;&lt;span&gt;&lt;/span&gt;&lt;/object&gt;&lt;/mi&gt;&lt;mi&gt;: last &lt;mi&gt; ends up in the wrong namespace
http://html5.org/tools/web-apps-tracker?from=5519&amp;to=5520</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>