Bug 1338030 - regionCueStyleBox: implementation RegionCueStyleBox which correspong to "the children WebVTT region object". r=rillian draft
authorbechen@mozilla.com <bechen@mozilla.com>
Fri, 10 Nov 2017 11:40:53 +0800
changeset 695986 5b63103e9786a94efcea0e0c7bb0988dfc0cf7a6
parent 695985 7781f716438c6bf7e2b4550f0b77f245f674fd15
child 695987 93d49147d626cf2b5add5d81b5476b5efb696262
push id88606
push userbmo:bechen@mozilla.com
push dateFri, 10 Nov 2017 03:41:56 +0000
reviewersrillian
bugs1338030
milestone58.0a1
Bug 1338030 - regionCueStyleBox: implementation RegionCueStyleBox which correspong to "the children WebVTT region object". r=rillian MozReview-Commit-ID: 2qwU1cYnI50
dom/media/webvtt/vtt.jsm
--- a/dom/media/webvtt/vtt.jsm
+++ b/dom/media/webvtt/vtt.jsm
@@ -630,16 +630,54 @@ const { XPCOMUtils } = require("resource
 
     this.div = window.document.createElement("div");
     this.div.id = region.id; // useless?
     this.applyStyles(regionNodeStyles);
   }
   RegionNodeBox.prototype = _objCreate(StyleBox.prototype);
   RegionNodeBox.prototype.constructor = RegionNodeBox;
 
+  function RegionCueStyleBox(window, cue) {
+    StyleBox.call(this);
+    this.cueDiv = parseContent(window, cue.text, PARSE_CONTENT_MODE.REGION_CUE);
+
+    var regionCueStyles = {
+      position: "relative",
+      writingMode: "horizontal-tb",
+      unicodeBidi: "plaintext",
+      width: "auto",
+      height: "auto",
+      textAlign: cue.align,
+    };
+    // TODO: fix me, LTR and RTL ? using margin replace the "left/right"
+    // 6.1.14.3.3
+    var offset = cue.computedPosition * cue.region.width / 100;
+    // 6.1.14.3.4
+    switch (cue.align) {
+      case "start":
+      case "left":
+        regionCueStyles.left = offset + "%";
+        regionCueStyles.right = "auto";
+        break;
+      case "end":
+      case "right":
+        regionCueStyles.left = "auto";
+        regionCueStyles.right = offset + "%";
+        break;
+      case "middle":
+        break;
+    }
+
+    this.div = window.document.createElement("div");
+    this.applyStyles(regionCueStyles);
+    this.div.appendChild(this.cueDiv);
+  }
+  RegionCueStyleBox.prototype = _objCreate(StyleBox.prototype);
+  RegionCueStyleBox.prototype.constructor = RegionCueStyleBox;
+
   // Represents the co-ordinates of an Element in a way that we can easily
   // compute things with such as if it overlaps or intersects with another Element.
   // Can initialize it with either a StyleBox or another BoxPosition.
   function BoxPosition(obj) {
     var isIE8 = (typeof navigator !== "undefined") &&
       (/MSIE\s8\.0/).test(navigator.userAgent);
 
     // Either a BoxPosition was passed in and we need to copy it, or a StyleBox