Skip to content

Instantly share code, notes, and snippets.

@darktrojan
Last active January 2, 2017 04:36
Show Gist options
  • Save darktrojan/11506187a0fd9bdb312df36683d0788b to your computer and use it in GitHub Desktop.
Save darktrojan/11506187a0fd9bdb312df36683d0788b to your computer and use it in GitHub Desktop.
var script = 'data:text/plain,' + encodeURIComponent(`
var cursors = {
pointer: 'red',
text: 'blue'
};
var lastEvent;
var left = 200;
var top = 0;
var canvas = content.document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');
canvas.width = 800;
canvas.height = 500;
var context = canvas.getContext('2d');
var interval = content.setInterval(function() {
context.drawWindow(content, left, top, canvas.width, canvas.height, '#fff');
if (lastEvent) {
var cursor = content.getComputedStyle(lastEvent.target).cursor;
context.fillStyle = cursor in cursors ? cursors[cursor] : 'black';
context.fillRect(lastEvent.clientX - left, lastEvent.clientY - top, 20, 20);
}
}, 40);
content.addEventListener('mousemove', el);
var stream = canvas.captureStream(25);
var recorder = new content.MediaRecorder(stream);
recorder.ondataavailable = function(event) {
sendAsyncMessage('foobar2', event.data);
};
recorder.start();
content.setTimeout(function() {
recorder.stop();
content.clearInterval(interval);
content.removeEventListener('mousemove', el);
}, 5000);
function el(event) {
lastEvent = event;
}
`);
gBrowser.selectedBrowser.messageManager.addMessageListener('foobar2', function removeMe(message) {
gBrowser.selectedBrowser.messageManager.removeMessageListener('foobar2', removeMe);
let destFile = OS.Path.join(OS.Constants.Path.tmpDir, 'test.webm');
let reader = new FileReader();
reader.onloadend = function() {
OS.File.openUnique(destFile).then(function({file}) {
return file.write(new Uint8Array(reader.result));
}).then(console.log.bind(console), console.error.bind(console));
};
reader.readAsArrayBuffer(message.data);
});
gBrowser.selectedBrowser.messageManager.loadFrameScript(script, false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment