<?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>66245</bug_id>
          
          <creation_ts>2011-08-15 12:20:16 -0700</creation_ts>
          <short_desc>garden-o-matic frontend needs a generic way to track updates.</short_desc>
          <delta_ts>2011-08-15 14:31:49 -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>Tools / Tests</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>
          
          <blocked>66144</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451206</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-15 12:20:16 -0700</bug_when>
    <thetext>garden-o-matic frontend needs a generic way to track updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451207</commentid>
    <comment_count>1</comment_count>
      <attachid>103941</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-15 12:22:57 -0700</bug_when>
    <thetext>Created attachment 103941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451208</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-15 12:23:23 -0700</bug_when>
    <thetext>As mentioned in https://bugs.webkit.org/show_bug.cgi?id=66144#c8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451247</commentid>
    <comment_count>3</comment_count>
      <attachid>103941</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-15 13:24:49 -0700</bug_when>
    <thetext>Comment on attachment 103941
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:271
&gt; +        thisObject = thisObject || {};

You and MarkM have been talking!

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:274
&gt; +            callback.call(thisObject || item, item, key, !!this._updated[key]);

How can thisObject be falsy here?  It was falsy, it would be replaced with {} above.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:278
&gt; +        removeCallback = removeCallback || function() {}

Missing ;

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:280
&gt; +            if (!updated) {

I&apos;d use early return.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:281
&gt; +                removeCallback.call(thisObject || item, item);

I&apos;d make this match forEach, whichever way you decided to make forEach work.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js:279
&gt; +    dict.purge(function() {
&gt; +        removeCount++;
&gt; +    });

I&apos;d add one test with purge that uses the thisObject parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451292</commentid>
    <comment_count>4</comment_count>
      <attachid>103941</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-15 14:27:46 -0700</bug_when>
    <thetext>Comment on attachment 103941
Patch

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:274
&gt;&gt; +            callback.call(thisObject || item, item, key, !!this._updated[key]);
&gt; 
&gt; How can thisObject be falsy here?  It was falsy, it would be replaced with {} above.

Oops. I didn&apos;t mean to leave the one at the top.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:278
&gt;&gt; +        removeCallback = removeCallback || function() {}
&gt; 
&gt; Missing ;

I blame Python.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:280
&gt;&gt; +            if (!updated) {
&gt; 
&gt; I&apos;d use early return.

Sounds good, will change.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:281
&gt;&gt; +                removeCallback.call(thisObject || item, item);
&gt; 
&gt; I&apos;d make this match forEach, whichever way you decided to make forEach work.

ok.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js:279
&gt;&gt; +    });
&gt; 
&gt; I&apos;d add one test with purge that uses the thisObject parameter.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451297</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-15 14:31:49 -0700</bug_when>
    <thetext>Committed r93061: &lt;http://trac.webkit.org/changeset/93061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103941</attachid>
            <date>2011-08-15 12:22:57 -0700</date>
            <delta_ts>2011-08-15 14:27:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66245-20110815122256.patch</filename>
            <type>text/plain</type>
            <size>5532</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwNDUKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9i
YXNlLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Jhc2UuanMKaW5kZXggMzdkNTJmZGNjMzFlODVhMzQ0
YmVkNTJkYTZhNjRjYWFkZDMwNmZkOS4uZTViM2FiZGFhNTQyZmFhOWY5NzI1MzI4ZWFkNzYwNDcx
OWUyMDdlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Jhc2UuanMKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL2Jhc2UuanMKQEAgLTIyNiw2ICsyMjYsNjYgQEAgYmFzZS5Bc3luY2hyb25vdXND
YWNoZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykKICAgICB9KTsKIH07
CiAKKy8qCisgICAgTWFpbnRhaW5zIGEgZGljdGlvbmFyeSBvZiBpdGVtcywgdHJhY2tpbmcgdGhl
aXIgdXBkYXRlcyBhbmQgcmVtb3ZpbmcgaXRlbXMgdGhhdCBoYXZlbid0IGJlZW4gdXBkYXRlZC4K
KyAgICBBbiAidXBkYXRlIiBpcyBhIGNhbGwgdG8gdGhlICJ1cGRhdGUiIG1ldGhvZC4KKyAgICBU
byByZW1vdmUgc3RhbGUgaXRlbXMsIGNhbGwgdGhlICJyZW1vdmUiIG1ldGhvZC4gSXQgd2lsbCBy
ZW1vdmUgYWxsCisgICAgaXRlbXMgdGhhdCBoYXZlIG5vdCBiZWVuIGJlZW4gdXBkYXRlZCBzaW5j
ZSB0aGUgbGFzdCBjYWxsIG9mICJyZW1vdmUiLgorKi8KK2Jhc2UuVXBkYXRlVHJhY2tlciA9IGZ1
bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9pdGVtcyA9IHt9OworICAgIHRoaXMuX3VwZGF0ZWQgPSB7
fTsKK30KKworYmFzZS5VcGRhdGVUcmFja2VyLnByb3RvdHlwZSA9IHsKKyAgICAvKgorICAgICAg
ICBVcGRhdGUgYW4ge2tleX0ve2l0ZW19IHBhaXIuIFlvdSBjYW4gbWFrZSB0aGUgZGljdGlvbmFy
eSBhY3QgYXMgYSBzZXQgYW5kCisgICAgICAgIHNraXAgdGhlIHtpdGVtfSwgaW4gd2hpY2ggY2Fz
ZSB0aGUge2tleX0gaXMgYWxzbyB0aGUge2l0ZW19LgorICAgICovCisgICAgdXBkYXRlOiBmdW5j
dGlvbihrZXksIG9iamVjdCkKKyAgICB7CisgICAgICAgIG9iamVjdCA9IG9iamVjdCB8fCBrZXk7
CisgICAgICAgIHRoaXMuX2l0ZW1zW2tleV0gPSBvYmplY3Q7CisgICAgICAgIHRoaXMuX3VwZGF0
ZWRba2V5XSA9IDE7CisgICAgfSwKKyAgICBleGlzdHM6IGZ1bmN0aW9uKGtleSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhIXRoaXMuZ2V0KGtleSk7CisgICAgfSwKKyAgICBnZXQ6IGZ1bmN0aW9u
KGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1trZXldOworICAgIH0sCisg
ICAgLyoKKyAgICAgICAgQ2FsbGJhY2sgcGFyYW1ldGVycyBhcmU6CisgICAgICAgIC0gaXRlbQor
ICAgICAgICAtIGtleQorICAgICAgICAtIHVwZGF0ZWQsIHdoaWNoIGlzIHRydWUgaWYgdGhlIGl0
ZW0gd2FzIHVwZGF0ZWQgYWZ0ZXIgbGFzdCBwdXJnZSgpIGNhbGwuCisgICAgKi8KKyAgICBmb3JF
YWNoOiBmdW5jdGlvbihjYWxsYmFjaywgdGhpc09iamVjdCkKKyAgICB7CisgICAgICAgIGlmICgh
Y2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpc09iamVjdCA9IHRo
aXNPYmplY3QgfHwge307CisgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2l0ZW1zKS5mb3JFYWNo
KGZ1bmN0aW9uKGtleSkgeworICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1trZXld
OworICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzT2JqZWN0IHx8IGl0ZW0sIGl0ZW0sIGtl
eSwgISF0aGlzLl91cGRhdGVkW2tleV0pOworICAgICAgICB9LCB0aGlzKTsKKyAgICB9LAorICAg
IHB1cmdlOiBmdW5jdGlvbihyZW1vdmVDYWxsYmFjaywgdGhpc09iamVjdCkgeworICAgICAgICBy
ZW1vdmVDYWxsYmFjayA9IHJlbW92ZUNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge30KKyAgICAgICAg
dGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGtleSwgdXBkYXRlZCkgeworICAgICAgICAgICAg
aWYgKCF1cGRhdGVkKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlQ2FsbGJhY2suY2FsbCh0aGlz
T2JqZWN0IHx8IGl0ZW0sIGl0ZW0pOworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pdGVt
c1trZXldOworICAgICAgICAgICAgfQorICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
dXBkYXRlZCA9IHt9OworICAgIH0KK30KKwogLy8gQmFzZWQgb24gaHR0cDovL3NyYy5jaHJvbWl1
bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMvY2hyb21lL2Jyb3dzZXIvcmVzb3VyY2VzL3No
YXJlZC9qcy9jci91aS5qcwogYmFzZS5leHRlbmRzID0gZnVuY3Rpb24oYmFzZSwgcHJvdG90eXBl
KQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Jhc2VfdW5pdHRlc3RzLmpzIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL2Jhc2VfdW5pdHRlc3RzLmpzCmluZGV4IDZiOGNiNzJiN2UyZmQ4NzE1ZGMy
Yzk3N2VjYTI1MDUwNjdiY2EzOGQuLjdkZjM4ZDM1NWMwMmRmY2FmNmQwMzE4NGI3ZDI4MDg4N2Ri
ZjhmODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlX3VuaXR0ZXN0cy5qcworKysg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvYmFzZV91bml0dGVzdHMuanMKQEAgLTIyMSw2ICsyMjEsNjYgQEAg
dGVzdCgiZmlsdGVyVHJlZSIsIDIsIGZ1bmN0aW9uKCkgewogICAgIH0pOwogfSk7CiAKK3Rlc3Qo
IlVwZGF0ZVRyYWNrZXIiLCAxNywgZnVuY3Rpb24oKSB7CisgICAgdmFyIGRpY3Q7CisKKyAgICBm
dW5jdGlvbiBkdW1wS2V5cygpCisgICAgeworICAgICAgICB2YXIgdXBkYXRlcyA9IFtdCisgICAg
ICAgIGRpY3QuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBrZXksIHVwZGF0ZWQpIHsKKyAgICAgICAg
ICAgIHVwZGF0ZXMucHVzaChrZXkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHVwZGF0
ZXM7CisgICAgfQorCisgICAgZnVuY3Rpb24gZHVtcFVwZGF0ZWRLZXlzKCkKKyAgICB7CisgICAg
ICAgIHZhciB1cGRhdGVzID0gW10KKyAgICAgICAgZGljdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0s
IGtleSwgdXBkYXRlZCkgeworICAgICAgICAgICAgdXBkYXRlZCAmJiB1cGRhdGVzLnB1c2goa2V5
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB1cGRhdGVzOworICAgIH0KKworCisgICAg
ZGljdCA9IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKKyAgICBkaWN0LnVwZGF0ZSgiNSIsIHt9
KTsKKyAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsiNSJdKTsKKyAgICBkaWN0LnVw
ZGF0ZSgiNiIsIHt9KTsKKyAgICBkaWN0LnVwZGF0ZSgiNyIsIHt9KTsKKyAgICBkZWVwRXF1YWwo
ZHVtcFVwZGF0ZWRLZXlzKCksIFsiNSIsICI2IiwgIjciXSk7CisgICAgZGVlcEVxdWFsKGRpY3Qu
Z2V0KCI2IiksIHt9KTsKKyAgICBvayhkaWN0LmV4aXN0cygiNyIpKTsKKyAgICBkaWN0LnB1cmdl
KCk7CisgICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbXSk7CisgICAgZGVlcEVxdWFs
KGR1bXBLZXlzKCksIFsiNSIsICI2IiwgIjciXSk7CisgICAgZGljdC51cGRhdGUoIjUiLCB7fSk7
CisgICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbIjUiXSk7CisgICAgZGljdC51cGRh
dGUoIjQiLCB7fSk7CisgICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbIjQiLCAiNSJd
KTsKKyAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI0IiwgIjUiLCAiNiIsICI3Il0pOworICAg
IGRpY3QucHVyZ2UoKTsKKyAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI0IiwgIjUiXSk7Cisg
ICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbXSk7CisgICAgZGljdC5wdXJnZSgpOwor
ICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbXSk7CisKKyAgICB2YXIgcmVtb3ZlQ291bnQgPSAw
OworICAgIGRpY3QudXBkYXRlKCJvbmUiKTsKKyAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlz
KCksIFsib25lIl0pOworICAgIGRpY3QudXBkYXRlKCJ0d28iKTsKKyAgICBkZWVwRXF1YWwoZHVt
cFVwZGF0ZWRLZXlzKCksIFsib25lIiwgInR3byJdKTsKKyAgICBkaWN0LnVwZGF0ZSgidGhyZWUi
KTsKKyAgICBkaWN0LnB1cmdlKCk7CisgICAgZGVlcEVxdWFsKGR1bXBLZXlzKCksIFsib25lIiwg
InR3byIsICJ0aHJlZSJdKTsKKyAgICBkaWN0LnVwZGF0ZSgidHdvIik7CisgICAgZGljdC5wdXJn
ZShmdW5jdGlvbigpIHsKKyAgICAgICAgcmVtb3ZlQ291bnQrKzsKKyAgICB9KTsKKyAgICBkZWVw
RXF1YWwoZHVtcEtleXMoKSwgWyJ0d28iXSk7CisgICAgZXF1YWwocmVtb3ZlQ291bnQsIDIpOwor
fSk7CisKIHRlc3QoImV4dGVuZHMiLCAxNywgZnVuY3Rpb24oKSB7CiAKICAgICB2YXIgTGlrZURp
diA9IGJhc2UuZXh0ZW5kcygiZGl2IiwgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdjY2JjNTVlNmFhMjQ1N2FhMzMxNjJiODZhYzgzOTczZDkz
NmRmOTAuLmZmODY5OTEwMmUwNDYwNDQ4ZGEzNTMzMzMxOTcyZTY3OTc1YWIwNzYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0wOC0xNSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIGdhcmRlbi1vLW1hdGljIGZyb250ZW5kIG5lZWRzIGEgZ2VuZXJpYyB3YXkgdG8g
dHJhY2sgdXBkYXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY2MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvYmFzZS5qczogQWRkZWQgVXBkYXRlVHJhY2tlci4KKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvYmFzZV91bml0dGVzdHMuanM6IEFkZGVkIHRlc3RzLgorCiAyMDExLTA4LTE0
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3dpdGNoIHJlc3Vs
dHMgZGV0YWlsIHZpZXcgb3ZlciB0byBuZXctc3R5bGUgb2JqZWN0LW9yaWVudGVkIFVJIHdpZGdl
dHMK
</data>
<flag name="review"
          id="99660"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>