New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 114 users

Comments by non-members will not trigger notification emails to users who starred this issue.
DOM attributes should be moved to prototype chains and should expose JavaScript getters/setters
Project Member Reported by arv@chromium.org, May 6 2010 Back to list
Given

Object.getOwnPropertyNames(Node.prototype)

it does not list 'firstChild'

If I do the same thing on an instance it is available but it returns a value 
property. Exposing these as getters and setters would be extremely useful

Expected result

Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild')

{
  "get": function getFirstChild() { [native code] },
  "enumerable": true,
  "configurable": true
}
 
Comment 1 by arv@chromium.org, May 6 2010
If we exposed these getters we could prototype anonymous nodes as well as shadow trees 
in JS.
Interesting.
Comment 3 by karen@chromium.org, May 18 2010
Labels: Mstone-X
Labels: -Mstone-X Mstone-6
Anders, can you have one of your awesome V8 folks look at it?
Rico, could you have a look and discuss w Mads?
Comment 6 by ager@chromium.org, May 28 2010
Status: WontFix
This is working as intended. firstChild is a property on Node instances (defined as a readonly attribute in 
WebIDL). It is not a function and therefore it is not shared between Node instances via Node.prototype.

Comment 7 by arv@chromium.org, Nov 18 2010
Labels: -Mstone-6 Mstone-X
Status: Available
This was discussed at the joint WebIDL and ECMA meeting on Tuesday this week and the intended behavior is to make attributes getters and setters on the prototype.

I'll file a WebCore bug too so we can ensure compatibility with Safari.
Comment 9 by arv@chromium.org, Nov 18 2010
We should try to do this in a dev channel and see if there are any other sites than yelp.com that needs to be evangelized.
Comment 10 by ager@chromium.org, Nov 19 2010
Project Member Comment 11 by bugdroid1@chromium.org, Mar 10 2013
Labels: -Area-WebKit -WebKit-JavaScript Cr-Content-JavaScript Cr-Content
Project Member Comment 12 by bugdroid1@chromium.org, Apr 6 2013
Labels: -Cr-Content Cr-Blink
Project Member Comment 13 by bugdroid1@chromium.org, Apr 6 2013
Labels: -Cr-Content-JavaScript Cr-Blink-JavaScript
Comment 14 by arv@chromium.org, Jun 18 2013
Labels: -HTML5 -Mstone-X -Cr-Blink-JavaScript Cr-Blink-DOM Cr-Blink-Bindings
Comment 15 by yutak@chromium.org, Jun 26 2013
Cc: haraken@chromium.org
+haraken, do you have any insights on this?

FWIW, Firefox 21 works as expected. Relevant section of WebIDL spec is probably:
<http://dev.w3.org/2006/webapi/WebIDL/#es-operations>
The ideal solution (per the spec) is:

- Move DOM attributes from instances to prototype chains.
- Expose JS getters and setters for DOM attributes.

I've been working on this for two years with the V8 team but not yet done. Now all performance issues are resolved and we're discussing a couple of V8 APIs that are necessary for implementing the solution. I think we can land it in the near future.
Comment 18 by arv@chromium.org, Jul 17 2013
Cc: arv@chromium.org l.gom...@samsung.com
Issue 256113 has been merged into this issue.
Comment 19 by arv@chromium.org, Aug 30 2013
Cc: nbarth@chromium.org dominicc@chromium.org
V8 API now has support for this. I created a quick and dirty hack to test that it works: https://codereview.chromium.org/23797002/

The V8DOMConfiguration changes should be useful, the rest is throw away copy-pasted hacked up deprecated code gen cruft.
Comment 20 by arv@chromium.org, Aug 30 2013
Cc: nyerramilli@chromium.org mstarzinger@chromium.org
Issue 13175 has been merged into this issue.
Comment 21 by arv@chromium.org, Sep 27 2013
Owner: arv@chromium.org
Status: Started
arv: Did you start something?

Now all necessary V8 APIs are landed, I'm reevaluating performance.
Comment 23 by arv@chromium.org, Sep 27 2013
haraken: See comment 19

I talked to nbarth about this and I'm going to work on this.\

My plan is to do this piecemeal, one attribute/interface at a time using an extended attribute to opt in. Once that is getting stable enough this will be changed to opt out and eventually only [Unforgable] will be left as an instance property.
oh, I was also experimenting and planning to ship it in Q4 :)

Dan fixed performance issues of SetAccessorProperty in https://codereview.chromium.org/23549019/, but I'm still seeing some perf regression and investigating.
Comment 25 by arv@chromium.org, Sep 27 2013
haraken: Feel free to take it you want it. I'm pretty sure I can get this done in Q3 though =P

What are the perf issues you are seeing?
(BTW, for anyone listening in.)
During the IDL compiler rewrite, please feel free to work on the Perl CG as usual, esp. if the change is modular (adding or changing an extended attribute, exactly as Erik is doing) -- I'll just port it to Python when I get to it: you don't need to worry about it.
> What are the perf issues you are seeing?

When I tested with pathological test cases one week ago, I observed 10% regression for setters. However, I've not yet tracked down the performance, so it's possible that I'm measuring something wrong.

> haraken: Feel free to take it you want it. I'm pretty sure I can get this done in Q3 though =P

My investigation will take a bit more time, so if you're sure about performance, please go with your CL.

Regarding landing, our plan is:

(1) Send the intent-to-ship email.
(2) Move DOM attributes in the Node hierarchy to prototype chains and see how it goes.
(3) Do the move for the rest of the DOM attributes.
Comment 28 by arv@chromium.org, Sep 29 2013
I was planning to start with something that has less special extended attributes. Probably something that only has a single readonly attribute or maybe the Event hierarchy.

arv: Sorry for being late. I verified performance. In conclusion, I couldn't observe any regression/progression in both a micro-benchmark and Dromaeo. So, we're ready to ship :) I'll write a quick summary and an intent-to-ship email on Monday.

Uploaded a CL to the patch set 2 of https://codereview.chromium.org/23797002/
Update: I re-verified performance and concluded that there is an unacceptable regression.

Dromaeo/dom-attr: 1147.64runs/s => 955.48runs/s
Dromaeo/dom-modify: 494.35runs/s => 473.30runs/s
Dromaeo/dom-query: 24576.84runs/s => 21412.91runs/s
Dromaeo/dom-traverse: 566.31runs/s => 453.12runs/s

As far as I investigate the performance, it looks like that getters/setters registered by SetAccessorProperty() are slower than normal JS getters/setters. I'll send you the details in offline emails.
Okay, I'll check it out when I'm back (2 weeks).  But it's probably just
some extra optimization path the current api uses that the
SetAccessorProperty one doesn't do yet.  I'd be surprised if the 5-10%
regressions were not fixable.
Thanks Dan! I sent you guys a detailed performance result.
Owner: haraken@chromium.org
I'm about to send an intent-to-ship email and see how Blink people think about the performance regression.

I wrote up the latest status in this document:
https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit#

