<?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>94429</bug_id>
          
          <creation_ts>2012-08-19 10:35:15 -0700</creation_ts>
          <short_desc>TextIterator takes O(n^2) to iterate over n empty blocks</short_desc>
          <delta_ts>2012-08-21 09:44:07 -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>HTML Editing</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>enrica</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>699048</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-08-19 10:35:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/12104508&gt;

Iterating over a structure like
&lt;div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
        ⋮
    &lt;div&gt;&lt;/div&gt;
&lt;/div&gt;

using TextIterator takes O(n^2) in the number of blocks, since shouldRepresentNodeOffsetZero() creates a VisiblePosition for each block, which in turn requires iterating over all successive blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699049</commentid>
    <comment_count>1</comment_count>
      <attachid>159299</attachid>
    <who name="">mitz</who>
    <bug_when>2012-08-19 10:39:22 -0700</bug_when>
    <thetext>Created attachment 159299
Improve shouldRepresentNodeOffsetZero()’s check for nodes that cannot contain a VisiblePosition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699114</commentid>
    <comment_count>2</comment_count>
      <attachid>159299</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-19 16:09:17 -0700</bug_when>
    <thetext>Comment on attachment 159299
Improve shouldRepresentNodeOffsetZero()’s check for nodes that cannot contain a VisiblePosition

Looks good. Is this a case where making a performance test that can detect n vs n^2 would be a good idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700840</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-08-21 09:44:07 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r126164&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159299</attachid>
            <date>2012-08-19 10:39:22 -0700</date>
            <delta_ts>2012-08-19 16:09:17 -0700</delta_ts>
            <desc>Improve shouldRepresentNodeOffsetZero()’s check for nodes that cannot contain a VisiblePosition</desc>
            <filename>12104508_r1.diff</filename>
            <type>text/plain</type>
            <size>2352</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTk3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTE5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMTA0
NTA4PiBUZXh0SXRlcmF0b3IgdGFrZXMgTyhuXjIpIHRvIGl0ZXJhdGUgb3ZlciBuIGVtcHR5IGJs
b2NrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIGJlY2F1c2UgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgorCisgICAgICAgICogZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpz
aG91bGRSZXByZXNlbnROb2RlT2Zmc2V0WmVybyk6IEVuaGFuY2VkIHRoZSBjaGVjayBmb3Igbm9k
ZXMgdGhhdAorICAgICAgICBjYW5ub3QgY29udGFpbiBWaXNpYmxlUG9zaXRpb24gdG8gYWxzbyBj
aGVjayBmb3IgemVyby1oZWlnaHQgYmxvY2tzLgorCiAyMDEyLTA4LTE5ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
bWFrZSBkaXN0Y2hlY2suCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCShyZXZpc2lvbiAxMjU5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxleGV5IFByb3NrdXJ5YWtvdi4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTg5Myw5ICs4OTMsMTAgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJl
cHJlc2VudE5vZGVPZgogICAgIC8vIElmIHRoaXMgbm9kZSBpcyB1bnJlbmRlcmVkIG9yIGludmlz
aWJsZSB0aGUgVmlzaWJsZVBvc2l0aW9uIGNoZWNrcyBiZWxvdyB3b24ndCBoYXZlIG11Y2ggbWVh
bmluZy4KICAgICAvLyBBZGRpdGlvbmFsbHksIGlmIHRoZSByYW5nZSB3ZSBhcmUgaXRlcmF0aW5n
IG92ZXIgY29udGFpbnMgaHVnZSBzZWN0aW9ucyBvZiB1bnJlbmRlcmVkIGNvbnRlbnQsIAogICAg
IC8vIHdlIHdvdWxkIGNyZWF0ZSBWaXNpYmxlUG9zaXRpb25zIG9uIGV2ZXJ5IGNhbGwgdG8gdGhp
cyBmdW5jdGlvbiB3aXRob3V0IHRoaXMgY2hlY2suCi0gICAgaWYgKCFtX25vZGUtPnJlbmRlcmVy
KCkgfHwgbV9ub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSkKKyAgICBpZiAoIW1fbm9kZS0+cmVuZGVyZXIoKSB8fCBtX25vZGUtPnJlbmRlcmVyKCktPnN0
eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFCisgICAgICAgIHx8IChtX25vZGUtPnJlbmRl
cmVyKCktPmlzQmxvY2tGbG93KCkgJiYgIXRvUmVuZGVyQmxvY2sobV9ub2RlLT5yZW5kZXJlcigp
KS0+aGVpZ2h0KCkgJiYgIW1fbm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIFRoZSBzdGFydFBvcy5pc05vdE51bGwoKSBjaGVj
ayBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgc3RhcnQgY291bGQgYmUgYmVmb3JlIHRoZSBib2R5LAog
ICAgIC8vIGFuZCBpbiB0aGF0IGNhc2Ugd2UnbGwgZ2V0IG51bGwuIFdlIGRvbid0IHdhbnQgdG8g
cHV0IGluIG5ld2xpbmVzIGF0IHRoZSBzdGFydCBpbiB0aGF0IGNhc2UuCiAgICAgLy8gVGhlIGN1
cnJQb3MuaXNOb3ROdWxsKCkgY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgcG9zaXRpb25zIGluIG5v
bi1IVE1MIGNvbnRlbnQK
</data>
<flag name="review"
          id="169578"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>