Skip to content

Commit

Permalink
EME updates, etc.
Browse files Browse the repository at this point in the history
  • Loading branch information
samdutton committed Mar 5, 2015
1 parent dae322d commit c9c041d
Show file tree
Hide file tree
Showing 91 changed files with 59,781 additions and 5,179 deletions.
3 changes: 1 addition & 2 deletions .htaccess
Expand Up @@ -2,8 +2,7 @@ RedirectMatch 301 /ajax /xhr
RedirectMatch 301 /alpha /videoalpha
RedirectMatch 301 /br$ /vibrate
RedirectMatch 301 /cds$ /chrome/index.html
RedirectMatch 301 /ck$ /eme/clearkey/src
RedirectMatch 301 /clearkey$ /eme/clearkey/src
RedirectMatch 301 /ck$ /eme/clearkey/
RedirectMatch 301 /cpt$ /canplaytype
RedirectMatch 301 /d$ /rtcdatachannel/
RedirectMatch 301 /datachannel /rtcdatachannel/
Expand Down
5 changes: 2 additions & 3 deletions Gruntfile.js
Expand Up @@ -17,7 +17,7 @@ module.exports = function(grunt) {
options: {
import: 2
},
src: ['**/*.css','!node_modules/**/*']
src: ['**/*.css', '!node_modules/**/*']
}
},

Expand Down Expand Up @@ -47,8 +47,7 @@ module.exports = function(grunt) {
files: ['**/main.js']
}

});

});

// enable plugins
grunt.loadNpmTasks('grunt-contrib-csslint');
Expand Down
3 changes: 2 additions & 1 deletion appcache/js/main.js
Expand Up @@ -46,6 +46,7 @@ function handleCacheError(e) {
}

