New issue
Advanced search Search tips

Issue 829571 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 810176



Sign in to add a comment

Whitelist Blink functions for side-effect-free evaluation

Project Member Reported by l...@chromium.org, Apr 5 2018

Issue description

The V8 API now exposes options to mark functions as side-effect-free.  Many Blink methods, constructors, and attributes/accessors do not produce JS-observable side effects, and can be marked as such.

Roadmap doc: https://goo.gl/8wGqxz
 

Comment 1 by l...@chromium.org, Apr 5 2018

Blocking: 810176

Comment 2 by l...@chromium.org, Apr 6 2018

Description: Show this description
Project Member

Comment 3 by bugdroid1@chromium.org, Apr 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6

commit f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6
Author: Erik Luo <luoe@chromium.org>
Date: Mon Apr 09 07:15:44 2018

[bindings] introduce [Affects] extended attribute for IDL methods

The [Affects=Nothing] extended attribute indicates a function has no
JS-observable side effect. This CL adds plumbing to mark methods and
marks Performance's nowMethod (performance.now()) as side-effect-free.

Future CLs will let the extended attribute mark attributes and
constructors, and other side-effect-free methods as well.

Roadmap doc: https://goo.gl/8wGqxz

Bug:  829571 
Change-Id: I26900dff4f00b5374bbef7934f11609ff67aa75c
Reviewed-on: https://chromium-review.googlesource.com/999012
Commit-Queue: Erik Luo <luoe@chromium.org>
Reviewed-by: Hitoshi Yoshida <peria@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549118}
[add] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods-expected.txt
[add] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/IDLExtendedAttributes.txt
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.h
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/scripts/v8_methods.py
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/templates/interface_base.cpp.tmpl
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/templates/methods.cpp.tmpl
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/idls/core/test_interface.idl
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_primary_global.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.h
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_garbage_collected.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_special_operations.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_2_partial.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_partial.cc
[modify] https://crrev.com/f2ff805bfe8377ab7c6c3eebb7a36e205eec43f6/third_party/blink/renderer/core/timing/performance.idl

Project Member

Comment 4 by bugdroid1@chromium.org, Apr 10 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/17aebf2f653697e768ff15e6c44b3f07759fe06d

commit 17aebf2f653697e768ff15e6c44b3f07759fe06d
Author: Erik Luo <luoe@chromium.org>
Date: Tue Apr 10 22:08:38 2018

[bindings] extend [Affects] for IDL attributes/accessors

This extends [Affects=Nothing] to mark attributes/accessors with
getter callbacks that produce no JS-observable side effect. This also
marks Node's isConnectedAttributeGetter as side-effect-free.

Bug:  829571 
Change-Id: I21211b477a95e51e10cade1ffbd0249171684d1c
Reviewed-on: https://chromium-review.googlesource.com/999304
Commit-Queue: Erik Luo <luoe@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549657}
[add] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes-expected.txt
[add] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes.js
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods-expected.txt
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.h
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/scripts/v8_attributes.py
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/templates/attributes.cpp.tmpl
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/templates/interface.cpp.tmpl
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/idls/core/test_interface.idl
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_svg_test_interface.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_attribute_getters.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_functions.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_global.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_integer_indexed_primary_global.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface.h
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_3.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_check_security.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_conditional_secure_context.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_document.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_garbage_collected.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_node.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_origin_trial_enabled.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_secure_context.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_object.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/modules/v8_test_inherited_legacy_unenumerable_named_properties.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_5.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/modules/v8_test_interface_partial.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/bindings/tests/results/modules/v8_test_sub_object.cc
[modify] https://crrev.com/17aebf2f653697e768ff15e6c44b3f07759fe06d/third_party/blink/renderer/core/dom/node.idl

Project Member

Comment 5 by bugdroid1@chromium.org, Apr 13 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/095d09f23e8f2a59b255ac7cce29d03b47b0eda6

commit 095d09f23e8f2a59b255ac7cce29d03b47b0eda6
Author: Erik Luo <luoe@chromium.org>
Date: Fri Apr 13 11:02:32 2018

[bindings] treat interface constructors as side-effect-free

