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

Issue 671426 link

Starred by 9 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug



Sign in to add a comment

Support ES6 in Chrome JS and tools (NOT: add language features to v8)

Project Member Reported by dbeam@chromium.org, Dec 6 2016

Issue description

ES6 has brought a lot of sweet iterative improvements to web development in general.  Quick rundown of features: http://es6-features.org

Those that work on chrome:// pages (i.e. browser UIs implemented with web technologies) can't quite use all of these sweet new features (even though their UIs generally Chrome-only, which has top notch support) because of our antiquated tooling support.

Some examples of tools that need to be audited, changed, or removed that currently look through our source code:
* closure compiler
* closure linter

In addition to developer ergonomics, some chrome:// pages use Polymer (https://polymer-project.org) which we make faster with these additional tools:
* vulcanize
* polymer analyzer (aka hydrolysis)
* uglify
* crisper

In the future, Polymer 2 and Shadow DOM v1 require ES6 classes to create custom elements (see customElements.define()[1]).  And though it's probably possible to make an ES5 class into an ES6 class via Reflect.*, I don't think this is particularly great solution long term.

Shadow DOM v0 (which various chrome:// pages and Polymer 1 rely upon heavily) has been requested to be deprecated and removed eventually from blink[2].  We should start looking into ES6 sooner rather than later.

[1] https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define
[2] https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/txIN7qDRFpU
 
Project Member

Comment 1 by bugdroid1@chromium.org, Dec 6 2016

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

commit 84ef86caae2a84f0dd898972ef721d97c02ac6e3
Author: scottchen <scottchen@chromium.org>
Date: Tue Dec 06 01:14:53 2016

Initial pass creating the ES6 feature doc

BUG=671426
NOTRY=true  # blame dbeam@ if something bad happens

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

[add] https://crrev.com/84ef86caae2a84f0dd898972ef721d97c02ac6e3/docs/es6-chromium.md

Project Member

Comment 2 by bugdroid1@chromium.org, Dec 6 2016

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

commit a385555d984ec7e633f879947027288d1beb467a
Author: Dan Beam <dbeam@chromium.org>
Date: Tue Dec 06 04:10:15 2016

ES6 Support: rename docs/es6-chromium.md -> docs/es6_chromium.md

_ instead of - is far more prevalent in docs/. No functional change.

TBR=dpapad@chromium.org
BUG=671426

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

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

[rename] https://crrev.com/a385555d984ec7e633f879947027288d1beb467a/docs/es6_chromium.md

Project Member

Comment 3 by bugdroid1@chromium.org, Dec 6 2016

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

commit 814fb451892a2177a7093a26732e14d856b2015f
Author: dbeam <dbeam@chromium.org>
Date: Tue Dec 06 22:55:15 2016

ES6 Support: do review comments left on proposed ES6 style guide

R=scottchen@chromium.org,dpapad@chromium.org
BUG=671426
NOTRY=true

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

[modify] https://crrev.com/814fb451892a2177a7093a26732e14d856b2015f/docs/es6_chromium.md

Project Member

Comment 4 by bugdroid1@chromium.org, Dec 7 2016

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

commit 7a41903352ea25e17170a203844ed10b7d370d1f
Author: dbeam <dbeam@chromium.org>
Date: Wed Dec 07 02:13:18 2016

Fix a typo and make a clarification in ES6 style guide

R=dpapad@chromium.org
NOTRY=true
NOTREECHECKS=true
BUG=671426

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

[modify] https://crrev.com/7a41903352ea25e17170a203844ed10b7d370d1f/docs/es6_chromium.md

Comment 5 by dbeam@chromium.org, Dec 8 2016

Summary: Support ES6 in Chrome JS and tools (NOT: add language features to v8) (was: Support ES6 in chrome:// pages and tools (NOT v8))
Project Member

Comment 6 by bugdroid1@chromium.org, Dec 13 2016

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

commit c5454c2f5a6a18a6bb4ee57c57f0f842e5179f95
Author: dbeam <dbeam@chromium.org>
Date: Tue Dec 13 21:43:18 2016

ES6 style: fix some nits from phistuck@ on chromium-dev@

R=dpapad@chromium.org
BUG=671426
NOTRY=true

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

[modify] https://crrev.com/c5454c2f5a6a18a6bb4ee57c57f0f842e5179f95/docs/es6_chromium.md

Project Member

Comment 7 by bugdroid1@chromium.org, Dec 15 2016

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

commit 1ec68ac2a381d7f3effdfa43f44cd62578881da3
Author: dbeam <dbeam@chromium.org>
Date: Thu Dec 15 05:22:24 2016

ES6 Style: add presubmit prompt about => in code that might run on iOS9

An action item from this ES6 proposal:
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/iJrC4PVSfoU

R=dpranke@chromium.org
BUG=671426

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

[modify] https://crrev.com/1ec68ac2a381d7f3effdfa43f44cd62578881da3/PRESUBMIT.py
[modify] https://crrev.com/1ec68ac2a381d7f3effdfa43f44cd62578881da3/PRESUBMIT_test.py

Project Member

Comment 8 by bugdroid1@chromium.org, Dec 22 2016

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

commit 1fbecd7c2e0da9ed9f50dab1846ca57593577cfd
Author: dbeam <dbeam@chromium.org>
Date: Thu Dec 22 03:28:42 2016

Add => as an allowed feature to ES6 style guide

R=dpapad@chromium.org
BUG=671426
NOTRY=true

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

[modify] https://crrev.com/1fbecd7c2e0da9ed9f50dab1846ca57593577cfd/docs/es6_chromium.md

Comment 9 by dpa...@chromium.org, Apr 21 2017

FYI, I have a candidate CL that will unblock further usage of ES6 features in WebUI code, at https://codereview.chromium.org/2829933003. It swaps out Uglify for JSCompiler, where the
latter understands a lot of ES6 features that Uglify did not. We also get some size reductions
but I don't want to share numbers until the remaining issue is resolved, which is:

How to preserve the license headers at the top of the output files?

Approach1: Add @license annotation at the top of each file.

Note that Closure compiler only understands the following syntax

/**
 * @license
 * <license text goes here>
 */

I tried the following (which is closer to what we are using everywhere)

// @license
// <license text goes here

and it did not work, the license header was stripped from the output.

Approach2: Let Closure Compiler strip all licenses and add a single license (2017?)
programmatically from within vulcanize_gn.py.
Cc: -dpa...@chromium.org dbeam@chromium.org
Owner: dpa...@chromium.org
Status: Assigned (was: Available)
Status update:

A CL that swaps Uglify with JS Compiler NodeJS version is at https://codereview.chromium.org/2829933003, and includes all necessary setup to deal with the licenses formatting problems mentioned in previous comments.

Unfortunately JS Complier is about 10x slower than Uglify for this particular use case, which is probably not acceptable (it will significantly slow down Chrome builds).

My next candidate is to re-examine Ugilfy ES2015 branch which seems to have gotten some traction lately, see [1] and [2].

[1] https://github.com/mishoo/UglifyJS2/issues/448#issuecomment-300418754
[2] https://www.npmjs.com/package/uglify-es
Cc: steve...@chromium.org michae...@chromium.org tsergeant@chromium.org
At https://codereview.chromium.org/2921793002 I am replacing uglifyjs with uglify-es, which is the ES6-aware branch of Uglify.

 - All automated tests pass, as well as sanity checks I performed by navigating around the UI.
 - Tried using backticks  and for..of (which were known to break uglifyjs), and the code got minimized successfully.
 - Compared the execution time between previous and new, and could not detect any noticeable difference.
 - Compared the minified output sizes previous and new, no difference*



* In the process of comparing, I might have discovered an existing bug in our build code, but I can't reproduce reliably yet (actually I only reproduced once), where output crisper* files are not minified, and I am suspecting a race-condition in our build. I'll keep looking for a repro, but that's orthogonal to old vs new uglify.
#12: what's missing from the uglify-es CL? license headers?

also: was the size difference you mentioned in #9 worth pursuing?
> #12: what's missing from the uglify-es CL? license headers?

There is nothing I know of that is missing. The license headers work fine. It comes down to whether we feel comfortable with using https://github.com/mishoo/UglifyJS2/tree/harmony (which is what uglify-es points to), in our production.

> also: was the size difference you mentioned in #9 worth pursuing?

No IMO. google-closure-compiler-js is significantly slower (about 10x) and I don't see a way it can get as fast as we would like soon-ish. I would much rather roll uglify-es to unblock ES6, and we can re-consider other minifiers in the future (including a hypothetical faster version of google-closure-compiler-js).
Any idea what they're waiting for to promote the harmony branch from Pre-release to Release? I don't see any "launch" type issues on their tracker.

The npm package https://www.npmjs.com/package/uglify-es doesn't have any alpha tags or weird versioning, so I'd assume it's good to go.
@michaelpg: I don't have any first hand knowledge (have not communicated with any of the authors). There is some related information spread around various GitHub issues, posting some links below:

 - ES6 issues tracking: https://github.com/avdg/UglifyJS2/projects/1
 - Related commend from April: https://github.com/mishoo/UglifyJS2/issues/448#issuecomment-293613988
 - Related commend from a month ago: https://github.com/mishoo/UglifyJS2/issues/1891#issuecomment-300469933
That seems close enough to official for me. Sounds like you've vetted it for the features we need, so count me as a +1.

Re #9: I wasn't asking about using closure compiler, just wondering where the savings came from. If closure is just better at, well, compiling/minifying, so be it -- uglify-es still SGTM.
> just wondering where the savings came from

The savings come almost entirely from keeping a single copy of each LICENSE header (one for every year), as opposed to keeping all of them (one per file, which is Uglify's approach).
Cc: tbreisacher@chromium.org
FYI, I discovered an issue with Closure Compiler and ES6 classes, depicted at https://codereview.chromium.org/2924013003. tbreisacher@ is helping investigate the problem.

My plan is to ensure that we can actually use ES6 features without any of our tools blocking us, before making a wider announcement and start proposing features at https://chromium.googlesource.com/chromium/src/+/master/docs/es6_chromium.md#ES6-Support-In-Chromium.
FYI, minimal repro case identified by @tbreisacher at https://github.com/google/closure-compiler/issues/2526.
Just pushed https://github.com/google/closure-compiler/commit/fc1f4e841b3ef0f6fa4578b673e803c3df733a0d so this should work now. Please let me know if not.
More fixes are needed. Standby.
With https://github.com/google/closure-compiler/commit/52a7ea7b98cdec97e08ee233e4c6ef6669161212 I *think* everything should work now. I can probably try it later today.
Thanks. I plan to update https://codereview.chromium.org/2925723005 which rolls Closure Compiler to latest version and verify too.
Project Member

Comment 27 by bugdroid1@chromium.org, Jun 28 2017

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

commit 340ecaca61543a25037c176a91597429cbc29eef
Author: dpapad <dpapad@chromium.org>
Date: Wed Jun 28 00:37:04 2017

MD Settings: Convert all browser proxies to use ES6 class syntax.

The conversion has been performed automatically with a tool, followed
by minimal human editing on the tool's output.

BUG=671426
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

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

[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/about_page/about_page_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/android_apps_page/android_apps_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/appearance_page/fonts_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/certificate_manager_page/certificates_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/chrome_cleanup_page/chrome_cleanup_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/default_browser_page/default_browser_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/device_page/device_page_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/downloads_page/downloads_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/extension_control_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/languages_page/languages_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/lifetime_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/on_startup_page/on_startup_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/on_startup_page/startup_urls_page_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/people_page/change_picture_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/people_page/easy_unlock_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/people_page/fingerprint_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/people_page/import_data_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/people_page/manage_profile_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/people_page/profile_info_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/people_page/sync_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/printing_page/cups_printers_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/privacy_page/privacy_page_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/search_engines_page/search_engines_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js
[modify] https://crrev.com/340ecaca61543a25037c176a91597429cbc29eef/chrome/browser/resources/settings/system_page/system_page_browser_proxy.js

FYI started looking into unblocking const/let usage in WebUI, see https://codereview.chromium.org/2975503002. So far this has revealed a problem within Closure compiler (internal error) when using "const" with "@enum", which I reported to the Compiler team. 
Project Member

Comment 29 by bugdroid1@chromium.org, Jul 13 2017

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

commit dba107b0d7c488b023c00a39483f36911e518b71
Author: dpapad <dpapad@chromium.org>
Date: Thu Jul 13 05:25:23 2017

Roll closure compiler

Change log:
https://github.com/google/closure-compiler/compare/a13d0ba6d2b02b2188137b36cb699415bd8784c5...71ab0eecc33e2d8db1ce9ee251cbf174bddc493b
chrome_extensions.js: 927e44d6e32d7b2f50ddb2b20f6515b79a0914b3 -> 3444857184440010d5703dfaf6617eca79b2dab4
polymer-1.0.js: cc53ce238def6597f71ddd75e961011edb18e6a3 -> 55e962227e676cd30f81439573771326933aae54

Latest version includes a fix for using let/const with ChromePass, at
https://github.com/google/closure-compiler/commit/38f6437482b6d660371342469e9bd062613b25d4.

TBR=dbeam@chromium.org

BUG: 671426
Change-Id: Icf80fa1dd526e3cb87cc528d84a0a9540bf85e97
Reviewed-on: https://chromium-review.googlesource.com/567678
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
Reviewed-by: Dan Beam (no longer on Chrome) <dbeam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486279}
[modify] https://crrev.com/dba107b0d7c488b023c00a39483f36911e518b71/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.js
[modify] https://crrev.com/dba107b0d7c488b023c00a39483f36911e518b71/chrome/browser/resources/settings/clear_browsing_data_dialog/compiled_resources2.gyp
[modify] https://crrev.com/dba107b0d7c488b023c00a39483f36911e518b71/third_party/closure_compiler/README.chromium
[modify] https://crrev.com/dba107b0d7c488b023c00a39483f36911e518b71/third_party/closure_compiler/compiler/compiler.jar
[modify] https://crrev.com/dba107b0d7c488b023c00a39483f36911e518b71/third_party/closure_compiler/externs/chrome_extensions.js
[modify] https://crrev.com/dba107b0d7c488b023c00a39483f36911e518b71/third_party/closure_compiler/externs/polymer-1.0.js

Project Member

Comment 30 by bugdroid1@chromium.org, Jul 21 2017

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

commit d651231d89ad80f0a5f5ca847704c3ed295701ce
Author: dpapad <dpapad@chromium.org>
Date: Fri Jul 21 02:44:47 2017

ES6 Style: Add presubmit prompt to avoid const/let in potential iOS9 code.

This is in preparation of moving const/let to the "allowed" features in the
ES6 styleguide.

Bug: 671426
Change-Id: I45285d49885470cfe29aaddfe9e9ff6c2ce953a2
Reviewed-on: https://chromium-review.googlesource.com/578731
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488560}
[modify] https://crrev.com/d651231d89ad80f0a5f5ca847704c3ed295701ce/PRESUBMIT.py
[modify] https://crrev.com/d651231d89ad80f0a5f5ca847704c3ed295701ce/PRESUBMIT_test.py

Project Member

Comment 31 by bugdroid1@chromium.org, Jul 22 2017

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

commit fe41133f1bdbbd452106c77b9332a9d0e176d9f6
Author: dpapad <dpapad@chromium.org>
Date: Sat Jul 22 01:33:34 2017

WebUI style: Allow ES6 let/const usage.

 - Remove obsolete check and tests from js_checker.py
 - Convert Downloads page to use let/const as a proof of concept that it works.

Bug: 671426
Change-Id: I6ef56337c02e93b7389788ded0eaec00954457e5
Reviewed-on: https://chromium-review.googlesource.com/570901
Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488828}
[add] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/.eslintrc.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/action_service.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/action_service_unittest.gtestjs
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/constants.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/externs.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/item.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/manager.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/browser/resources/md_downloads/toolbar.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/test/data/webui/md_downloads/downloads_browsertest.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/test/data/webui/md_downloads/item_tests.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/test/data/webui/md_downloads/layout_tests.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/chrome/test/data/webui/md_downloads/toolbar_tests.js
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/docs/es6_chromium.md
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/tools/web_dev_style/js_checker.py
[modify] https://crrev.com/fe41133f1bdbbd452106c77b9332a9d0e176d9f6/tools/web_dev_style/js_checker_test.py

Project Member

Comment 32 by bugdroid1@chromium.org, Aug 7 2017

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

commit 661447753dd701bbd3cebdf13107bfaae6d7ea18
Author: dpapad <dpapad@chromium.org>
Date: Mon Aug 07 17:36:38 2017

ES6 JS styleguide: Whitelist new Object, Array and Number properties/methods.

Bug: 671426
Change-Id: Idf9ad215068dc48eef571ddf6de1572c59d9a899
Reviewed-on: https://chromium-review.googlesource.com/600852
Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492349}
[modify] https://crrev.com/661447753dd701bbd3cebdf13107bfaae6d7ea18/docs/es6_chromium.md

Project Member

Comment 33 by bugdroid1@chromium.org, Aug 9 2017

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

commit d38af94c3f9ef9079f05c67201e10058104767e2
Author: dpapad <dpapad@chromium.org>
Date: Wed Aug 09 06:28:00 2017

ES6 JS styleguide: Allow usage of for..of syntax.

Bug: 671426
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: I20582c4e3ea9c68b39a5dce0386f813cc15bc93b
Reviewed-on: https://chromium-review.googlesource.com/606690
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492855}
[modify] https://crrev.com/d38af94c3f9ef9079f05c67201e10058104767e2/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.js
[modify] https://crrev.com/d38af94c3f9ef9079f05c67201e10058104767e2/chrome/browser/resources/settings/appearance_page/fonts_browser_proxy.js
[modify] https://crrev.com/d38af94c3f9ef9079f05c67201e10058104767e2/docs/es6_chromium.md

Sorry, my question is not about ES6 (it's about ES2017), but I can't find a more relevant bug for it.
Do you have any plans for allowing to use async functions (aka async/await)?
There are no current plans for allowing async/await, AFAIK. Since async/await introduces new syntax, I expect it to be one of the last features to be evaluated/enabled, after all other features at https://chromium.googlesource.com/chromium/src/+/master/docs/es6_chromium.md#Features-To-Be-Discussed have been evaluated.
FYI, proposal for default function parameters is at https://groups.google.com/a/chromium.org/d/msg/chromium-dev/pVHN8r-Z9cU/KyXn6SjiBgAJ.
Cc: mathias@chromium.org
Project Member

Comment 39 by bugdroid1@chromium.org, Oct 3

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

commit dd2470cc9f39bcd92a53832b1c539ab59e1cdded
Author: Dan Beam <dbeam@chromium.org>
Date: Wed Oct 03 00:07:22 2018

Move docs/es6_chromium.md to styleguide/web/es6.md instead

This document is far more a styleguide than something tracking
capabilities of a system.  There's many things that are functionally
available in Chromium/V8 but that we're choosing not to use yet for
various reasons (i.e. tooling support).

R=dpapad@chromium.org
BUG=671426

Change-Id: I588fd338e89813200e934a00d7ac69c325d07968
Reviewed-on: https://chromium-review.googlesource.com/c/1257544
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
Commit-Queue: Dan Beam (no longer on Chrome) <dbeam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596057}
[modify] https://crrev.com/dd2470cc9f39bcd92a53832b1c539ab59e1cdded/PRESUBMIT.py
[modify] https://crrev.com/dd2470cc9f39bcd92a53832b1c539ab59e1cdded/docs/README.md
[rename] https://crrev.com/dd2470cc9f39bcd92a53832b1c539ab59e1cdded/styleguide/web/es6.md

Project Member

Comment 40 by bugdroid1@chromium.org, Nov 20

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

commit b360ae39353c7e37a981130553e53a50d3167e60
Author: Christopher Lam <calamity@chromium.org>
Date: Tue Nov 20 02:01:10 2018

[styleguide/web] Add ES7/8 features.

This CL adds ES7/8 features to the ES styleguide, and renames it es.md in light
of its more generic nature.

All features are To Be Discussed except Async Functions which are allowed.

Bug: 671426,  905927 
Change-Id: Ib01a7dd3bb5dbcbccf8c262c5210614a4d397594
Reviewed-on: https://chromium-review.googlesource.com/c/1339087
Commit-Queue: calamity <calamity@chromium.org>
Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609558}
[rename] https://crrev.com/b360ae39353c7e37a981130553e53a50d3167e60/styleguide/web/es.md

Project Member

Comment 41 by bugdroid1@chromium.org, Jan 7

Sign in to add a comment