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 @@ |
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 | 15 | // Creates the window if it exists |
16 | 16 | if ( popup === undefined ) { |
17 | 17 | chrome.windows.create({ |
18 | - url: "app/window.html", | |
18 | + url: "app/player/window.html", | |
19 | 19 | top: 10, |
20 | 20 | left: 10, |
21 | 21 | width: 535, | ... | ... |
chrome/manifest.json
firefox/data/main.js
... | ... | @@ -10,14 +10,18 @@ var app = { |
10 | 10 | }; |
11 | 11 | |
12 | 12 | function onLoadPlayer() { |
13 | + console.log(app.glosa); | |
14 | + | |
13 | 15 | if ( app.glosa !== undefined ) { |
14 | - SendMessage('Avatar', 'catchGlosa', app.glosa); | |
16 | + SendMessage('PlayerManager', 'catchGlosa', app.glosa); | |
15 | 17 | } |
16 | 18 | |
17 | 19 | app.loaded = true; |
18 | 20 | } |
19 | 21 | |
20 | 22 | document.addEventListener('plugin:selectedText', function(e) { |
23 | + if (e.detail === undefined) return; | |
24 | + | |
21 | 25 | app.chooser = app.chooser || new qdClient.Chooser(); |
22 | 26 | |
23 | 27 | document.getElementById('loading-screen').style.display = 'block'; |
... | ... | @@ -38,7 +42,7 @@ document.addEventListener('plugin:selectedText', function(e) { |
38 | 42 | |
39 | 43 | document.getElementById('loading-screen').style.display = 'none'; |
40 | 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 | 34 | |
35 | 35 | if ( !(app.window instanceof Ci.nsIDOMWindow) ) { |
36 | 36 | app.window = browser.open( |
37 | - self.data.url('app/window.html'), | |
37 | + self.data.url('player/window.html'), | |
38 | 38 | 'VLibras Plugin', |
39 | - 'chrome=no,width=560,height=560,menubar=no' | |
39 | + 'width=560,height=560,menubar=no' | |
40 | 40 | ); |
41 | 41 | } else { |
42 | 42 | app.worker.port.emit('selectedText', app.selectedText); |
... | ... | @@ -47,7 +47,7 @@ cm.Item({ |
47 | 47 | |
48 | 48 | // Page mod |
49 | 49 | pm.PageMod({ |
50 | - include: self.data.url('app/window.html'), | |
50 | + include: self.data.url('player/window.html'), | |
51 | 51 | contentScriptWhen: 'ready', |
52 | 52 | contentScriptFile: self.data.url('delegator.js'), |
53 | 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 | 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 | 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 | +} | ... | ... |