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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>88618</bug_id>
          
          <creation_ts>2012-06-07 22:08:02 -0700</creation_ts>
          <short_desc>[chromium] Use the marker region to replace a misspelled word with a suggestion</short_desc>
          <delta_ts>2012-06-13 21:08:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hironori Bono">hbono</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jiapu.mail</cc>
    
    <cc>morrita</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>644322</commentid>
    <comment_count>0</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-06-07 22:08:02 -0700</bug_when>
    <thetext>Greetings,

Our new spellchecker adds markers to wrongly-separated words. For example, when we type a sentence &quot;dive in to the rabbit hole&quot;, it adds a marker to &apos;in to&apos; and adds a suggestion &apos;into&apos;. Unfortunately, when we choose the suggestion &quot;into&quot;, Chromium replaces only the word selected by caret with the suggestion. (For this case, it replaces &apos;in&apos; or &apos;to&apos; with &apos;into&apos;.) To fix this problem, I would like to change Chromium to use a marker region to replace a misspelled region.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644351</commentid>
    <comment_count>1</comment_count>
      <attachid>146482</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-06-07 22:48:23 -0700</bug_when>
    <thetext>Created attachment 146482
Patch v0

Greetings,

I have quickly implemented a function that replaces the range of a misspelled marker with text. Would it be possible to review this change?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644354</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 22:51:26 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644364</commentid>
    <comment_count>3</comment_count>
      <attachid>146482</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 23:10:31 -0700</bug_when>
    <thetext>Comment on attachment 146482
Patch v0

View in context: https://bugs.webkit.org/attachment.cgi?id=146482&amp;action=review

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1363
&gt; +    // If this caret selection has two or more markers, this function replace the range covered by the first marker with the specified word as Microsoft Word does.
&gt; +    if (pluginContainerFromFrame(frame()))
&gt; +        return;
&gt; +    RefPtr&lt;Range&gt; caretRange = frame()-&gt;selection()-&gt;toNormalizedRange();
&gt; +    if (!caretRange)
&gt; +        return;
&gt; +    Vector&lt;DocumentMarker*&gt; markers = frame()-&gt;document()-&gt;markers()-&gt;markersInRange(caretRange.get(), DocumentMarker::Spelling | DocumentMarker::Grammar);
&gt; +    if (markers.size() &lt; 1 || markers[0]-&gt;startOffset() &gt;= markers[0]-&gt;endOffset())
&gt; +        return;
&gt; +    RefPtr&lt;Range&gt; markerRange = TextIterator::rangeFromLocationAndLength(frame()-&gt;selection()-&gt;rootEditableElementOrDocumentElement(), markers[0]-&gt;startOffset(), markers[0]-&gt;endOffset() - markers[0]-&gt;startOffset());
&gt; +    if (!markerRange.get() || !frame()-&gt;selection()-&gt;shouldChangeSelection(markerRange.get()))
&gt; +        return;
&gt; +    frame()-&gt;selection()-&gt;setSelection(markerRange.get(), CharacterGranularity);
&gt; +    frame()-&gt;editor()-&gt;replaceSelectionWithText(text, false, true);

This code looks awfully familiar. In fact, I saw almost exactly same comment elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644426</commentid>
    <comment_count>4</comment_count>
      <attachid>146482</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-08 00:39:23 -0700</bug_when>
    <thetext>Comment on attachment 146482
Patch v0

View in context: https://bugs.webkit.org/attachment.cgi?id=146482&amp;action=review

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1363
&gt;&gt; +    frame()-&gt;editor()-&gt;replaceSelectionWithText(text, false, true);
&gt; 
&gt; This code looks awfully familiar. In fact, I saw almost exactly same comment elsewhere.

Searched with replaceSelectionWithText(), but I couldn&apos;t find any. 
It looks Mac port (and other ports) does this in WebKit layer for obeying AppKit protocol or whatever reason.

I hope this core logic to be a Editor method to allow future refactoring though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644438</commentid>
    <comment_count>5</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-06-08 00:52:53 -0700</bug_when>
    <thetext>Greetings Niwa-san,

Thanks for your comment. To use code search, my code seems to be a subset of AlternativeTextController::handleAlternativeTextUIResult() &lt;http://code.google.com/searchframe#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/editing/AlternativeTextController.cpp&amp;exact_package=chromium&amp;q=handleAlternativeTextUIResult&amp;type=cs&amp;l=354&gt; in terms of functionality. (This function is for the auto-correction panel of Mac and not used by Chromium, though.)

Regards,

Hironori Bono

