From a1793121ae15465098fdda876ccc6d4b673614fe Mon Sep 17 00:00:00 2001 From: mossroy Date: Thu, 7 Jan 2016 17:42:37 +0100 Subject: [PATCH] Fix merge error + minor comments improvements --- service-worker.js | 59 ++++++++++++++++++++++------------------------- www/js/app.js | 12 +++++----- 2 files changed, 33 insertions(+), 38 deletions(-) diff --git a/service-worker.js b/service-worker.js index 1171954e..450e4c5e 100644 --- a/service-worker.js +++ b/service-worker.js @@ -25,32 +25,6 @@ // TODO : remove requirejs if it's really useless here importScripts('./www/js/lib/require.js'); -/** - * From https://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript - */ -function b64toBlob(b64Data, contentType, sliceSize) { - contentType = contentType || ''; - sliceSize = sliceSize || 512; - - var byteCharacters = atob(b64Data); - var byteArrays = []; - - for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { - var slice = byteCharacters.slice(offset, offset + sliceSize); - - var byteNumbers = new Array(slice.length); - for (var i = 0; i < slice.length; i++) { - byteNumbers[i] = slice.charCodeAt(i); - } - - var byteArray = new Uint8Array(byteNumbers); - - byteArrays.push(byteArray); - } - - var blob = new Blob(byteArrays, {type: contentType}); - return blob; -} self.addEventListener('install', function(event) { event.waitUntil(self.skipWaiting()); @@ -81,6 +55,15 @@ function(util, utf8) { console.log('Init message received', event.data); outgoingMessagePort = event.ports[0]; console.log('outgoingMessagePort initialized', outgoingMessagePort); + self.addEventListener('fetch', fetchEventListener); + console.log('fetchEventListener enabled'); + } + if (event.data.action === 'disable') { + console.log('Disable message received'); + outgoingMessagePort = null; + console.log('outgoingMessagePort deleted'); + self.removeEventListener('fetch', fetchEventListener); + console.log('fetchEventListener removed'); } }); @@ -93,13 +76,13 @@ function(util, utf8) { var regexpContentUrl = new RegExp(/\/(.)\/(.*[^\/]+)$/); var regexpDummyArticle = new RegExp(/dummyArticle\.html$/); - - self.addEventListener('fetch', function(event) { + + function fetchEventListener(event) { console.log('ServiceWorker handling fetch event for : ' + event.request.url); - + // TODO handle the dummy article more properly if (regexpContentUrl.test(event.request.url) && !regexpDummyArticle.test(event.request.url)) { - + console.log('Asking app.js for a content', event.request.url); event.respondWith(new Promise(function(resolve, reject) { var regexpResult = regexpContentUrl.exec(event.request.url); @@ -130,6 +113,19 @@ function(util, utf8) { else if (regexpCSS.test(titleName)) { contentType = 'image/css'; } + var responseInit = { + status: 200, + statusText: 'OK', + headers: { + 'Content-Type': contentType + } + }; + + var httpResponse = new Response(';', responseInit); + + // TODO : temporary before the backend actually sends a proper content + resolve(httpResponse); + return; } // Let's instanciate a new messageChannel, to allow app.s to give us the content @@ -162,6 +158,5 @@ function(util, utf8) { } // If event.respondWith() isn't called because this wasn't a request that we want to handle, // then the default request/response behavior will automatically be used. - }); - + } }); diff --git a/www/js/app.js b/www/js/app.js index a2b8ed7f..98ff3f47 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -902,13 +902,13 @@ define(['jquery', 'abstractBackend', 'util', 'cookies','geometry','osabstraction $("#articleContent").contents().scrollTop(0); // Display the article inside the web page. - var ifrm = document.getElementById('articleContent'); - ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument; - ifrm.document.open(); - ifrm.document.write(htmlArticle); - ifrm.document.close(); + var articleContentIFrame = document.getElementById('articleContent'); + articleContentIFrame = (articleContentIFrame.contentWindow) ? articleContentIFrame.contentWindow : (articleContentIFrame.contentDocument.document) ? articleContentIFrame.contentDocument.document : articleContentIFrame.contentDocument; + articleContentIFrame.document.open(); + articleContentIFrame.document.write(htmlArticle); + articleContentIFrame.document.close(); - //$(document.getElementById('#articleContent').contentWindow.document).load(function () { + // When the IFrame content is loaded, we can parse it $('iframe#articleContent').load(function() { // Apply Mediawiki CSS only when it's an Evopedia archive if (selectedArchive.needsWikimediaCSS() === true) {