Side-effect-free evaluation may call ScriptWrappable::Wrap() or
ToV8(), which can invoke constructors. Since wrapping is assumed
to be safe, this CL automatically whitelists bindings-generated
constructors.

Bug:  829571 
Change-Id: I00133e04eb6b8307ea9c4924aafc5332f69f0abd
Reviewed-on: https://chromium-review.googlesource.com/1000813
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550584}
[add] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors-expected.txt
[add] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors.js
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/templates/interface.cpp.tmpl
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/templates/interface_base.cpp.tmpl
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_garbage_collected.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Apr 17 2018

Labels: merge-merged-testbranch
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/095d09f23e8f2a59b255ac7cce29d03b47b0eda6

commit 095d09f23e8f2a59b255ac7cce29d03b47b0eda6
Author: Erik Luo <luoe@chromium.org>
Date: Fri Apr 13 11:02:32 2018

[bindings] treat interface constructors as side-effect-free

Side-effect-free evaluation may call ScriptWrappable::Wrap() or
ToV8(), which can invoke constructors. Since wrapping is assumed
to be safe, this CL automatically whitelists bindings-generated
constructors.

Bug:  829571 
Change-Id: I00133e04eb6b8307ea9c4924aafc5332f69f0abd
Reviewed-on: https://chromium-review.googlesource.com/1000813
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550584}
[add] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors-expected.txt
[add] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors.js
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/templates/interface.cpp.tmpl
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/templates/interface_base.cpp.tmpl
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_garbage_collected.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
[modify] https://crrev.com/095d09f23e8f2a59b255ac7cce29d03b47b0eda6/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Apr 17 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f71d954c746115229ace55f1a571daa39fbd7096

commit f71d954c746115229ace55f1a571daa39fbd7096
Author: Erik Luo <luoe@chromium.org>
Date: Tue Apr 17 20:17:38 2018

Mark side-effect-free methods/attributes with simple return types

Adds [Affects=Nothing] to common IDL methods/attributes with return
types: short, long, double, int, boolean, DOMString, USVString.

Followups will whitelist ones that use DOMWrapper and update style
or layout.
List of some common attributes: https://goo.gl/qGd2i7

Bug:  829571 
Change-Id: I4c335b7eeac449bd7454df7f829f393469d84387
Reviewed-on: https://chromium-review.googlesource.com/1013126
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#551456}
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes-expected.txt
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes.js
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods-expected.txt
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/blink/renderer/core/dom/document.idl
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/blink/renderer/core/dom/element.idl
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/blink/renderer/core/dom/node.idl
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/blink/renderer/core/dom/parent_node.idl
[modify] https://crrev.com/f71d954c746115229ace55f1a571daa39fbd7096/third_party/blink/renderer/core/frame/window.idl

Project Member

Comment 8 by bugdroid1@chromium.org, Apr 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c9304d77cab8a6beaedf17801b01430f512112a6

commit c9304d77cab8a6beaedf17801b01430f512112a6
Author: Erik Luo <luoe@chromium.org>
Date: Tue Apr 24 08:42:27 2018

Whitelist IDL methods/attributes that return Elements/Nodes

This CL marks methods and attributes that produce no
JS-observable side-effect and have return type Element, Node,
HTMLCollection, NodeList, or a derived type.

Bug:  829571 
Change-Id: Ia1d7def24fae8764620f80f3f46f8454de976ce4
Reviewed-on: https://chromium-review.googlesource.com/1025170
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553036}
[modify] https://crrev.com/c9304d77cab8a6beaedf17801b01430f512112a6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes.js
[modify] https://crrev.com/c9304d77cab8a6beaedf17801b01430f512112a6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/c9304d77cab8a6beaedf17801b01430f512112a6/third_party/blink/renderer/core/dom/document.idl
[modify] https://crrev.com/c9304d77cab8a6beaedf17801b01430f512112a6/third_party/blink/renderer/core/dom/document_or_shadow_root.idl
[modify] https://crrev.com/c9304d77cab8a6beaedf17801b01430f512112a6/third_party/blink/renderer/core/dom/element.idl
[modify] https://crrev.com/c9304d77cab8a6beaedf17801b01430f512112a6/third_party/blink/renderer/core/dom/node.idl
[modify] https://crrev.com/c9304d77cab8a6beaedf17801b01430f512112a6/third_party/blink/renderer/core/dom/parent_node.idl