var data = document.getElementById('data');
function log(text){

function log(text) {
data.innerHTML += text + '<br />';
}
27 changes: 16 additions & 11 deletions array/js/main.js
@@ -1,11 +1,12 @@
'use strict';

var data = document.getElementById('data');
function log(message){

function log(message) {
data.innerHTML += message + '<br />';
}

var Person = function(name, email){
var Person = function(name, email) {
this.name = name;
this.email = email;
};
Expand All @@ -17,32 +18,36 @@ var wilma = new Person('Wilma Flintstone', 'wilma@flintstone.com');

var array = [barney, betty, fred, wilma];

log('Array:<br />' + JSON.stringify(array).replace(/},/g,'},<br />') + '<br />');
log('Array:<br />' + JSON.stringify(array).replace(/},/g, '},<br />') +
'<br />');

log('Use filter() and forEach() to show people with rubble.com emails:');

var rubbles = array.filter(function(element/*, index, array */){
var rubbles = array.filter(function(element /*, index, array */ ) {
return element.email.indexOf('rubble') !== -1;
});

rubbles.forEach(function(element/*, index, array */){
rubbles.forEach(function(element /*, index, array */ ) {
log(element.name + ' ');
});

var hasFlintstones = array.some(function(element/*, index, array */){
var hasFlintstones = array.some(function(element /*, index, array */ ) {
return element.name.indexOf('Flintstone') !== -1;
});

log('<br />Use some() to check if the array contains any Flintstones:<br />' + 'any Flintstones? ' + hasFlintstones);
log('<br />Use some() to check if the array contains any Flintstones:<br />' +
'any Flintstones? ' + hasFlintstones);

var allFlintstones = array.every(function(element/*, index, array */){
var allFlintstones = array.every(function(element /*, index, array */ ) {
return element.name.indexOf('Flintstone') !== -1;
});

log('<br />Use every() to check if the array is all Flintstones:<br />' + 'all Flinstones? ' + allFlintstones);
log('<br />Use every() to check if the array is all Flintstones:<br />' +
'all Flinstones? ' + allFlintstones);

var firstNames = array.map(function(element/*, index, array */){
var firstNames = array.map(function(element /*, index, array */ ) {
return element.name.split(' ')[0];
});

log('<br />Use map() to build an array of first names:<br />' + JSON.stringify(firstNames));
log('<br />Use map() to build an array of first names:<br />' +
JSON.stringify(firstNames));
16 changes: 9 additions & 7 deletions audiodata/js/main.js
Expand Up @@ -6,13 +6,14 @@ var metadataElement = document.getElementById('metadataElement');
var eventTimeElement = document.getElementById('eventTimeElement');
var eventDataElement = document.getElementById('eventDataElement');

framebufferLengthInput.addEventListener('change', handleFramebufferLengthChanged, false);
framebufferLengthInput.addEventListener('change',
handleFramebufferLengthChanged, false);
mediaElement.addEventListener('loadedmetadata', handleMetadata, false);

mediaElement.addEventListener('MozAudioAvailable', handleAudioData, false);
mediaElement.addEventListener('seeked', handleSeeked, false); // when pressing play
mediaElement.addEventListener('seeked', handleSeeked, false); // play pressed

function handleFramebufferLengthChanged(){
function handleFramebufferLengthChanged() {
mediaElement.mozFrameBufferLength = framebufferLengthInput.value;
}

Expand All @@ -25,16 +26,17 @@ function handleSeeked() {
framebufferLengthInput.value = mediaElement.mozFrameBufferLength;
}

function handleMetadata(){
function handleMetadata() {
framebufferLengthInput.value = mediaElement.mozFrameBufferLength;
metadataElement.innerHTML +=
'mozChannels:&nbsp;' + mediaElement.mozChannels + '<br />' +
'sampleRate:&nbsp;&nbsp;' + mediaElement.mozSampleRate + '<br />';
}

var i = 1;
function handleAudioData(event){
eventTimeElement.innerHTML += i + ' ' + event.time + '<br />';
eventDataElement.innerHTML += event.frameBuffer[0].toFixed(18) + '<br />';

function handleAudioData(event) {
eventTimeElement.innerHTML += i + ' ' + event.time + '<br />';
eventDataElement.innerHTML += event.frameBuffer[0].toFixed(18) + '<br />';
i++;
}
29 changes: 15 additions & 14 deletions battery/js/main.js
@@ -1,26 +1,27 @@
'use strict';

var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery;
var battery = navigator.battery || navigator.webkitBattery ||
navigator.mozBattery;

function log(message){
function log(message) {
document.querySelector('#data').innerHTML += message + '<br />';
}

function logBattery(battery) {
log('Battery level: ' + battery.level);
log('Battery charging: ' + battery.charging);
log('Battery discharging time: ', battery.dischargingTime);
battery.addEventListener('chargingchange', function() {
log('Battery chargingchange event: ' + battery.charging);
}, false);
log('Battery level: ' + battery.level);
log('Battery charging: ' + battery.charging);
log('Battery discharging time: ', battery.dischargingTime);
battery.addEventListener('chargingchange', function() {
log('Battery chargingchange event: ' + battery.charging);
}, false);
}

if(navigator.getBattery) {
navigator.getBattery().then(logBattery, function() {
log('There was an error while getting the battery state.');
});
if (navigator.getBattery) {
navigator.getBattery().then(logBattery, function() {
log('There was an error while getting the battery state.');
});
} else if (battery) {
logBattery(battery);
logBattery(battery);
} else {
log('Shame! The Battery API is not supported on this platform.');
log('Shame! The Battery API is not supported on this platform.');
}
46 changes: 26 additions & 20 deletions build/gruntfile.js
@@ -1,20 +1,26 @@
module.exports = function(grunt){
grunt.loadTasks('./indexgen');
grunt.initConfig({
index: {
src: {'app':'tmpl/app-index.tmpl', 'main':'tmpl/main-index.tmpl'},
dest: {'app':'../<%= feature.new %>/index.html', 'main': '../index.html'},
js: '../<%= feature.new%>/js',
feature: '../<%= feature.new %>'
}

});

grunt.registerTask('default', 'index');

if(!grunt.option('feature')){
grunt.fail.fatal("Please check the usage [ --feature is mandatory ]");
}

grunt.config.set('feature.new',grunt.option('feature'));
}
module.exports = function(grunt) {
grunt.loadTasks('./indexgen');
grunt.initConfig({
index: {
src: {
'app': 'tmpl/app-index.tmpl',
'main': 'tmpl/main-index.tmpl'
},
dest: {
'app': '../<%= feature.new %>/index.html',
'main': '../index.html'
},
js: '../<%= feature.new%>/js',
feature: '../<%= feature.new %>'
}

});

grunt.registerTask('default', 'index');

if (!grunt.option('feature')) {
grunt.fail.fatal("Please check the usage [ --feature is mandatory ]");
}

grunt.config.set('feature.new', grunt.option('feature'));
}
30 changes: 15 additions & 15 deletions build/indexgen/index.js
@@ -1,15 +1,15 @@
module.exports = function( grunt ) {
grunt.registerTask( "index", "Generate index.html depending on configuration", function() {
var conf = grunt.config('index'),
appTmpl = grunt.file.read(conf.src.app),
mainTmpl = grunt.file.read(conf.src.main),
mainjs = conf.js+"/main.js";

grunt.file.mkdir(conf.js);
grunt.file.write(mainjs,'//Replace with main logic')
grunt.file.write(conf.dest.app, grunt.template.process(appTmpl));
grunt.log.writeln('Generated \'' + conf.dest.app + '\' from \'' + conf.src.app + '\'');
grunt.file.write(conf.dest.main, grunt.template.process(mainTmpl));
grunt.log.writeln('Generated \'' + conf.dest.main + '\' from \'' + conf.src.main + '\'');
});
}
module.exports = function(grunt) {
grunt.registerTask("index", "Generate index.html depending on configuration", function() {
var conf = grunt.config('index'),
appTmpl = grunt.file.read(conf.src.app),
mainTmpl = grunt.file.read(conf.src.main),
mainjs = conf.js + "/main.js";

grunt.file.mkdir(conf.js);
grunt.file.write(mainjs, '//Replace with main logic')
grunt.file.write(conf.dest.app, grunt.template.process(appTmpl));
grunt.log.writeln('Generated \'' + conf.dest.app + '\' from \'' + conf.src.app + '\'');
grunt.file.write(conf.dest.main, grunt.template.process(mainTmpl));
grunt.log.writeln('Generated \'' + conf.dest.main + '\' from \'' + conf.src.main + '\'');
});
}
11 changes: 6 additions & 5 deletions canplaytype/js/main.js
@@ -1,20 +1,21 @@
'use strict';

var data = document.querySelector('p#data');
function log(message){

function log(message) {
data.innerHTML += message + '<br />';
}

var mediaElement = document.createElement('video');

log('video/xyz: "' +
mediaElement.canPlayType('video/xyz') +'"');
mediaElement.canPlayType('video/xyz') + '"');
log('video/xyz; codecs="avc1.42E01E, mp4a.40.2": "' +
mediaElement.canPlayType('video/xyz; codecs="avc1.42E01E, mp4a.40.2"') +'"');
mediaElement.canPlayType('video/xyz; codecs="avc1.42E01E, mp4a.40.2"') + '"');
log('video/xyz; codecs="nonsense, noise": "' +
mediaElement.canPlayType('video/xyz; codecs="nonsense, noise"') +'"');
mediaElement.canPlayType('video/xyz; codecs="nonsense, noise"') + '"');
log('video/mp4; codecs="avc1.42E01E, mp4a.40.2": "' +
mediaElement.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') +'"');
mediaElement.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') + '"');
log('video/webm: "' +
mediaElement.canPlayType('video/webm') + '"');
log('video/webm; codecs="vp8, vorbis": "' +
Expand Down
11 changes: 5 additions & 6 deletions canvas/js/main.js
Expand Up @@ -4,11 +4,11 @@ var canvas = document.querySelector('canvas');
var context = canvas.getContext('2d');

// fill a rectangle
context.fillStyle='#333';
context.fillStyle = '#333';
context.fillRect(0, 0, 640, 640);

// draw lines
context.strokeStyle='red';
context.strokeStyle = 'red';
context.lineWidth = 20;
context.lineCap = 'round';
context.lineJoin = 'round';
Expand All @@ -18,9 +18,9 @@ context.lineTo(40, 160);
context.stroke();

// draw a circle
context.fillStyle='blue';
context.fillStyle = 'blue';
context.beginPath();
context.arc(210, 100, 30, 0, Math.PI*2, true);
context.arc(210, 100, 30, 0, Math.PI * 2, true);
context.closePath();
context.fill();

Expand All @@ -34,5 +34,4 @@ var image = new Image();
image.src = 'images/eye.png';
image.onload = function() {
context.drawImage(image, 540, 80);
}
;
};
4 changes: 2 additions & 2 deletions devicemotion/js/main.js
@@ -1,7 +1,8 @@
'use strict';

var dataDiv = document.querySelector('#data');
function log(message){

function log(message) {
dataDiv.innerHTML = message + '<br />' + dataDiv.innerHTML;
}

Expand Down Expand Up @@ -29,4 +30,3 @@ if (window.DeviceMotionEvent) {
} else {
log('Device Motion not supported.');
}

8 changes: 5 additions & 3 deletions deviceorientation/js/main.js
@@ -1,15 +1,17 @@
'use strict';

var logoElement = document.getElementById('orientee');

function handleDeviceOrientation(e) {
var transform = 'rotate(' + e.gamma + 'deg) rotate3d(1, 0, 0, ' + e.beta + 'deg)';
var transform = 'rotate(' + e.gamma + 'deg) rotate3d(1, 0, 0, ' +
e.beta + 'deg)';
logoElement.style.webkitTransform = transform;
logoElement.style.transform = transform;
}

if (window.DeviceOrientationEvent) {
window.ondeviceorientation = handleDeviceOrientation;
} else {
document.querySelector('p#isAvailable').innerHTML = 'Device Orientation is not available.';
document.querySelector('p#isAvailable').innerHTML =
'Device Orientation is not available.';
}

0 comments on commit c9c041d

Please sign in to comment.