aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/ui/youtube-player.reel/youtube-player.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/ui/youtube-player.reel/youtube-player.js')
-rw-r--r--node_modules/montage/ui/youtube-player.reel/youtube-player.js71
1 files changed, 54 insertions, 17 deletions
diff --git a/node_modules/montage/ui/youtube-player.reel/youtube-player.js b/node_modules/montage/ui/youtube-player.reel/youtube-player.js
index 2f7709d7..b49f6ae1 100644
--- a/node_modules/montage/ui/youtube-player.reel/youtube-player.js
+++ b/node_modules/montage/ui/youtube-player.reel/youtube-player.js
@@ -1,10 +1,9 @@
1//data="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&enablejsapi=1&playerapiid=ytplayer"
2/* <copyright> 1/* <copyright>
3 This file contains proprietary software owned by Motorola Mobility, Inc.<br/> 2 This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
4 No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> 3 No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
5 (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. 4 (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
6 </copyright> */ 5 </copyright> */
7/*global require,exports*/ 6/*global require,exports,YT */
8var Montage = require("montage").Montage, 7var Montage = require("montage").Montage,
9 Component = require("ui/component").Component; 8 Component = require("ui/component").Component;
10 9
@@ -31,13 +30,43 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, {
31 return this._player; 30 return this._player;
32 }, 31 },
33 set: function(value) { 32 set: function(value) {
34 // TODO don't allow this to be changed
35 if (this._player !== value) { 33 if (this._player !== value) {
36 this._player = value; 34 this._player = value;
37 } 35 }
38 } 36 }
39 }, 37 },
40 38
39 _width: {
40 enumerable: false,
41 value: 640
42 },
43 width: {
44 get: function() {
45 return this._width;
46 },
47 set: function(value) {
48 if (this._width !== value) {
49 this._width = value;
50 this.needsDraw = true;
51 }
52 }
53 },
54 _height: {
55 enumerable: false,
56 value: 385
57 },
58 height: {
59 get: function() {
60 return this._height;
61 },
62 set: function(value) {
63 if (this._height !== value) {
64 this._height = value;
65 this.needsDraw = true;
66 }
67 }
68 },
69
41 _autoplay: { 70 _autoplay: {
42 enumerable: false, 71 enumerable: false,
43 value: false 72 value: false
@@ -49,6 +78,7 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, {
49 set: function(value) { 78 set: function(value) {
50 if (this._autoplay !== value) { 79 if (this._autoplay !== value) {
51 this._autoplay = value; 80 this._autoplay = value;
81 this.needsDraw = true;
52 } 82 }
53 } 83 }
54 }, 84 },
@@ -127,30 +157,35 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, {
127 value: function() { 157 value: function() {
128 // Create the callback if it doesn't exist, and make it dispatch 158 // Create the callback if it doesn't exist, and make it dispatch
129 // an event on the document instead 159 // an event on the document instead
130 if (!window.onYouTubePlayerReady) { 160 if (!window.onYouTubePlayerAPIReady) {
131 window.onYouTubePlayerReady = function(playerId) { 161 window.onYouTubePlayerAPIReady = function() {
132 var event = document.createEvent("CustomEvent"); 162 var event = document.createEvent("CustomEvent");
133 event.initEvent("youtubePlayerReady", true, true); 163 event.initEvent("youtubePlayerApiReady", true, true);
134 event.playerId = playerId;
135 document.dispatchEvent(event); 164 document.dispatchEvent(event);
136 }; 165 };
137 } 166 }
138 167
139 document.addEventListener("youtubePlayerReady", this, false); 168 this._element.src += (this._videoId ? "/" + this._videoId : "") + "?enablejsapi=1";
140 169
141 // If there's no videoId set one the doesn't exist 170 if (typeof YT !== "undefined" && YT.Player) {
142 this._player.data = "https://www.youtube.com/v/" + (this._videoId || "xxxxxxxxxxx") + "?version=3&enablejsapi=1&playerapiid=" + this.uuid; 171 this.handleYoutubePlayerApiReady();
172 } else {
173 document.addEventListener("youtubePlayerApiReady", this, false);
174 }
143 } 175 }
144 }, 176 },
145 177
146 handleYoutubePlayerReady: { 178 handleYoutubePlayerApiReady: {
147 value: function(event) { 179 value: function(event) {
148 if (event.playerId !== this.uuid) { 180 document.removeEventListener("youtubePlayerApiReady", this);
149 return;
150 }
151 181
152 this._ready = true; 182 var self = this;
153 this.needsDraw = true; 183 this.player = new YT.Player(this._element, { events: {
184 onReady: function(event) {
185 self._ready = true;
186 self.needsDraw = true;
187 }
188 }});
154 } 189 }
155 }, 190 },
156 191
@@ -172,8 +207,10 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, {
172 207
173 this._player[fnName].apply(this._player, args); 208 this._player[fnName].apply(this._player, args);
174 } 209 }
175
176 this._playerQueue.length = 0; 210 this._playerQueue.length = 0;
211
212 this._element.width = this._width;
213 this._element.height = this._height;
177 } 214 }
178 } 215 }
179}); \ No newline at end of file 216}); \ No newline at end of file