<?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>100395</bug_id>
          
          <creation_ts>2012-10-25 10:32:13 -0700</creation_ts>
          <short_desc>Avoid unnecessary style recalcs on id attribute mutation</short_desc>
          <delta_ts>2012-11-02 12:38:03 -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>CSS</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>750979</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-25 10:32:13 -0700</bug_when>
    <thetext>There is no need to invalidate element style on id attribute change if neither the old nor the new id were mentioned in any stylesheet. This is similar to the optimization we already have for class attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750999</commentid>
    <comment_count>1</comment_count>
      <attachid>170690</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-25 10:47:13 -0700</bug_when>
    <thetext>Created attachment 170690
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751009</commentid>
    <comment_count>2</comment_count>
      <attachid>170690</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-10-25 10:55:21 -0700</bug_when>
    <thetext>Comment on attachment 170690
patch

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

Why didn&apos;t we do this already? r=me

&gt; Source/WebCore/css/StyleResolver.cpp:4241
&gt; +bool StyleResolver::hasSelectorForId(const AtomicString &amp;idValue) const

OH GOD &amp; PLACEMENT

&gt; Source/WebCore/dom/Element.cpp:716
&gt; +           StyleResolver* styleResolver = document()-&gt;styleResolverIfExists();

Indentation derp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751120</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-25 12:35:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/132516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757469</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-02 12:38:03 -0700</bug_when>
    <thetext>This has caused bug 101047.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170690</attachid>
            <date>2012-10-25 10:47:13 -0700</date>
            <delta_ts>2012-10-25 10:55:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>id-mutation-recalc.patch</filename>
            <type>text/plain</type>
            <size>4404</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjUwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEwLTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBz
dHlsZSByZWNhbGNzIG9uIGlkIGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDM5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gaW52YWxp
ZGF0ZSBlbGVtZW50IHN0eWxlIG9uIGlkIGF0dHJpYnV0ZSBjaGFuZ2UgaWYgbmVpdGhlciB0aGUg
b2xkIG5vciB0aGUgbmV3IGlkIHdlcmUgCisgICAgICAgIG1lbnRpb25lZCBpbiBhbnkgc3R5bGVz
aGVldC4gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBvcHRpbWl6YXRpb24gd2UgYWxyZWFkeSBoYXZl
IGZvciBjbGFzcyBhdHRyaWJ1dGVzLgorICAgICAgICAKKyAgICAgICAgUmVjYWxjdWxhdGluZyBl
bGVtZW50IHN0eWxlIGlzIGV4cGVuc2l2ZS4gSXQgc2VlbXMgaWQgYXR0cmlidXRlIG11dGF0aW9u
IGlzIG9mdGVuIHVzZWQgaW4gc2NyaXB0cyBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiBzdHlsaW5n
LiAKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9ySWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYWtlSWRGb3JTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToK
KwogMjAxMi0xMC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWxsb3cgTG9hZGVyU3RyYXRlZ3kgdG8gb3ZlcnJpZGUgdGhlIFJlc291cmNlTG9hZFNjaGVk
dWxlcgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMTMy
MDA5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjM4LDYgKzQyMzgsMTMgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3Rv
ckZvckF0dHJpYgogICAgIHJldHVybiBtX2ZlYXR1cmVzLmF0dHJzSW5SdWxlcy5jb250YWlucyhh
dHRybmFtZS5pbXBsKCkpOwogfQogCitib29sIFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9y
SWQoY29uc3QgQXRvbWljU3RyaW5nICZpZFZhbHVlKSBjb25zdAoreworICAgIGlmIChpZFZhbHVl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2ZlYXR1cmVz
Lmlkc0luUnVsZXMuY29udGFpbnMoaWRWYWx1ZS5pbXBsKCkpOworfQorCiB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFkZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdChjb25zdCBNZWRpYVF1
ZXJ5RXhwKiBleHByLCBib29sIHJlc3VsdCkKIHsKICAgICBtX3ZpZXdwb3J0RGVwZW5kZW50TWVk
aWFRdWVyeVJlc3VsdHMuYXBwZW5kKGFkb3B0UHRyKG5ldyBNZWRpYVF1ZXJ5UmVzdWx0KCpleHBy
LCByZXN1bHQpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9u
IDEzMjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxOCw2ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY29sb3JG
cm9tUHJpbWl0aXZlVmFsdWVJc0Rlcml2ZWRGcm9tRWxlbWVudChDU1NQcmltaXRpdmVWYWx1ZSop
OwogICAgIENvbG9yIGNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiwg
Ym9vbCBmb3JWaXNpdGVkTGluayA9IGZhbHNlKSBjb25zdDsKIAorICAgIGJvb2wgaGFzU2VsZWN0
b3JGb3JJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKICAgICBib29sIGhhc1NlbGVjdG9y
Rm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogCiAgICAgQ1NTRm9udFNl
bGVjdG9yKiBmb250U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRTZWxlY3Rvci5nZXQo
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTMyMDA3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsNiArNjk1
LDEzIEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmEKICAgICAgICAg
ZGlkTW9kaWZ5QXR0cmlidXRlKCpleGlzdGluZ0F0dHJpYnV0ZSk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgQXRvbWljU3RyaW5nIG1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbihjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlLCBib29sIGluUXVpcmtzTW9kZSkKK3sKKyAgICBpZiAoaW5RdWlya3NNb2RlKQor
ICAgICAgICByZXR1cm4gdmFsdWUubG93ZXIoKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIHZv
aWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkK
IHsKICAgICBwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwpAQCAtNzAyLDE0ICs3MDksMTMgQEAg
dm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0dAogICAgIGRvY3VtZW50KCkt
PmluY0RPTVRyZWVWZXJzaW9uKCk7CiAKICAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0cmli
dXRlLm5hbWUoKSkpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS52YWx1ZSgpICE9IGF0dHJpYnV0
ZURhdGEoKS0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSkgewotICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVEYXRhKCktPnNldElkRm9y
U3R5bGVSZXNvbHV0aW9uKG51bGxBdG9tKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpKQotICAgICAgICAgICAgICAgIGF0dHJpYnV0ZURhdGEoKS0+c2V0
SWRGb3JTdHlsZVJlc29sdXRpb24oYXR0cmlidXRlLnZhbHVlKCkubG93ZXIoKSk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlRGF0YSgpLT5zZXRJZEZvclN0eWxl
UmVzb2x1dGlvbihhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgICAgICAgICBzZXROZWVkc1N0eWxl
UmVjYWxjKCk7CisgICAgICAgIEF0b21pY1N0cmluZyBvbGRJZCA9IGF0dHJpYnV0ZURhdGEoKS0+
aWRGb3JTdHlsZVJlc29sdXRpb24oKTsKKyAgICAgICAgQXRvbWljU3RyaW5nIG5ld0lkID0gbWFr
ZUlkRm9yU3R5bGVSZXNvbHV0aW9uKGF0dHJpYnV0ZS52YWx1ZSgpLCBkb2N1bWVudCgpLT5pblF1
aXJrc01vZGUoKSk7CisgICAgICAgIGlmIChuZXdJZCAhPSBvbGRJZCkgeworICAgICAgICAgICAg
YXR0cmlidXRlRGF0YSgpLT5zZXRJZEZvclN0eWxlUmVzb2x1dGlvbihuZXdJZCk7CisgICAgICAg
ICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29s
dmVySWZFeGlzdHMoKTsKKyAgICAgICAgICAgIGlmIChhdHRhY2hlZCgpICYmICghc3R5bGVSZXNv
bHZlciB8fCAoc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0b3JGb3JJZChuZXdJZCkgfHwgc3R5bGVS
ZXNvbHZlci0+aGFzU2VsZWN0b3JGb3JJZChvbGRJZCkpKSkKKyAgICAgICAgICAgICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gSFRNTE5hbWVzOjpuYW1lQXR0cikKICAgICAgICAgc2V0SGFzTmFtZSghYXR0cmli
dXRlLmlzTnVsbCgpKTsK
</data>
<flag name="review"
          id="184372"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>