diff options
Diffstat (limited to 'browser/base/content/content.js')
-rw-r--r-- | browser/base/content/content.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/browser/base/content/content.js b/browser/base/content/content.js index 5758cb023..496e0d111 100644 --- a/browser/base/content/content.js +++ b/browser/base/content/content.js @@ -698,6 +698,37 @@ var PageMetadataMessenger = { } PageMetadataMessenger.init(); +addEventListener("ActivateSocialFeature", function (aEvent) { + let document = content.document; + let dwu = content.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindowUtils); + if (!dwu.isHandlingUserInput) { + Cu.reportError("attempt to activate provider without user input from " + document.nodePrincipal.origin); + return; + } + + let node = aEvent.target; + let ownerDocument = node.ownerDocument; + let data = node.getAttribute("data-service"); + if (data) { + try { + data = JSON.parse(data); + } catch (e) { + Cu.reportError("Social Service manifest parse error: " + e); + return; + } + } else { + Cu.reportError("Social Service manifest not available"); + return; + } + + sendAsyncMessage("Social:Activation", { + url: ownerDocument.location.href, + origin: ownerDocument.nodePrincipal.origin, + manifest: data + }); +}, true, true); + addMessageListener("ContextMenu:SaveVideoFrameAsImage", (message) => { let video = message.objects.target; let canvas = content.document.createElementNS("http://www.w3.org/1999/xhtml", "canvas"); |