Project Member

Comment 9 by bugdroid1@chromium.org, Apr 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/18d7dcfde6f179a4b7a10c62d90551eebfe35db6

commit 18d7dcfde6f179a4b7a10c62d90551eebfe35db6
Author: Erik Luo <luoe@chromium.org>
Date: Tue Apr 24 20:56:55 2018

Whitelist side-effect-free CommandLineAPI methods

Marks methods on the Command Line API that produce no JS-observable
side-effect.

Bug:  829571 
Change-Id: I7920b2ded3eada33fc2d000aa46a0a7eef61daca
Reviewed-on: https://chromium-review.googlesource.com/1025171
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553270}
[modify] https://crrev.com/18d7dcfde6f179a4b7a10c62d90551eebfe35db6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes-expected.txt
[modify] https://crrev.com/18d7dcfde6f179a4b7a10c62d90551eebfe35db6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes.js
[modify] https://crrev.com/18d7dcfde6f179a4b7a10c62d90551eebfe35db6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods-expected.txt
[modify] https://crrev.com/18d7dcfde6f179a4b7a10c62d90551eebfe35db6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/18d7dcfde6f179a4b7a10c62d90551eebfe35db6/third_party/blink/renderer/core/inspector/main_thread_debugger.cc
[modify] https://crrev.com/18d7dcfde6f179a4b7a10c62d90551eebfe35db6/third_party/blink/renderer/core/inspector/thread_debugger.cc
[modify] https://crrev.com/18d7dcfde6f179a4b7a10c62d90551eebfe35db6/third_party/blink/renderer/core/inspector/thread_debugger.h

Project Member

Comment 10 by bugdroid1@chromium.org, Apr 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/28a232a574d3cb5e6958128e5cd5aacfb945697f

commit 28a232a574d3cb5e6958128e5cd5aacfb945697f
Author: Erik Luo <luoe@chromium.org>
Date: Tue Apr 24 22:17:57 2018

Whitelist side-effect-free indexed, named property getters in IDLs

This CL whitelists indexed and named property getters of common
collections with [Affects] extended attribute. This enables:
- div.classList[0]
- div.attributes.specific_attribute

to evaluate with throwOnSideEffect: true.

Bug:  829571 
Change-Id: I64fb6ad154c14e0119d3b09870f4c9dd10c9de41
Reviewed-on: https://chromium-review.googlesource.com/1025256
Commit-Queue: Erik Luo <luoe@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553314}
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods-expected.txt
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/blink/renderer/bindings/scripts/v8_interface.py
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/blink/renderer/bindings/templates/interface.cpp.tmpl
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/blink/renderer/core/css/css_style_declaration.idl
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/blink/renderer/core/dom/dom_token_list.idl
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/blink/renderer/core/dom/named_node_map.idl
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/blink/renderer/core/dom/node_list.idl
[modify] https://crrev.com/28a232a574d3cb5e6958128e5cd5aacfb945697f/third_party/blink/renderer/core/html/html_collection.idl

Project Member

Comment 11 by bugdroid1@chromium.org, Apr 25 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4eb41bf396f3e6722628201ab4f79c1ca8685367

commit 4eb41bf396f3e6722628201ab4f79c1ca8685367
Author: Erik Luo <luoe@chromium.org>
Date: Wed Apr 25 18:35:31 2018

Whitelist common, side-effect-free IDL callbacks

Marks common callbacks that do not produce JS-observable side-effects
on: Document, DOMTokenList, Element, Node, Window, HTMLElement.

Note that several Window properties are lazy and need extra V8 support
to be whitelisted.

Bug:  829571 
Change-Id: I9ad50c1ca9b8c260ec898bc94423286c142d6bec
Reviewed-on: https://chromium-review.googlesource.com/1024863
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553672}
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes-expected.txt
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes.js
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods-expected.txt
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/dom/document.idl
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/dom/document_or_shadow_root.idl
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/dom/dom_token_list.idl
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/dom/element.idl
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/dom/node.idl
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/frame/window.idl
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/html/html_element.idl
[modify] https://crrev.com/4eb41bf396f3e6722628201ab4f79c1ca8685367/third_party/blink/renderer/core/timing/window_performance.idl