Summary: DOM attributes should be moved to prototype chains and should expose JavaScript getters/setters (was: DOM nodes do not expose getters)
Cc: ch.du...@samsung.com
Comment 36 by adamk@chromium.org, Oct 31 2013
Cc: adamk@chromium.org
Issue 316175 has been merged into this issue.
IE Test Center appears to have a zillion and one tests all for this same bug:
http://samples.msdn.microsoft.com/ietestcenter/html5/webidl_harness.htm?url=webidl_htmlanchorelement
Comment 39 by arv@google.com, Nov 14 2013
Eric, well we do fail on every single WebIDL attribute. That sums up to a lot of brokenness ;-)
I'm landing a first CL which moves DOM attributes used in Dromaeo to prototype chains
 (https://codereview.chromium.org/94403002/). I want to understand how much performance regression we will observe in perf bots in various platforms.

- I'm expecting ~10% regression in Dromaeo/dom-* and more regression in micro benchmarks in PerformanceTests/Bindings/. I wrote up justification for the regression to blink-dev and got an approval [1]. In long-term, we're planning to resolve the regression by crankshafting binding callbacks to V8 but it will take quarters to implement [2].

- If the regression is within the expectation range, I'm planning to keep the CL in the trunk. The rough criteria is as follows:

--- We will accept ~10% regression in micro benchmarks like Dromaeo.
--- We will accept more regression in super-micro benchmarks in PerformanceTests/Bindings/.
--- We will accept 0% regression in real-world benchmarks like page cycler.

- If the regression is out of the expectation range, I'll revert the CL. However, I want to keep the CL for a couple of days in trunk to gather full performance results from all platforms.

- I'm tracking the performance in https://code.google.com/p/chromium/issues/detail?id=43394. I'd be happy if you paste performance results to the bug. (Of course I'll watch bots.)

[1] Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ

[2] Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit 
Project Member Comment 41 by bugdroid1@chromium.org, Dec 3 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=163043

------------------------------------------------------------------------
r163043 | haraken@chromium.org | 2013-12-03T01:09:08.347565Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-dir-expected.txt?r1=163043&r2=163042&pathrev=163043
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=163043&r2=163042&pathrev=163043
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=163043&r2=163042&pathrev=163043
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=163043&r2=163042&pathrev=163043
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=163043&r2=163042&pathrev=163043
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=163043&r2=163042&pathrev=163043
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/NodeList.idl?r1=163043&r2=163042&pathrev=163043

Move popular DOM attributes to prorotype chains

Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit

Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ

BUG=43394


This CL moves DOM attributes used in Dromaeo to prototype chains. As explained in the document, this CL is going to regress performance of Dromaeo by 8.7%.

Dromaeo/dom-attr       1134 runs/sec =>  1145 runs/sec (+1.0%)
Dromaeo/dom-modify      488 runs/sec =>   493 runs/sec (+1.0%)
Dromaeo/dom-query     22860 runs/sec => 21772 runs/sec (-5.0%)
Dromaeo/dom-traverse    523 runs/sec =>   481 runs/sec (-8.7%)

See the design document and the Intent-to-ship email for justification for the regression.

I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find that the regression is unacceptable, I'll revert the CL.

Review URL: https://codereview.chromium.org/94403002
------------------------------------------------------------------------
This CL was reverted (not because of performance regression but) because it broke a lot of web sites in Chrome.
https://code.google.com/p/chromium/issues/detail?id=325330

It looks like a lot of JavaScripts in Chrome are relying on the current wrong behavior. Let me investigate more and think about how we can make the change without breaking the web compatibility.
Project Member Comment 43 by bugdroid1@chromium.org, Dec 5 2013
Labels: merge-merged-1728
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=163280

------------------------------------------------------------------------
r163280 | dharani@chromium.org | 2013-12-05T18:52:39.940689Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/branches/chromium/1728/Source/core/dom/NodeList.idl?r1=163280&r2=163279&pathrev=163280
   M http://src.chromium.org/viewvc/blink/branches/chromium/1728/LayoutTests/inspector/console/console-dir-expected.txt?r1=163280&r2=163279&pathrev=163280
   M http://src.chromium.org/viewvc/blink/branches/chromium/1728/Source/core/dom/Node.idl?r1=163280&r2=163279&pathrev=163280
   D http://src.chromium.org/viewvc/blink/branches/chromium/1728/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=163280&r2=163279&pathrev=163280
   M http://src.chromium.org/viewvc/blink/branches/chromium/1728/Source/core/dom/Element.idl?r1=163280&r2=163279&pathrev=163280
   D http://src.chromium.org/viewvc/blink/branches/chromium/1728/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=163280&r2=163279&pathrev=163280
   M http://src.chromium.org/viewvc/blink/branches/chromium/1728/Source/core/dom/Document.idl?r1=163280&r2=163279&pathrev=163280

Revert 163043 "Move popular DOM attributes to prorotype chains"

This is to fix bug 325744 on 1728 branch.

> Move popular DOM attributes to prorotype chains
> 
> Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit
> 
> Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ
> 
> BUG=43394
> 
> 
> This CL moves DOM attributes used in Dromaeo to prototype chains. As explained in the document, this CL is going to regress performance of Dromaeo by 8.7%.
> 
> Dromaeo/dom-attr       1134 runs/sec =>  1145 runs/sec (+1.0%)
> Dromaeo/dom-modify      488 runs/sec =>   493 runs/sec (+1.0%)
> Dromaeo/dom-query     22860 runs/sec => 21772 runs/sec (-5.0%)
> Dromaeo/dom-traverse    523 runs/sec =>   481 runs/sec (-8.7%)
> 
> See the design document and the Intent-to-ship email for justification for the regression.
> 
> I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find that the regression is unacceptable, I'll revert the CL.
> 
> Review URL: https://codereview.chromium.org/94403002

TBR=haraken@chromium.org

Review URL: https://codereview.chromium.org/106903003
------------------------------------------------------------------------
Here is a summary of the current status.

(1) I landed a CL that moves DOM attributes used in Dromaeo to prototype chains.
(2) I reverted the CL.
(3) I found that the CL is not acceptable in terms of both performance and compatibility.

============

[Performance]
As far as I see https://code.google.com/p/chromium/issues/detail?id=325730#c41, we can observe a lot of regressions. It's hard to judge if these regressions are acceptable or not, but at least the 20%+ regressions in jslib-traverse-prototype and jslib-traverse-jquery won't be acceptable.

[Compatibility]
The CL broke a lot of web sites.

- https://code.google.com/p/chromium/issues/detail?id=325330. This bug was caused because generated V8 code for ARM devices was wrong. Dan already fixed it.

- https://code.google.com/p/chromium/issues/detail?id=325880 and https://code.google.com/p/chromium/issues/detail?id=325744. This bug looks like a real compatibility issue. Gmail and other Google Apps are relying on the fact that Chrome defines DOM attributes on DOM instances. (It's strange that these Google Apps are working fine in Firefox and IE where DOM attributes are defined on prototype chains. Probably Google Apps are using different JavaScript code depending on browsers.)

============

Regarding performance, the only solution would be to implement binding callbacks in crankshaft.

Regarding compatibility, the solution would depend on what kind of JavaScript code is causing the issue. I'm now contacting Apps teams to find what's going on there.

I don't think those are compatibility issues, but yet another bug in v8, see issue 326156
Thanks, jochen. Probably it's a bug of V8.

One thing that might be noted is that issue 326156 doesn't happen in Linux but issue 325880 happens in all of Linux, Mac and Windows.

Issue 332096 has been merged into this issue.
Cc: danno@chromium.org abarth@chromium.org svenpanne@chromium.org
Is there any update on moving DOM attributes?

It looks like our current situation is as follows:

[1] According to https://code.google.com/p/chromium/issues/detail?id=325730#c41, we observed a lot of regressions. It's hard to judge if these regressions are acceptable or not, but the 20%+ regressions in jslib-traverse-prototype and jslib-traverse-jquery look not acceptable.

[2] It looks like that moving DOM attributes exposed a bug of V8's generated code (issue 326156 and issue 325880).

We might want to fix [2] first, since fixing the wrong behavior might change performance. After fixing the behavior, we can re-measure performance and discuss whether we can accept the performance regression or we have to wait for crankshafting binding callbacks.

According to comment #45, [2] looks like a bug of V8's generated code, but if it's a real compatibility issue, I'm happy to investigate.

Comment 49 by dcarney@google.com, Jan 17 2014
i'm working on a cl now that should remove the regressions

finding a generated code bug that doesn't crash something is very difficult.  it would be good if there was an extremely simple repro ( a couple of lines of js)
> i'm working on a cl now that should remove the regressions

Are you crankshafting binding callbacks?

> finding a generated code bug that doesn't crash something is very difficult.  it would be good if there was an extremely simple repro ( a couple of lines of js)

OK, let me try. Issue 325880 happens in Linux and the repro step is clear: We cannot click "reply-to-all" of Gmail. I'll try to minimize the JavaScript.

Dan landed a V8 side CL that will hopefully address the regression caused by moving DOM attributes to prototype chains. In theory, there is now no overhead in moving DOM attributes to prototype chains. Specifically, when accessing DOM attributes, no prototype chain look-up is needed unless the shape of the prototype chain changes.

I'm trying to move DOM attributes used in Dromaeo and see how perf bots look:
https://codereview.chromium.org/158713002/

Project Member Comment 52 by bugdroid1@chromium.org, Feb 24 2014
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=167680

------------------------------------------------------------------------
r167680 | haraken@chromium.org | 2014-02-24T12:16:14.972222Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=167680&r2=167679&pathrev=167680
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=167680&r2=167679&pathrev=167680
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=167680&r2=167679&pathrev=167680
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=167680&r2=167679&pathrev=167680
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=167680&r2=167679&pathrev=167680

Move popular DOM attributes to prototype chains

Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit

Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ

This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL two months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.

Dromaeo/dom-attr 1086 runs/sec => 1077 runs/sec (-0.8%)
Dromaeo/dom-modify 522 runs/sec => 525 runs/sec (+0.5%)
Dromaeo/dom-query 26150 runs/sec => 26200 runs/sec (+0.2%)
Dromaeo/dom-traverse 564 runs/sec => 544 runs/sec (-3.6%)

I don't understand the regression in dom-traverse. The regression is reproducible but I cannot reproduce the regression in a super-micro benchmark that just repeats accessing div.firstChild. Probably the regression might be a noise.

I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.

See the design document and the Intent-to-ship email for justification for the regression.

BUG=43394

Review URL: https://codereview.chromium.org/158713002
------------------------------------------------------------------------
OK, now I relanded the CL again (https://codereview.chromium.org/158713002/). I hope the CL won't cause unacceptable regression nor behavior bugs. I'm watching perf bots.

If you find any regression or bugs, please report it in this bug.

Sorry, the CL caused 36% regression in jslibtraverse:

https://chromeperf.appspot.com/report?masters=ChromiumPerf&bots=chromium-rel-mac6%2Cchromium-rel-win8-dual&tests=dromaeo.jslibtraversejquery%2Fjslib&checked=core&start_rev=251940&end_rev=253072

and I found that a V8 side CL that fixes the performance regression is not yet rolled into Chromium. So let me revert my CL. I'm sorry about the trouble.

Project Member Comment 55 by bugdroid1@chromium.org, Feb 25 2014
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=167722

------------------------------------------------------------------------
r167722 | haraken@chromium.org | 2014-02-25T05:44:46.121122Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=167722&r2=167721&pathrev=167722
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=167722&r2=167721&pathrev=167722
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=167722&r2=167721&pathrev=167722
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=167722&r2=167721&pathrev=167722
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=167722&r2=167721&pathrev=167722

Revert 167680 "Move popular DOM attributes to prototype chains"

This CL caused unacceptable perf regression, because I landed the CL
before landing a V8 side CL that fixes the perf regression.

I'll land the CL again after landing the V8 side CL.

> Move popular DOM attributes to prototype chains
> 
> Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit
> 
> Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ
> 
> This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL two months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.
> 
> Dromaeo/dom-attr 1086 runs/sec => 1077 runs/sec (-0.8%)
> Dromaeo/dom-modify 522 runs/sec => 525 runs/sec (+0.5%)
> Dromaeo/dom-query 26150 runs/sec => 26200 runs/sec (+0.2%)
> Dromaeo/dom-traverse 564 runs/sec => 544 runs/sec (-3.6%)
> 
> I don't understand the regression in dom-traverse. The regression is reproducible but I cannot reproduce the regression in a super-micro benchmark that just repeats accessing div.firstChild. Probably the regression might be a noise.
> 
> I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.
> 
> See the design document and the Intent-to-ship email for justification for the regression.
> 
> BUG=43394
> 
> Review URL: https://codereview.chromium.org/158713002

TBR=haraken@chromium.org

Review URL: https://codereview.chromium.org/179343002
------------------------------------------------------------------------
Comment 56 by kbr@chromium.org, Feb 25 2014
http://src.chromium.org/viewvc/blink?view=rev&rev=167680 caused Issue 346846, which was a serious regression affecting Gmail, sites.google.com, and probably other properties.

The easiest reproduction steps:

1) Visit a page on dev.chromium.org.
2) Sign in with an @chromium.org account.
3) Edit a page.
4) Double-click a word.
5) Attempt to click the "link" icon to produce a link.

If the link button doesn't highlight and isn't clickable, the bug is reproduced.

Comment 57 by kbr@chromium.org, Feb 25 2014
Blockedon: chromium:346846
Comment 58 by kbr@chromium.org, Feb 25 2014
Something is a little strange with the regression ranges for the bug above. Going through the Blink archives at http://commondatastorage.googleapis.com/chromium-webkit-snapshots/index.html , the bug is introduced here:

Good:
35.0.1858.0 (Developer Build 252932)
blink 167693

Bad:
35.0.1858.0 (Developer Build 252957)
Blink 167698

http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog_blink.html?url=/trunk&range=167693:167698

which doesn't contain haraken's original patch.

However, the bug is fixed here:

253080: bad  (blink 167720)
253090: good (blink 167723)

http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog_blink.html?url=/trunk&range=167720:167723

which contains haraken's revert.

I can't explain this behavior but regardless let's please try to construct regression tests for this so it doesn't break again when re-landing.

ah, probably I understand what has happened. The V8 roll that contains a fix for the gmail breakage was reverted.

(1) V8 was rolled. This roll contained a fix for the gmail breakage.
(2) I landed my CL in the Blink side.
(3) The V8 roll was reverted.
(4) The gmail breakage appeared again.

Project Member Comment 60 by bugdroid1@chromium.org, Mar 4 2014
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=168383

------------------------------------------------------------------------
r168383 | haraken@chromium.org | 2014-03-04T13:52:36.457210Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=168383&r2=168382&pathrev=168383
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=168383&r2=168382&pathrev=168383
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=168383&r2=168382&pathrev=168383

Move popular DOM attributes to prototype chains

Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit

Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ

This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL two months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.

Dromaeo/dom-attr 1086 runs/sec => 1077 runs/sec (-0.8%)
Dromaeo/dom-modify 522 runs/sec => 525 runs/sec (+0.5%)
Dromaeo/dom-query 26150 runs/sec => 26200 runs/sec (+0.2%)
Dromaeo/dom-traverse 564 runs/sec => 544 runs/sec (-3.6%)

I don't understand the regression in dom-traverse. The regression is reproducible but I cannot reproduce the regression in a super-micro benchmark that just repeats accessing div.firstChild. Probably the regression might be a noise.

I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.

See the design document and the Intent-to-ship email for justification for the regression.

BUG=43394

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=167680

R=jochen@chromium.org

Review URL: https://codereview.chromium.org/158713002
------------------------------------------------------------------------
Now that the V8 side fix is certainly in trunk, I relanded the CL that moves DOM attributes to prototype chains. I'll keep an eye on perf bots.

Project Member Comment 63 by bugdroid1@chromium.org, Mar 5 2014
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=168453

------------------------------------------------------------------------
r168453 | haraken@chromium.org | 2014-03-05T08:53:28.556411Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=168453&r2=168452&pathrev=168453
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=168453&r2=168452&pathrev=168453
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=168453&r2=168452&pathrev=168453

Revert 168383 "Move popular DOM attributes to prototype chains"

This CL regressed performance of Dromaeo/dom-traverse unacceptably.
https://chromeperf.appspot.com/report?masters=ChromiumPerf&bots=chromium-rel-mac6%2Cchromium-rel-mac8%2Cchromium-rel-win7-dual%2Clinux-release&tests=dromaeo.domcoretraverse%2Fdom&checked=core


> Move popular DOM attributes to prototype chains
> 
> Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit
> 
> Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ
> 
> This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL two months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.
> 
> Dromaeo/dom-attr 1086 runs/sec => 1077 runs/sec (-0.8%)
> Dromaeo/dom-modify 522 runs/sec => 525 runs/sec (+0.5%)
> Dromaeo/dom-query 26150 runs/sec => 26200 runs/sec (+0.2%)
> Dromaeo/dom-traverse 564 runs/sec => 544 runs/sec (-3.6%)
> 
> I don't understand the regression in dom-traverse. The regression is reproducible but I cannot reproduce the regression in a super-micro benchmark that just repeats accessing div.firstChild. Probably the regression might be a noise.
> 
> I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.
> 
> See the design document and the Intent-to-ship email for justification for the regression.
> 
> BUG=43394
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=167680
> 
> R=jochen@chromium.org
> 
> Review URL: https://codereview.chromium.org/158713002

TBR=haraken@chromium.org

Review URL: https://codereview.chromium.org/187343006
------------------------------------------------------------------------
Unfortunately again, I had to revert the CL in r168453 due to the unacceptable regression in Dromaeo/dom-traverse:
https://chromeperf.appspot.com/report?masters=ChromiumPerf&bots=chromium-rel-mac6%2Cchromium-rel-mac8%2Cchromium-rel-win7-dual%2Clinux-release&tests=dromaeo.domcoretraverse%2Fdom&checked=core

As far as I experiment, there is little regression when I use V8's r19220, but there is large regression when I use V8's r19398 (or later). I'm investigating what's going on.

See also bug 349710, which tracks regressions (and improvements!) to bindings perf metrics from your change.
Project Member Comment 66 by bugdroid1@chromium.org, Apr 7 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=170941

------------------------------------------------------------------
r170941 | haraken@chromium.org | 2014-04-07T03:58:17.898755Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=170941&r2=170940&pathrev=170941
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=170941&r2=170940&pathrev=170941
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=170941&r2=170940&pathrev=170941
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=170941&r2=170940&pathrev=170941
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=170941&r2=170940&pathrev=170941

Move popular DOM attributes to prototype chains

Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit

Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ

This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL four months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.

Dromaeo/dom-attr 1145 runs/sec => 1130 runs/sec (-1.3%)
Dromaeo/dom-modify 492 runs/sec => 496 runs/sec (+0.8%)
Dromaeo/dom-query 25580 runs/sec => 25107 runs/sec (-1.8%)
Dromaeo/dom-traverse 581 runs/sec => 579 runs/sec (+0.3%)

In particular, I cannot observe any regression in a super micro benchmark that repeats div.firstChild.

I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.

See the design document and the Intent-to-ship email for justification for the regression.

