Browse files

[] (0) spellcheck='' attribute

git-svn-id: http://svn.whatwg.org/webapps@2801 340c8d12-0b0e-0410-8428-c7bf67bfef74
  • Loading branch information...
1 parent a57b9f9 commit 92e09d0f0166d85e7a12fe82f01386b660b4566b @Hixie Hixie committed Feb 12, 2009
Showing with 429 additions and 66 deletions.
  1. +214 −54 index
  2. +215 −12 source
View
268 index
@@ -833,33 +833,34 @@
<ol>
<li><a href=#user-editing-actions><span class=secno>6.7.1 </span>User editing actions</a></li>
<li><a href=#making-entire-documents-editable><span class=secno>6.7.2 </span>Making entire documents editable</a></ol></li>
- <li><a href=#dnd><span class=secno>6.8 </span>Drag and drop</a>
+ <li><a href=#spelling-and-grammar-checking><span class=secno>6.8 </span>Spelling and grammar checking</a></li>
+ <li><a href=#dnd><span class=secno>6.9 </span>Drag and drop</a>
<ol>
- <li><a href=#introduction-4><span class=secno>6.8.1 </span>Introduction</a></li>
- <li><a href=#the-dragevent-and-datatransfer-interfaces><span class=secno>6.8.2 </span>The <code>DragEvent</code> and <code>DataTransfer</code> interfaces</a></li>
- <li><a href=#events-fired-during-a-drag-and-drop-action><span class=secno>6.8.3 </span>Events fired during a drag-and-drop action</a></li>
- <li><a href=#drag-and-drop-processing-model><span class=secno>6.8.4 </span>Drag-and-drop processing model</a>
+ <li><a href=#introduction-4><span class=secno>6.9.1 </span>Introduction</a></li>
+ <li><a href=#the-dragevent-and-datatransfer-interfaces><span class=secno>6.9.2 </span>The <code>DragEvent</code> and <code>DataTransfer</code> interfaces</a></li>
+ <li><a href=#events-fired-during-a-drag-and-drop-action><span class=secno>6.9.3 </span>Events fired during a drag-and-drop action</a></li>
+ <li><a href=#drag-and-drop-processing-model><span class=secno>6.9.4 </span>Drag-and-drop processing model</a>
<ol>
- <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.8.4.1 </span>When the drag-and-drop operation starts or ends in another
+ <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.9.4.1 </span>When the drag-and-drop operation starts or ends in another
document</a></li>
- <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.8.4.2 </span>When the drag-and-drop operation starts or ends in another
+ <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.9.4.2 </span>When the drag-and-drop operation starts or ends in another
application</a></ol></li>
- <li><a href=#the-draggable-attribute><span class=secno>6.8.5 </span>The <code>draggable</code> attribute</a></li>
- <li><a href=#copy-and-paste><span class=secno>6.8.6 </span>Copy and paste</a>
+ <li><a href=#the-draggable-attribute><span class=secno>6.9.5 </span>The <code>draggable</code> attribute</a></li>
+ <li><a href=#copy-and-paste><span class=secno>6.9.6 </span>Copy and paste</a>
<ol>
- <li><a href=#copy-to-clipboard><span class=secno>6.8.6.1 </span>Copy to clipboard</a></li>
- <li><a href=#cut-to-clipboard><span class=secno>6.8.6.2 </span>Cut to clipboard</a></li>
- <li><a href=#paste-from-clipboard><span class=secno>6.8.6.3 </span>Paste from clipboard</a></li>
- <li><a href=#paste-from-selection><span class=secno>6.8.6.4 </span>Paste from selection</a></ol></li>
- <li><a href=#security-risks-in-the-drag-and-drop-model><span class=secno>6.8.7 </span>Security risks in the drag-and-drop model</a></ol></li>
- <li><a href=#undo><span class=secno>6.9 </span>Undo history</a>
+ <li><a href=#copy-to-clipboard><span class=secno>6.9.6.1 </span>Copy to clipboard</a></li>
+ <li><a href=#cut-to-clipboard><span class=secno>6.9.6.2 </span>Cut to clipboard</a></li>
+ <li><a href=#paste-from-clipboard><span class=secno>6.9.6.3 </span>Paste from clipboard</a></li>
+ <li><a href=#paste-from-selection><span class=secno>6.9.6.4 </span>Paste from selection</a></ol></li>
+ <li><a href=#security-risks-in-the-drag-and-drop-model><span class=secno>6.9.7 </span>Security risks in the drag-and-drop model</a></ol></li>
+ <li><a href=#undo><span class=secno>6.10 </span>Undo history</a>
<ol>
- <li><a href=#the-undomanager-interface><span class=secno>6.9.1 </span>The <code>UndoManager</code> interface</a></li>
- <li><a href=#undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.9.2 </span>Undo: moving back in the undo transaction history</a></li>
- <li><a href=#redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.9.3 </span>Redo: moving forward in the undo transaction history</a></li>
- <li><a href=#the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.9.4 </span>The <code>UndoManagerEvent</code> interface and the <code title=event-undo>undo</code> and <code title=event-redo>redo</code> events</a></li>
- <li><a href=#implementation-notes><span class=secno>6.9.5 </span>Implementation notes</a></ol></li>
- <li><a href=#command-apis><span class=secno>6.10 </span>Command APIs</a></ol></li>
+ <li><a href=#the-undomanager-interface><span class=secno>6.10.1 </span>The <code>UndoManager</code> interface</a></li>
+ <li><a href=#undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.10.2 </span>Undo: moving back in the undo transaction history</a></li>
+ <li><a href=#redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.10.3 </span>Redo: moving forward in the undo transaction history</a></li>
+ <li><a href=#the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.10.4 </span>The <code>UndoManagerEvent</code> interface and the <code title=event-undo>undo</code> and <code title=event-redo>redo</code> events</a></li>
+ <li><a href=#implementation-notes><span class=secno>6.10.5 </span>Implementation notes</a></ol></li>
+ <li><a href=#command-apis><span class=secno>6.11 </span>Command APIs</a></ol></li>
<li><a href=#comms><span class=secno>7 </span>Communication</a>
<ol>
<li><a href=#event-definitions><span class=secno>7.1 </span>Event definitions</a></li>
@@ -6985,6 +6986,7 @@ interface <dfn id=htmldocument>HTMLDocument</dfn> {
attribute DOMString <a href=#dom-contenteditable title=dom-contentEditable>contentEditable</a>;
readonly attribute boolean <a href=#dom-iscontenteditable title=dom-isContentEditable>isContentEditable</a>;
attribute <a href=#htmlmenuelement>HTMLMenuElement</a> <a href=#dom-contextmenu title=dom-contextMenu>contextMenu</a>;
+ attribute boolean <a href=#dom-spellcheck title=dom-spellcheck>spellcheck</a>;
// <span>styling</span>
readonly attribute <span>CSSStyleDeclaration</span> <a href=#dom-style title=dom-style>style</a>;
@@ -7044,6 +7046,7 @@ interface <dfn id=htmldocument>HTMLDocument</dfn> {
<dd><code title=attr-hidden><a href=#the-hidden-attribute>hidden</a></code></dd>
<dd><code title=attr-lang><a href=#the-lang-and-xml:lang-attributes>lang</a></code></dd>
<dd><code title=attr-style><a href=#the-style-attribute>style</a></code></dd>
+ <dd><code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code></dd>
<dd><code title=attr-tabindex><a href=#attr-tabindex>tabindex</a></code></dd>
<dd><code title=attr-title><a href=#the-title-attribute>title</a></code></dd>
</dl><p>In addition, unless otherwise specified, the following
@@ -31469,7 +31472,7 @@ interface <dfn id=htmloptionelement>HTMLOptionElement</dfn> : <a href=#htmleleme
<code><a href=#datagrid>datagrid</a></code> element (the <code><a href=#the-select-element>select</a></code> or
<code><a href=#the-datalist-element>datalist</a></code> element), that skips all nodes other than
<code><a href=#the-optgroup-element>optgroup</a></code> and <code><a href=#the-option-element>option</a></code> elements, as well as
- any descendents of any <code><a href=#the-option-element>option</a></code> elements.</p>
+ any descendants of any <code><a href=#the-option-element>option</a></code> elements.</p>
<p>Given a path <var title="">row</var>, the corresponding element
is the one obtained by drilling into the view, taking the child
@@ -31712,7 +31715,7 @@ interface <dfn id=htmloptionelement>HTMLOptionElement</dfn> : <a href=#htmleleme
<p>If the first element child of a cell's element is a
<code><a href=#the-select-element>select</a></code> element that has a no <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code> attribute and has at
- least one <code><a href=#the-option-element>option</a></code> element descendent, then the cell
+ least one <code><a href=#the-option-element>option</a></code> element descendant, then the cell
acts as a cyclable cell.</p>
<p>The "current" <code><a href=#the-option-element>option</a></code> element is the selected
@@ -31734,9 +31737,9 @@ interface <dfn id=htmloptionelement>HTMLOptionElement</dfn> : <a href=#htmleleme
element such that the next <code><a href=#the-option-element>option</a></code> element after the
current <code><a href=#the-option-element>option</a></code> element is the only one that is
selected (in <a href=#tree-order>tree order</a>). If the current <code><a href=#the-option-element>option</a></code>
- element is the last <code><a href=#the-option-element>option</a></code> element descendent of the
+ element is the last <code><a href=#the-option-element>option</a></code> element descendant of the
<code><a href=#the-select-element>select</a></code>, then the first <code><a href=#the-option-element>option</a></code> element
- descendent must be selected instead.</p>
+ descendant must be selected instead.</p>
<p>The <code title=dom-provider-setCellCheckedState><a href=#dom-provider-setcellcheckedstate>setCellCheckedState()</a></code>
and <code title=dom-provider-editCell><a href=#dom-provider-editcell>editCell()</a></code> methods
@@ -33924,8 +33927,8 @@ explain that only direct children of the <menu> matter
<ul><li><code><a href=#the-input-element>input</a></code> elements to which the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute applies,
but that are not <i title=concept-input-immutable><a href=#concept-input-immutable>immutable</a></i>
- (i.e. that do not have the attribute specified and that are not
- <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>)</li>
+ (i.e. that do not have the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute specified
+ and that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>)</li>
<li><code><a href=#the-textarea-element>textarea</a></code> elements that do not have a <code title=attr-textarea-readonly><a href=#attr-textarea-readonly>readonly</a></code> attribute, and
that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a></li>
@@ -43344,7 +43347,164 @@ at the first element with the given ID must be treated as if it was cloned and r
- <h3 id=dnd><span class=secno>6.8 </span><dfn>Drag and drop</dfn></h3>
+ <h3 id=spelling-and-grammar-checking><span class=secno>6.8 </span>Spelling and grammar checking</h3>
+
+ <p>User agents can support the checking of spelling and grammar of
+ editable text, either in form controls (such as the value of
+ <code><a href=#the-textarea-element>textarea</a></code> elements), or in elements in an <a href=#editing-host>editing
+ host</a> (using <code title=attr-contenteditable><a href=#attr-contenteditable>contenteditable</a></code>).</p>
+
+ <p>For each element, user agents must establish a <dfn id=concept-spellcheck-default title=concept-spellcheck-default>default behavior</dfn>, either
+ through defaults or through preferences expressed by the user. There
+ are three possible default behaviors for each element:</p>
+
+ <dl><dt><dfn id=concept-spellcheck-default-true title=concept-spellcheck-default-true>true-by-default</dfn>
+
+ <dd>The element will be checked for spelling and grammar if its
+ contents are editable.
+
+ <dt><dfn id=concept-spellcheck-default-false title=concept-spellcheck-default-false>false-by-default</dfn>
+
+ <dd>The element will never be checked for spelling and grammar.
+
+ <dt><dfn id=concept-spellcheck-default-inherit title=concept-spellcheck-default-inherit>inherit-by-default</dfn>
+
+ <dd>The element's default behavior is the same asits parent
+ element's. Elements that have no parent element cannot have this as
+ their default behavior.
+
+ </dl><hr><p>The <dfn id=attr-spellcheck title=attr-spellcheck><code>spellcheck</code></dfn>
+ attribute is an <a href=#enumerated-attribute>enumerated attribute</a> whose keywords are
+ <code title="">true</code> and <code title="">false</code>. The <code title="">true</code> keyword map to the <i>true</i> state. The <code title="">false</code> keyword maps to the <i>false</i> state. In
+ addition, there is a third state, the <i>inherit</i> state, which is
+ the <i>missing value default</i> (and the <i>invalid value
+ default</i>).</p>
+
+ <hr><p>The <dfn id=dom-spellcheck title=dom-spellcheck><code>spellcheck</code></dfn> DOM
+ attribute, on getting, must return true if the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute is in
+ the <i>true</i> state, or if the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute is in
+ the <i>inherit</i> state and the element's <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is <a href=#concept-spellcheck-default-true title=concept-spellcheck-default-true>true-by-default</a>, or
+ if the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code>
+ content attribute is in the <i>inherit</i> state and the element's
+ <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is
+ <a href=#concept-spellcheck-default-inherit title=concept-spellcheck-default-inherit>inherit-by-default</a>
+ and the element's parent element's <code title=dom-spellcheck><a href=#dom-spellcheck>spellcheck</a></code> DOM attribute would return
+ true; otherwise, if none of those conditions applies, then the
+ attribute must instead return false.</p>
+
+ <p class=note>The <code title=dom-spellcheck><a href=#dom-spellcheck>spellcheck</a></code>
+ DOM attribute is not affected by user preferences that override the
+ <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute,
+ and therefore might not reflect the actual spellchecking state.</p>
+
+ <p>On setting, if the new value is true, then the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute must be
+ set to the literal string "<code title="">true</code>", otherwise it
+ must be set to the literal string "<code title="">false</code>".
+
+ </p><hr><p>User agents must only consider the following pieces of text as
+ checkable for the purposes of this feature:</p>
+
+ <ul><li>The value of <code><a href=#the-input-element>input</a></code> elements to which the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute applies, but
+ that are not <i title=concept-input-immutable><a href=#concept-input-immutable>immutable</a></i>
+ (i.e. that do not have the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute specified and
+ that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>).</li>
+
+ <li>The value of <code><a href=#the-textarea-element>textarea</a></code> elements that do not have a
+ <code title=attr-textarea-readonly><a href=#attr-textarea-readonly>readonly</a></code> attribute and
+ that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>.</li>
+
+ <li>Text in <a href=#text-node title="text node">text nodes</a> that are
+ children of <a href=#editable>editable</a> elements.</li>
+
+ <li>Text in attributes of <a href=#editable>editable</a> elements.</li>
+
+ </ul><p>For text that is part of a <a href=#text-node>text node</a>, the element
+ with which the text is associated is the element that is the
+ immediate parent of the first character of the word, sentence, or
+ other piece of text. For text in attributes, it is the attribute's
+ element. For the values of <code><a href=#the-input-element>input</a></code> and
+ <code><a href=#the-textarea-element>textarea</a></code> elements, it is the element itself.</p>
+
+ <p>To determine if a word, sentence, or other piece of text in an
+ applicable element (as defined above) is to have spelling- and/or
+ grammar-checking enabled, the UA must use the following
+ algorithm:</p>
+
+ <ol><!-- user override --><li>If the user has disabled the checking for this text, then the
+ checking is disabled.</li>
+
+ <li>Otherwise, if the user has forced the checking for this text to
+ always be enabled, then the checking is enabled.</li>
+
+ <!-- content attribute: on, off -->
+
+ <li>Otherwise, if the element with which the text is associated has
+ a <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content
+ attribute, then: if that attribute is in the <i>true</i> state,
+ then checking is enabled; otherwise, if that attribute is in the
+ <i>false</i> state, then checking is disabled.</li>
+
+ <!-- inherit, if there is one to inherit from -->
+
+ <li>Otherwise, if there is an ancestor element with a <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute that is
+ not in the <i>inherit</i> state, then: if the nearest such
+ ancestor's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content
+ attribute is in the <i>true</i> state, then checking is enabled;
+ otherwise, checking is disabled.</li>
+
+ <!-- default -->
+
+ <li>Otherwise, if the element's <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is <a href=#concept-spellcheck-default-true title=concept-spellcheck-default-true>true-by-default</a>,
+ then checking is enabled.</li>
+
+ <li>Otherwise, if the element's <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is <a href=#concept-spellcheck-default-false title=concept-spellcheck-default-false>false-by-default</a>,
+ then checking is disabled.</li>
+
+ <!-- default inheritance -->
+
+ <li>Otherwise, if the element's parent element has <em>its</em>
+ checking enabled, then checking is enabled.</li>
+
+ <li>Otherwise, checking is disabled.</li>
+
+ </ol><p>If the checking is enabled for a word/sentence/text, the user
+ agent should indicate spelling and/or grammar errors in that
+ text. User agents should take into account the other semantics given
+ in the document when suggesting spelling and grammar
+ corrections. User agents may use the language of the element to
+ determine what spelling and grammar rules to use, or may use the
+ user's preferred language settings. UAs should use
+ <code><a href=#the-input-element>input</a></code> element attributes such as <code title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code> to ensure that the
+ resulting value is valid, where possible.</p>
+
+ <p>If checking is disabled, the user agent should not indicate
+ spelling or grammar errors for that text.</p>
+
+ <div class=example>
+
+ <p>The element with ID "a" in the following example would be the
+ one used to determine if the word "Hello" is checked for spelling
+ errors. In this example, it would not be.</p>
+
+ <pre>&lt;div contenteditable="true"&gt;
+ &lt;span spellcheck="false" id="a"&gt;Hell&lt;/span&gt;&lt;em&gt;o!&lt;/em&gt;
+&lt;/div&gt;</pre>
+
+ <p>The element with ID "b" in the following example would have
+ checking enabled (the leading space character in the attribute's
+ value on the <code><a href=#the-input-element>input</a></code> element causes the attribute to be
+ ignored, so the ancestor's value is used instead, regardless of the
+ default).</p>
+
+ <pre>&lt;p spellcheck="true"&gt;
+ &lt;label&gt;Name: &lt;input spellcheck=" false" id="b"&gt;&lt;/label&gt;
+&lt;/p&gt;</pre>
+
+ </div>
+
+
+
+ <h3 id=dnd><span class=secno>6.9 </span><dfn>Drag and drop</dfn></h3>
<!--XXX
@@ -43402,14 +43562,14 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
step).</p>
- <h4 id=introduction-4><span class=secno>6.8.1 </span>Introduction</h4>
+ <h4 id=introduction-4><span class=secno>6.9.1 </span>Introduction</h4>
<p><em>This section is non-normative.</em></p>
<p class=XXX>It's also currently non-existent.</p>
- <h4 id=the-dragevent-and-datatransfer-interfaces><span class=secno>6.8.2 </span>The <code><a href=#dragevent>DragEvent</a></code> and <code><a href=#datatransfer>DataTransfer</a></code> interfaces</h4>
+ <h4 id=the-dragevent-and-datatransfer-interfaces><span class=secno>6.9.2 </span>The <code><a href=#dragevent>DragEvent</a></code> and <code><a href=#datatransfer>DataTransfer</a></code> interfaces</h4>
<p>The drag-and-drop processing model involves several events. They
all use the <code><a href=#dragevent>DragEvent</a></code> interface.</p>
@@ -43539,7 +43699,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
exact specified image.</p>
- <h4 id=events-fired-during-a-drag-and-drop-action><span class=secno>6.8.3 </span>Events fired during a drag-and-drop action</h4>
+ <h4 id=events-fired-during-a-drag-and-drop-action><span class=secno>6.9.3 </span>Events fired during a drag-and-drop action</h4>
<p>The following events are involved in the drag-and-drop
model. Whenever the processing model described below causes one of
@@ -43658,7 +43818,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
<td><code title="">link</code></td>
<tr><td>Any other case</td>
<td><code title="">copy</code></td>
- </table><h4 id=drag-and-drop-processing-model><span class=secno>6.8.4 </span>Drag-and-drop processing model</h4>
+ </table><h4 id=drag-and-drop-processing-model><span class=secno>6.9.4 </span>Drag-and-drop processing model</h4>
<p>When the user attempts to begin a drag operation, the user agent
must first determine what is being dragged. If the drag operation
@@ -44036,7 +44196,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
</ol></li>
- </ol><h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.8.4.1 </span>When the drag-and-drop operation starts or ends in another
+ </ol><h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.9.4.1 </span>When the drag-and-drop operation starts or ends in another
document</h5>
<p>The model described above is independent of which
@@ -44050,7 +44210,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
the requirements in the event section above? -->
- <h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.8.4.2 </span>When the drag-and-drop operation starts or ends in another
+ <h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.9.4.2 </span>When the drag-and-drop operation starts or ends in another
application</h5>
<p>If the drag is initiated in another application, the <a href=#source-node>source
@@ -44075,7 +44235,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
- <h4 id=the-draggable-attribute><span class=secno>6.8.5 </span>The <dfn title=attr-draggable><code>draggable</code></dfn> attribute</h4>
+ <h4 id=the-draggable-attribute><span class=secno>6.9.5 </span>The <dfn title=attr-draggable><code>draggable</code></dfn> attribute</h4>
<p>All elements may have the <code title=attr-draggable><a href=#the-draggable-attribute>draggable</a></code> content attribute set. The
<code title=attr-draggable><a href=#the-draggable-attribute>draggable</a></code> attribute is an
@@ -44116,7 +44276,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
- <h4 id=copy-and-paste><span class=secno>6.8.6 </span>Copy and paste</h4>
+ <h4 id=copy-and-paste><span class=secno>6.9.6 </span>Copy and paste</h4>
<p>Copy-and-paste is a form of drag-and-drop: the "copy" part is
equivalent to dragging content to another application (the
@@ -44128,7 +44288,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
source is the selection.</p>
- <h5 id=copy-to-clipboard><span class=secno>6.8.6.1 </span>Copy to clipboard</h5>
+ <h5 id=copy-to-clipboard><span class=secno>6.9.6.1 </span>Copy to clipboard</h5>
<p>When the user invokes a copy operation, the user agent must act
as if the user had invoked a drag on the current selection. If the
@@ -44142,14 +44302,14 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
operations (e.g. updating the clipboard).</p>
- <h5 id=cut-to-clipboard><span class=secno>6.8.6.2 </span>Cut to clipboard</h5>
+ <h5 id=cut-to-clipboard><span class=secno>6.9.6.2 </span>Cut to clipboard</h5>
<p>When the user invokes a cut operation, the user agent must act as
if the user had invoked a copy operation (see the previous section),
followed, if the copy was completed successfully, by <a href=#contenteditable-delete>a selection delete operation</a>.</p>
- <h5 id=paste-from-clipboard><span class=secno>6.8.6.3 </span>Paste from clipboard</h5>
+ <h5 id=paste-from-clipboard><span class=secno>6.9.6.3 </span>Paste from clipboard</h5>
<p>When the user invokes a clipboard paste operation, the user agent
must act as if the user had invoked a drag on a hypothetical
@@ -44163,7 +44323,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
canceling it.</p>
- <h5 id=paste-from-selection><span class=secno>6.8.6.4 </span>Paste from selection</h5>
+ <h5 id=paste-from-selection><span class=secno>6.9.6.4 </span>Paste from selection</h5>
<p>When the user invokes a selection paste operation, the user agent
must act as if the user had invoked a drag on the current selection,
@@ -44173,7 +44333,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
- <h4 id=security-risks-in-the-drag-and-drop-model><span class=secno>6.8.7 </span>Security risks in the drag-and-drop model</h4>
+ <h4 id=security-risks-in-the-drag-and-drop-model><span class=secno>6.9.7 </span>Security risks in the drag-and-drop model</h4>
<p>User agents must not make the data added to the
<code><a href=#datatransfer>DataTransfer</a></code> object during the <code title=event-dragstart><a href=#event-dragstart>dragstart</a></code> event available to scripts
@@ -44200,7 +44360,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
- <h3 id=undo><span class=secno>6.9 </span><dfn>Undo history</dfn></h3>
+ <h3 id=undo><span class=secno>6.10 </span><dfn>Undo history</dfn></h3>
<p class=XXX>There has got to be a better way of doing this, surely.</p>
@@ -44241,7 +44401,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
drawing tool).</p>
- <h4 id=the-undomanager-interface><span class=secno>6.9.1 </span>The <code><a href=#undomanager>UndoManager</a></code> interface</h4>
+ <h4 id=the-undomanager-interface><span class=secno>6.10.1 </span>The <code><a href=#undomanager>UndoManager</a></code> interface</h4>
<div class=XXX>
@@ -44375,7 +44535,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
the DOM go in as if the user had done them.</p>
- <h4 id=undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.9.2 </span><dfn title=do-undo>Undo: moving back in the undo transaction history</dfn></h4>
+ <h4 id=undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.10.2 </span><dfn title=do-undo>Undo: moving back in the undo transaction history</dfn></h4>
<p>When the user invokes an undo operation, or when the <code title=dom-document-execCommand><a href=#execCommand>execCommand()</a></code> method is
called with the <code title=command-undo><a href=#command-undo>undo</a></code> command, the
@@ -44412,7 +44572,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
command to undo his undo.</p>
- <h4 id=redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.9.3 </span><dfn title=do-redo>Redo: moving forward in the undo transaction history</dfn></h4>
+ <h4 id=redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.10.3 </span><dfn title=do-redo>Redo: moving forward in the undo transaction history</dfn></h4>
<p>When the user invokes a redo operation, or when the <code title=dom-document-execCommand><a href=#execCommand>execCommand()</a></code> method is
called with the <code title=command-redo><a href=#command-redo>redo</a></code> command, the
@@ -44446,7 +44606,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
object, using the <a href=#undo-object>undo object</a> entry's associated undo
object as the event's data.</p>
- <h4 id=the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.9.4 </span>The <code><a href=#undomanagerevent>UndoManagerEvent</a></code> interface and the <code title=event-undo><a href=#event-undo>undo</a></code> and <code title=event-redo><a href=#event-redo>redo</a></code> events</h4>
+ <h4 id=the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.10.4 </span>The <code><a href=#undomanagerevent>UndoManagerEvent</a></code> interface and the <code title=event-undo><a href=#event-undo>undo</a></code> and <code title=event-redo><a href=#event-redo>redo</a></code> events</h4>
<pre class=idl>interface <dfn id=undomanagerevent>UndoManagerEvent</dfn> : Event {
readonly attribute any <a href=#dom-undomanagerevent-data title=dom-UndoManagerEvent-data>data</a>;
@@ -44469,7 +44629,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
relevant <a href=#undo-object>undo object</a>.</p>
- <h4 id=implementation-notes><span class=secno>6.9.5 </span>Implementation notes</h4>
+ <h4 id=implementation-notes><span class=secno>6.10.5 </span>Implementation notes</h4>
<p>How user agents present the above conceptual model to the user is
not defined. The undo interface could be a filtered view of the
@@ -44490,7 +44650,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
- <h3 id=command-apis><span class=secno>6.10 </span>Command APIs</h3>
+ <h3 id=command-apis><span class=secno>6.11 </span>Command APIs</h3>
<p>The <dfn id=execCommand title=dom-document-execCommand><code>execCommand(<var title="">commandId</var>, <var title="">showUI</var>, <var title="">value</var>)</code></dfn> method on the
<code><a href=#htmldocument>HTMLDocument</a></code> interface allows scripts to perform
@@ -56799,7 +56959,7 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
"<code title="">center</code>", are expected to center text within
themselves, as if they had their 'text-align' property set to
'center' in a <a href=#presentational-hints title="presentational hints">presentational
- hint</a>, and to <a href=#align-descendents>align descendents</a> to the center.</p>
+ hint</a>, and to <a href=#align-descendants>align descendants</a> to the center.</p>
<p>The <code><a href=#the-div-element>div</a></code>, <code><a href=#the-caption-element>caption</a></code>, <code><a href=#the-thead-element>thead</a></code>,
<code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-tfoot-element>tfoot</a></code>, <code><a href=#the-tr-element>tr</a></code>,
@@ -56808,7 +56968,7 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
<a href=#ascii-case-insensitive>ASCII case-insensitive</a> match for the string "<code title="">left</code>", are expected to left-align text within
themselves, as if they had their 'text-align' property set to 'left'
in a <a href=#presentational-hints title="presentational hints">presentational hint</a>,
- and to <a href=#align-descendents>align descendents</a> to the left.</p>
+ and to <a href=#align-descendants>align descendants</a> to the left.</p>
<p>The <code><a href=#the-div-element>div</a></code>, <code><a href=#the-caption-element>caption</a></code>, <code><a href=#the-thead-element>thead</a></code>,
<code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-tfoot-element>tfoot</a></code>, <code><a href=#the-tr-element>tr</a></code>,
@@ -56817,7 +56977,7 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
<a href=#ascii-case-insensitive>ASCII case-insensitive</a> match for the string "<code title="">right</code>", are expected to right-align text within
themselves, as if they had their 'text-align' property set to
'right' in a <a href=#presentational-hints title="presentational hints">presentational
- hint</a>, and to <a href=#align-descendents>align descendents</a> to the right.</p>
+ hint</a>, and to <a href=#align-descendants>align descendants</a> to the right.</p>
<p>The <code><a href=#the-div-element>div</a></code>, <code><a href=#the-caption-element>caption</a></code>, <code><a href=#the-thead-element>thead</a></code>,
<code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-tfoot-element>tfoot</a></code>, <code><a href=#the-tr-element>tr</a></code>,
@@ -56826,10 +56986,10 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
<a href=#ascii-case-insensitive>ASCII case-insensitive</a> match for the string "<code title="">justify</code>", are expected to full-justify text within
themselves, as if they had their 'text-align' property set to
'justify' in a <a href=#presentational-hints title="presentational hints">presentational
- hint</a>, and to <a href=#align-descendents>align descendents</a> to the left.</p>
+ hint</a>, and to <a href=#align-descendants>align descendants</a> to the left.</p>
- <p>When a user agent is to <dfn id=align-descendents>align descendents</dfn> of a node,
- the user agent is expected to align only those descendents that have
+ <p>When a user agent is to <dfn id=align-descendants>align descendants</dfn> of a node,
+ the user agent is expected to align only those descendants that have
both their 'margin-left' and 'margin-right' properties computing to
a value other than 'auto', that are over-constrained and that have
one of those two margins with a used value forced to a greater
View
227 source
@@ -7061,6 +7061,7 @@ interface <dfn>HTMLDocument</dfn> {
attribute DOMString <span title="dom-contentEditable">contentEditable</span>;
readonly attribute boolean <span title="dom-isContentEditable">isContentEditable</span>;
attribute <span>HTMLMenuElement</span> <span title="dom-contextMenu">contextMenu</span>;
+ attribute boolean <span title="dom-spellcheck">spellcheck</span>;
// <span>styling</span>
readonly attribute <span>CSSStyleDeclaration</span> <span title="dom-style">style</span>;
@@ -7121,6 +7122,7 @@ interface <dfn>HTMLDocument</dfn> {
<dd><code title="attr-hidden">hidden</code></dd>
<dd><code title="attr-lang">lang</code></dd>
<dd><code title="attr-style">style</code></dd>
+ <dd><code title="attr-spellcheck">spellcheck</code></dd>
<dd><code title="attr-tabindex">tabindex</code></dd>
<dd><code title="attr-title">title</code></dd>
</dl>
@@ -35558,7 +35560,7 @@ interface <dfn>HTMLOptionElement</dfn> : <span>HTMLElement</span> {
<code>datagrid</code> element (the <code>select</code> or
<code>datalist</code> element), that skips all nodes other than
<code>optgroup</code> and <code>option</code> elements, as well as
- any descendents of any <code>option</code> elements.</p>
+ any descendants of any <code>option</code> elements.</p>
<p>Given a path <var title="">row</var>, the corresponding element
is the one obtained by drilling into the view, taking the child
@@ -35855,7 +35857,7 @@ interface <dfn>HTMLOptionElement</dfn> : <span>HTMLElement</span> {
<p>If the first element child of a cell's element is a
<code>select</code> element that has a no <code
title="attr-select-multiple">multiple</code> attribute and has at
- least one <code>option</code> element descendent, then the cell
+ least one <code>option</code> element descendant, then the cell
acts as a cyclable cell.</p>
<p>The "current" <code>option</code> element is the selected
@@ -35881,9 +35883,9 @@ interface <dfn>HTMLOptionElement</dfn> : <span>HTMLElement</span> {
element such that the next <code>option</code> element after the
current <code>option</code> element is the only one that is
selected (in <span>tree order</span>). If the current <code>option</code>
- element is the last <code>option</code> element descendent of the
+ element is the last <code>option</code> element descendant of the
<code>select</code>, then the first <code>option</code> element
- descendent must be selected instead.</p>
+ descendant must be selected instead.</p>
<p>The <code
title="dom-provider-setCellCheckedState">setCellCheckedState()</code>
@@ -38515,8 +38517,10 @@ explain that only direct children of the <menu> matter
<li><code>input</code> elements to which the <code
title="attr-input-readonly">readonly</code> attribute applies,
but that are not <i title="concept-input-immutable">immutable</i>
- (i.e. that do not have the attribute specified and that are not
- <span title="concept-fe-disabled">disabled</span>)</li>
+ (i.e. that do not have the <code
+ title="attr-input-readonly">readonly</code> attribute specified
+ and that are not <span
+ title="concept-fe-disabled">disabled</span>)</li>
<li><code>textarea</code> elements that do not have a <code
title="attr-textarea-readonly">readonly</code> attribute, and
@@ -49401,6 +49405,205 @@ at the first element with the given ID must be treated as if it was cloned and r
+ <h3>Spelling and grammar checking</h3>
+
+ <p>User agents can support the checking of spelling and grammar of
+ editable text, either in form controls (such as the value of
+ <code>textarea</code> elements), or in elements in an <span>editing
+ host</span> (using <code
+ title="attr-contenteditable">contenteditable</code>).</p>
+
+ <p>For each element, user agents must establish a <dfn
+ title="concept-spellcheck-default">default behavior</dfn>, either
+ through defaults or through preferences expressed by the user. There
+ are three possible default behaviors for each element:</p>
+
+ <dl>
+
+ <dt><dfn title="concept-spellcheck-default-true">true-by-default</dfn>
+
+ <dd>The element will be checked for spelling and grammar if its
+ contents are editable.
+
+ <dt><dfn title="concept-spellcheck-default-false">false-by-default</dfn>
+
+ <dd>The element will never be checked for spelling and grammar.
+
+ <dt><dfn title="concept-spellcheck-default-inherit">inherit-by-default</dfn>
+
+ <dd>The element's default behavior is the same asits parent
+ element's. Elements that have no parent element cannot have this as
+ their default behavior.
+
+ </dl>
+
+ <hr>
+
+ <p>The <dfn title="attr-spellcheck"><code>spellcheck</code></dfn>
+ attribute is an <span>enumerated attribute</span> whose keywords are
+ <code title="">true</code> and <code
+ title="">false</code>. The <code
+ title="">true</code> keyword map to the <i>true</i> state. The <code
+ title="">false</code> keyword maps to the <i>false</i> state. In
+ addition, there is a third state, the <i>inherit</i> state, which is
+ the <i>missing value default</i> (and the <i>invalid value
+ default</i>).</p>
+
+ <hr>
+
+ <p>The <dfn title="dom-spellcheck"><code>spellcheck</code></dfn> DOM
+ attribute, on getting, must return true if the element's <code
+ title="attr-spellcheck">spellcheck</code> content attribute is in
+ the <i>true</i> state, or if the element's <code
+ title="attr-spellcheck">spellcheck</code> content attribute is in
+ the <i>inherit</i> state and the element's <span
+ title="concept-spellcheck-default">default behavior</span> is <span
+ title="concept-spellcheck-default-true">true-by-default</span>, or
+ if the element's <code title="attr-spellcheck">spellcheck</code>
+ content attribute is in the <i>inherit</i> state and the element's
+ <span title="concept-spellcheck-default">default behavior</span> is
+ <span
+ title="concept-spellcheck-default-inherit">inherit-by-default</span>
+ and the element's parent element's <code
+ title="dom-spellcheck">spellcheck</code> DOM attribute would return
+ true; otherwise, if none of those conditions applies, then the
+ attribute must instead return false.</p>
+
+ <p class="note">The <code title="dom-spellcheck">spellcheck</code>
+ DOM attribute is not affected by user preferences that override the
+ <code title="attr-spellcheck">spellcheck</code> content attribute,
+ and therefore might not reflect the actual spellchecking state.</p>
+
+ <p>On setting, if the new value is true, then the element's <code
+ title="attr-spellcheck">spellcheck</code> content attribute must be
+ set to the literal string "<code title="">true</code>", otherwise it
+ must be set to the literal string "<code title="">false</code>".
+
+ <hr>
+
+ <p>User agents must only consider the following pieces of text as
+ checkable for the purposes of this feature:</p>
+
+ <ul>
+
+ <li>The value of <code>input</code> elements to which the <code
+ title="attr-input-readonly">readonly</code> attribute applies, but
+ that are not <i title="concept-input-immutable">immutable</i>
+ (i.e. that do not have the <code
+ title="attr-input-readonly">readonly</code> attribute specified and
+ that are not <span
+ title="concept-fe-disabled">disabled</span>).</li>
+
+ <li>The value of <code>textarea</code> elements that do not have a
+ <code title="attr-textarea-readonly">readonly</code> attribute and
+ that are not <span
+ title="concept-fe-disabled">disabled</span>.</li>
+
+ <li>Text in <span title="text node">text nodes</span> that are
+ children of <span>editable</span> elements.</li>
+
+ <li>Text in attributes of <span>editable</span> elements.</li>
+
+ </ul>
+
+ <p>For text that is part of a <span>text node</span>, the element
+ with which the text is associated is the element that is the
+ immediate parent of the first character of the word, sentence, or
+ other piece of text. For text in attributes, it is the attribute's
+ element. For the values of <code>input</code> and
+ <code>textarea</code> elements, it is the element itself.</p>
+
+ <p>To determine if a word, sentence, or other piece of text in an
+ applicable element (as defined above) is to have spelling- and/or
+ grammar-checking enabled, the UA must use the following
+ algorithm:</p>
+
+ <ol>
+
+ <!-- user override -->
+
+ <li>If the user has disabled the checking for this text, then the
+ checking is disabled.</li>
+
+ <li>Otherwise, if the user has forced the checking for this text to
+ always be enabled, then the checking is enabled.</li>
+
+ <!-- content attribute: on, off -->
+
+ <li>Otherwise, if the element with which the text is associated has
+ a <code title="attr-spellcheck">spellcheck</code> content
+ attribute, then: if that attribute is in the <i>true</i> state,
+ then checking is enabled; otherwise, if that attribute is in the
+ <i>false</i> state, then checking is disabled.</li>
+
+ <!-- inherit, if there is one to inherit from -->
+
+ <li>Otherwise, if there is an ancestor element with a <code
+ title="attr-spellcheck">spellcheck</code> content attribute that is
+ not in the <i>inherit</i> state, then: if the nearest such
+ ancestor's <code title="attr-spellcheck">spellcheck</code> content
+ attribute is in the <i>true</i> state, then checking is enabled;
+ otherwise, checking is disabled.</li>
+
+ <!-- default -->
+
+ <li>Otherwise, if the element's <span
+ title="concept-spellcheck-default">default behavior</span> is <span
+ title="concept-spellcheck-default-true">true-by-default</span>,
+ then checking is enabled.</li>
+
+ <li>Otherwise, if the element's <span
+ title="concept-spellcheck-default">default behavior</span> is <span
+ title="concept-spellcheck-default-false">false-by-default</span>,
+ then checking is disabled.</li>
+
+ <!-- default inheritance -->
+
+ <li>Otherwise, if the element's parent element has <em>its</em>
+ checking enabled, then checking is enabled.</li>
+
+ <li>Otherwise, checking is disabled.</li>
+
+ </ol>
+
+ <p>If the checking is enabled for a word/sentence/text, the user
+ agent should indicate spelling and/or grammar errors in that
+ text. User agents should take into account the other semantics given
+ in the document when suggesting spelling and grammar
+ corrections. User agents may use the language of the element to
+ determine what spelling and grammar rules to use, or may use the
+ user's preferred language settings. UAs should use
+ <code>input</code> element attributes such as <code
+ title="attr-input-pattern">pattern</code> to ensure that the
+ resulting value is valid, where possible.</p>
+
+ <p>If checking is disabled, the user agent should not indicate
+ spelling or grammar errors for that text.</p>
+
+ <div class="example">
+
+ <p>The element with ID "a" in the following example would be the
+ one used to determine if the word "Hello" is checked for spelling
+ errors. In this example, it would not be.</p>
+
+ <pre>&lt;div contenteditable="true">
+ &lt;span spellcheck="false" id="a">Hell&lt;/span>&lt;em>o!&lt;/em>
+&lt;/div></pre>
+
+ <p>The element with ID "b" in the following example would have
+ checking enabled (the leading space character in the attribute's
+ value on the <code>input</code> element causes the attribute to be
+ ignored, so the ancestor's value is used instead, regardless of the
+ default).</p>
+
+ <pre>&lt;p spellcheck="true">
+ &lt;label>Name: &lt;input spellcheck=" false" id="b">&lt;/label>
+&lt;/p></pre>
+
+ </div>
+
+
+
<h3 id="dnd"><dfn>Drag and drop</dfn></h3>
<!--XXX
@@ -62266,7 +62469,7 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
"<code title="">center</code>", are expected to center text within
themselves, as if they had their 'text-align' property set to
'center' in a <span title="presentational hints">presentational
- hint</span>, and to <span>align descendents</span> to the center.</p>
+ hint</span>, and to <span>align descendants</span> to the center.</p>
<p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
<code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
@@ -62276,7 +62479,7 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
title="">left</code>", are expected to left-align text within
themselves, as if they had their 'text-align' property set to 'left'
in a <span title="presentational hints">presentational hint</span>,
- and to <span>align descendents</span> to the left.</p>
+ and to <span>align descendants</span> to the left.</p>
<p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
<code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
@@ -62286,7 +62489,7 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
title="">right</code>", are expected to right-align text within
themselves, as if they had their 'text-align' property set to
'right' in a <span title="presentational hints">presentational
- hint</span>, and to <span>align descendents</span> to the right.</p>
+ hint</span>, and to <span>align descendants</span> to the right.</p>
<p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
<code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
@@ -62296,10 +62499,10 @@ tfoot[valign=baseline], tr[valign=baseline], td[valign=baseline], th[valign=base
title="">justify</code>", are expected to full-justify text within
themselves, as if they had their 'text-align' property set to
'justify' in a <span title="presentational hints">presentational
- hint</span>, and to <span>align descendents</span> to the left.</p>
+ hint</span>, and to <span>align descendants</span> to the left.</p>
- <p>When a user agent is to <dfn>align descendents</dfn> of a node,
- the user agent is expected to align only those descendents that have
+ <p>When a user agent is to <dfn>align descendants</dfn> of a node,
+ the user agent is expected to align only those descendants that have
both their 'margin-left' and 'margin-right' properties computing to
a value other than 'auto', that are over-constrained and that have
one of those two margins with a used value forced to a greater

0 comments on commit 92e09d0

Please sign in to comment.