(In reply to comment #3)
&gt; This code looks awfully familiar. In fact, I saw almost exactly same comment elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644446</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-08 01:00:48 -0700</bug_when>
    <thetext>Alexey and Enrica might know where this code is located in Mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646560</commentid>
    <comment_count>7</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-06-11 19:30:53 -0700</bug_when>
    <thetext>Greetings Niwa-san,

For what it&apos;s worth, I wonder how I should treat this change. Is it better to move this code to WebCore (Editor), or to keep it in the WebKit layer?

Regards,

Hironori Bono

(In reply to comment #6)
&gt; Alexey and Enrica might know where this code is located in Mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648718</commentid>
    <comment_count>8</comment_count>
      <attachid>146482</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-13 20:05:10 -0700</bug_when>
    <thetext>Comment on attachment 146482
Patch v0

Looks ok.  We can share code later if one wants to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648769</commentid>
    <comment_count>9</comment_count>
      <attachid>146482</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 21:08:33 -0700</bug_when>
    <thetext>Comment on attachment 146482
Patch v0

Clearing flags on attachment: 146482

Committed r120274: &lt;http://trac.webkit.org/changeset/120274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648770</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 21:08:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146482</attachid>
            <date>2012-06-07 22:48:23 -0700</date>
            <delta_ts>2012-06-13 21:08:33 -0700</delta_ts>
            <desc>Patch v0</desc>
            <filename>issue88618-patch0.txt</filename>
            <type>text/plain</type>
            <size>4016</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTk3OTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDEyLTA2LTA3ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYkZyYW1lOjpyZXBsYWNlTWlzc3BlbGxlZFJhbmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODYxOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGFkZHMgV2ViRnJhbWU6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UsIHdoaWNoIHJlcGxhY2VzIHRo
ZSByYW5nZSBvZiBhCisgICAgICAgIG1pc3NwZWxsZWQgbWFya2VyIHdpdGggdGV4dCBzbyBDaHJv
bWl1bSBjYW4gdXNlIGl0IGZvciByZXBsYWNpbmcgbWlzc3BlbGxlZAorICAgICAgICB3b3JkcyB3
aXRoIHN1Z2dldGlvbnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAg
KFdlYkZyYW1lKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpyZXBsYWNlTWlzc3BlbGxlZFJhbmdlKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViRnJhbWVJ
bXBsKToKKwogMjAxMi0wNi0wNyAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtL21hY10gSW1wcm92ZSBkZXZpY2VEUEksIHJlY3QsIGFuZCBhdmFp
bGFibGVSZWN0IGNvbXB1dGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lLmgJKHJldmlzaW9uIDExOTc4NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw2ICs0MzQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKGJvb2wp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RUZXh0Q2hlY2tpbmcoY29uc3Qg
V2ViRWxlbWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZU1pc3NwZWxsZWRSYW5n
ZShjb25zdCBXZWJTdHJpbmcmKSA9IDA7CiAKICAgICAvLyBTZWxlY3Rpb24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiAx
MTk3ODUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzQ1LDYgKzEzNDUsMjQgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnJl
cXVlc3RUZXh0Q2hlY2tpbmcoYwogICAgIGZyYW1lKCktPmVkaXRvcigpLT5zcGVsbENoZWNrZXIo
KS0+cmVxdWVzdENoZWNraW5nRm9yKFNwZWxsQ2hlY2tSZXF1ZXN0OjpjcmVhdGUoVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIsIFRleHRDaGVja2luZ1By
b2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLCByYW5nZVRvQ2hlY2spKTsKIH0KIAordm9pZCBXZWJG
cmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiB0ZXh0KQor
eworICAgIC8vIElmIHRoaXMgY2FyZXQgc2VsZWN0aW9uIGhhcyB0d28gb3IgbW9yZSBtYXJrZXJz
LCB0aGlzIGZ1bmN0aW9uIHJlcGxhY2UgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhlIGZpcnN0IG1h
cmtlciB3aXRoIHRoZSBzcGVjaWZpZWQgd29yZCBhcyBNaWNyb3NvZnQgV29yZCBkb2VzLgorICAg
IGlmIChwbHVnaW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUoKSkpCisgICAgICAgIHJldHVybjsK
KyAgICBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2UgPSBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+dG9O
b3JtYWxpemVkUmFuZ2UoKTsKKyAgICBpZiAoIWNhcmV0UmFuZ2UpCisgICAgICAgIHJldHVybjsK
KyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZnJhbWUoKS0+ZG9jdW1lbnQo
KS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZShjYXJldFJhbmdlLmdldCgpLCBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CisgICAgaWYgKG1hcmtl
cnMuc2l6ZSgpIDwgMSB8fCBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpID49IG1hcmtlcnNbMF0t
PmVuZE9mZnNldCgpKQorICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJS
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBtYXJr
ZXJzWzBdLT5zdGFydE9mZnNldCgpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSAtIG1hcmtlcnNb
MF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgIGlmICghbWFya2VyUmFuZ2UuZ2V0KCkgfHwgIWZyYW1l
KCktPnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkp
KQorICAgICAgICByZXR1cm47CisgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlv
bihtYXJrZXJSYW5nZS5nZXQoKSwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIGZyYW1lKCkt
PmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIHRydWUpOwor
fQorCiBib29sIFdlYkZyYW1lSW1wbDo6aGFzU2VsZWN0aW9uKCkgY29uc3QKIHsKICAgICBXZWJQ
bHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9t
RnJhbWUoZnJhbWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuaAkocmV2aXNpb24gMTE5Nzg1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKGJvb2wpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENoZWNraW5nKGNvbnN0IFdlYkVsZW1lbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZU1pc3NwZWxsZWRSYW5nZShjb25zdCBXZWJTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBXZWJSYW5nZSBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IHNlbGVjdGlvbkFzVGV4dCgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>