summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-04-26 03:17:28 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-04-26 03:17:28 +0200
commit43278f112f1b3e3f9bbf35574c09413527e40294 (patch)
treeb21c255ff25cd98a78527cd4e2209392e34c7529
parenta8bff2e27b89feb3696cf0e3a49fc00155d92de5 (diff)
downloadweb-common-43278f112f1b3e3f9bbf35574c09413527e40294.tar.gz
web-common-43278f112f1b3e3f9bbf35574c09413527e40294.tar.bz2
web-common-43278f112f1b3e3f9bbf35574c09413527e40294.zip
move handling stylesheets into extension
-rw-r--r--taler-wallet-lib.js94
-rw-r--r--taler-wallet-lib.ts95
2 files changed, 4 insertions, 185 deletions
diff --git a/taler-wallet-lib.js b/taler-wallet-lib.js
index fd2845f..09dc239 100644
--- a/taler-wallet-lib.js
+++ b/taler-wallet-lib.js
@@ -46,7 +46,6 @@ var taler;
var probeExecuted = false;
var pageLoaded = false;
var errorHandler = undefined;
- var sheet;
function onError(handler) {
if (errorHandler) {
console.warn("Overriding error handler");
@@ -296,7 +295,7 @@ var taler;
probeTaler();
}
/**
- * Announce presence/absence and update stylesheets.
+ * Announce presence/absence
*
* Only called after document.readyState is at least "interactive".
*/
@@ -305,7 +304,6 @@ var taler;
logVerbose && console.log("page not loaded yet, announcing later");
return;
}
- setStyles();
if (installed) {
logVerbose && console.log("announcing installed");
for (var i = 0; i < presentHandlers.length; i++) {
@@ -324,69 +322,8 @@ var taler;
}
}
}
- function setStyles() {
- if (!sheet || !sheet.cssRules) {
- return;
- }
- while (sheet.cssRules.length > 0) {
- sheet.deleteRule(0);
- }
- if (installed) {
- sheet.insertRule(".taler-installed-hide { display: none; }", 0);
- sheet.insertRule(".taler-probed-hide { display: none; }", 0);
- }
- else {
- sheet.insertRule(".taler-installed-show { display: none; }", 0);
- if (firstTimeoutCalled) {
- sheet.insertRule(".taler-probed-hide { display: none; }", 0);
- }
- else {
- // We're still doing the detection
- sheet.insertRule(".taler-installed-hide { display: none; }", 0);
- }
- }
- }
- function initStyle() {
- logVerbose && console.log("taking over styles");
- var name = "taler-presence-stylesheet";
- var content = "/* Taler stylesheet controlled by JS */";
- var style = document.getElementById(name);
- if (!style) {
- style = document.createElement("style");
- // Needed by WebKit
- style.appendChild(document.createTextNode(content));
- style.id = name;
- document.head.appendChild(style);
- sheet = style.sheet;
- }
- else {
- // We've taken over the stylesheet now,
- // make it clear by clearing all the rules in it
- // and making it obvious in the DOM.
- if (style.tagName.toLowerCase() === "style") {
- style.innerText = content;
- }
- if (!style.sheet) {
- throw Error("taler-presence-stylesheet should be a style sheet (<link> or <style>)");
- }
- sheet = style.sheet;
- while (sheet.cssRules.length > 0) {
- sheet.deleteRule(0);
- }
- }
- }
function onPageLoad() {
pageLoaded = true;
- if (document.readyState == "complete") {
- initStyle();
- }
- else {
- var listener = function () {
- initStyle();
- setStyles();
- };
- window.addEventListener("load", listener);
- }
// We only start the timeout after the page is interactive.
window.setInterval(onProbeTimeout, 300);
announce();
@@ -403,33 +340,6 @@ var taler;
onPageLoad();
}
}
- function onPageLoadInExtension() {
- if (document.documentElement.getAttribute("data-taler-nojs")) {
- logVerbose && console.log("doing taler initialization from extension (nojs)");
- initTaler();
- }
- }
- var caught = false;
- try {
- chrome.runtime.sendMessage({ type: "ping" });
- }
- catch (e) {
- caught = true;
- }
- if (caught) {
- logVerbose && console.log("running taler-wallet-lib from page");
- initTaler();
- }
- else {
- logVerbose && console.log("running taler-wallet-lib from extension");
- runningInExtension = true;
- // Wait for even style sheets to load
- if (document.readyState != "complete") {
- window.addEventListener("load", function () { return onPageLoadInExtension(); });
- }
- else {
- onPageLoadInExtension();
- }
- }
+ logVerbose && console.log("running taler-wallet-lib from page");
})(taler || (taler = {}));
// @license-end
diff --git a/taler-wallet-lib.ts b/taler-wallet-lib.ts
index 1a56e95..7ef6b4f 100644
--- a/taler-wallet-lib.ts
+++ b/taler-wallet-lib.ts
@@ -53,8 +53,6 @@ namespace taler {
let errorHandler: any = undefined;
- let sheet: CSSStyleSheet;
-
export function onError(handler: any) {
if (errorHandler) {
console.warn("Overriding error handler");
@@ -348,7 +346,7 @@ namespace taler {
}
/**
- * Announce presence/absence and update stylesheets.
+ * Announce presence/absence
*
* Only called after document.readyState is at least "interactive".
*/
@@ -357,7 +355,6 @@ namespace taler {
logVerbose && console.log("page not loaded yet, announcing later");
return;
}
- setStyles();
if (installed) {
logVerbose && console.log("announcing installed");
for (var i = 0; i < presentHandlers.length; i++) {
@@ -375,72 +372,10 @@ namespace taler {
}
}
- function setStyles() {
- if (!sheet || !sheet.cssRules) {
- return;
- }
- while (sheet.cssRules.length > 0) {
- sheet.deleteRule(0);
- }
- if (installed) {
- sheet.insertRule(".taler-installed-hide { display: none; }", 0);
- sheet.insertRule(".taler-probed-hide { display: none; }", 0);
- } else {
- sheet.insertRule(".taler-installed-show { display: none; }", 0);
-
- if (firstTimeoutCalled) {
- sheet.insertRule(".taler-probed-hide { display: none; }", 0);
- } else {
- // We're still doing the detection
- sheet.insertRule(".taler-installed-hide { display: none; }", 0);
- }
- }
- }
-
- function initStyle() {
- logVerbose && console.log("taking over styles");
- const name = "taler-presence-stylesheet";
- const content = "/* Taler stylesheet controlled by JS */";
- let style = document.getElementById(name) as HTMLStyleElement|null;
- if (!style) {
- style = document.createElement("style");
- // Needed by WebKit
- style.appendChild(document.createTextNode(content));
- style.id = name;
- document.head.appendChild(style);
- sheet = style.sheet as CSSStyleSheet;
- } else {
- // We've taken over the stylesheet now,
- // make it clear by clearing all the rules in it
- // and making it obvious in the DOM.
- if (style.tagName.toLowerCase() === "style") {
- style.innerText = content;
- }
- if (!style.sheet) {
- throw Error("taler-presence-stylesheet should be a style sheet (<link> or <style>)");
- }
- sheet = style.sheet as CSSStyleSheet;
- while (sheet.cssRules.length > 0) {
- sheet.deleteRule(0);
- }
- }
- }
-
function onPageLoad() {
pageLoaded = true;
- if (document.readyState == "complete") {
- initStyle();
- } else {
- let listener = () => {
- initStyle();
- setStyles();
- };
- window.addEventListener("load", listener);
- }
-
// We only start the timeout after the page is interactive.
window.setInterval(onProbeTimeout, 300);
-
announce();
}
@@ -456,32 +391,6 @@ namespace taler {
}
}
- function onPageLoadInExtension() {
- if (document.documentElement.getAttribute("data-taler-nojs")) {
- logVerbose && console.log("doing taler initialization from extension (nojs)");
- initTaler();
- }
- }
-
- let caught = false;
- try {
- (chrome as any).runtime.sendMessage({type: "ping"});
- } catch (e) {
- caught = true;
- }
-
- if (caught) {
- logVerbose && console.log("running taler-wallet-lib from page");
- initTaler();
- } else {
- logVerbose && console.log("running taler-wallet-lib from extension");
- runningInExtension = true;
- // Wait for even style sheets to load
- if (document.readyState != "complete") {
- window.addEventListener("load", () => onPageLoadInExtension());
- } else {
- onPageLoadInExtension();
- }
- }
+ logVerbose && console.log("running taler-wallet-lib from page");
}
// @license-end