Add new access object callback
[framework/web/webkit-efl.git] / LayoutTests / media / media-controls.js
1
2 function mediaControlsElement(first, id)
3 {
4     for (var element = first; element; element = element.nextSibling) {
5         // Not every element in the media controls has a shadow pseudo ID, eg. the
6         // text nodes for the time values, so guard against exceptions.
7         try {
8             if (internals.shadowPseudoId(element) == id)
9                 return element;
10         } catch (exception) { }
11
12         if (element.firstChild) {
13             var childElement = mediaControlsElement(element.firstChild, id);
14             if (childElement)
15                 return childElement;
16         }
17     }
18
19     return null;
20 }
21
22 function mediaControlsButtonCoordinates(element, id)
23 {
24     var controlID = "-webkit-media-controls-" + id;
25     var button = mediaControlsElement(internals.shadowRoot(element).firstChild, controlID);
26     if (!button)
27         throw "Failed to find media control element ID '" + id + "'";
28
29     var buttonBoundingRect = button.getBoundingClientRect();
30     var x = buttonBoundingRect.left + buttonBoundingRect.width / 2;
31     var y = buttonBoundingRect.top + buttonBoundingRect.height / 2;
32     return new Array(x, y);
33 }
34
35 function mediaControlsButtonDimensions(element, id)
36 {
37     var controlID = "-webkit-media-controls-" + id;
38     var button = mediaControlsElement(internals.shadowRoot(element).firstChild, controlID);
39     if (!button)
40         throw "Failed to find media control element ID '" + id + "'";
41
42     var buttonBoundingRect = button.getBoundingClientRect();
43     return new Array(buttonBoundingRect.width, buttonBoundingRect.height);
44 }
45
46 function textTrackDisplayElement(parentElement, id, cueNumber)
47 {
48     var textTrackContainerID = "-webkit-media-text-track-container";
49     var containerElement = mediaControlsElement(internals.shadowRoot(parentElement).firstChild, "-webkit-media-text-track-container");
50
51     if (!containerElement)
52         throw "Failed to find text track container element";
53
54     if (!id)
55         return containerElement;
56
57     var controlID = "-webkit-media-text-track-" + arguments[1];
58
59     var displayElement = mediaControlsElement(containerElement.firstChild, controlID);
60     if (!displayElement)
61         throw "No text track cue with display id '" + controlID + "' is currently visible";
62
63     if (cueNumber) {
64         for (i = 0; i < cueNumber; i++)
65             displayElement = displayElement.nextSibling;
66
67         if (!displayElement)
68             throw "There are not " + cueNumber + " text track cues visible";
69     }
70
71     return displayElement;
72 }