Project Member

Comment 12 by bugdroid1@chromium.org, Apr 25 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4334c21328d0bd2f46e628e12348ec24e022514f

commit 4334c21328d0bd2f46e628e12348ec24e022514f
Author: Erik Luo <luoe@chromium.org>
Date: Wed Apr 25 22:17:31 2018

Whitelist side-effect-free, lazy property IDL callbacks

Marks common callbacks that produce no JS-observable side-effect,
including
- window.window
- window.location
- location.href
- navigator.userAgent

Bug:  829571 
Change-Id: I9404104dc2cd30ffeafbfae83c53c0176a28e1b1
Reviewed-on: https://chromium-review.googlesource.com/1026991
Commit-Queue: Erik Luo <luoe@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553788}
[modify] https://crrev.com/4334c21328d0bd2f46e628e12348ec24e022514f/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes-expected.txt
[modify] https://crrev.com/4334c21328d0bd2f46e628e12348ec24e022514f/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes.js
[modify] https://crrev.com/4334c21328d0bd2f46e628e12348ec24e022514f/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
[modify] https://crrev.com/4334c21328d0bd2f46e628e12348ec24e022514f/third_party/blink/renderer/core/frame/location.idl
[modify] https://crrev.com/4334c21328d0bd2f46e628e12348ec24e022514f/third_party/blink/renderer/core/frame/navigator_id.idl
[modify] https://crrev.com/4334c21328d0bd2f46e628e12348ec24e022514f/third_party/blink/renderer/core/frame/window.idl

Project Member

Comment 13 by bugdroid1@chromium.org, Apr 26 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/31201a5874ecfa324d97ed8e7f003950ef7c19fe

commit 31201a5874ecfa324d97ed8e7f003950ef7c19fe
Author: Erik Luo <luoe@chromium.org>
Date: Thu Apr 26 00:46:41 2018

Whitelist IDL callbacks that update layout/style

Marks common callbacks that produce no JS-observable side-effect, yet
may update Blink's style, layout, or scroll subsystem.

Bug:  829571 
Change-Id: I0c0ef5766bdf3f246b2e7889ba70acc955a1a44b
Reviewed-on: https://chromium-review.googlesource.com/1024865
Commit-Queue: Erik Luo <luoe@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553855}
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes-expected.txt
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-attributes.js
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods-expected.txt
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-methods.js
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/blink/renderer/core/css/css_style_declaration.idl
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/blink/renderer/core/dom/element.idl
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/blink/renderer/core/frame/window.idl
[modify] https://crrev.com/31201a5874ecfa324d97ed8e7f003950ef7c19fe/third_party/blink/renderer/core/html/html_element.idl

Project Member

Comment 14 by bugdroid1@chromium.org, Apr 27 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d6db09960730fe093b6d8711d4494d5aba4192c4

commit d6db09960730fe093b6d8711d4494d5aba4192c4
Author: Erik Luo <luoe@chromium.org>
Date: Fri Apr 27 19:19:41 2018

[bindings] blacklist Worker constructors that have side-effect

Currently, all DOM constructors are treated as side-effect-free. This
CL introduces `[Affects=Everything]` to blacklist constructors.

While Worker/SharedWorker constructors produce effects:
- `new Worker` can asynchronously loads script
  (violates "fetch resources", "schedule execution")
- `new SharedWorker`, by spec, may "queue a task" or
  "in parallel, run a worker" and update the global scope's worker
  set (violates "schedule execution", "cache objects")

Bug:  829571 
Change-Id: I931efb6212e2ac77be81d3dd721d6dba96a85097
Reviewed-on: https://chromium-review.googlesource.com/1027088
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#554441}
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors-expected.txt
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors.js
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/blink/renderer/bindings/IDLExtendedAttributes.txt
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/blink/renderer/bindings/scripts/v8_interface.py
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/blink/renderer/bindings/templates/interface_base.cpp.tmpl
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/blink/renderer/core/workers/shared_worker.idl
[modify] https://crrev.com/d6db09960730fe093b6d8711d4494d5aba4192c4/third_party/blink/renderer/core/workers/worker.idl

Project Member

