Another try at appendHtml and insertAdjacentHtml should be consistently sanitized

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@45818 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/dart/CHANGELOG.md b/dart/CHANGELOG.md
index d236bf7..0379129 100644
--- a/dart/CHANGELOG.md
+++ b/dart/CHANGELOG.md
@@ -2,6 +2,14 @@
 
 ### Core library changes
 
+* In dart:html, appendHtml and insertAdjacentHtml now take validator
+  and treeSanitizer parameters, and the inputs are consistently sanitized.
+* List iterators may not throw ConcurrentModificationError as eagerly in
+  release mode. In checked mode, the modification check is still as eager
+  as possible.
+  [r45198](https://code.google.com/p/dart/source/detail?r=45198),
+* Update experimental Isolate API:
+  - Make priority parameters of `Isolate.ping` and `Isolate.kill` methods
 * `dart:core`
   * Add `unmodifiable` constructor to `List` -
     [r45334](https://code.google.com/p/dart/source/detail?r=45334)
diff --git a/dart/sdk/lib/html/dart2js/html_dart2js.dart b/dart/sdk/lib/html/dart2js/html_dart2js.dart
index 7e8622f..c96ee3c 100644
--- a/dart/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/dart/sdk/lib/html/dart2js/html_dart2js.dart
@@ -9941,8 +9941,10 @@
    * Parses the specified text as HTML and adds the resulting node after the
    * last child of this document fragment.
    */
-  void appendHtml(String text) {
-    this.append(new DocumentFragment.html(text));
+  void appendHtml(String text, {NodeValidator validator,
+      NodeTreeSanitizer, treeSanitizer}) {
+    this.append(new DocumentFragment.html(text, validator: validator,
+        treeSanitizer: treeSanitizer));
   }
 
   /** 
@@ -12619,8 +12621,10 @@
    * Parses the specified text as HTML and adds the resulting node after the
    * last child of this element.
    */
-  void appendHtml(String text) {
-    this.insertAdjacentHtml('beforeend', text);
+  void appendHtml(String text, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
+    this.insertAdjacentHtml('beforeend', text, validator: validator,
+        treeSanitizer: treeSanitizer);
   }
 
   /**
@@ -12865,6 +12869,7 @@
 
   @JSName('insertAdjacentText')
   void _insertAdjacentText(String where, String text) native;
+  
 
   /**
    * Parses text as an HTML fragment and inserts it into the DOM at the
@@ -12888,14 +12893,13 @@
    * * [insertAdjacentText]
    * * [insertAdjacentElement]
    */
-  void insertAdjacentHtml(String where, String html) {
-    if (JS('bool', '!!#.insertAdjacentHTML', this)) {
-      _insertAdjacentHtml(where, html);
-    } else {
-      _insertAdjacentNode(where, new DocumentFragment.html(html));
-    }
+  void insertAdjacentHtml(String where, String html, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
+      _insertAdjacentNode(where, new DocumentFragment.html(html,
+          validator: validator, treeSanitizer: treeSanitizer));
   }
 
+
   @JSName('insertAdjacentHTML')
   void _insertAdjacentHtml(String where, String text) native;
 
diff --git a/dart/sdk/lib/html/dartium/html_dartium.dart b/dart/sdk/lib/html/dartium/html_dartium.dart
index 62bf3ee..25d91f6 100644
--- a/dart/sdk/lib/html/dartium/html_dartium.dart
+++ b/dart/sdk/lib/html/dartium/html_dartium.dart
@@ -9412,8 +9412,10 @@
    * Parses the specified text as HTML and adds the resulting node after the
    * last child of this document fragment.
    */
-  void appendHtml(String text) {
-    this.append(new DocumentFragment.html(text));
+  void appendHtml(String text, {NodeValidator validator,
+      NodeTreeSanitizer, treeSanitizer}) {
+    this.append(new DocumentFragment.html(text, validator: validator,
+        treeSanitizer: treeSanitizer));
   }
 
   /** 
@@ -12255,8 +12257,10 @@
    * Parses the specified text as HTML and adds the resulting node after the
    * last child of this element.
    */
-  void appendHtml(String text) {
-    this.insertAdjacentHtml('beforeend', text);
+  void appendHtml(String text, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
+    this.insertAdjacentHtml('beforeend', text, validator: validator,
+        treeSanitizer: treeSanitizer);
   }
 
   /**
@@ -12395,6 +12399,56 @@
   }
 
 
+  /**
+   * Parses text as an HTML fragment and inserts it into the DOM at the
+   * specified location.
+   *
+   * The [where] parameter indicates where to insert the HTML fragment:
+   *
+   * * 'beforeBegin': Immediately before this element.
+   * * 'afterBegin': As the first child of this element.
+   * * 'beforeEnd': As the last child of this element.
+   * * 'afterEnd': Immediately after this element.
+   *
+   *     var html = '<div class="something">content</div>';
+   *     // Inserts as the first child
+   *     document.body.insertAdjacentHtml('afterBegin', html);
+   *     var createdElement = document.body.children[0];
+   *     print(createdElement.classes[0]); // Prints 'something'
+   *
+   * See also:
+   *
+   * * [insertAdjacentText]
+   * * [insertAdjacentElement]
+   */
+  void insertAdjacentHtml(String where, String html, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
+      _insertAdjacentNode(where, new DocumentFragment.html(html,
+          validator: validator, treeSanitizer: treeSanitizer));
+  }
+
+
+  void _insertAdjacentNode(String where, Node node) {
+    switch (where.toLowerCase()) {
+      case 'beforebegin':
+        this.parentNode.insertBefore(node, this);
+        break;
+      case 'afterbegin':
+        var first = this.nodes.length > 0 ? this.nodes[0] : null;
+        this.insertBefore(node, first);
+        break;
+      case 'beforeend':
+        this.append(node);
+        break;
+      case 'afterend':
+        this.parentNode.insertBefore(node, this.nextNode);
+        break;
+      default:
+        throw new ArgumentError("Invalid position ${where}");
+    }
+  }
+
+
   /** Checks if this element or any of its parents match the CSS selectors. */
   @Experimental()
   bool matchesWithAncestors(String selectors) {
@@ -13649,7 +13703,7 @@
   @DomName('Element.insertAdjacentHTML')
   @DocsEditable()
   @Experimental() // untriaged
-  void insertAdjacentHtml(String where, String html) => _blink.BlinkElement.instance.insertAdjacentHTML_Callback_2_(this, where, html);
+  void _insertAdjacentHtml(String where, String html) => _blink.BlinkElement.instance.insertAdjacentHTML_Callback_2_(this, where, html);
 
   @DomName('Element.insertAdjacentText')
   @DocsEditable()
diff --git a/dart/sdk/lib/svg/dart2js/svg_dart2js.dart b/dart/sdk/lib/svg/dart2js/svg_dart2js.dart
index ba0ac01..b8035b3 100644
--- a/dart/sdk/lib/svg/dart2js/svg_dart2js.dart
+++ b/dart/sdk/lib/svg/dart2js/svg_dart2js.dart
@@ -4858,11 +4858,12 @@
   }
 
   @DomName('Element.insertAdjacentHTML')
-  void insertAdjacentHtml(String where, String text) {
+  void insertAdjacentHtml(String where, String text, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
     throw new UnsupportedError("Cannot invoke insertAdjacentHtml on SVG.");
   }
 
-  @DomName('Element.insertAdjacentHTML')
+  @DomName('Element.insertAdjacentElement')
   Element insertAdjacentElement(String where, Element element) {
     throw new UnsupportedError("Cannot invoke insertAdjacentElement on SVG.");
   }
diff --git a/dart/sdk/lib/svg/dartium/svg_dartium.dart b/dart/sdk/lib/svg/dartium/svg_dartium.dart
index d480db3..63a74c6 100644
--- a/dart/sdk/lib/svg/dartium/svg_dartium.dart
+++ b/dart/sdk/lib/svg/dartium/svg_dartium.dart
@@ -5498,11 +5498,12 @@
   }
 
   @DomName('Element.insertAdjacentHTML')
-  void insertAdjacentHtml(String where, String text) {
+  void insertAdjacentHtml(String where, String text, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
     throw new UnsupportedError("Cannot invoke insertAdjacentHtml on SVG.");
   }
 
-  @DomName('Element.insertAdjacentHTML')
+  @DomName('Element.insertAdjacentElement')
   Element insertAdjacentElement(String where, Element element) {
     throw new UnsupportedError("Cannot invoke insertAdjacentElement on SVG.");
   }
diff --git a/dart/tests/co19/co19-dart2js.status b/dart/tests/co19/co19-dart2js.status
index c2ec350..80b1dec 100644
--- a/dart/tests/co19/co19-dart2js.status
+++ b/dart/tests/co19/co19-dart2js.status
@@ -241,6 +241,7 @@
 WebPlatformTest/dom/nodes/DOMImplementation-createHTMLDocument_t01: CompileTimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/dom/nodes/Document-createElement_t01: CompileTimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/dom/nodes/Element-childElementCount-nochild_t01: CompileTimeError # co19-roll r722: Please triage this failure.
+LayoutTests/fast/loader/loadInProgress_t01: Skip # Issue 23466
 
 [ $compiler == dart2js && $checked ]
 Language/13_Statements/09_Switch_A05_t01: Fail # Missing type check in switch expression
@@ -384,6 +385,176 @@
 LayoutTests/fast/forms/submit-nil-value-field-assert_t01: Skip # Test reloads itself. Issue 18558.
 LayoutTests/fast/forms/textarea-submit-crash_t01: Skip # Test reloads itself. Issue 18558.
 LayoutTests/fast/innerHTML/innerHTML-svg-write_t01: Fail # Test uses foreignObject tag, which sanitizer removes. co19 issue #746
+LibTest/html/IFrameElement/appendHtml_A01_t01: Pass, RuntimeError # Issue 23462
+LibTest/html/IFrameElement/appendHtml_A01_t02: Pass, RuntimeError # Issue 23462
+#
+# Everything below this point is associated with co19 Issue 747
+#
+LayoutTests/fast/dynamic/insertAdjacentHTML_t01: Pass, RuntimeError
+LayoutTests/fast/layers/zindex-hit-test_t01: RuntimeError
+LayoutTests/fast/layers/normal-flow-hit-test_t01: RuntimeError
+LayoutTests/fast/multicol/balance-unbreakable_t01: Pass, RuntimeError
+LayoutTests/fast/multicol/fixed-column-percent-logical-height-orthogonal-writing-mode_t01: RuntimeError
+LayoutTests/fast/multicol/image-inside-nested-blocks-with-border_t01: RuntimeError
+LayoutTests/fast/multicol/inherit-column-values_t01: RuntimeError
+LayoutTests/fast/multicol/inline-getclientrects_t01: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t01: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance-maxheight_t02: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t02: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t04: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t05: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t06: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t07: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t08: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t09: Pass, RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t10: Pass, RuntimeError # I don't understand how, but sometimes passes.
+LayoutTests/fast/multicol/column-width-zero_t01: Pass, RuntimeError
+LayoutTests/fast/multicol/widows_t01: Pass, RuntimeError
+LayoutTests/fast/multicol/vertical-lr/break-properties_t01: RuntimeError
+LayoutTests/fast/multicol/orphans-relayout_t01: Pass, RuntimeError
+LayoutTests/fast/multicol/zeroColumnCount_t01: RuntimeError
+LayoutTests/fast/media/media-query-serialization_t01: RuntimeError
+LayoutTests/fast/media/color-does-not-include-alpha_t01: RuntimeError
+LayoutTests/fast/media/mq-append-delete_t01: RuntimeError
+LayoutTests/fast/media/mq-color-index_t02: RuntimeError
+LayoutTests/fast/media/mq-js-media-except_t02: RuntimeError
+LayoutTests/fast/media/mq-js-media-except_t01: RuntimeError
+LayoutTests/fast/media/mq-js-media-except_t03: RuntimeError
+LayoutTests/fast/media/mq-js-update-media_t01: RuntimeError
+LayoutTests/fast/media/mq-parsing_t01: Pass, RuntimeError # False passes on Firefox, but trying to keep these grouped with the issue.
+LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Skip # Passes on Safari, Issue 23475
+LayoutTests/fast/loader/local-css-allowed-in-strict-mode_t01: RuntimeError
+LayoutTests/fast/overflow/replaced-child-100percent-height-inside-fixed-container-with-overflow-auto_t01: Pass, RuntimeError # False pass on Safari
+LayoutTests/fast/lists/marker-preferred-margins_t01: RuntimeError
+LayoutTests/fast/lists/item-not-in-list-line-wrapping_t01: RuntimeError
+LayoutTests/fast/lists/list-style-position-inside_t01: Pass, RuntimeError
+LayoutTests/fast/innerHTML/innerHTML-special-elements_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-moves-with-abspos-inline-parent_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent-relative-ancestor_t01: RuntimeError
+LayoutTests/fast/inline/inline-relative-offset-boundingbox_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-with-transform-container-moves-with-abspos-parent_t01: RuntimeError
+LayoutTests/fast/inline/empty-inline-before-collapsed-space_t01: RuntimeError
+LayoutTests/fast/inline/reattach-inlines-in-anonymous-blocks-with-out-of-flow-siblings_t01: RuntimeError
+LayoutTests/fast/overflow/overflow-rtl-vertical-origin_t01: Pass, RuntimeError # False passes on Firefox, but trying to keep these grouped with the issue.
+LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: Pass # False pass
+LayoutTests/fast/table/col-width-span-expand_t01: Skip
+LayoutTests/fast/text/container-align-with-inlines_t01: RuntimeError
+LayoutTests/fast/text/font-fallback-synthetic-italics_t01: Pass, RuntimeError
+LayoutTests/fast/text/international/listbox-width-rtl_t01: RuntimeError
+LayoutTests/fast/text/glyph-reordering_t01: Pass, RuntimeError # This is a false pass. The font gets sanitized, so whether it works or not probably depends on default sizes.
+LayoutTests/fast/text/international/rtl-text-wrapping_t01: Pass # This is a false pass. All the content gets sanitized, so there's nothing to assert fail on. If the code did anything it would fail.
+LayoutTests/fast/text/line-break-after-empty-inline-hebrew_t01: Pass, RuntimeError
+LayoutTests/fast/text/line-break-after-inline-latin1_t01: RuntimeError
+LayoutTests/fast/text/line-breaks-after-closing-punctuations_t01: RuntimeError
+LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: RuntimeError
+LayoutTests/fast/text/line-breaks-after-ideographic-comma-or-full-stop_t01: RuntimeError
+LayoutTests/fast/text/regional-indicator-symobls_t01: Pass, Fail
+LayoutTests/fast/text-autosizing/inline-width_t01: RuntimeError
+LayoutTests/fast/text-autosizing/text-removal_t01: RuntimeError
+LayoutTests/fast/text-autosizing/table-inline-width_t01: RuntimeError
+LayoutTests/fast/text/container-align-with-inlines_t01: RuntimeError
+LayoutTests/fast/text/font-fallback-synthetic-italics_t01: RuntimeError
+LayoutTests/fast/text/font-ligatures-linebreak-word_t01: Skip
+LayoutTests/fast/text/ipa-tone-letters_t01: Pass, RuntimeError
+LayoutTests/fast/text/pre-wrap-trailing-tab_t01: RuntimeError
+LayoutTests/fast/text-autosizing/display-type-change-lineHeight_t01: RuntimeError
+LayoutTests/fast/url/trivial_t01: RuntimeError
+LayoutTests/fast/url/trivial-segments_t01: RuntimeError
+LayoutTests/fast/url/scheme_t01: RuntimeError
+LayoutTests/fast/url/host-lowercase-per-scheme_t01: RuntimeError
+LayoutTests/fast/url/safari-extension_t01: RuntimeError
+LayoutTests/fast/url/safari-extension_t01: RuntimeError
+LayoutTests/fast/url/port_t01: RuntimeError
+LayoutTests/fast/url/mailto_t01: RuntimeError
+LayoutTests/fast/url/path-url_t01: RuntimeError
+LayoutTests/fast/url/anchor_t01: RuntimeError
+LayoutTests/fast/writing-mode/auto-margins-across-boundaries_t01: RuntimeError
+LayoutTests/fast/writing-mode/display-mutation_t01: RuntimeError
+LayoutTests/fast/writing-mode/percentage-padding_t01: RuntimeError
+LayoutTests/fast/writing-mode/relative-positioning-percentages_t01: RuntimeError
+LayoutTests/fast/writing-mode/block-formatting-context_t01: RuntimeError
+LayoutTests/fast/writing-mode/percentage-margins-absolute-replaced_t01: Pass, RuntimeError
+LayoutTests/fast/text/font-ligatures-linebreak-word_t01: Skip
+LayoutTests/fast/html/adjacent-html-context-element_t01:RuntimeError
+LayoutTests/fast/dom/HTMLElement/insertAdjacentHTML-errors_t01: RuntimeError
+LayoutTests/fast/transforms/transform-inside-overflow-scroll_t01: RuntimeError
+LayoutTests/fast/transforms/transform-hit-test-flipped_t01: Pass, RuntimeError # Passes on Firefox, but is clearly not testing what it's trying to test.
+LayoutTests/fast/transforms/scrollIntoView-transformed_t01: Pass, RuntimeError # False passes on Firefox.
+LayoutTests/fast/transforms/bounding-rect-zoom_t01: RuntimeError, Pass # Erratic, but only passes because divs have been entirely removed.
+LayoutTests/fast/transforms/topmost-becomes-bottomost-for-scrolling_t01: RuntimeError
+LayoutTests/fast/table/anonymous-table-section-removed_t01: Skip
+LayoutTests/fast/table/hittest-tablecell-bottom-edge_t01: Skip
+LayoutTests/fast/table/table-width-exceeding-max-width_t01: Pass, RuntimeError
+LayoutTests/fast/table/table-size-integer-overflow_t01: RuntimeError
+LayoutTests/fast/table/table-sections-border-spacing_t01: RuntimeError
+LayoutTests/fast/table/switch-table-layout_t01: RuntimeError
+LayoutTests/fast/table/switch-table-layout-multiple-section_t01: RuntimeError
+LayoutTests/fast/table/switch-table-layout-dynamic-cells_t01: RuntimeError
+LayoutTests/fast/table/resize-table-row_t01: RuntimeError
+LayoutTests/fast/table/resize-table-cell_t01: RuntimeError
+LayoutTests/fast/table/resize-table-binding-cell_t01: RuntimeError
+LayoutTests/fast/table/min-max-width-preferred-size_t01: Pass, RuntimeError
+LayoutTests/fast/table/margins-flipped-text-direction_t01: Pass, RuntimeError
+LayoutTests/fast/table/html-table-width-max-width-constrained_t01: Pass, RuntimeError
+LayoutTests/fast/table/fixed-table-layout-width-change_t01: Pass, RuntimeError # False passes on Firefox
+LayoutTests/fast/table/fixed-table-with-percent-width-inside-extra-large-div_t01: RuntimeError
+LayoutTests/fast/table/absolute-table-percent-lengths_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-length_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-number_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-length-invalid_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-angle_t01: RuntimeError
+LayoutTests/fast/svg/tabindex-focus_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-integer_t01: RuntimeError
+LayoutTests/fast/sub-pixel/shadows-computed-style_t01: RuntimeError
+LayoutTests/fast/sub-pixel/tiled-canvas-elements_t01: RuntimeError
+LayoutTests/fast/sub-pixel/float-list-inside_t01: RuntimeError
+LayoutTests/fast/sub-pixel/float-with-margin-in-container_t01: RuntimeError
+LayoutTests/fast/sub-pixel/float-percentage-widths_t01: RuntimeError
+LayoutTests/fast/sub-pixel/computedstylemargin_t01: RuntimeError
+LayoutTests/fast/sub-pixel/block-preferred-widths-with-sub-pixel-floats_t01: RuntimeError
+LayoutTests/fast/sub-pixel/auto-table-layout-should-avoid-text-wrapping_t01: RuntimeError
+LayoutTests/fast/sub-pixel/float-containing-block-with-margin_t01: RuntimeError
+LayoutTests/fast/sub-pixel/replaced-element-baseline_t01: Pass, RuntimeError # Fails on Safari, false pass on others
+LayoutTests/fast/selectors/style-sharing-last-child_t01: RuntimeError
+LayoutTests/fast/selectors/specificity-overflow_t01: RuntimeError
+LayoutTests/fast/scrolling/scroll-element-into-view_t01: RuntimeError
+LayoutTests/fast/ruby/parse-rp_t01: Pass, RuntimeError
+LayoutTests/fast/replaced/table-replaced-element_t01: RuntimeError
+LayoutTests/fast/replaced/table-percent-height-text-controls_t01: RuntimeError
+LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: RuntimeError, Pass # Spurious intermittent pass
+LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: RuntimeError, Pass # Spurious intermittent pass.
+LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor_t01: RuntimeError, Pass # Spurious intermittent pass
+LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor-vertical-lr_t01: RuntimeError, Pass # Spurious intermittent pass
+LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: RuntimeError
+LayoutTests/fast/parser/stray-param_t01: RuntimeError
+LayoutTests/fast/replaced/available-height-for-content_t01: RuntimeError
+LayoutTests/fast/parser/parse-wbr_t01: Pass, RuntimeError
+LayoutTests/fast/overflow/height-during-simplified-layout_t01: RuntimeError
+LayoutTests/fast/overflow/child-100percent-height-inside-fixed-container-with-overflow-auto_t01: RuntimeError
+WebPlatformTest/html-imports/link-import-null_t01: RuntimeError
+WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t01: RuntimeError
+WebPlatformTest/html/syntax/parsing/math-parse_t03: RuntimeError
+WebPlatformTest/html/syntax/parsing/math-parse_t01: RuntimeError
+WebPlatformTest/html/semantics/document-metadata/styling/LinkStyle_t01: RuntimeError
+WebPlatformTest/html/semantics/grouping-content/the-ol-element/ol.start-reflection_t02: Skip
+WebPlatformTest/html/semantics/text-level-semantics/the-a-element/a.text-getter_t01: RuntimeError
+WebPlatformTest/html/semantics/scripting-1/the-script-element/async_t11: Skip
+WebPlatformTest/html/semantics/selectors/pseudo-classes/disabled_t01: Pass, RuntimeError # Spurious pass
+WebPlatformTest/html/semantics/selectors/pseudo-classes/link_t01: RuntimeError
+WebPlatformTest/html/semantics/selectors/pseudo-classes/valid-invalid_t01: RuntimeError
+WebPlatformTest/html/semantics/selectors/pseudo-classes/focus_t01: RuntimeError
+WebPlatformTest/html/semantics/forms/the-input-element/pattern_attribute_t01: RuntimeError
+WebPlatformTest/html/semantics/forms/the-form-element/form-nameditem_t01: RuntimeError
+WebPlatformTest/html/semantics/disabled-elements/disabledElement_t01: RuntimeError
+WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t03: RuntimeError
+WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t05: RuntimeError
+WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-param_t01: RuntimeError
+WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-newelements_t01: RuntimeError
+WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-case_t01: RuntimeError
+#
+# End of Issue 747
+#
 
 [ $compiler == dart2js && $runtime == chromeOnAndroid ]
 Language/12_Expressions/00_Object_Identity/1_Object_Identity_A05_t02: RuntimeError # Please triage this failure.
@@ -817,7 +988,6 @@
 LayoutTests/fast/loader/about-blank-hash-change_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/about-blank-hash-kept_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/loadInProgress_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-back_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: RuntimeError # Please triage this failure
@@ -826,7 +996,7 @@
 LayoutTests/fast/masking/parsing-mask-source-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/masking/parsing-mask_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/media/media-query-list-syntax_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: RuntimeError # Issue 23475
 LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t02: RuntimeError # Please triage this failure
@@ -1018,8 +1188,6 @@
 LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
@@ -2376,8 +2544,8 @@
 LayoutTests/fast/media/media-query-list-syntax_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/media/media-query-serialization_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/media/mq-append-delete_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Skip # Issue 23475
+LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Issue 23475
 LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t02: RuntimeError # Please triage this failure
@@ -2624,8 +2792,6 @@
 LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
@@ -3650,7 +3816,6 @@
 LayoutTests/fast/loader/about-blank-hash-change_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/about-blank-hash-kept_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/loadInProgress_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-back_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: RuntimeError # Please triage this failure
@@ -3665,7 +3830,7 @@
 LayoutTests/fast/media/mq-js-media-except_t03: RuntimeError # Please triage this failure
 LayoutTests/fast/media/mq-parsing_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/mediastream/RTCIceCandidate_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Issue 23475
 LayoutTests/fast/mediastream/constructors_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t01: RuntimeError # Please triage this failure
@@ -3774,8 +3939,8 @@
 LayoutTests/fast/text/find-soft-hyphen_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/text/find-spaces_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/text/font-ligature-letter-spacing_t01: Pass, RuntimeError # Fails on 6.2. Please triage this failure
-LayoutTests/fast/text/font-ligatures-linebreak-word_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/font-ligatures-linebreak_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/text/font-ligatures-linebreak-word_t01: Pass, RuntimeError # Please triage this failure
+LayoutTests/fast/text/font-ligatures-linebreak_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/text/glyph-reordering_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
 LayoutTests/fast/text/international/cjk-segmentation_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/text/international/iso-8859-8_t01: RuntimeError # Please triage this failure
@@ -3904,8 +4069,6 @@
 LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
@@ -4942,7 +5105,6 @@
 LayoutTests/fast/loader/about-blank-hash-change_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/about-blank-hash-kept_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/loadInProgress_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-back_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: RuntimeError # Please triage this failure
@@ -4958,7 +5120,7 @@
 LayoutTests/fast/media/mq-js-media-except_t03: RuntimeError # Please triage this failure
 LayoutTests/fast/media/mq-parsing_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/mediastream/RTCIceCandidate_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError #  Issue 23475
 LayoutTests/fast/mediastream/constructors_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t01: RuntimeError # Please triage this failure
@@ -5025,14 +5187,14 @@
 LayoutTests/fast/speechsynthesis/speech-synthesis-voices_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/storage/disallowed-storage_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/storage/storage-disallowed-in-data-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/boundingclientrect-subpixel-margin_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/sub-pixel/boundingclientrect-subpixel-margin_t01: Skip # Issue 747
 LayoutTests/fast/sub-pixel/computedstylemargin_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/sub-pixel/cssom-subpixel-precision_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/sub-pixel/float-list-inside_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/inline-block-with-padding_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/layout-boxes-with-zoom_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/sub-pixel/inline-block-with-padding_t01: Skip # Issue 747
+LayoutTests/fast/sub-pixel/layout-boxes-with-zoom_t01: Pass RuntimeError # Issue 747
 LayoutTests/fast/sub-pixel/shadows-computed-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/size-of-span-with-different-positions_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/sub-pixel/size-of-span-with-different-positions_t01: Skip # Issue 747
 LayoutTests/fast/svg/getbbox_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/svg/tabindex-focus_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/svg/whitespace-angle_t01: RuntimeError # Please triage this failure
@@ -5209,8 +5371,6 @@
 LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
@@ -6712,7 +6872,6 @@
 LayoutTests/fast/loader/about-blank-hash-change_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/about-blank-hash-kept_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/loadInProgress_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/local-css-allowed-in-strict-mode_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-back_t01: Skip # Times out. Please triage this failure
@@ -6728,7 +6887,7 @@
 LayoutTests/fast/media/mq-js-update-media_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/media/mq-parsing_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/mediastream/RTCIceCandidate_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Issue 23475
 LayoutTests/fast/mediastream/constructors_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t01: RuntimeError # Please triage this failure
@@ -7062,8 +7221,6 @@
 LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/addEventListener_A01_t04: Pass, RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
@@ -8703,7 +8860,6 @@
 LayoutTests/fast/loader/about-blank-hash-change_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/about-blank-hash-kept_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/loadInProgress_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/local-css-allowed-in-strict-mode_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/loader/scroll-position-restored-on-back_t01: RuntimeError # Please triage this failure
@@ -8719,7 +8875,7 @@
 LayoutTests/fast/media/mq-js-update-media_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/media/mq-parsing_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/mediastream/RTCIceCandidate_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Issue 23475
 LayoutTests/fast/mediastream/constructors_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/balance-trailing-border_t01: RuntimeError # Please triage this failure
@@ -9063,8 +9219,6 @@
 LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
 LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/addEventListener_A01_t04: Pass, RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
diff --git a/dart/tests/co19/co19-dartium.status b/dart/tests/co19/co19-dartium.status
index 80c156e..7a13594 100644
--- a/dart/tests/co19/co19-dartium.status
+++ b/dart/tests/co19/co19-dartium.status
@@ -198,8 +198,8 @@
 LibTest/html/HttpRequest/responseType_A01_t03: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/HttpRequest/statusText_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
-LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
-LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # co19-roll r706.  Please triage this failure.
+LibTest/html/IFrameElement/appendHtml_A01_t01: RuntimeError # Issue 23462
+LibTest/html/IFrameElement/appendHtml_A01_t02: RuntimeError # Issue 23462
 LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/IFrameElement/borderEdge_A01_t01: RuntimeError # co19-roll r706.  Issue 16574
@@ -915,6 +915,132 @@
 LayoutTests/fast/table/nested-tables-with-div-offset_t01: Pass, RuntimeError # co19-roll r801: Please triage this failure.
 LayoutTests/fast/dom/getElementsByClassName/011_t01: RuntimeError # Chrome 39 roll. Please triage this failure
 
+#
+# Everything below this point is associated with co19 Issue 747
+#
+LayoutTests/fast/multicol/balance-unbreakable_t01: RuntimeError
+LayoutTests/fast/multicol/fixed-column-percent-logical-height-orthogonal-writing-mode_t01: RuntimeError
+LayoutTests/fast/multicol/image-inside-nested-blocks-with-border_t01: RuntimeError
+LayoutTests/fast/multicol/inherit-column-values_t01: RuntimeError
+LayoutTests/fast/multicol/inline-getclientrects_t01: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t01: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance-maxheight_t02: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t02: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t05: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t06: RuntimeError
+LayoutTests/fast/multicol/newmulticol/balance_t10: RuntimeError, Pass # I don't understand how, but sometimes passes.
+LayoutTests/fast/multicol/vertical-lr/break-properties_t01: RuntimeError
+LayoutTests/fast/multicol/orphans-relayout_t01: RuntimeError
+LayoutTests/fast/multicol/zeroColumnCount_t01: RuntimeError
+LayoutTests/fast/media/media-query-serialization_t01: RuntimeError
+LayoutTests/fast/media/color-does-not-include-alpha_t01: RuntimeError
+LayoutTests/fast/media/mq-append-delete_t01: RuntimeError
+LayoutTests/fast/media/mq-color-index_t02: RuntimeError
+LayoutTests/fast/media/mq-js-media-except_t02: RuntimeError
+LayoutTests/fast/media/mq-js-media-except_t01: RuntimeError
+LayoutTests/fast/media/mq-js-media-except_t03: RuntimeError
+LayoutTests/fast/media/mq-js-update-media_t01: RuntimeError
+LayoutTests/fast/media/mq-parsing_t01: RuntimeError
+LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: RuntimeError
+LayoutTests/fast/loader/local-css-allowed-in-strict-mode_t01: RuntimeError
+LayoutTests/fast/lists/marker-preferred-margins_t01: RuntimeError
+LayoutTests/fast/lists/item-not-in-list-line-wrapping_t01: RuntimeError
+LayoutTests/fast/innerHTML/innerHTML-special-elements_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-moves-with-abspos-inline-parent_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent-relative-ancestor_t01: RuntimeError
+LayoutTests/fast/inline/inline-relative-offset-boundingbox_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent_t01: RuntimeError
+LayoutTests/fast/inline/fixed-pos-with-transform-container-moves-with-abspos-parent_t01: RuntimeError
+LayoutTests/fast/inline/empty-inline-before-collapsed-space_t01: RuntimeError
+LayoutTests/fast/inline/reattach-inlines-in-anonymous-blocks-with-out-of-flow-siblings_t01: RuntimeError
+LayoutTests/fast/text/container-align-with-inlines_t01: RuntimeError
+LayoutTests/fast/text/font-fallback-synthetic-italics_t01: RuntimeError
+LayoutTests/fast/text/international/listbox-width-rtl_t01: RuntimeError
+LayoutTests/fast/text/glyph-reordering_t01: Pass # This is a false pass. All the content gets sanitized, so there's nothing to assert fail on. If the code did anything it would fail.
+LayoutTests/fast/text/international/rtl-text-wrapping_t01: Pass # This is a false pass. All the content gets sanitized, so there's nothing to assert fail on. If the code did anything it would fail.
+LayoutTests/fast/text/line-break-after-empty-inline-hebrew_t01: RuntimeError
+LayoutTests/fast/text/line-break-after-inline-latin1_t01: RuntimeError
+LayoutTests/fast/text/line-breaks-after-closing-punctuations_t01: RuntimeError
+LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: RuntimeError
+LayoutTests/fast/text/line-breaks-after-ideographic-comma-or-full-stop_t01: RuntimeError
+LayoutTests/fast/text-autosizing/inline-width_t01: RuntimeError
+LayoutTests/fast/text-autosizing/text-removal_t01: RuntimeError
+LayoutTests/fast/text-autosizing/table-inline-width_t01: RuntimeError
+LayoutTests/fast/text/container-align-with-inlines_t01: RuntimeError
+LayoutTests/fast/text/font-fallback-synthetic-italics_t01: RuntimeError
+LayoutTests/fast/text/pre-wrap-trailing-tab_t01: RuntimeError
+LayoutTests/fast/text-autosizing/display-type-change-lineHeight_t01: RuntimeError
+LayoutTests/fast/url/trivial_t01: RuntimeError
+LayoutTests/fast/url/trivial-segments_t01: RuntimeError
+LayoutTests/fast/url/scheme_t01: RuntimeError
+LayoutTests/fast/url/host-lowercase-per-scheme_t01: RuntimeError
+LayoutTests/fast/url/safari-extension_t01: RuntimeError
+LayoutTests/fast/url/safari-extension_t01: RuntimeError
+LayoutTests/fast/url/port_t01: RuntimeError
+LayoutTests/fast/url/mailto_t01: RuntimeError
+LayoutTests/fast/url/path-url_t01: RuntimeError
+LayoutTests/fast/url/anchor_t01: RuntimeError
+LayoutTests/fast/writing-mode/auto-margins-across-boundaries_t01: RuntimeError
+LayoutTests/fast/writing-mode/display-mutation_t01: RuntimeError
+LayoutTests/fast/writing-mode/percentage-padding_t01: RuntimeError
+LayoutTests/fast/writing-mode/relative-positioning-percentages_t01: RuntimeError
+LayoutTests/fast/writing-mode/block-formatting-context_t01: RuntimeError
+LayoutTests/fast/html/adjacent-html-context-element_t01:RuntimeError
+LayoutTests/fast/canvas/canvas-transforms-fillRect-shadow_t01: RuntimeError
+LayoutTests/fast/dom/HTMLElement/insertAdjacentHTML-errors_t01: RuntimeError
+LayoutTests/fast/transforms/transform-inside-overflow-scroll_t01: RuntimeError
+LayoutTests/fast/transforms/transform-hit-test-flipped_t01: RuntimeError
+LayoutTests/fast/transforms/scrollIntoView-transformed_t01: RuntimeError
+LayoutTests/fast/transforms/bounding-rect-zoom_t01: RuntimeError, Pass # Erratic, but only passes because divs have been entirely removed.
+LayoutTests/fast/transforms/topmost-becomes-bottomost-for-scrolling_t01: RuntimeError
+LayoutTests/fast/table/table-width-exceeding-max-width_t01: RuntimeError
+LayoutTests/fast/table/table-size-integer-overflow_t01: RuntimeError
+LayoutTests/fast/table/table-sections-border-spacing_t01: RuntimeError
+LayoutTests/fast/table/switch-table-layout_t01: RuntimeError
+LayoutTests/fast/table/switch-table-layout-multiple-section_t01: RuntimeError
+LayoutTests/fast/table/switch-table-layout-dynamic-cells_t01: RuntimeError
+LayoutTests/fast/table/resize-table-row_t01: RuntimeError
+LayoutTests/fast/table/resize-table-cell_t01: RuntimeError
+LayoutTests/fast/table/resize-table-binding-cell_t01: RuntimeError
+LayoutTests/fast/table/min-max-width-preferred-size_t01: RuntimeError
+LayoutTests/fast/table/margins-flipped-text-direction_t01: RuntimeError
+LayoutTests/fast/table/html-table-width-max-width-constrained_t01: RuntimeError
+LayoutTests/fast/table/fixed-table-layout-width-change_t01: RuntimeError
+LayoutTests/fast/table/fixed-table-with-percent-width-inside-extra-large-div_t01: RuntimeError
+LayoutTests/fast/table/absolute-table-percent-lengths_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-length_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-number_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-length-invalid_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-angle_t01: RuntimeError
+LayoutTests/fast/svg/tabindex-focus_t01: RuntimeError
+LayoutTests/fast/svg/whitespace-integer_t01: RuntimeError
+LayoutTests/fast/sub-pixel/shadows-computed-style_t01: RuntimeError
+LayoutTests/fast/sub-pixel/tiled-canvas-elements_t01: RuntimeError
+LayoutTests/fast/sub-pixel/float-list-inside_t01: RuntimeError
+LayoutTests/fast/sub-pixel/float-with-margin-in-container_t01: RuntimeError
+LayoutTests/fast/sub-pixel/float-percentage-widths_t01: RuntimeError
+LayoutTests/fast/sub-pixel/computedstylemargin_t01: RuntimeError
+LayoutTests/fast/sub-pixel/block-preferred-widths-with-sub-pixel-floats_t01: RuntimeError
+LayoutTests/fast/sub-pixel/auto-table-layout-should-avoid-text-wrapping_t01: RuntimeError
+LayoutTests/fast/selectors/style-sharing-last-child_t01: RuntimeError
+LayoutTests/fast/selectors/specificity-overflow_t01: RuntimeError
+LayoutTests/fast/scrolling/scroll-element-into-view_t01: RuntimeError
+LayoutTests/fast/ruby/parse-rp_t01: RuntimeError
+LayoutTests/fast/replaced/table-replaced-element_t01: RuntimeError
+LayoutTests/fast/replaced/table-percent-height-text-controls_t01: RuntimeError
+LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: RuntimeError, Pass # Spurious intermittent pass
+LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: RuntimeError, Pass # Spurious intermittent pass.
+LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor_t01: RuntimeError, Pass # Spurious intermittent pass
+LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor-vertical-lr_t01: RuntimeError, Pass # Spurious intermittent pass
+LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: RuntimeError
+LayoutTests/fast/parser/stray-param_t01: RuntimeError
+LayoutTests/fast/replaced/available-height-for-content_t01: RuntimeError
+LayoutTests/fast/parser/parse-wbr_t01: RuntimeError
+LayoutTests/fast/overflow/height-during-simplified-layout_t01: RuntimeError
+LayoutTests/fast/overflow/child-100percent-height-inside-fixed-container-with-overflow-auto_t01: RuntimeError
+#
+# End of Issue 747
+#
 
 [ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid ) && $checked ]
 LayoutTests/fast/html/article-element_t01: RuntimeError # co19-roll r706.  Please triage this failure.
diff --git a/dart/tests/html/node_validator_important_if_you_suppress_make_the_bug_critical_test.dart b/dart/tests/html/node_validator_important_if_you_suppress_make_the_bug_critical_test.dart
index cb0196d..4a5fe71 100644
--- a/dart/tests/html/node_validator_important_if_you_suppress_make_the_bug_critical_test.dart
+++ b/dart/tests/html/node_validator_important_if_you_suppress_make_the_bug_critical_test.dart
@@ -137,6 +137,24 @@
 
       validateNodeTree(template.content, expectedContent);
     });
+
+    test("appendHtml is sanitized", () {
+      var html = '<body background="s"></body><div></div>';
+      document.body.appendHtml('<div id="stuff"></div>');
+      var stuff = document.querySelector("#stuff");
+      stuff.appendHtml(html);
+      expect(stuff.childNodes.length, 1);
+      stuff.remove();
+    });
+
+    test("documentFragment.appendHtml is sanitized", () {
+      var html = '<div id="things></div>';
+      var fragment = new DocumentFragment.html(html);
+      fragment.appendHtml('<div id="bad"><script></script></div>');
+      expect(fragment.childNodes.length, 1);
+      expect(fragment.childNodes[0].id, "bad");
+      expect(fragment.childNodes[0].childNodes.length, 0);
+    });    
   });
 
   group('URI_sanitization', () {
diff --git a/dart/tools/dom/scripts/htmlrenamer.py b/dart/tools/dom/scripts/htmlrenamer.py
index 40ee519..8d0b7ee 100644
--- a/dart/tools/dom/scripts/htmlrenamer.py
+++ b/dart/tools/dom/scripts/htmlrenamer.py
@@ -237,6 +237,7 @@
   'Element.childElementCount',
   'Element.firstElementChild',
   'Element.getElementsByTagName',
+  'Element.insertAdjacentHTML',
   'Element.scrollIntoView',
   'Element.scrollIntoViewIfNeeded',
   'Element.removeAttribute',
diff --git a/dart/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate b/dart/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate
index e401956..d533e49 100644
--- a/dart/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate
+++ b/dart/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate
@@ -93,8 +93,10 @@
    * Parses the specified text as HTML and adds the resulting node after the
    * last child of this document fragment.
    */
-  void appendHtml(String text) {
-    this.append(new DocumentFragment.html(text));
+  void appendHtml(String text, {NodeValidator validator,
+      NodeTreeSanitizer, treeSanitizer}) {
+    this.append(new DocumentFragment.html(text, validator: validator,
+        treeSanitizer: treeSanitizer));
   }
 
   /** 
diff --git a/dart/tools/dom/templates/html/impl/impl_Element.darttemplate b/dart/tools/dom/templates/html/impl/impl_Element.darttemplate
index d18eb4b..10f842c 100644
--- a/dart/tools/dom/templates/html/impl/impl_Element.darttemplate
+++ b/dart/tools/dom/templates/html/impl/impl_Element.darttemplate
@@ -727,8 +727,10 @@
    * Parses the specified text as HTML and adds the resulting node after the
    * last child of this element.
    */
-  void appendHtml(String text) {
-    this.insertAdjacentHtml('beforeend', text);
+  void appendHtml(String text, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
+    this.insertAdjacentHtml('beforeend', text, validator: validator,
+        treeSanitizer: treeSanitizer);
   }
 
   /**
@@ -984,6 +986,9 @@
 
   @JSName('insertAdjacentText')
   void _insertAdjacentText(String where, String text) native;
+  
+$else
+$endif
 
   /**
    * Parses text as an HTML fragment and inserts it into the DOM at the
@@ -1007,14 +1012,14 @@
    * * [insertAdjacentText]
    * * [insertAdjacentElement]
    */
-  void insertAdjacentHtml(String where, String html) {
-    if (JS('bool', '!!#.insertAdjacentHTML', this)) {
-      _insertAdjacentHtml(where, html);
-    } else {
-      _insertAdjacentNode(where, new DocumentFragment.html(html));
-    }
+  void insertAdjacentHtml(String where, String html, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
+      _insertAdjacentNode(where, new DocumentFragment.html(html,
+          validator: validator, treeSanitizer: treeSanitizer));
   }
 
+$if DART2JS
+
   @JSName('insertAdjacentHTML')
   void _insertAdjacentHtml(String where, String text) native;
 
@@ -1039,6 +1044,8 @@
 
   @JSName('insertAdjacentElement')
   void _insertAdjacentElement(String where, Element element) native;
+$else
+$endif
 
   void _insertAdjacentNode(String where, Node node) {
     switch (where.toLowerCase()) {
@@ -1060,6 +1067,7 @@
     }
   }
 
+$if DART2JS
   /**
    * Checks if this element matches the CSS selectors.
    */
diff --git a/dart/tools/dom/templates/html/impl/impl_SVGElement.darttemplate b/dart/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
index dd235bc..378dec8 100644
--- a/dart/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
+++ b/dart/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
@@ -115,11 +115,12 @@
   }
 
   @DomName('Element.insertAdjacentHTML')
-  void insertAdjacentHtml(String where, String text) {
+  void insertAdjacentHtml(String where, String text, {NodeValidator validator,
+      NodeTreeSanitizer treeSanitizer}) {
     throw new UnsupportedError("Cannot invoke insertAdjacentHtml on SVG.");
   }
 
-  @DomName('Element.insertAdjacentHTML')
+  @DomName('Element.insertAdjacentElement')
   Element insertAdjacentElement(String where, Element element) {
     throw new UnsupportedError("Cannot invoke insertAdjacentElement on SVG.");
   }