From eef497e9bc86a05bfeebc7822b69f6b6ad90fecc Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Mon, 14 Nov 2016 13:04:56 -0500 Subject: [PATCH] Native Messaging WIP - init origin; api fixes Signed-off-by: Bill Erickson --- extension/app/main.js | 20 ++++++++++++++++++-- src/org/evergreen_ils/hatch/RequestHandler.java | 7 ++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/extension/app/main.js b/extension/app/main.js index f13ed351a7..6eefbdfacb 100644 --- a/extension/app/main.js +++ b/extension/app/main.js @@ -29,7 +29,7 @@ function onNativeMessage(message) { if (tabId) { if (browserPorts[tabId]) { - browserPorts[tabId].postMessage(JSON.stringify(message)); + browserPorts[tabId].postMessage(message); } else { console.warn( @@ -63,7 +63,23 @@ chrome.runtime.onConnectExternal.addListener(function(port) { console.debug('new port connected with id ' + tabId); port.onMessage.addListener(function(msg) { - console.log("Received message from browser on port " + tabId); + console.debug("Received message from browser on port " + tabId); + + if (!msg) { // belt+suspenders + console.warn("Received NULL message"); + return; + } + + // tag the message with the browser tab ID for response routing. + msg.clientid = tabId; + + if (msg.action == 'init') { + // "init" messages require origin info. + // Extract just the protocol + host + msg.origin = port.sender.url.match(/https?:\/\/[^\/]+/)[0]; + console.debug("Init'ing message with origin: " + msg.origin); + } + hatchPort.postMessage(msg); }); diff --git a/src/org/evergreen_ils/hatch/RequestHandler.java b/src/org/evergreen_ils/hatch/RequestHandler.java index eeace1b918..d4c0441c5d 100644 --- a/src/org/evergreen_ils/hatch/RequestHandler.java +++ b/src/org/evergreen_ils/hatch/RequestHandler.java @@ -64,7 +64,8 @@ public class RequestHandler extends Thread { logger.info("Received message id=" + response.get("msgid") + " action=" + action); - // init must be called first to set the origin info + // init must be called first to set the origin info. Init may be + // called multiple times. Each call will update the origin info. if (action.equals("init")) { origin = request.getString("origin"); return false; @@ -83,7 +84,7 @@ public class RequestHandler extends Thread { switch (action) { case "printers": - response.put("printers", + response.put("content", new PrintManager().getPrintersAsMaps()); break; @@ -105,7 +106,7 @@ public class RequestHandler extends Thread { case "keys": // Return stored keys String pfxKey = request.optString("key"); - response.put("keys", fileIO.keys(pfxKey)); + response.put("content", fileIO.keys(pfxKey)); break; case "get": -- 2.11.0