<?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>142295</bug_id>
          
          <creation_ts>2015-03-04 11:03:46 -0800</creation_ts>
          <short_desc>optimize content extension backend</short_desc>
          <delta_ts>2015-03-04 20:54:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore 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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1074127</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-04 11:03:46 -0800</bug_when>
    <thetext>Some small optimizations go a long way.

There&apos;s no need to add duplicate actions to the serialized list as long as order is preserved.  We can&apos;t check the whole list to see if a duplicate action has been added, because that would break ignore-previous-rules, but we can check the previous action, which is where most of the duplicate actions will be.

Also, ignore-previous-rules ignores the previous rules only in that extension, but block can return early without processing other extensions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074130</commentid>
    <comment_count>1</comment_count>
      <attachid>247872</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-04 11:13:36 -0800</bug_when>
    <thetext>Created attachment 247872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074315</commentid>
    <comment_count>2</comment_count>
      <attachid>247872</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-04 17:50:25 -0800</bug_when>
    <thetext>Comment on attachment 247872
Patch

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

&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:58
&gt; +        if (ruleIndex &amp;&amp; rule.action() == ruleList[ruleIndex - 1].action())
&gt; +            continue;

I don&apos;t think that is right, actionLocations should point to actionLocations[ruleIndex - 1] instead of actions.size()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074348</commentid>
    <comment_count>3</comment_count>
      <attachid>247920</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-04 19:15:18 -0800</bug_when>
    <thetext>Created attachment 247920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074380</commentid>
    <comment_count>4</comment_count>
      <attachid>247920</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 20:54:33 -0800</bug_when>
    <thetext>Comment on attachment 247920
Patch

Clearing flags on attachment: 247920

Committed r181065: &lt;http://trac.webkit.org/changeset/181065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074381</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 20:54:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247872</attachid>
            <date>2015-03-04 11:13:36 -0800</date>
            <delta_ts>2015-03-04 19:15:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142295-20150304111317.patch</filename>
            <type>text/plain</type>
            <size>3052</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAzLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT3B0aW1pemUg
Y29udGVudCBleHRlbnNpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnNlcmlhbGl6ZUFjdGlv
bnMpOgorICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGFkZCBkdXBsaWNhdGUgc2VxdWVudGlh
bCBhY3Rpb25zLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25S
dWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjpvcGVy
YXRvcj09KToKKyAgICAgICAgQWRkZWQgdG8gY29tcGFyZSBhY3Rpb25zLgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rp
b25zRm9yVVJMKToKKyAgICAgICAgUmV0dXJuIGVhcmx5IGlmIGEgYmxvY2sgYWN0aW9uIGlzIGZv
dW5kIGluc3RlYWQgb2YgbW92aW5nIHRvIHRoZSBuZXh0IGV4dGVuc2lvbi4KKwogMjAxNS0wMy0w
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVwZGF0ZSBiaW5kaW5ncyB0ZXN0cyBhZnRlciByMTgxMDAxLgpJbmRleDogU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODEwMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw2ICs1NCw5IEBAIHN0YXRpYyBWZWN0b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMK
ICAgICAgICAgY29uc3QgQ29udGVudEV4dGVuc2lvblJ1bGUmIHJ1bGUgPSBydWxlTGlzdFtydWxl
SW5kZXhdOwogICAgICAgICBhY3Rpb25Mb2NhdGlvbnMuYXBwZW5kKGFjdGlvbnMuc2l6ZSgpKTsK
ICAgICAgICAgCisgICAgICAgIGlmIChydWxlSW5kZXggJiYgcnVsZS5hY3Rpb24oKSA9PSBydWxl
TGlzdFtydWxlSW5kZXggLSAxXS5hY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAKICAgICAgICAgc3dpdGNoIChydWxlLmFjdGlvbigpLnR5cGUoKSkgewogICAgICAgICBj
YXNlIEFjdGlvblR5cGU6OkludmFsaWRBY3Rpb246CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCShyZXZpc2lvbiAxODEwMDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSwxMSBAQCBzdHJ1Y3QgQWN0aW9uIHsKICAgICB7
CiAgICAgICAgIEFTU0VSVCh0eXBlICE9IEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lKTsKICAg
ICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbiYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZQorICAgICAgICAgICAgJiYg
bV9jc3NTZWxlY3RvciA9PSBvdGhlci5tX2Nzc1NlbGVjdG9yOworICAgIH0KICAgICBzdGF0aWMg
QWN0aW9uIGRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mLCB1
bnNpZ25lZCBsb2NhdGlvbik7CiAKICAgICBBY3Rpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAkocmV2aXNpb24gMTgx
MDAyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBWZWN0b3I8QWN0
aW9uPiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGFjdGlvbnMuYXBwZW5kKGFjdGlvbik7CiAgICAgICAgICAgICAg
ICAgaWYgKGFjdGlvbi50eXBlKCkgPT0gQWN0aW9uVHlwZTo6QmxvY2tMb2FkKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnM7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247920</attachid>
            <date>2015-03-04 19:15:18 -0800</date>
            <delta_ts>2015-03-04 20:54:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142295-20150304191459.patch</filename>
            <type>text/plain</type>
            <size>3218</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTA0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAzLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT3B0aW1pemUg
Y29udGVudCBleHRlbnNpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnNlcmlhbGl6ZUFjdGlv
bnMpOgorICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGFkZCBkdXBsaWNhdGUgc2VxdWVudGlh
bCBhY3Rpb25zLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25S
dWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uOjpvcGVy
YXRvcj09KToKKyAgICAgICAgQWRkZWQgdG8gY29tcGFyZSBhY3Rpb25zLgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rp
b25zRm9yVVJMKToKKyAgICAgICAgUmV0dXJuIGVhcmx5IGlmIGEgYmxvY2sgYWN0aW9uIGlzIGZv
dW5kIGluc3RlYWQgb2YgbW92aW5nIHRvIHRoZSBuZXh0IGV4dGVuc2lvbi4KKwogMjAxNS0wMy0w
NCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjE3OTU5Nyk6IENhbid0IHNlZSBwb3dlciBzYXZlciBiYW5uZXIgZm9yIHBsdWdpbnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAkocmV2aXNpb24gMTgxMDQzKQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTIgQEAgc3RhdGljIFZlY3Rvcjx1bnNpZ25lZD4gc2Vy
aWFsaXplQWN0aW9ucwogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHJ1bGVJbmRleCA9IDA7
IHJ1bGVJbmRleCA8IHJ1bGVMaXN0LnNpemUoKTsgKytydWxlSW5kZXgpIHsKICAgICAgICAgY29u
c3QgQ29udGVudEV4dGVuc2lvblJ1bGUmIHJ1bGUgPSBydWxlTGlzdFtydWxlSW5kZXhdOworICAg
ICAgICAKKyAgICAgICAgLy8gSWRlbnRpY2FsIHNlcXVlbnRpYWwgYWN0aW9ucyBzaG91bGQgbm90
IGJlIHJld3JpdHRlbi4KKyAgICAgICAgaWYgKHJ1bGVJbmRleCAmJiBydWxlLmFjdGlvbigpID09
IHJ1bGVMaXN0W3J1bGVJbmRleCAtIDFdLmFjdGlvbigpKSB7CisgICAgICAgICAgICBhY3Rpb25M
b2NhdGlvbnMuYXBwZW5kKGFjdGlvbkxvY2F0aW9uc1tydWxlSW5kZXggLSAxXSk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBhY3Rpb25Mb2NhdGlvbnMuYXBwZW5k
KGFjdGlvbnMuc2l6ZSgpKTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAocnVsZS5hY3Rpb24o
KS50eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25SdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAkocmV2aXNpb24gMTgxMDQzKQorKysgU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTEgQEAgc3RydWN0IEFjdGlvbiB7CiAgICAgewogICAg
ICAgICBBU1NFUlQodHlwZSAhPSBBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZSk7CiAgICAgfQor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUKKyAgICAgICAgICAgICYmIG1fY3Nz
U2VsZWN0b3IgPT0gb3RoZXIubV9jc3NTZWxlY3RvcjsKKyAgICB9CiAgICAgc3RhdGljIEFjdGlv
biBkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiwgdW5zaWdu
ZWQgbG9jYXRpb24pOwogCiAgICAgQWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAJKHJldmlzaW9uIDE4MTA0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgVmVjdG9yPEFjdGlvbj4g
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBhY3Rpb25zLmFwcGVuZChhY3Rpb24pOwogICAgICAgICAgICAgICAgIGlm
IChhY3Rpb24udHlwZSgpID09IEFjdGlvblR5cGU6OkJsb2NrTG9hZCkKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>