Comment 15 by bugdroid1@chromium.org, May 4 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4b52f964807c269bbede2b390109cc7fa6d16729

commit 4b52f964807c269bbede2b390109cc7fa6d16729
Author: Erik Luo <luoe@chromium.org>
Date: Fri May 04 16:47:24 2018

[debug] add ability to do side-effect-free call to NewInstance

Creating a new instance from a v8::Function will invoke its
constructor. If it is an API callback that has not been marked as
kHasNoSideEffect, this CL introduces a way to invoke it without
throwing.

Calls within the constructor are still checked for side effects.

Bug:  chromium:829571 
Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
Change-Id: Ia4e410d487e2847bc511cb96f0be30a3563991f6
Reviewed-on: https://chromium-review.googlesource.com/1034116
Commit-Queue: Erik Luo <luoe@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53003}
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/include/v8.h
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/src/api.cc
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/src/debug/debug.cc
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/src/heap/heap.h
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/src/heap/setup-heap-internal.cc
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/src/objects-debug.cc
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/src/objects/api-callbacks-inl.h
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/src/objects/api-callbacks.h
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/test/cctest/test-api.cc
[modify] https://crrev.com/4b52f964807c269bbede2b390109cc7fa6d16729/tools/v8heapconst.py

Project Member

Comment 16 by bugdroid1@chromium.org, May 7 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a9b2373d30f69668f6730ac7bf69fd14bd8ac5bd

commit a9b2373d30f69668f6730ac7bf69fd14bd8ac5bd
Author: Erik Luo <luoe@chromium.org>
Date: Mon May 07 15:40:08 2018

[debug] fix NewInstanceWithSideEffectType dcheck for mode

The DCHECK was incorrect. This new API method can be called from any
debug mode since the embedder does not know which mode we are in.

It should only apply the side effect logic when the mode is
kSideEffects.

Bug:  chromium:829571 
Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
Change-Id: I11b0e5194b151a2b88171d6be21c3ccbba9cd408
Reviewed-on: https://chromium-review.googlesource.com/1046162
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53030}
[modify] https://crrev.com/a9b2373d30f69668f6730ac7bf69fd14bd8ac5bd/src/api.cc
[modify] https://crrev.com/a9b2373d30f69668f6730ac7bf69fd14bd8ac5bd/test/cctest/test-api.cc

Project Member

Comment 17 by bugdroid1@chromium.org, May 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4

commit b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4
Author: Erik Luo <luoe@chromium.org>
Date: Sat May 12 15:31:26 2018

[bindings] remove constructor blacklist and only allow wrappers

This CL dismantles the side effect constructor blacklist, so Blink constructors
(default, named, custom) all throw when evaluating with throwOnSideEffect.
[Affects=Everything] is no longer a valid extended attribute.

Constructors can still be invoked without side effects in one case: creating a
DOM wrapper for the V8 object. Any whitelisted attribute/operation that returns
an HTMLDivElement, for example, can call the constructor with
ConstructorMode::kWrapExistingObject the first time it returns.

Bug:  829571 
Change-Id: I3ed2166da80d38a7835dc57a1ccaec23e22734e9
Reviewed-on: https://chromium-review.googlesource.com/1043655
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#558134}
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors-expected.txt
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/side-effects/evaluate-embedder-side-effect-free-constructors.js
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/IDLExtendedAttributes.txt
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/scripts/v8_interface.py
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/templates/interface.cpp.tmpl
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/templates/interface_base.cpp.tmpl
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_2.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_2.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_3.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_custom_constructor.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_init_constructor.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_event_target.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_garbage_collected.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_named_constructor_2.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_node.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_typedefs.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/bindings/tests/results/core/v8_test_variadic_constructor_arguments.cc
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/core/workers/shared_worker.idl
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/core/workers/worker.idl
[modify] https://crrev.com/b3b9e198bea2ea0e4a23ce047a6debeb4538cbc4/third_party/blink/renderer/platform/bindings/v8_object_constructor.cc

Comment 18 by l...@chromium.org, May 18 2018

Status: Fixed (was: Assigned)
Closing, since all intended CLs were landed.  If we receive enough feedback on what to add/remove in the future, we can consider updating the whitelist.

Sign in to add a comment