Commit 71134b4c0687ff1a11d57ac35969fc70b826363e
1 parent
ede36ec8
Exists in
master
Primeira versão on demand
Showing
9 changed files
with
143 additions
and
72 deletions
Show diff stats
.gitignore
Gulpfile.js
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +var app = { | ||
2 | + chooser: null, | ||
3 | + glosa: undefined, | ||
4 | + loaded: false, | ||
5 | + lastReq: { | ||
6 | + url: null, | ||
7 | + millis: null, | ||
8 | + response: null | ||
9 | + } | ||
10 | +}; | ||
11 | + | ||
12 | +function onLoadPlayer() { | ||
13 | + if ( app.glosa !== undefined ) { | ||
14 | + SendMessage('PlayerManager', 'catchGlosa', app.glosa); | ||
15 | + } | ||
16 | + | ||
17 | + app.loaded = true; | ||
18 | +} | ||
19 | + | ||
20 | +chrome.runtime.onMessage.addListener( | ||
21 | + function(request, sender, sendResponse) { | ||
22 | + if (request.selectedText === undefined) return; | ||
23 | + | ||
24 | + app.chooser = app.chooser || new qdClient.Chooser(); | ||
25 | + | ||
26 | + document.getElementById('loading-screen').style.display = 'block'; | ||
27 | + app.chooser.choose( | ||
28 | + app.lastReq.url, | ||
29 | + app.lastReq.millis, | ||
30 | + app.lastReq.response, | ||
31 | + function (url) { | ||
32 | + var start = new Date().getTime(); | ||
33 | + | ||
34 | + console.log('Url selected: ' + url); | ||
35 | + qdClient.request(url + '?texto=' + request.selectedText, "GET", {}, | ||
36 | + function(status, response) { | ||
37 | + app.lastReq.response = status === 404 ? -1 : status; | ||
38 | + app.lastReq.millis = (new Date().getTime() - start); | ||
39 | + app.lastReq.url = url; | ||
40 | + | ||
41 | + app.glosa = response; | ||
42 | + | ||
43 | + document.getElementById('loading-screen').style.display = 'none'; | ||
44 | + if (app.loaded == true) { | ||
45 | + SendMessage('PlayerManager', 'catchGlosa', app.glosa); | ||
46 | + } | ||
47 | + }); | ||
48 | + }); | ||
49 | + }); | ||
50 | + | ||
51 | +chrome.runtime.sendMessage({ready: true}); |
chrome/background.js
@@ -15,7 +15,7 @@ chrome.contextMenus.onClicked.addListener( function (info) { | @@ -15,7 +15,7 @@ chrome.contextMenus.onClicked.addListener( function (info) { | ||
15 | // Creates the window if it exists | 15 | // Creates the window if it exists |
16 | if ( popup === undefined ) { | 16 | if ( popup === undefined ) { |
17 | chrome.windows.create({ | 17 | chrome.windows.create({ |
18 | - url: "app/window.html", | 18 | + url: "app/player/window.html", |
19 | top: 10, | 19 | top: 10, |
20 | left: 10, | 20 | left: 10, |
21 | width: 535, | 21 | width: 535, |
chrome/manifest.json
firefox/data/main.js
@@ -10,14 +10,18 @@ var app = { | @@ -10,14 +10,18 @@ var app = { | ||
10 | }; | 10 | }; |
11 | 11 | ||
12 | function onLoadPlayer() { | 12 | function onLoadPlayer() { |
13 | + console.log(app.glosa); | ||
14 | + | ||
13 | if ( app.glosa !== undefined ) { | 15 | if ( app.glosa !== undefined ) { |
14 | - SendMessage('Avatar', 'catchGlosa', app.glosa); | 16 | + SendMessage('PlayerManager', 'catchGlosa', app.glosa); |
15 | } | 17 | } |
16 | 18 | ||
17 | app.loaded = true; | 19 | app.loaded = true; |
18 | } | 20 | } |
19 | 21 | ||
20 | document.addEventListener('plugin:selectedText', function(e) { | 22 | document.addEventListener('plugin:selectedText', function(e) { |
23 | + if (e.detail === undefined) return; | ||
24 | + | ||
21 | app.chooser = app.chooser || new qdClient.Chooser(); | 25 | app.chooser = app.chooser || new qdClient.Chooser(); |
22 | 26 | ||
23 | document.getElementById('loading-screen').style.display = 'block'; | 27 | document.getElementById('loading-screen').style.display = 'block'; |
@@ -38,7 +42,7 @@ document.addEventListener('plugin:selectedText', function(e) { | @@ -38,7 +42,7 @@ document.addEventListener('plugin:selectedText', function(e) { | ||
38 | 42 | ||
39 | document.getElementById('loading-screen').style.display = 'none'; | 43 | document.getElementById('loading-screen').style.display = 'none'; |
40 | if (app.loaded == true) { | 44 | if (app.loaded == true) { |
41 | - SendMessage('Avatar', 'catchGlosa', app.glosa); | 45 | + SendMessage('PlayerManager', 'catchGlosa', app.glosa); |
42 | } | 46 | } |
43 | }); | 47 | }); |
44 | }); | 48 | }); |
firefox/index.js
@@ -34,9 +34,9 @@ cm.Item({ | @@ -34,9 +34,9 @@ cm.Item({ | ||
34 | 34 | ||
35 | if ( !(app.window instanceof Ci.nsIDOMWindow) ) { | 35 | if ( !(app.window instanceof Ci.nsIDOMWindow) ) { |
36 | app.window = browser.open( | 36 | app.window = browser.open( |
37 | - self.data.url('app/window.html'), | 37 | + self.data.url('player/window.html'), |
38 | 'VLibras Plugin', | 38 | 'VLibras Plugin', |
39 | - 'chrome=no,width=560,height=560,menubar=no' | 39 | + 'width=560,height=560,menubar=no' |
40 | ); | 40 | ); |
41 | } else { | 41 | } else { |
42 | app.worker.port.emit('selectedText', app.selectedText); | 42 | app.worker.port.emit('selectedText', app.selectedText); |
@@ -47,7 +47,7 @@ cm.Item({ | @@ -47,7 +47,7 @@ cm.Item({ | ||
47 | 47 | ||
48 | // Page mod | 48 | // Page mod |
49 | pm.PageMod({ | 49 | pm.PageMod({ |
50 | - include: self.data.url('app/window.html'), | 50 | + include: self.data.url('player/window.html'), |
51 | contentScriptWhen: 'ready', | 51 | contentScriptWhen: 'ready', |
52 | contentScriptFile: self.data.url('delegator.js'), | 52 | contentScriptFile: self.data.url('delegator.js'), |
53 | onAttach: function(worker) { | 53 | onAttach: function(worker) { |
player/connect.js
1 | -// connect to canvas | ||
2 | - var Module = { | ||
3 | - filePackagePrefixURL: "Release/", | ||
4 | - memoryInitializerPrefixURL: "Release/", | ||
5 | - preRun: [], | ||
6 | - postRun: [], | ||
7 | - print: (function() { | ||
8 | - return function(text) { | ||
9 | - console.log (text); | ||
10 | - }; | ||
11 | - })(), | ||
12 | - printErr: function(text) { | ||
13 | - console.error (text); | ||
14 | - }, | ||
15 | - canvas: document.getElementById('canvas'), | ||
16 | - progress: null, | ||
17 | - setStatus: function(text) { | ||
18 | - if (this.progress == null) | ||
19 | - { | ||
20 | - if (typeof UnityProgress != 'function') | ||
21 | - return; | ||
22 | - this.progress = new UnityProgress (canvas); | ||
23 | - } | ||
24 | - if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' }; | ||
25 | - if (text === Module.setStatus.text) return; | ||
26 | - this.progress.SetMessage (text); | ||
27 | - var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); | ||
28 | - if (m) | ||
29 | - this.progress.SetProgress (parseInt(m[2])/parseInt(m[4])); | ||
30 | - if (text === "") | ||
31 | - this.progress.Clear() | ||
32 | - }, | ||
33 | - totalDependencies: 0, | ||
34 | - monitorRunDependencies: function(left) { | ||
35 | - this.totalDependencies = Math.max(this.totalDependencies, left); | ||
36 | - Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.'); | ||
37 | - } | ||
38 | - }; | ||
39 | - Module.setStatus('Downloading (0.0/1)'); | ||
40 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +// connect to canvas | ||
3 | + var Module = { | ||
4 | + filePackagePrefixURL: "Release/", | ||
5 | + memoryInitializerPrefixURL: "Release/", | ||
6 | + preRun: [], | ||
7 | + postRun: [], | ||
8 | + print: (function() { | ||
9 | + return function(text) { | ||
10 | + console.log (text); | ||
11 | + }; | ||
12 | + })(), | ||
13 | + printErr: function(text) { | ||
14 | + console.error (text); | ||
15 | + }, | ||
16 | + canvas: document.getElementById('canvas'), | ||
17 | + progress: null, | ||
18 | + setStatus: function(text) { | ||
19 | + if (this.progress == null) | ||
20 | + { | ||
21 | + if (typeof UnityProgress != 'function') | ||
22 | + return; | ||
23 | + this.progress = new UnityProgress (canvas); | ||
24 | + } | ||
25 | + if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' }; | ||
26 | + if (text === Module.setStatus.text) return; | ||
27 | + this.progress.SetMessage (text); | ||
28 | + var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); | ||
29 | + if (m) | ||
30 | + this.progress.SetProgress (parseInt(m[2])/parseInt(m[4])); | ||
31 | + if (text === "") | ||
32 | + this.progress.Clear() | ||
33 | + }, | ||
34 | + totalDependencies: 0, | ||
35 | + monitorRunDependencies: function(left) { | ||
36 | + this.totalDependencies = Math.max(this.totalDependencies, left); | ||
37 | + Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.'); | ||
38 | + } | ||
39 | + }; | ||
40 | + Module.setStatus('Downloading (0.0/1)'); |
player/load.js
1 | -if (!(!Math.fround)) { | ||
2 | - var script = document.createElement('script'); | ||
3 | - script.src = "Release/VLibrasWebPlayer.js"; | ||
4 | - document.body.appendChild(script); | ||
5 | -} else { | ||
6 | - var codeXHR = new XMLHttpRequest(); | ||
7 | - codeXHR.open('GET', 'Release/VLibrasWebPlayer.js', true); | ||
8 | - codeXHR.onload = function() { | ||
9 | - var code = codeXHR.responseText; | ||
10 | - if (!Math.fround) { | ||
11 | -console.log('optimizing out Math.fround calls'); | ||
12 | -code = code.replace(/Math_fround\(/g, '(').replace("'use asm'", "'almost asm'") | ||
13 | - } | ||
14 | - | ||
15 | - var blob = new Blob([code], { type: 'text/javascript' }); | ||
16 | - codeXHR = null; | ||
17 | - var src = URL.createObjectURL(blob); | ||
18 | - var script = document.createElement('script'); | ||
19 | - script.src = URL.createObjectURL(blob); | ||
20 | - script.onload = function() { | ||
21 | - URL.revokeObjectURL(script.src); | ||
22 | - }; | ||
23 | - document.body.appendChild(script); | ||
24 | - }; | ||
25 | - codeXHR.send(null); | ||
26 | -} | ||
27 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +if (!(!Math.fround)) { | ||
3 | + var script = document.createElement('script'); | ||
4 | + script.src = "Release/WEBGL.js"; | ||
5 | + document.body.appendChild(script); | ||
6 | +} else { | ||
7 | + var codeXHR = new XMLHttpRequest(); | ||
8 | + codeXHR.open('GET', 'Release/WEBGL.js', true); | ||
9 | + codeXHR.onload = function() { | ||
10 | + var code = codeXHR.responseText; | ||
11 | + if (!Math.fround) { | ||
12 | +try { | ||
13 | + console.log('optimizing out Math.fround calls'); | ||
14 | + var m = /var ([^=]+)=global\.Math\.fround;/.exec(code); | ||
15 | + var minified = m[1]; | ||
16 | + if (!minified) throw 'fail'; | ||
17 | + var startAsm = code.indexOf('// EMSCRIPTEN_START_FUNCS'); | ||
18 | + var endAsm = code.indexOf('// EMSCRIPTEN_END_FUNCS'); | ||
19 | + var asm = code.substring(startAsm, endAsm); | ||
20 | + do { | ||
21 | + var moar = false; // we need to re-do, as x(x( will not be fixed | ||
22 | + asm = asm.replace(new RegExp('[^a-zA-Z0-9\\$\\_]' + minified + '\\(', 'g'), function(s) { moar = true; return s[0] + '(' }); | ||
23 | + } while (moar); | ||
24 | + code = code.substring(0, startAsm) + asm + code.substring(endAsm); | ||
25 | + code = code.replace("'use asm'", "'almost asm'"); | ||
26 | +} catch(e) { console.log('failed to optimize out Math.fround calls ' + e) } | ||
27 | + } | ||
28 | + | ||
29 | + var blob = new Blob([code], { type: 'text/javascript' }); | ||
30 | + codeXHR = null; | ||
31 | + var src = URL.createObjectURL(blob); | ||
32 | + var script = document.createElement('script'); | ||
33 | + script.src = URL.createObjectURL(blob); | ||
34 | + script.onload = function() { | ||
35 | + URL.revokeObjectURL(script.src); | ||
36 | + }; | ||
37 | + document.body.appendChild(script); | ||
38 | + }; | ||
39 | + codeXHR.send(null); | ||
40 | +} |