cf7ae2e0cb
Support typed JS interop classes that extend the behavior of dart:html types in Dartium. This theoretically enables supporting package:dom at the same time as dart:html as well as helping with JavaScript libraries that monkey patch the dom. Also support JS$ name prefix to resolve name conflicts with dart reserved words and with dart:html libraries. Cleanup addEventListener and friends so they are consistent with typed JS Interop and fix bugs in the unlikely case where multiple functions have the same identity hash. Add checks to make it easier to catch when allowInterop is accidentally omitted when using the new typed JavaScript interop. You will now get an exception any time you pass a Function to JS via the new typed interop without first calling allowInterop. BUG= R=alanknight@google.com Review URL: https://codereview.chromium.org/1583773003 .