Reviewers: MikeSamuel,

Description:
Fixes 1083.  Adds

HTMLTableElement: createCaption, deleteCaption, insertRow, deleteRow;
HTMLTableRowElement: insertCell, deleteCell

Please review this at http://codereview.appspot.com/98051

Affected files:
  M     src/com/google/caja/plugin/domita.js


Index: src/com/google/caja/plugin/domita.js
===================================================================
--- src/com/google/caja/plugin/domita.js        (revision 3611)
+++ src/com/google/caja/plugin/domita.js        (working copy)
@@ -2577,6 +2577,20 @@
       return newValue;
     };

+    function TameTableRowElement(node, editable) {
+      TameTableCompElement.call(this, node, editable, editable);
+    }
+ inertCtor(TameTableRowElement, TameTableCompElement, 'HTMLTableRowElement');
+    TameTableRowElement.prototype.insertCell = function (index) {
+      if (!this.editable___) { throw new Error(NOT_EDITABLE); }
+ return defaultTameNode(this.node___.insertCell(0 + index), this.editable___);
+    };
+    TameTableRowElement.prototype.deleteCell = function (index) {
+      if (!this.editable___) { throw new Error(NOT_EDITABLE); }
+      this.node___.deleteCell(0 + index);
+    };
+    ___.all2(___.grantTypedMethod, TameTableElement.prototype,
+             ['insertCell', 'deleteCell']);

     function TameTableElement(node, editable) {
       TameTableCompElement.call(this, node, editable);
@@ -2609,8 +2623,26 @@
       if (!this.editable___) { throw new Error(NOT_EDITABLE); }
       this.node___.deleteTFoot();
     };
+    TameTableElement.prototype.createCaption = function () {
+      if (!this.editable___) { throw new Error(NOT_EDITABLE); }
+ return defaultTameNode(this.node___.createCaption(), this.editable___);
+    };
+    TameTableElement.prototype.deleteCaption = function () {
+      if (!this.editable___) { throw new Error(NOT_EDITABLE); }
+      this.node___.deleteCaption();
+    };
+    TameTableElement.prototype.insertRow = function (index) {
+      if (!this.editable___) { throw new Error(NOT_EDITABLE); }
+ return defaultTameNode(this.node___.insertRow(0 + index), this.editable___);
+    };
+    TameTableElement.prototype.deleteRow = function (index) {
+      if (!this.editable___) { throw new Error(NOT_EDITABLE); }
+      this.node___.deleteRow(0 + index);
+    };
+
     ___.all2(___.grantTypedMethod, TameTableElement.prototype,
-             ['createTHead', 'deleteTHead','createTFoot', 'deleteTFoot']);
+             ['createTHead', 'deleteTHead','createTFoot', 'deleteTFoot',
+              'createCaption', 'deleteCaption', 'insertRow', 'deleteRow']);

     function tameEvent(event) {
       if (event.tamed___) { return event.tamed___; }


Reply via email to