BUG=43394

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=167680

R=jochen@chromium.org

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=168383

Review URL: https://codereview.chromium.org/158713002
-----------------------------------------------------------------
Relanded the CL, but it again caused 12%+ regression in Dromaeo/dom-traverse in Linux Release. Since I double-confirmed that the CL doesn't cause any observable regression locally, this result looks very mysterious. I'll investigate tomorrow morning.

https://chromeperf.appspot.com/report?masters=ChromiumPerf&bots=chromium-rel-mac6%2Cchromium-rel-mac8%2Cchromium-rel-win7-dual%2Clinux-release&tests=dromaeo.domcoretraverse%2Fdom&checked=core

Project Member Comment 68 by bugdroid1@chromium.org, Apr 9 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=171141

------------------------------------------------------------------
r171141 | haraken@chromium.org | 2014-04-09T12:37:54.320397Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=171141&r2=171140&pathrev=171141
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=171141&r2=171140&pathrev=171141
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=171141&r2=171140&pathrev=171141
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=171141&r2=171140&pathrev=171141
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=171141&r2=171140&pathrev=171141

Revert 170941 "Move popular DOM attributes to prototype chains"

Regressed performance unacceptably.
https://chromeperf.appspot.com/group_report?bug_id=361260

> Move popular DOM attributes to prototype chains
> 
> Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit
> 
> Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ
> 
> This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL four months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.
> 
> Dromaeo/dom-attr 1145 runs/sec => 1130 runs/sec (-1.3%)
> Dromaeo/dom-modify 492 runs/sec => 496 runs/sec (+0.8%)
> Dromaeo/dom-query 25580 runs/sec => 25107 runs/sec (-1.8%)
> Dromaeo/dom-traverse 581 runs/sec => 579 runs/sec (+0.3%)
> 
> In particular, I cannot observe any regression in a super micro benchmark that repeats div.firstChild.
> 
> I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.
> 
> See the design document and the Intent-to-ship email for justification for the regression.
> 
> BUG=43394
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=167680
> 
> R=jochen@chromium.org
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=168383
> 
> Review URL: https://codereview.chromium.org/158713002

TBR=haraken@chromium.org

Review URL: https://codereview.chromium.org/230783002
-----------------------------------------------------------------
At the moment, I reverted the CL because it caused unacceptable regression again:
https://chromeperf.appspot.com/group_report?bug_id=361260

However, I cannot reproduce the regression in Linux Release in my local build. I'll try Mac build tomorrow.


Cc: tonyg@chromium.org
hmm, I might need advice from you guys :)

The current problem is as follows:

- When I move DOM attributes to prototype chains, traversal benchmarks show unacceptable regression. There are a lot of regressing benchmarks, but in short, we just need to worry about Dromaeo/dom-traverse. I think that if we fix the regression of Dromaeo/dom-traverse, all other regressions will be gone.

https://chromeperf.appspot.com/group_report?bug_id=361260

https://chromeperf.appspot.com/report?masters=ChromiumPerf&bots=chromium-rel-mac6%2Cchromium-rel-mac8%2Cchromium-rel-win7-dual%2Cchromium-rel-win7-single%2Cchromium-rel-win7-x64-dual%2Cchromium-rel-win8-dual%2Cchromium-rel-xp-dual%2Clinux-release&tests=dromaeo.domcoretraverse%2Fdom&checked=core

- However, after V8's r20392, I cannot reproduce any performance regression in my local Linux build and Mac build. Even if I create a super-micro benchmark that just repeats div.firstChild, I cannot observe any regression in the performance.

This is very mysterious, because the perf bots should be already working with V8's r20392 according to the build log.

Do you have any idea on what I can try next? Would it be possible that build options of perf bots are different from my local Release builds and that affects performance?

Comment 71 by tonyg@chromium.org, Apr 10 2014
Are you doing official or release builds locally? The perf bots do official.
> Are you doing official or release builds locally? The perf bots do official.

I'm doing release builds. Let me try official builds tomorrow. Thanks for the info!

OK, I identified that the performance regression in perf bots would be related to compiler optimization of g++.

[Preliminary knowledge]

- The only benchmark we need to care about is Dromaeo/dom-traverse. I think that fixing the regression of Dromaeo/dom-traverse will fix other regressions as well. Perf bots show 11% regression in Dromaeo/dom-traverse and 25% regression in Dromaeo/jslib-dom-traverse probably for the same reason.

- Perf bots use g++.

- When I use clang locally, I cannot reproduce any regression in Linux nor Mac.

- When I use g++ locally, I can reproduce the performance difference as described below.

- I cannot explain all of the following results, but the following results are stable and reproducible:


[Performance results]

<<g++, my desktop, Linux Release, attributes on instances>>
Dromaeo/dom-traverse: 591 runs/sec
Dromaeo/dom-traverse (nextSibling): 654 runs/sec
Dromaeo/dom-traverse (previousSibling): 634 runs/sec
super-micro benchmark for div.nextSibling: 114 ms
super-micro benchmark for div.previousSibling: 112 ms

<<g++, my desktop, Linux Release, attributes on prototype chains>>
Dromaeo/dom-traverse: 619 runs/sec
Dromaeo/dom-traverse (nextSibling): 868 runs/sec
Dromaeo/dom-traverse (previousSibling): 671 runs/sec
super-micro benchmark for div.nextSibling: 111 ms
super-micro benchmark for div.previousSibling: 114 ms

<<g++, perf bot, Linux Release, attributes on instances>>
Dromaeo/dom-traverse: 400 runs/sec
Dromaeo/dom-traverse (nextSibling): 550 runs/sec
Dromaeo/dom-traverse (previousSibling): 525 runs/sec

<<g++, perf bot, Linux Release, attributes on prototype chains>>
Dromaeo/dom-traverse: 360 runs/sec
Dromaeo/dom-traverse (nextSibling): 450 runs/sec
Dromaeo/dom-traverse (previousSibling): 450 runs/sec


[Discussion]

- In my desktop, performance improves by 5% (591 runs/sec => 619 runs/sec) when moving attributes to prototype chains. This is very mysterious. Why moving attributes improve performance?

- I cannot observe any performance difference in super-micro benchmarks for div.nextSibling and div.previousSibling. This result makes sense.

- I don't understand why we observe performance difference in Dromaeo/dom-traverse whereas we cannot observe any performance difference in super-micro benchmarks. In particular, it's mysterious that "Dromaeo/dom-traverse (nextSibling)" runs significantly faster than "Dromaeo/dom-traverse (previousSibling)". For experiment purpose, I swapped the position of Node::m_next and Node::m_previous, but I got the same result. We can observe a similar difference in perf bots: nextSibling (550 runs/sec) runs faster than previousSibling (450 runs/sec).


So... what I found is that the performance regression would be related to g++ optimization, but I cannot interpret the result.

Dan: Do you have any idea on this?

haraken - thanks for the comprehensive analysis.  it gives me something to look into.

as for performance improvements, setters are much faster for the new properties than the old ones, so if there are any setters, that could be it.  Additionally, crankshaft only has direct support for the new style properties. the old ones mean a couple of layers of extra instructions - ie, they may be a bit faster once crankshafted, but maybe not.
For your reference, here is a reproduction step:

(1) Build ToT. And Build ToT with https://codereview.chromium.org/158713002/
(2) Run Dromaeo/dom-traverse (http://dromaeo.com/?dom-traverse) and compare the performance.

Discussed with Dan, and it seems that the only way to dig into the performance issue is to login to the perf bots and investigate what's going on there. I got access to the perf bots and started the investigation. I suspect a g++ version on the bots.

Here is an update:

- With the latest V8, I'm getting the following results in my local Linux Release build:

[g++, on instance, Dromaeo/dom-traverse] 575 runs/sec
[g++, on prototype, Dromaeo/dom-traverse] 621 runs/sec
[clang, on instance, Dromaeo/dom-traverse] 572 runs/sec
[clang, on prototype, Dromaeo/dom-traverse] 610 runs/sec

In summary, moving DOM attributes to prototype chains makes performance improvement. This does make sense, because Dan added some optimization only for a call path for DOM attributes on prototype chains.

- On the other hand, we observe 10% performance regression in perf bots. I identified that this would be due to g++ optimization. So I logged into the perf bots and investigated a couple of things, but couldn't figure out what is causing the regression. The perf bot infrastructure is a bit old, so that might be related to the regression, but not sure.

- Given the above, I'm planning the following steps:

(1) Reland the CL.
(2) See if the perf bots regress. (It can regress, because we've done nothing since we landed the CL last.)
(3) Keep the CL in for a couple of days and get a Canary Release on Win/Mac/Linux.
(4) If we don't observe any regression in the Canary Releases, we keep the CL in regardless of the performance regression in the perf bots (because what matters is what is delivered to users).

Project Member Comment 78 by bugdroid1@chromium.org, May 16 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=174142

------------------------------------------------------------------
r174142 | haraken@chromium.org | 2014-05-16T08:42:09.761459Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=174142&r2=174141&pathrev=174142
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=174142&r2=174141&pathrev=174142
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=174142&r2=174141&pathrev=174142
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=174142&r2=174141&pathrev=174142
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=174142&r2=174141&pathrev=174142

Move popular DOM attributes to prototype chains

Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit

Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ

This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL four months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.

Dromaeo/dom-attr 1145 runs/sec => 1130 runs/sec (-1.3%)
Dromaeo/dom-modify 492 runs/sec => 496 runs/sec (+0.8%)
Dromaeo/dom-query 25580 runs/sec => 25107 runs/sec (-1.8%)
Dromaeo/dom-traverse 581 runs/sec => 579 runs/sec (+0.3%)

In particular, I cannot observe any regression in a super micro benchmark that repeats div.firstChild.

I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.

See the design document and the Intent-to-ship email for justification for the regression.

BUG=43394

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=167680

R=jochen@chromium.org

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=168383

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=170941

Review URL: https://codereview.chromium.org/158713002
-----------------------------------------------------------------
Project Member Comment 79 by bugdroid1@chromium.org, May 19 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=174278

------------------------------------------------------------------
r174278 | haraken@chromium.org | 2014-05-19T13:19:53.304394Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=174278&r2=174277&pathrev=174278
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain-expected.txt?r1=174278&r2=174277&pathrev=174278
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=174278&r2=174277&pathrev=174278
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/dom-attribute-on-prototype-chain.html?r1=174278&r2=174277&pathrev=174278
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=174278&r2=174277&pathrev=174278

Revert 174142 "Move popular DOM attributes to prototype chains"

It caused unacceptable regression in Dromaeo/xxx-traverse.
https://chromeperf.appspot.com/report?masters=ChromiumPerf&bots=chromium-rel-mac6%2Cchromium-rel-mac8%2Cchromium-rel-win7-dual%2Cchromium-rel-win7-single%2Cchromium-rel-win7-x64-dual%2Cchromium-rel-win8-dual%2Cchromium-rel-xp-dual%2Clinux-release&tests=dromaeo.jslibtraverseprototype%2Fjslib&checked=core


> Move popular DOM attributes to prototype chains
> 
> Design document: https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit
> 
> Intent-to-ship-and-implement in blink-dev: https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/t0XiZuMey7M/9-5AuhoFyisJ
> 
> This CL moves DOM attributes used in Dromaeo to prototype chains. When I landed the CL four months ago (https://codereview.chromium.org/94403002), it caused 20+% regression in benchmarks. However, now that a V8 side fix is landed, there should be no overhead in moving DOM attributes to prototype chains in theory.
> 
> Dromaeo/dom-attr 1145 runs/sec => 1130 runs/sec (-1.3%)
> Dromaeo/dom-modify 492 runs/sec => 496 runs/sec (+0.8%)
> Dromaeo/dom-query 25580 runs/sec => 25107 runs/sec (-1.8%)
> Dromaeo/dom-traverse 581 runs/sec => 579 runs/sec (+0.3%)
> 
> In particular, I cannot observe any regression in a super micro benchmark that repeats div.firstChild.
> 
> I'm going to land this CL and see how much regression is observed in perf bots (I'll email to perf-sheriff@). If I find the regression is unacceptable, I'll revert the CL.
> 
> See the design document and the Intent-to-ship email for justification for the regression.
> 
> BUG=43394
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=167680
> 
> R=jochen@chromium.org
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=168383
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=170941
> 
> Review URL: https://codereview.chromium.org/158713002

TBR=haraken@chromium.org

Review URL: https://codereview.chromium.org/292743003
-----------------------------------------------------------------
We investigated the issue with Dan, and found that we're not yet getting close, unfortunately.

[Summary]
Dromaeo/dom-traverse does not regress, but Dromaeo/jslib-traverse-jquery (and some other Dromaeo benchmarks) regresses. The reason is as follows:

- Performance progresses if we traverse six or less DOM types. However, performance regresses if we traverse more than six DOM types.

- Dromaeo/dom-traverse is not traversing many DOM types, and thus it doesn't regress (it progresses in some perf bots). On the other hand, Dromaeo/jslib-traverse-jquery is traversing a lot of DOM types, and thus it regresses.

This regression is real and non-negligible, because real-world JS traverses a lot of DOM types.


[Details]
Consider the following code:

// Performance test 1
var treeSize = 10000;
var div = document.createElement(“div”);
for (var i = 0; i < treeSize / 2; i++) {
  div.appendChild(document.createElement(“div”));
  div.appendChild(document.createElement(“a”));
}
runTest(function() {
  var element = div.firstChild;
  while (element)
    element = element.nextSibling;
});

// Performance test 2
var treeSize = 10000;
var div = document.createElement(“div”);
for (var i = 0; i < treeSize / 8; i++) {
  div.appendChild(document.createElement(“div”));
  div.appendChild(document.createElement(“a”));
  div.appendChild(document.createElement(“br”));
  div.appendChild(document.createElement(“form”));
  div.appendChild(document.createElement(“canvas”));
  div.appendChild(document.createElement(“img”));
  div.appendChild(document.createElement(“details”));
  div.appendChild(document.createElement(“font”));
}
runTest(function() {
  var element = div.firstChild;
  while (element)
    element = element.nextSibling;
});

When we execute the performance tests in an on-instance version (in which DOM attributes are defined on instances) and an on-prototype version (in which DOM attributes are defined on prototype chains), we get the following results:

- The on-prototype version is faster than the on-instance version in the performance test 1.
- The on-instance version is faster than the on-prototype version in the performance test 2.

More specifically, we confirmed the following results:

- The on-prototype version is faster than the on-instance version when we traverse six or less types of Nodes.
- The on-instance version is faster than the on-prototype version when we traverse more than six types of Nodes.

This result can be explained as follows:

- The on-instance version is not crankshafted. When we access element.nextSibling, the following happens:

(1) We look up IC (inline caching).
(2) If we hit the IC, we call the binding callback via the IC. The code is not crankshafted.
(3) Otherwise, we look up the nextSibling attribute on the element and then call the binding callback.

- On the other hand, the on-prototype version is crankshafted. When we access element.nextSibling, the following happens:

(1) We look up IC.
(2) If we hit the IC, we call the binding callback via the IC. The code is crankshafted and thus super fast. We don’t need to look up the nextSibling attribute on the prototype chain. The crankshafted code directly calls the binding callback. (The crankshafted code is discarded when the shape of the prototype chain is changed.)
(3) Otherwise, we look up the nextSibling attribute on the prototype chain and then call the binding callback.

- Given the above, as long as we’re hitting the IC, the on-prototype version is faster than the on-instance version, because the on-prototype version uses the crankshafted code. However, if we miss the IC, the on-prototype version becomes slower than the on-instance version, because the on-prototype version needs to look up the DOM attribute in the prototype chain.

- The number of the IC entries is limited, and the number is six (Accurately speaking, the number of the IC entries is four, and the six is the number when the secondary cache is considered). That’s why the on-prototype version becomes slower than the on-instance version when the number of Node types exceeds six. That’s the point where the IC starts failing.

This would be a real issue, because real-world JS will be using a lot of DOM types and will miss the IC a lot of times.

In conclusion, in order to fix this issue, we need to wait for another complex fix in the V8 side. dcarney@ and danno@ have some idea and are planning to write a document about how to address the issue.

(Let me emphasize that we’re moving forward anyway. I kept the CL in the trunk for a couple of days, but didn’t get any crash report or behavior bugs caused by the CL. This means that there would be no behavioral issue in moving DOM attributes to prototype chains :-)

Comment 81 by arv@chromium.org, Jun 3 2014
Cc: japhet@chromium.org
Issue 114791 has been merged into this issue.
Cc: -sandholm@chromium.org -ricow@chromium.org
Blocking: chromium:116408
Possible severe regression as a result of this: https://code.google.com/p/chromium/issues/detail?id=380764

Hopefully can be nailed before 36 is released.
All the CL about this change is already reverted. Do you still observe the regression in ToT?
Issue 380385 has been merged into this issue.
Issue 380385 has been merged into this issue.
Issue 380385 has been merged into this issue.
Any updates on this?

Folks using Polymer are easily burned by this because names they use in their custom elements can collide with DOM accessors. Now that Custom Elements has shipped, it is higher priority to get this resolved? Another data point: Firefox and IE are shipping working versions and Safari has made progress on a fix. (I'm now having to write checks like "isBrokenChrome" in tests... :| )

Another issue with this is it makes it very hard to polyfill any new web proposal/spec involving DOM accessors, since they can't be overridden like methods can.

Anyway, I don't mean to sound negative... This will be hugely awesome when it lands and will make the lives of folks building web components much better!

I'm working on this when I have a cycle (and aiming at completing it by the end of Q4).

The current situation is that I have a CL but a couple of Chromium-side tests are still failing. I've fixed some of them but not yet all of them.
https://codereview.chromium.org/447523003/

This is definitely on my radar.

Blocking: chromium:435727
Just an update: tasak@ started investigating behavior bugs in browser_tests.

Owner: yukishiino@chromium.org
Reassigning an owner to shiino-san.

Any updates here?
> Any updates here?

shiino-san is going to spend full time on this in Q1.

That being said, it requires a substantial amount of work to fix all behavioral regressions caused by moving DOM attributes. So we're planning to move only DOM attributes used in Dromaeo to prototype chains (which won't cause behavioral regressions) in M41 and work on the remaining DOM attributes after that.

Here is an initial result of moving DOM attributes used in Dromaeo:

https://docs.google.com/a/google.com/spreadsheets/d/1B1uTeNEc7I9LRNG67jOF5Y1BdfTZPT6IjwZQ8gS3ylk/edit#gid=0

The performance numbers look very bad unfortunately.

(a) 10% regression in bindings.first-child.
(b) 10% - 14% regression in dromaeo.domtraverse
(c) More than 40% regression in dromaeo.jslibtraverse
(d) 10% regression in page load time of page cycler

(c) and (d) are definitely unacceptable. (c) means that we're regressing DOM traversals by 40%.

It looks like that (a) and (b) are regressions caused by some recent changes in V8. There was no regression in (a) and (b) 4 months ago.

We'll do a couple of more investigations and consider a strategy to land this.

Thanks for the update... and *ouch*!

In "we're planning to move only DOM attributes used in Dromaeo" - do you mean "...*NOT* used in Dromaeo"? 

Ganbatte, Shiino-san!

Comment 97 by raggi@google.com, Dec 17 2014
Is this re-raised with the standards body? It sounds like there's priority
here to performance over correctness, although until custom elements this
isn't apparent to most users. I don't know the subtleties you're describing
but these new semantics will remove some old options for optimization - as
a user I'm expecting this.
jsbell@:
> In "we're planning to move only DOM attributes used in Dromaeo" - do you mean "...*NOT* used in Dromaeo"?

We're planning to move DOM attributes used in Dromaeo first in order to understand and tackle problems in terms of performance and behavioral correctness. But I agree that we might need to take the other way.

Here is a status update and a future plan.

I moved DOM attributes used in Dromaeo to prototype chains and evaluated performance using telemetry. The result is summarized in this sheet:
https://docs.google.com/a/chromium.org/spreadsheets/d/11Sm_CRGpKRF7bkvbJnwfHSVDKhnU9kjh0xMr6RacVIE/edit#gid=0

(a) There is 10% regression in bindings.first-child and 10% - 14% regression in dromaeo.domtraverse. Given that there was no regression in these benchmarks 4 months ago, this is a regression caused by recent V8 changes. Although we don't really care about regressions in these benchmarks, these regressions indicate that we clearly regressed something important in the mechanism of prototype chain lookup. We need to bisect the culprit and fix it.

(b) There is more than 40% regression in dromaeo.jslibtraverse and 10% regression in page load time of page cycler. 40% regression in dromaeo.jslibtraverse indicates that the change regresses performance of DOM traversals if a DOM tree contains a lot of types of elements. (For more details, see my comment in #80.)

Overall I don't think we are not in a state where we can move DOM attributes used in Dromaeo to prototype chains just right now. So I propose the following plan:

- Regarding (a), this is the third time V8 unexpectedly regressed performance of prototype chain lookup. This sadness happens because we don't have any DOM attribute on prototype chains and thus we don't have any benchmark testing the performance. So I propose to move a couple of unimportant DOM attributes (e.g., Element.title) to prototype chains just right now and add performance benchmarks for the DOM attribute. This will prevent us from regressing the performance again and spending a lot of time in bisecting the culprit.

- Regarding (b), I believe that the V8 team has a concrete plan to address the mega-morphism problem and Toon is planning to land the optimization to V8 (What's the current status?). I think that the current problem is that we don't have any DOM attribute on prototype chains and have any benchmark about it, so it is not easy for the V8 team to work on the optimization. So I propose to add benchmarks for the mega-morphism problem using Element.title (We can create the benchmark in a way I described in #80). Once we land the benchmark, we have a clear target to optimize which will help the V8 team to work on the optimization.

- Once we can make the regression down to an acceptable level, let's start moving popular DOM attributes incrementally.


In terms of work distribution, I'm imagining the following model:

- yukishiino@ will spend full time on this project in Q1.
- yukishiino@ will move a couple of unimportant DOM attributes (e.g., Element.title) to prototype chains and add benchmarks for it. The benchmarks will include a benchmark that tests the mega-morphic behavior. This will happen in early January.
- yukishiino@ will bisect a V8 change that caused 10% regression on blink_perf.first-child.
- yukishiino@ will fix behavioral bugs in browser tests when we move DOM attributes to prototype chains.
- The V8 team (Toon?) will address the poly-morphism problem using the benchmarks.

What do you think?

That sounds like a good proposal. We'll also help with fixing any correctness bugs that might show up.

I think landing the unimportant DOM attributes changes is the highest priority.
Project Member Comment 101 by bugdroid1@chromium.org, Jan 13 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=188298

------------------------------------------------------------------
r188298 | haraken@chromium.org | 2015-01-13T15:45:32.848258Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/PerformanceTests/Bindings/dom-attribute-on-prototoype.html?r1=188298&r2=188297&pathrev=188298

Add a performance benchmark for Node.baseURI

This benchmark is going to be used to evaluate performance of DOM attributes
on prototype chains. To evalate the performance, you need to either:

- Apply https://codereview.chromium.org/447523003/; or
- Add [ExposeJSAccessors] on Node.baseURI.

BUG=43394

Review URL: https://codereview.chromium.org/836923005
-----------------------------------------------------------------
Project Member Comment 102 by bugdroid1@chromium.org, Jan 14 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7bc51702afbf6957765fcecea2ab4e3cd1afb6cc

commit 7bc51702afbf6957765fcecea2ab4e3cd1afb6cc
Author: yukishiino <yukishiino@chromium.org>
Date: Wed Jan 14 14:21:08 2015

Fixes WebRTC browsertests.

Blink team is planning to move DOM attributes into prototype chains.
DOM attributes will no longer be accessible as Object properties, e.g.
JSON.stringify will not see DOM attributes.  So WebRTC tests shouldn't
expect that they can stringify DOM attributes.

Fixes tests not to directly stringify DOM objects.

BUG=43394

Review URL: https://codereview.chromium.org/811653007

Cr-Commit-Position: refs/heads/master@{#311472}

[modify] http://crrev.com/7bc51702afbf6957765fcecea2ab4e3cd1afb6cc/content/test/data/media/getusermedia.html

Project Member Comment 103 by bugdroid1@chromium.org, Jan 23 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=188873

------------------------------------------------------------------
r188873 | yukishiino@chromium.org | 2015-01-23T11:12:20.977893Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/inspector/InjectedScriptBase.cpp?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/Geolocation/enabled-expected.txt?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/script-tests/webtiming-navigate-within-document.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/Geolocation/script-tests/enabled.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/svg/SVGStyleElement.html?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/notifications/serviceworker-notification-event.html?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/script-tests/webtiming-document-open.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediastream/RTCSessionDescription.html?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/push_messaging/resources/pushevent-extendable-event.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediastream/RTCIceCandidate.html?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/security/contentSecurityPolicy/img-blocked-no-gc-crash-expected.txt?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediastream/RTCSessionDescription-expected.txt?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/misc/performance-memory-in-dedicated-worker.html?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/misc/performance-memory-in-shared-worker.html?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/element-instance-property-listing-expected.txt?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/element-instance-property-listing-expected.txt?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/resources/testharness-helpers.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/push_messaging/subscribe_success.html?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediastream/RTCIceCandidate-expected.txt?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/notifications/resources/serviceworker-notification-event.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/resources/js-test.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/js/script-tests/delete-syntax.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/storage/indexeddb/resources/keypath-intrinsic-properties.js?r1=188873&r2=188872&pathrev=188873
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/resources/element-instance-property-listing.js?r1=188873&r2=188872&pathrev=188873

bindings: Fixes layouttests when moving attributes to prototype chains.

Fixes layouttests so that they pass when DOM attributes are moved to
prototype chains.

Major changes are:
- JSON.stringify doesn't work for DOM attributes on prototype chains.
  We're going to use stringifyDOMObject instead defined in js-test.js.
- Use of assert_own_property for DOM attributes is wrong.  We use
  assert_will_be_idl_attribute in this CL, and after we move to
  prototype chains, we'll replace it with assert_idl_attribute.
- element-instance-property-listing is expected to list all the DOM
  attributes.  So I changed it to list up all attributes including
  those on prototype.

BUG=43394

Review URL: https://codereview.chromium.org/821303006
-----------------------------------------------------------------
Project Member Comment 104 by bugdroid1@chromium.org, Jan 26 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=188944

------------------------------------------------------------------
r188944 | haraken@chromium.org | 2015-01-26T08:15:41.382039Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=188944&r2=188943&pathrev=188944
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_interface.py?r1=188944&r2=188943&pathrev=188944

Move methods about indexed/named getters/setters/deleters to v8_utilities.py

This is a split from https://codereview.chromium.org/447523003.
We don't have a plan to land the original CL soon but multiple people are applying
the CL locally, so it is important to make the CL size smaller.
This CL helps decrease the original CL.

BUG=43394

Review URL: https://codereview.chromium.org/867153004
-----------------------------------------------------------------
Project Member Comment 105 by bugdroid1@chromium.org, Feb 3 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=189383

------------------------------------------------------------------
r189383 | yukishiino@chromium.org | 2015-02-03T05:20:53.803001Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/navigatorconnect/resources/connect-helper.html?r1=189383&r2=189382&pathrev=189383
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/resources/testharness-helpers.js?r1=189383&r2=189382&pathrev=189383
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/navigatorconnect/resources/connect-helper.js?r1=189383&r2=189382&pathrev=189383

bindings: Fixes connect-helper to use stringifyDOMObject.

JSON.stringify doesn't work with DOMObjects/DOMExceptions when we move DOM attributes to prototype chains.  Fixes layout tests to use stringifyDOMObject instead in js-test.js.

BUG=43394

Review URL: https://codereview.chromium.org/885343002
-----------------------------------------------------------------
Project Member Comment 106 by bugdroid1@chromium.org, Feb 7 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e27865b72eab201b557a60b88bb648e3f8b0843f

commit e27865b72eab201b557a60b88bb648e3f8b0843f
Author: yukishiino <yukishiino@chromium.org>
Date: Sat Feb 07 12:33:37 2015

webrtc: Fixes WebRtcBrowserTest to use DOM attributes correctly.

WebRtcBrowserTest.RunsAudioVideoWebRTCCallInTwoTabs is assuming that DOM attributes are own properties on a JS obejct, which is not correct.  Blink (binding) team is working to move DOM attributes from own properties to properties on prototype chains, and then this test will break.

This CL fixes the test so that it stringifies not only own properties but also attributes on prototype chains.

BUG=43394

Review URL: https://codereview.chromium.org/904823002

Cr-Commit-Position: refs/heads/master@{#315198}

[modify] http://crrev.com/e27865b72eab201b557a60b88bb648e3f8b0843f/chrome/test/data/webrtc/peerconnection.js

Project Member Comment 107 by bugdroid1@chromium.org, Feb 10 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=189859

------------------------------------------------------------------
r189859 | yukishiino@chromium.org | 2015-02-10T03:23:50.503578Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/htmlcollection-enumerated-properties.html?r1=189859&r2=189858&pathrev=189859
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/htmlformcontrolscollection-enumerated-properties.html?r1=189859&r2=189858&pathrev=189859
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/htmlallcollection-enumerated-properties.html?r1=189859&r2=189858&pathrev=189859
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/htmloptionscollection-enumerated-properties.html?r1=189859&r2=189858&pathrev=189859

layout tests: Fixes property enumeration tests.

In for (prop in obj), there is no guarantee about the order of property list.
We should not rely on a specific order of listing.  Fixes tests by sorting
properties.

BUG=43394

Review URL: https://codereview.chromium.org/906963002
-----------------------------------------------------------------
Project Member Comment 108 by bugdroid1@chromium.org, Feb 17 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190287

------------------------------------------------------------------
r190287 | yukishiino@chromium.org | 2015-02-17T02:35:53.207329Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface2.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface3.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8DOMConfiguration.h?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/methods.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestException.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8DOMConfiguration.cpp?r1=190287&r2=190286&pathrev=190287
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/constants.cpp?r1=190287&r2=190286&pathrev=190287

bindings: Makes runtime-enabled attributes on prototype chains compilable.

Makes runtime-enabled "accessors" compilable.

BUG=43394,424446

Review URL: https://codereview.chromium.org/922233002
-----------------------------------------------------------------
Project Member Comment 109 by bugdroid1@chromium.org, Feb 17 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190296

------------------------------------------------------------------
r190296 | yukishiino@chromium.org | 2015-02-17T07:49:49.329282Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=190296&r2=190295&pathrev=190296
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_interface.py?r1=190296&r2=190295&pathrev=190296

bindings: Excludes conditionally-enabled accessors from V8FooAccessors.

As same as V8FooAttributes, V8FooAccessors should not include conditionally-enabled accessors.

BUG=43394

Review URL: https://codereview.chromium.org/931593003
-----------------------------------------------------------------
Project Member Comment 110 by bugdroid1@chromium.org, Feb 17 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190312

------------------------------------------------------------------
r190312 | haraken@chromium.org | 2015-02-17T12:40:43.997628Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=190312&r2=190311&pathrev=190312
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=190312&r2=190311&pathrev=190312
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=190312&r2=190311&pathrev=190312
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=190312&r2=190311&pathrev=190312
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=190312&r2=190311&pathrev=190312

Move popular DOM attributes to prototype chains

Design document: 
https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit

Intent-to-ship-and-implement in blink-dev: 
https://groups.google.com/a/chromium.org/d/topic/blink-dev/H0MGw0jkdn4/discussion

This CL can cause a slight regression in a couple of micro-benchmarks (e.g., Dromaeo/dom-traverse, Dromaeo/jsquery-traverse etc) but that is expected. See this spreadsheet for full performance results:
https://docs.google.com/a/google.com/spreadsheets/d/1Q6h2A11a2R4Q_MRuv_diyZCNzQBFExziXkV2MwChw48/edit#gid=622133744

BUG=43394

Review URL: https://codereview.chromium.org/158713002
-----------------------------------------------------------------
Project Member Comment 111 by bugdroid1@chromium.org, Feb 17 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190342

------------------------------------------------------------------
r190342 | yukishiino@chromium.org | 2015-02-17T18:20:36.671370Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/battery-status/api-defined-expected.txt?r1=190342&r2=190341&pathrev=190342
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/battery-status/api-defined.html?r1=190342&r2=190341&pathrev=190342

bindings: Fixes battery-status test (attributes are not own properties).

The current battery-status/api-defined.html assumes that the attributes
are own properties, which is wrong.  Removes wrong assumptions.

The test still tests the existence of the attributes by using
expressions in the form of
    "attribute" in battery

BUG=43394

Review URL: https://codereview.chromium.org/931783002
-----------------------------------------------------------------
Project Member Comment 112 by bugdroid1@chromium.org, Feb 17 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190345

------------------------------------------------------------------
r190345 | yukishiino@chromium.org | 2015-02-17T18:28:17.760238Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/push_messaging/resources/interfaces-worker.js?r1=190345&r2=190344&pathrev=190345

bindings: Fixes push_messaging/interfaces.html test.

Fixes http/tests/push_messaging/interfaces.html test to use assert_will_be_idl_attribute.

BUG=43394

Review URL: https://codereview.chromium.org/935553002
-----------------------------------------------------------------
Project Member Comment 113 by bugdroid1@chromium.org, Feb 18 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190384

------------------------------------------------------------------
r190384 | yukishiino@chromium.org | 2015-02-18T04:13:58.916261Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/css-properties-as-js-properties.html?r1=190384&r2=190383&pathrev=190384
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt?r1=190384&r2=190383&pathrev=190384
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/css-properties-as-js-properties-expected.txt?r1=190384&r2=190383&pathrev=190384

bindings: Fixes CSS property listing test to test attributes on prototype.

Updates css-properties-as-js-properties test so it checks attributes on a prototype chain.

BUG=43394

Review URL: https://codereview.chromium.org/928363002
-----------------------------------------------------------------
Project Member Comment 114 by bugdroid1@chromium.org, Feb 18 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190391

------------------------------------------------------------------
r190391 | yukishiino@chromium.org | 2015-02-18T05:21:05.779875Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=190391&r2=190390&pathrev=190391

bindings: Fixes potential build breakage (V8DOMConfiguration::installAccessor).

The arguments of the call to V8DOMConfiguration::installAccessor in
interface_base.cpp was wrong.  This CL Fixes it.

Since the code is not yet actually used, we failed to detect the error.

BUG=43394

Review URL: https://codereview.chromium.org/931793002
-----------------------------------------------------------------
Project Member Comment 115 by bugdroid1@chromium.org, Feb 18 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190421

------------------------------------------------------------------
r190421 | haraken@chromium.org | 2015-02-18T13:25:30.611471Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=190421&r2=190420&pathrev=190421
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=190421&r2=190420&pathrev=190421
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=190421&r2=190420&pathrev=190421

Move Node.baseURI to JS prototype chains

Node.baseURI is used by a micro-benchmark (PerformanceTests/Bindings/dom-attributes-on-prototype.html), which evaluates performance of DOM attributes on prototype chains. This benchmark is used by the V8 team for their optimization work, so it is important to have Node.baseURI on a prototype chain.

This CL will slightly regress PerformanceTests/Bindings/dom-attributes-on-prototype.html, but it won't be an issue since real-world sites shouldn't be using baseURI heavily.

BUG=43394

Review URL: https://codereview.chromium.org/936633003
-----------------------------------------------------------------
As predicted in your mail to perf sheriffs this may have caused (significant) regressions. The graphs are here: https://chromeperf.appspot.com/group_report?bug_id=459653

The bisect bots indicate several other CLs along with this one so it may not entirely down to this CL, but most of the other CLs seem benign. The other potential CLs are listed here: https://code.google.com/p/chromium/issues/detail?id=459653

Please take a look into this as many regressions are >20%. Thanks.


Thanks for the performance summary! These regressions are expected ones (as I described in ) and I think it's OK to keep the CL in.

The regressions are happening only in Dromaeo/*traverse benchmarks and these regressions are expected ones. Regarding Dromaeo/jslibtraverse, we made larger performance progressions before making the regression. Regarding Dromaeo/domtraverse, I think Jacob landed another optimization to V8. (See here for more detailed justfication: https://groups.google.com/a/chromium.org/d/topic/blink-dev/H0MGw0jkdn4/discussion)


Project Member Comment 118 by bugdroid1@chromium.org, Feb 20 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190589

------------------------------------------------------------------
r190589 | yukishiino@chromium.org | 2015-02-20T22:18:42.168012Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/inspector/InjectedScriptHost.idl?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8InjectedScriptHostCustom.cpp?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8Binding.h?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/fetch/Request.idl?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/inspector/InjectedScriptSource.js?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/fetch/Response.idl?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterface.idl?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/IDLExtendedAttributes.txt?r1=190589&r2=190588&pathrev=190589
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8Binding.cpp?r1=190589&r2=190588&pathrev=190589

bindings,devtools: Shows DOM attribute's values in DevTools.

Shows the evaluated values of DOM attributes in DevTools (inspector)
even when DOM attributes are in a prototype chain.

However, do not show or eval DOM attributes if they have
DoNotEvalInDevTools extended attribute, which is introduced by this CL.

BUG=450623,43394

Review URL: https://codereview.chromium.org/942753003
-----------------------------------------------------------------
Project Member Comment 119 by bugdroid1@chromium.org, Feb 25 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=190840

------------------------------------------------------------------
r190840 | yukishiino@chromium.org | 2015-02-25T16:27:23.528367Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceCheckSecurity.idl?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestObject.idl?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/attributes.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=190840&r2=190839&pathrev=190840
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=190840&r2=190839&pathrev=190840

bindings: Supports [Replaceable] accessors.

Supports [Replaceable] DOM attributes on prototype chains.

BUG=43394

Review URL: https://codereview.chromium.org/953473002
-----------------------------------------------------------------
Blocking: chromium:462461
Blocking: chromium:138217
Project Member Comment 122 by bugdroid1@chromium.org, Mar 3 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=191179

------------------------------------------------------------------
r191179 | yukishiino@chromium.org | 2015-03-03T08:32:57.198434Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8Binding.h?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/attributes.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8Binding.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=191179&r2=191178&pathrev=191179
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=191179&r2=191178&pathrev=191179

bindings: Supports constructor attributes on prototype chains.

Supports constructor attributes on prototype chains.

- No one needs {{cpp_class}}ForceSetAttributeOnThisCallback.
- {{cpp_class}}ConstructorGetter does NOT depend on {{cpp_class}} or
  {{attribute}}.  Moved out to
  v8ConstructorAttributeGetterAs{Property,Accessor} in V8Binding.h.

BUG=43394

Review URL: https://codereview.chromium.org/968593002
-----------------------------------------------------------------
Project Member Comment 123 by bugdroid1@chromium.org, Mar 3 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=191182

------------------------------------------------------------------
r191182 | yukishiino@chromium.org | 2015-03-03T10:01:13.268308Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=191182&r2=191181&pathrev=191182
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8DOMConfiguration.cpp?r1=191182&r2=191181&pathrev=191182
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.cpp?r1=191182&r2=191181&pathrev=191182
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=191182&r2=191181&pathrev=191182
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8DOMConfiguration.h?r1=191182&r2=191181&pathrev=191182
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=191182&r2=191181&pathrev=191182

bindings: Supports conditionally-enabled accessors.

- Adds V8DOMConfiguration::installAccessor (prototype object version).

- Renames parameter names to be consistent.
  ObjectTemplate => instanceTemplate or prototypeTemplate
  Object => instance or prototype
  ObjectOrTemplate => instanceOrTemplate or prototypeOrTemplate

BUG=43394

Review URL: https://codereview.chromium.org/968583002
-----------------------------------------------------------------
Cc: yukishiino@chromium.org
Issue 464371 has been merged into this issue.
Project Member Comment 125 by bugdroid1@chromium.org, Mar 10 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=191617

------------------------------------------------------------------
r191617 | yukishiino@chromium.org | 2015-03-10T11:58:55.560203Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/inspector/InjectedScriptSource.js?r1=191617&r2=191616&pathrev=191617
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/inspector/InjectedScriptHost.idl?r1=191617&r2=191616&pathrev=191617
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8InjectedScriptHostCustom.cpp?r1=191617&r2=191616&pathrev=191617
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8DOMWrapper.cpp?r1=191617&r2=191616&pathrev=191617

bindings,devtools: Shows DOM attributes' values in DevTools.

A new utility function V8DOMWrapper::isWrapper provides a better way to
tell whether it's a DOM wrapper or not.  Using this function, improves
the inspector to show DOM attributes' values and not to show DOM attributes
which have observable side effect on getter.

BUG=450623,43394

Review URL: https://codereview.chromium.org/978233002
-----------------------------------------------------------------
Project Member Comment 126 by bugdroid1@chromium.org, Mar 11 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=191676

------------------------------------------------------------------
r191676 | yukishiino@chromium.org | 2015-03-11T04:09:39.230390Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/Window.idl?r1=191676&r2=191675&pathrev=191676
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/Location.idl?r1=191676&r2=191675&pathrev=191676

bindings: Adds missing [Unforgeable] extended attributes.

As the spec specifies, makes Window.document and Location.ancestorOrigins
[Unforgeable].

BUG=43394

Review URL: https://codereview.chromium.org/992963002
-----------------------------------------------------------------
Project Member Comment 127 by bugdroid1@chromium.org, Mar 12 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=191752

------------------------------------------------------------------
r191752 | yukishiino@chromium.org | 2015-03-12T04:45:36.326451Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestException.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/notifications/resources/instrumentation-service-worker.js?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/extensions/extensions-sidebar-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/w3c/webperf/approved/navigation-timing/html/idlharness-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventConstructor.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-dir-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/storage/indexeddb/keypath-intrinsic-properties-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/type-extensions.html?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8SVGTestInterface.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-command-copy-expected.txt?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestNode.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/extensions/extensions-sidebar.html?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp?r1=191752&r2=191751&pathrev=191752
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/inspector/tracing/timeline-xhr-event-expected.txt?r1=191752&r2=191751&pathrev=191752

bindings: Moves most of DOM attributes to prototype chains.

Design document:
https://docs.google.com/a/google.com/document/d/1yeHTCHhulVIlrKyx9_gCguAhLfcefVOa9uxxfW2LVG0/edit

Intent-to-ship-and-implement in blink-dev:
https://groups.google.com/a/chromium.org/d/topic/blink-dev/H0MGw0jkdn4/discussion

This CL can cause a slight regression in a couple of micro-benchmarks (e.g., Dromaeo/dom-traverse, Dromaeo/jsquery-traverse etc) but that is expected. See this spreadsheet for full performance results:
https://docs.google.com/a/google.com/spreadsheets/d/1Q6h2A11a2R4Q_MRuv_diyZCNzQBFExziXkV2MwChw48/edit#gid=622133744

BUG=43394

Review URL: https://codereview.chromium.org/984523003
-----------------------------------------------------------------
Project Member Comment 129 by bugdroid1@chromium.org, Mar 17 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=192005

------------------------------------------------------------------
r192005 | yukishiino@chromium.org | 2015-03-17T12:19:22.428007Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventConstructor.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/attributes.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/WrapperTypeInfo.h?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface2.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface3.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8ArrayBufferView.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8DataView.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8ArrayBuffer.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8Binding.h?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8SVGTestInterface.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestNode.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestException.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/NPV8Object.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterface.idl?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8Binding.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp?r1=192005&r2=192004&pathrev=192005
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=192005&r2=192004&pathrev=192005

bindings: Reduces the binary size by reducing # of callback functions.

Reduces the binary size of libblink by reducing the number of callback
functions for constructor attributes.

This CL introduces a map from WrapperTypeInfo to its interface name in string.

The size (in bytes) of out/Release/lib/libblink_web.so on Linux 64-bit build:
r191842
    43,752,904
r191842 + r191179 reverted
    43,521,840
r191842 + this CL
    43,551,952

BUG=464004,43394

Review URL: https://codereview.chromium.org/1008353002
-----------------------------------------------------------------
Project Member Comment 130 by bugdroid1@chromium.org, Apr 2 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=193039

------------------------------------------------------------------
r193039 | yukishiino@chromium.org | 2015-04-02T14:39:36.558867Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnProperties.cpp?r1=193039&r2=193038&pathrev=193039
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/compute_interfaces_info_overall.py?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceOwnProperties.idl?r1=193039&r2=193038&pathrev=193039
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/IDLExtendedAttributes.txt?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnPropertiesDerived.cpp?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceOwnPropertiesDerived.idl?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceAccessors.cpp?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnProperties.h?r1=193039&r2=193038&pathrev=193039
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=193039&r2=193038&pathrev=193039
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceAccessors.idl?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnPropertiesDerived.h?r1=193039&r2=193038&pathrev=193039
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceAccessors.h?r1=193039&r2=193038&pathrev=193039

bindings: Supports {,DoNot}ExposeJSAccessors.

Adds a mechanism to move DOM attributes to prototype chains or back to
own properties interface-by-interface and/or attribute-by-attribute.

Supported syntax and examples are demonstrated in:
  TestInterfaceAccessors.idl
  TestInterfaceOwnProperties.idl

BUG=43394

Review URL: https://codereview.chromium.org/1052973002
-----------------------------------------------------------------
Comment 131 by arv@chromium.org, Apr 8 2015
Issue 13170 has been merged into this issue.
Also see bug 472260
Labels: M-43
Plan is still to ship this in M43, right?

Project Member Comment 134 by bugdroid1@chromium.org, Apr 9 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=193448

------------------------------------------------------------------
r193448 | yukishiino@chromium.org | 2015-04-09T14:57:52.155096Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-format-collections-expected.txt?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/svg/svglist.html?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-command-copy-expected.txt?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=193448&r2=193447&pathrev=193448
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt?r1=193448&r2=193447&pathrev=193448
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/svg/svglist-expected.txt?r1=193448&r2=193447&pathrev=193448

bindings: Move named/indexed attributes to prototype chains.

BUG=43394,470671

Review URL: https://codereview.chromium.org/1062713003
-----------------------------------------------------------------
Blocking: chromium:475556
Project Member Comment 136 by bugdroid1@chromium.org, Apr 9 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=193476

------------------------------------------------------------------
r193476 | leviw@chromium.org | 2015-04-09T20:36:17.979449Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt?r1=193476&r2=193475&pathrev=193476
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/svg/svglist-expected.txt?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-format-collections-expected.txt?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/svg/svglist.html?r1=193476&r2=193475&pathrev=193476
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-command-copy-expected.txt?r1=193476&r2=193475&pathrev=193476

Revert of bindings: Move named/indexed attributes to prototype chains. (patchset #3 id:40001 of https://codereview.chromium.org/1062713003/)

Reason for revert:
Speculatively rolling out. Appears to be causing massive Browser Test failures: http://master.chrome.corp.google.com:8011/builders/cros%20trunk/builds/32444

crbug.com/475606

Original issue's description:
> bindings: Move named/indexed attributes to prototype chains.
> 
> BUG=43394,470671
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=193448

TBR=haraken@chromium.org,yukishiino@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=43394,470671

Review URL: https://codereview.chromium.org/1078913002
-----------------------------------------------------------------
#133: Yes, we're planning to ship it in M43. We're making a blog post.

Blocking: chromium:474436
Blocking: chromium:476428
Project Member Comment 140 by bugdroid1@chromium.org, Apr 24 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=194371

------------------------------------------------------------------
r194371 | yukishiino@chromium.org | 2015-04-24T10:23:36.878450Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=194371&r2=194370&pathrev=194371

bindings: No need to move constructor attributes to prototype chains.

I've got understanding that we do not need to (actually should not to)
move constructor attributes to prototype chains.

http://heycam.github.io/webidl/#es-interfaces
a corresponding property must exist on the ECMAScript environment's global object. The name of the property is the identifier of the interface, and its value is an object called the interface object.

I checked that
- this.hasOwnProperty('EventTarget') => true
- Object.getOwnPropertyDescriptor(this, 'EventTarget')
  => {writable: true, enumerable: false, configurable: true}
on both of Chrome and FF where |this| is the global object.

Thus, there is nothing to do so far.

BUG=43394

Review URL: https://codereview.chromium.org/1084593003
-----------------------------------------------------------------
I have not dug into the code - does it treat global constructors the same as non global constructors?
While I am not sure non global constructors are prevalent at all, they might need different handling.

For reference -
A global constructor is a constructor defined on the global object -
window.HTMLBodyElement

A non global constructor is a constructor defined on a non global object (hypothetical) -
window.CSS.CSSConcept

Perhaps this is irrelevant, but I wanted to stress that they might need different handling.
AFAIK, there is no attribute that returns an interface object (= a constructor) except for Window and WorkerGlobalScope which are global objects.

There are [NewObject] operations (= methods) which return a newly created object which is NOT a constructor, though.  They're not attributes and they don't return constructors.
http://heycam.github.io/webidl/#NewObject

IIUC, there is no "non global constructor".
Project Member Comment 143 by bugdroid1@chromium.org, Apr 27 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ac0bacffa7b4f25a09abaa082a32abb599d6e318

commit ac0bacffa7b4f25a09abaa082a32abb599d6e318
Author: yukishiino <yukishiino@chromium.org>
Date: Mon Apr 27 10:30:09 2015

Fixes wrong inheritance of PrefSelect.

PrefSelect must inherit from HTMLSelectElement, otherwise it will be
broken when the DOM attributes are moved to prototype chains.

Note that HTMLSelectElement does NOT inherit from HTMLInputElement, so
it's simply wrong that PrefSelect inherits from HTMLInputElement.

BUG=43394

Review URL: https://codereview.chromium.org/1061263004

Cr-Commit-Position: refs/heads/master@{#327023}

[modify] http://crrev.com/ac0bacffa7b4f25a09abaa082a32abb599d6e318/chrome/browser/resources/options/pref_ui.js

Project Member Comment 144 by bugdroid1@chromium.org, Apr 28 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=194600

------------------------------------------------------------------
r194600 | yukishiino@chromium.org | 2015-04-28T13:39:35.700479Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-command-copy-expected.txt?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLEmbedElement.idl?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLAppletElement.idl?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/inspector/console/console-format-collections-expected.txt?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/svg/svglist.html?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=194600&r2=194599&pathrev=194600
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt?r1=194600&r2=194599&pathrev=194600
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/svg/svglist-expected.txt?r1=194600&r2=194599&pathrev=194600

bindings: Move named/indexed attributes to prototype chains.

The previous CL (http://crrev.com/1062713003) was reverted because of
failures of browser_tests.  I've fixed the issue
at http://crrev.com/1061263004 , so this time should be okay ... I believe.

BUG=43394,470671

Review URL: https://codereview.chromium.org/1102313002
-----------------------------------------------------------------
Comment 145 by math...@qiwi.be, May 27 2015
For the record, the abovementioned blog post is here: http://updates.html5rocks.com/2015/04/DOM-attributes-now-on-the-prototype

Can this ticket be closed?
No, we're still actively working on many remaining issues.  The transition has not completed yet.
Blocking: chromium:490780
Blockedon: chromium:497613
Blockedon: chromium:497616
Project Member Comment 150 by bugdroid1@chromium.org, Jun 19 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=197434

------------------------------------------------------------------
r197434 | yukishiino@chromium.org | 2015-06-19T05:50:41.870448Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=197434&r2=197433&pathrev=197434
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=197434&r2=197433&pathrev=197434
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=197434&r2=197433&pathrev=197434

bindings: Remove unused [ExposeJSAccessors].

We no longer need these [ExposeJSAccessors] because most of attributes
are [ExposeJSAccessors] by default.  Let's remove them.

BUG=43394

Review URL: https://codereview.chromium.org/1188083005
-----------------------------------------------------------------
Project Member Comment 151 by bugdroid1@chromium.org, Jun 19 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=197453

------------------------------------------------------------------
r197453 | yukishiino@chromium.org | 2015-06-19T07:58:56.452262Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.h?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8CustomEventCustom.cpp?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8MessageEventCustom.cpp?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.h?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8ErrorEventCustom.cpp?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8HTMLOptionsCollectionCustom.cpp?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8PopStateEventCustom.cpp?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=197453&r2=197452&pathrev=197453
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8XMLHttpRequestCustom.cpp?r1=197453&r2=197452&pathrev=197453

bindings: Moves custom getters/setters to the prototype chain.

Moves custom attributes to the prototype chain, and makes them accessor-
type properties.

BUG=43394

Review URL: https://codereview.chromium.org/1185843010
-----------------------------------------------------------------
Labels: -Cr-Blink -Cr-Blink-DOM
Project Member Comment 153 by bugdroid1@chromium.org, Jul 10 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=198687

------------------------------------------------------------------
r198687 | yukishiino@chromium.org | 2015-07-10T13:31:15.413127Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp?r1=198687&r2=198686&pathrev=198687
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/DedicatedWorkerCacheStorage.idl?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.h?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/security/xss-DENIED-assign-location-href-javascript-expected.txt?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/WebFrameTest.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_interface.py?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceAccessors.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLDocument.idl?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8SVGTestInterface.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=198687&r2=198686&pathrev=198687
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/ServiceWorkerCacheStorage.idl?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestNode.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/XMLDocument.idl?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp?r1=198687&r2=198686&pathrev=198687
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/SharedWorkerCacheStorage.idl?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestException.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/dom/location-stringify.html?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnProperties.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/WorkerCacheStorage.idl?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnPropertiesDerived.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/attributes.cpp?r1=198687&r2=198686&pathrev=198687
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=198687&r2=198686&pathrev=198687
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/CompositorWorkerCacheStorage.idl?r1=198687&r2=198686&pathrev=198687

bindings: Makes almost all attributes accessor-type properties.

Introduces |attribute.is_data_type_property| as a
template variable to specify the property type.

is_data_type_property is true only for
- attributes of Window interface
  just because we'd like to move on step by step.
  We'll make Window's attributes accessor-type
  in a following CL.
- constructors
  which must be implemented as methods rather than
  attributes.  This is another task.

is_data_type_property will be gone once we resolve
the above two cases.

Note that we need an undesired hack in {HTML,XML}Document.idl
because v8::Template::SetAccessorProperty doesn't support
inheriting accessors on InstanceTemplate.

BUG=43394,491006

Review URL: https://codereview.chromium.org/1193793003
-----------------------------------------------------------------
Project Member Comment 154 by bugdroid1@chromium.org, Jul 10 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=198698

------------------------------------------------------------------
r198698 | dpranke@chromium.org | 2015-07-10T17:10:08.250531Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceAccessors.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLDocument.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8SVGTestInterface.cpp?r1=198698&r2=198697&pathrev=198698
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/ServiceWorkerCacheStorage.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestNode.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/XMLDocument.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=198698&r2=198697&pathrev=198698
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/SharedWorkerCacheStorage.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestException.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/dom/location-stringify.html?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnProperties.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/WorkerCacheStorage.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnPropertiesDerived.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/attributes.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=198698&r2=198697&pathrev=198698
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/CompositorWorkerCacheStorage.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp?r1=198698&r2=198697&pathrev=198698
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/DedicatedWorkerCacheStorage.idl?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.h?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/http/tests/security/xss-DENIED-assign-location-href-javascript-expected.txt?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_interface.py?r1=198698&r2=198697&pathrev=198698
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/WebFrameTest.cpp?r1=198698&r2=198697&pathrev=198698

Revert of bindings: Makes almost all attributes accessor-type properties. (patchset #11 id:200001 of https://codereview.chromium.org/1193793003/)

Reason for revert:
This causes failures in content_browsertests, e.g.:

http://build.chromium.org/p/chromium.webkit/builders/Linux%20Tests/builds/45398

I verified that this was the issue via 'git bisect' on linux; it should be trivial to reproduce.

Sorry!

Original issue's description:
> bindings: Makes almost all attributes accessor-type properties.
> 
> Introduces |attribute.is_data_type_property| as a
> template variable to specify the property type.
> 
> is_data_type_property is true only for
> - attributes of Window interface
>   just because we'd like to move on step by step.
>   We'll make Window's attributes accessor-type
>   in a following CL.
> - constructors
>   which must be implemented as methods rather than
>   attributes.  This is another task.
> 
> is_data_type_property will be gone once we resolve
> the above two cases.
> 
> Note that we need an undesired hack in {HTML,XML}Document.idl
> because v8::Template::SetAccessorProperty doesn't support
> inheriting accessors on InstanceTemplate.
> 
> BUG=43394,491006
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=198687

TBR=haraken@chromium.org,bashi@chromium.org,yukishiino@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=43394,491006

Review URL: https://codereview.chromium.org/1226203012
-----------------------------------------------------------------
Project Member Comment 155 by bugdroid1@chromium.org, Jul 14 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=198852

------------------------------------------------------------------
r198852 | yukishiino@chromium.org | 2015-07-14T10:44:39.250569Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestException.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnProperties.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_interface.py?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/WorkerCacheStorage.idl?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnPropertiesDerived.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceAccessors.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/attributes.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLDocument.idl?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8SVGTestInterface.cpp?r1=198852&r2=198851&pathrev=198852
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/CompositorWorkerCacheStorage.idl?r1=198852&r2=198851&pathrev=198852
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/ServiceWorkerCacheStorage.idl?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestNode.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/XMLDocument.idl?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp?r1=198852&r2=198851&pathrev=198852
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/DedicatedWorkerCacheStorage.idl?r1=198852&r2=198851&pathrev=198852
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/SharedWorkerCacheStorage.idl?r1=198852&r2=198851&pathrev=198852
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.h?r1=198852&r2=198851&pathrev=198852

bindings: Makes almost all attributes accessor-type properties. (2nd try)

Introduces |attribute.is_data_type_property| as a
template variable to specify the property type.

is_data_type_property is true only for
- attributes of Window and Location interface
  just because we'd like to move on step by step.
  We'll make Window's attributes accessor-type
  in a following CL.
- constructors
  which must be implemented as methods rather than
  attributes.  This is another task.

is_data_type_property will be gone once we resolve
the above two cases.

Note that we need an undesired hack in {HTML,XML}Document.idl
and {Compositor,Dedicated,Service,Shared}WorkerCacheStorage.idl
because v8::Template::SetAccessorProperty doesn't support
inheriting accessors on InstanceTemplate.

The 1st try is: https://codereview.chromium.org/1193793003/

BUG=43394,491006

Review URL: https://codereview.chromium.org/1240433002
-----------------------------------------------------------------
Project Member Comment 156 by bugdroid1@chromium.org, Jul 27 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=199508

------------------------------------------------------------------
r199508 | yukishiino@chromium.org | 2015-07-27T12:11:04.279339Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnPropertiesDerived.cpp?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceOwnPropertiesDerived.idl?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceAccessors.cpp?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnProperties.h?r1=199508&r2=199507&pathrev=199508
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceAccessors.idl?r1=199508&r2=199507&pathrev=199508
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestObject.idl?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnPropertiesDerived.h?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceAccessors.h?r1=199508&r2=199507&pathrev=199508
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=199508&r2=199507&pathrev=199508
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/IDLExtendedAttributes.txt?r1=199508&r2=199507&pathrev=199508
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=199508&r2=199507&pathrev=199508
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceCheckSecurity.idl?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceOwnProperties.cpp?r1=199508&r2=199507&pathrev=199508
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/compute_interfaces_info_overall.py?r1=199508&r2=199507&pathrev=199508
   D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/core/TestInterfaceOwnProperties.idl?r1=199508&r2=199507&pathrev=199508

bindings: Retires [ExposeJSAccessors] extended attribute.

We're not using [ExposeJSAccessors] and it's unlikely to use it in future.
Let's drop the support of [ExposeJSAccessors].

BUG=43394

Review URL: https://codereview.chromium.org/1258913002
-----------------------------------------------------------------
Project Member Comment 157 by bugdroid1@chromium.org, Jul 29 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=199650

------------------------------------------------------------------
r199650 | yukishiino@chromium.org | 2015-07-29T09:41:00.669882Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=199650&r2=199649&pathrev=199650
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=199650&r2=199649&pathrev=199650
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=199650&r2=199649&pathrev=199650

bindings: Moves [OverrideBuiltins]'s attributes to the prototype chain.

In short, [OverrideBuiltins] extended attribute requires that
indexed/named properties appear on the instance object.  Attributes
which are not named properties should be placed on the prototype obejct
as same as regular attributes.

4.3.12. [OverrideBuiltins]
http://heycam.github.io/webidl/#OverrideBuiltins
"..., properties corresponding to all of the object’s
<supported property names> will appear to be on the object"
where <supported property names> are indexed/named properties in our words.

BUG=43394

Review URL: https://codereview.chromium.org/1258863003
-----------------------------------------------------------------
Project Member Comment 158 by bugdroid1@chromium.org, Jul 29 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=199658

------------------------------------------------------------------
r199658 | yukishiino@chromium.org | 2015-07-29T12:32:07.234803Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLDocument.idl?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/code_generator_v8.py?r1=199658&r2=199657&pathrev=199658
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/CompositorWorkerCacheStorage.idl?r1=199658&r2=199657&pathrev=199658
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/ServiceWorkerCacheStorage.idl?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/compute_interfaces_info_individual.py?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/XMLDocument.idl?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_attributes.py?r1=199658&r2=199657&pathrev=199658
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/DedicatedWorkerCacheStorage.idl?r1=199658&r2=199657&pathrev=199658
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/SharedWorkerCacheStorage.idl?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/utilities.py?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/compute_interfaces_info_overall.py?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/cachestorage/WorkerCacheStorage.idl?r1=199658&r2=199657&pathrev=199658
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/interface_dependency_resolver.py?r1=199658&r2=199657&pathrev=199658

bindings: Supports inheritance of [Unforgeable] attributes as accessor-type properties.

This CL makes it possible that we define [Unforgeable] attributes as
accessor-type JS properties, and child-interfaces inherit them from
parent-interfaces.

Note that Window and Location's attributes are still data-type properties.

Except for Event.isTrusted, there should be no behavioral change.
Event.isTrusted becomes accessor-type properties.

BUG=43394,491006,497616

Review URL: https://codereview.chromium.org/1257613003
-----------------------------------------------------------------
Cc: durga.behera@chromium.org
Issue 431492 has been merged into this issue.
Issue 115423 has been merged into this issue.
Project Member Comment 161 by bugdroid1@chromium.org, Aug 26 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201225

------------------------------------------------------------------
r201225 | yukishiino@chromium.org | 2015-08-26T12:37:40.996555Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/Window/window-function-frame-getter-precedence-expected.txt?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/imported/web-platform-tests/html/browsers/the-window-object/window-named-properties-expected.txt?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface2.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface3.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/Window/window-function-frame-getter-precedence.html?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/custom/V8WindowCustom.cpp?r1=201225&r2=201224&pathrev=201225
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=201225&r2=201224&pathrev=201225

bindings: Uses V8's named property interceptor for Window.

Other attributes have already been using V8's named property interceptor.
Window is only an exception.  Let's use it for Window, too.

This CL intentionally changes the look-up behavior.
Sample code:
  iframe = document.createElement('iframe');
  iframe.name = 'alert';
  document.body.appendChild(iframe);
Before:
  window.alert => iframe with the name 'alert'
After:
  window.alert => built-in alert function

According to the spec, (non-named, regular) attributes/methods must have priority over named properties.

See "The named property visibility algorithm" at
http://heycam.github.io/webidl/#indexed-and-named-properties
The order of look-up for non-[OverrideBuiltins] interfaces (including Window) must be:
  1. Own properties.
  2. Properties from the prototype chain.
  3. Named properties.

The Intent-to-Implement-and-Ship is here:
https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/jlmsE3fDCNg

BUG=43394,516274

Review URL: https://codereview.chromium.org/1121703002
-----------------------------------------------------------------
Cc: sigbjo...@opera.com tkent@chromium.org rponnada@chromium.org
Issue 138217 has been merged into this issue.
Cc: -tkent@chromium.org
Issue 462461 has been merged into this issue.
Project Member Comment 165 by bugdroid1@chromium.org, Sep 8 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201910

------------------------------------------------------------------
r201910 | yukishiino@chromium.org | 2015-09-08T12:01:43.787066Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestException.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8DOMConfiguration.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_methods.py?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterface5.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestObject.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/core/v8/V8DOMConfiguration.h?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/attributes.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/v8_utilities.py?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface_base.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface2.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestTypedefs.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterface3.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/interface.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/methods.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/templates/conversions.cpp?r1=201910&r2=201909&pathrev=201910
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp?r1=201910&r2=201909&pathrev=201910

bindings: Supports to change the method location among
instance, prototype and interface.

There should be no behavioral change.

BUG=43394,516274

Review URL: https://codereview.chromium.org/1322533002
-----------------------------------------------------------------
Project Member Comment 166 by bugdroid1@chromium.org, Sep 17 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/37799a7c9a4dc1b06d627cc17bb989c25663ada3

commit 37799a7c9a4dc1b06d627cc17bb989c25663ada3
Author: yukishiino <yukishiino@chromium.org>
Date: Thu Sep 17 08:04:39 2015

bindings: Fixes exposed JS APIs for platform apps.

We're disabling some of DOM attributes and operations for platform apps.
Since event handlers and operations in Window are going to move onto
the instance object, we need to update disabling code accordingly.

Also fixes a way to disable addEventListener.  It's defined on
EventTarget.prototype, not on Window.prototype.  Also it shouldn't
change |this| object.

This CL is a preparation of http://crrev.com/1333853002

BUG=43394, 516274
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1333303002

Cr-Commit-Position: refs/heads/master@{#349376}

[modify] http://crrev.com/37799a7c9a4dc1b06d627cc17bb989c25663ada3/extensions/renderer/resources/platform_app.js

Project Member Comment 167 by bugdroid1@chromium.org, Sep 23 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/02f59e15f683e7391594d35b29a62b6ac54fb2dc

commit 02f59e15f683e7391594d35b29a62b6ac54fb2dc
Author: yukishiino@chromium.org <yukishiino@chromium.org>
Date: Tue Sep 08 12:01:43 2015

bindings: Supports to change the method location among
instance, prototype and interface.

There should be no behavioral change.

BUG=43394,516274

Review URL: https://codereview.chromium.org/1322533002

git-svn-id: svn://svn.chromium.org/blink/trunk@201910 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.h
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/scripts/v8_methods.py
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/scripts/v8_utilities.py
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/templates/attributes.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/templates/conversions.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/templates/interface.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/templates/interface_base.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/templates/methods.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp
[modify] http://crrev.com/02f59e15f683e7391594d35b29a62b6ac54fb2dc/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp

Project Member Comment 168 by bugdroid1@chromium.org, Sep 25 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eb2728fc03dead670668dbeb071e8584e2a0504b

commit eb2728fc03dead670668dbeb071e8584e2a0504b
Author: yukishiino <yukishiino@chromium.org>
Date: Fri Sep 25 15:08:48 2015

bindings: Moves event handlers and methods of Window to the instance object.

Makes v8_utilities.on_{instance,prototype,interface} conformant to the spec.

Moves event handlers and methods on Window from the prototype object to
the instance object.  Also moves members of [Global] interfaces to the
instance objects.

BUG=43394, 516274

Review URL: https://codereview.chromium.org/1360233007

Cr-Commit-Position: refs/heads/master@{#350827}

[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/fast/dom/DeviceMotion/window-property-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/fast/dom/DeviceOrientation/window-property-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/fast/dom/Window/lookup-behavior-expected.txt
[delete] http://crrev.com/4196020be0a6ca36347d08a8f366992d08331bfb/third_party/WebKit/LayoutTests/fast/dom/Window/window-property-shadowing-onclick-expected.txt
[delete] http://crrev.com/4196020be0a6ca36347d08a8f366992d08331bfb/third_party/WebKit/LayoutTests/fast/dom/Window/window-property-shadowing-onclick.html
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-getOwnPropertyDescriptor-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-getOwnPropertyDescriptor.html
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/security/resources/cross-frame-access.js
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/security/w3c/cross-origin-objects-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-method-with-iframe-proto-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-method-with-iframe-proto.html
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/browsers/the-window-object/window-properties-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/animation-frames/idlharness-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-compositor-worker-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing.html
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/LayoutTests/webexposed/resources/global-interface-listing.js
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/scripts/v8_methods.py
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/scripts/v8_utilities.py
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/templates/interface.cpp
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
[modify] http://crrev.com/eb2728fc03dead670668dbeb071e8584e2a0504b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp

Project Member Comment 169 by bugdroid1@chromium.org, Oct 2 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6cbbe2653f6371dc632a51dc54af3856624fc0ef

commit 6cbbe2653f6371dc632a51dc54af3856624fc0ef
Author: yukishiino <yukishiino@chromium.org>
Date: Fri Oct 02 11:54:40 2015

bindings: Reduces the custom registration of methods.

Reduces the custom registration of methods.  Also supports
per-member *static* [Exposed] operation.

With this CL, Notification.requestPermission() is exposed
only when the global object is Window.

BUG=43394, 516274, 442139

Review URL: https://codereview.chromium.org/1372373002

Cr-Commit-Position: refs/heads/master@{#352006}

[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.h
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/core/v8/V8PerContextData.cpp
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/core/v8/V8PerContextData.h
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/core/v8/WrapperTypeInfo.h
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/scripts/v8_methods.py
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/templates/interface.cpp
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/templates/interface.h
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/templates/interface_base.cpp
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/templates/methods.cpp
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/templates/partial_interface.cpp
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/bindings/templates/partial_interface.h
[modify] http://crrev.com/6cbbe2653f6371dc632a51dc54af3856624fc0ef/third_party/WebKit/Source/modules/notifications/Notification.idl

Project Member Comment 170 by bugdroid1@chromium.org, Oct 5 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/36b22ec535dfa52829d7e3651bf664ab416287ec

commit 36b22ec535dfa52829d7e3651bf664ab416287ec
Author: yukishiino <yukishiino@chromium.org>
Date: Mon Oct 05 04:51:00 2015

distiller: Retires support of CreateNewContext.

The binding team in Blink is working to make the implementation of
"window" JS object comformant to the web spec.  Once it gets implemented
correctly, you can no longer create a fake "window" object just by
calling Object.create(window).  Such a fake "window" object cannot pass
our upcoming type check.

Thus, this CL removes support of such a fake "window" object.

WIP CL http://crrev.com/1380503002 requires this change.

BUG=43394, 516274
TEST=Ran DomDistillerTabUtilsBrowserTest in browser_tests and DistillerPageWebContentsTest in components_browsertests.

Review URL: https://codereview.chromium.org/1384433002

Cr-Commit-Position: refs/heads/master@{#352294}

[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/content/browser/distiller_page_web_contents.cc
[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/content/browser/distiller_page_web_contents.h
[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/core/distiller_page.cc
[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/core/distiller_page.h
[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/core/fake_distiller_page.h
[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/core/javascript/domdistiller.js
[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/ios/distiller_page_ios.h
[modify] http://crrev.com/36b22ec535dfa52829d7e3651bf664ab416287ec/components/dom_distiller/ios/distiller_page_ios.mm

Project Member Comment 171 by bugdroid1@chromium.org, Oct 5 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/baa79511a1d30f587ebf9c8fa60bc6e1957e7137

commit baa79511a1d30f587ebf9c8fa60bc6e1957e7137
Author: jsbell <jsbell@chromium.org>
Date: Mon Oct 05 17:58:50 2015

Reset bindings results following r352006

Recent change crrev.com/1372373002/ updated the bindings templates
but didn't rebaseline the results. Ooops!

TBR=yukishiino@chromium.org,haraken@chromium.org
BUG=43394,516274,442139

Review URL: https://codereview.chromium.org/1385003002

Cr-Commit-Position: refs/heads/master@{#352348}

[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceWillBeGarbageCollected.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.h
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp
[modify] http://crrev.com/baa79511a1d30f587ebf9c8fa60bc6e1957e7137/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.h

Blocking: 598115
Blocking: 598113
Cc: rbyers@chromium.org
Labels: -M-43 m-43
Status: Fixed
The main issue (as described in the summary) has been fixed since Chrome-43, right?

https://developers.google.com/web/updates/2015/04/DOM-attributes-now-on-the-prototype-chain?hl=en

Shall we call this fixed and rely on separate bugs to track whatever edge cases remain?
Comment 175 by raggi@google.com, Apr 11 2016
I provided a replication in my report that got duplicated against this bug. That replication case is not fixed:
https://gist.github.com/raggi/df9d8170164c6a29bc4a

See my original report here:
https://bugs.chromium.org/p/chromium/issues/detail?id=380385

Thanks for reminding us.  Updated Issue 380385 .
Project Member Comment 177 by bugdroid1@chromium.org, May 2 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9ac1750adf85027985c7af3468e0b972c2086235

commit 9ac1750adf85027985c7af3468e0b972c2086235
Author: yukishiino <yukishiino@chromium.org>
Date: Mon May 02 05:04:21 2016

binding: Makes Window/Location's attributes accessor-type properties.

Makes almost all the attributes (except for cross-origin accessible
attributes) accessor-type properties.  The target attributes in this
CL are DOM attributes of Window, Location and workers not annotated
as [DoNotCheckSecurity], which are cross-origin accessible.

BUG=43394, 516274

Review-Url: https://codereview.chromium.org/1380503002
Cr-Commit-Position: refs/heads/master@{#390893}

[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/replaceable-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/Window/replaceable.html
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/everything-to-string-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/dom/lenient-this.html
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/fast/js/global-constructors-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/http/tests/dom/location-stringify.html
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-access-over-property-descriptor-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-access-over-property-descriptor.html
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/all-window-properties-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/all-window-prototypes-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/interfaces-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/browsers/the-window-object/window-properties-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/imported/web-platform-tests/webstorage/idlharness-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/Source/bindings/core/v8/custom/V8WindowCustom.cpp
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/Source/bindings/scripts/idl_types.py
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/Source/bindings/scripts/v8_attributes.py
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/Source/bindings/templates/attributes.cpp
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp
[modify] https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp

Project Member Comment 178 by bugdroid1@chromium.org, May 2 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c

commit b832a84ce777bc4ea348c2e1eba7844e83f5bd8c
Author: jsbell <jsbell@chromium.org>
Date: Mon May 02 20:36:02 2016

Layout Tests: Remove assert_will_be_idl_attribute() helper

Now that DOM attributes are on prototype chains, just use
assert_idl_attribute().

BUG=43394

Review-Url: https://codereview.chromium.org/1936533003
Cr-Commit-Position: refs/heads/master@{#391046}

[modify] https://crrev.com/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c/third_party/WebKit/LayoutTests/http/tests/background_sync/resources/interfaces-worker.js
[modify] https://crrev.com/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c/third_party/WebKit/LayoutTests/http/tests/permissions/resources/test-api-surface.js
[modify] https://crrev.com/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c/third_party/WebKit/LayoutTests/http/tests/push_messaging/resources/interfaces-worker.js
[modify] https://crrev.com/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c/third_party/WebKit/LayoutTests/http/tests/push_messaging/resources/pushevent-extendable-event.js
[modify] https://crrev.com/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c/third_party/WebKit/LayoutTests/http/tests/push_messaging/subscribe-success-in-document.html
[modify] https://crrev.com/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c/third_party/WebKit/LayoutTests/http/tests/resources/testharness-helpers.js
[modify] https://crrev.com/b832a84ce777bc4ea348c2e1eba7844e83f5bd8c/third_party/WebKit/LayoutTests/resources/testharness-helpers.js

Project Member Comment 179 by bugdroid1@chromium.org, May 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0e0d4e2542246e3a53e070aaf82e7570a145bc2a

commit 0e0d4e2542246e3a53e070aaf82e7570a145bc2a
Author: yukishiino <yukishiino@chromium.org>
Date: Mon May 09 14:53:54 2016

Revert of binding: Makes Window/Location's attributes accessor-type properties. (patchset #27 id:520001 of https://codereview.chromium.org/1380503002/ )

Reason for revert:
We hit a (huge) performance regression.  See http://crbug.com/608475 .

Original issue's description:
> binding: Makes Window/Location's attributes accessor-type properties.
>
> Makes almost all the attributes (except for cross-origin accessible
> attributes) accessor-type properties.  The target attributes in this
> CL are DOM attributes of Window, Location and workers not annotated
> as [DoNotCheckSecurity], which are cross-origin accessible.
>
> BUG=43394, 516274
>
> Committed: https://crrev.com/9ac1750adf85027985c7af3468e0b972c2086235
> Cr-Commit-Position: refs/heads/master@{#390893}

TBR=tkent@chromium.org,haraken@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=43394, 516274

Review-Url: https://codereview.chromium.org/1958883003
Cr-Commit-Position: refs/heads/master@{#392315}

[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/replaceable-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/Window/replaceable.html
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/constructed-objects-prototypes-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/everything-to-string-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/dom/lenient-this.html
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/fast/js/global-constructors-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/http/tests/dom/location-stringify.html
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-access-over-property-descriptor-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-access-over-property-descriptor.html
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/all-window-properties-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/all-window-prototypes-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/interfaces-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/browsers/the-window-object/window-properties-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/imported/web-platform-tests/webstorage/idlharness-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/Source/bindings/core/v8/custom/V8WindowCustom.cpp
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/Source/bindings/scripts/idl_types.py
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/Source/bindings/scripts/v8_attributes.py
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/Source/bindings/templates/attributes.cpp
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp
[modify] https://crrev.com/0e0d4e2542246e3a53e070aaf82e7570a145bc2a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp

Sign in to add a comment