MozReview-Commit-ID: Fsj4bG5e2gT

--HG--
extra : rebase_source : c0c3f41c945e041ebee0b1c0ca10066d43c356d5
This commit is contained in:
Gijs Kruitbosch 2016-11-24 11:21:05 +00:00
Родитель b4d82c6ebc
Коммит 88746d57d7
1 изменённых файлов: 23 добавлений и 26 удалений

Просмотреть файл

@ -356,14 +356,19 @@ var pktUI = (function() {
// send our own "show" event to the panel's script, so the
// script can prepare the panel for display.
var _showMessageId = "show";
pktUIMessaging.addMessageListener(_showMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _showMessageId, function(panelId, data) {
// Let panel know that it is ready
pktUIMessaging.sendMessageToPanel(panelId, _showMessageId);
});
// Open a new tab with a given url and activate if
var _openTabWithUrlMessageId = "openTabWithUrl";
pktUIMessaging.addMessageListener(_openTabWithUrlMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _openTabWithUrlMessageId, function(panelId, data, contentPrincipal) {
try {
urlSecurityCheck(data.url, contentPrincipal, Services.scriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL);
} catch (ex) {
return;
}
// Check if the tab should become active after opening
var activate = true;
@ -378,39 +383,39 @@ var pktUI = (function() {
// Close the panel
var _closeMessageId = "close";
pktUIMessaging.addMessageListener(_closeMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _closeMessageId, function(panelId, data) {
getPanel().hidePopup();
});
// Send the current url to the panel
var _getCurrentURLMessageId = "getCurrentURL";
pktUIMessaging.addMessageListener(_getCurrentURLMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _getCurrentURLMessageId, function(panelId, data) {
pktUIMessaging.sendResponseMessageToPanel(panelId, _getCurrentURLMessageId, getCurrentUrl());
});
var _resizePanelMessageId = "resizePanel";
pktUIMessaging.addMessageListener(_resizePanelMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _resizePanelMessageId, function(panelId, data) {
resizePanel(data);
});
// Callback post initialization to tell background script that panel is "ready" for communication.
pktUIMessaging.addMessageListener("listenerReady", function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, "listenerReady", function(panelId, data) {
});
pktUIMessaging.addMessageListener("collapseSavePanel", function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, "collapseSavePanel", function(panelId, data) {
if (!pktApi.isPremiumUser() && !isInOverflowMenu())
resizePanel({width:savePanelWidth, height:savePanelHeights.collapsed});
});
pktUIMessaging.addMessageListener("expandSavePanel", function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, "expandSavePanel", function(panelId, data) {
if (!isInOverflowMenu())
resizePanel({width:savePanelWidth, height:savePanelHeights.expanded});
});
// Ask for recently accessed/used tags for auto complete
var _getTagsMessageId = "getTags";
pktUIMessaging.addMessageListener(_getTagsMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _getTagsMessageId, function(panelId, data) {
pktApi.getTags(function(tags, usedTags) {
pktUIMessaging.sendResponseMessageToPanel(panelId, _getTagsMessageId, {
tags: tags,
@ -421,7 +426,7 @@ var pktUI = (function() {
// Ask for suggested tags based on passed url
var _getSuggestedTagsMessageId = "getSuggestedTags";
pktUIMessaging.addMessageListener(_getSuggestedTagsMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _getSuggestedTagsMessageId, function(panelId, data) {
pktApi.getSuggestedTagsForURL(data.url, {
success: function(data, response) {
var suggestedTags = data.suggested_tags;
@ -441,7 +446,7 @@ var pktUI = (function() {
// Pass url and array list of tags, add to existing save item accordingly
var _addTagsMessageId = "addTags";
pktUIMessaging.addMessageListener(_addTagsMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _addTagsMessageId, function(panelId, data) {
pktApi.addTagsToURL(data.url, data.tags, {
success: function(data, response) {
var successResponse = {status: "success"};
@ -455,7 +460,7 @@ var pktUI = (function() {
// Based on clicking "remove page" CTA, and passed unique item id, remove the item
var _deleteItemMessageId = "deleteItem";
pktUIMessaging.addMessageListener(_deleteItemMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _deleteItemMessageId, function(panelId, data) {
pktApi.deleteItem(data.itemId, {
success: function(data, response) {
var successResponse = {status: "success"};
@ -468,7 +473,7 @@ var pktUI = (function() {
});
var _initL10NMessageId = "initL10N";
pktUIMessaging.addMessageListener(_initL10NMessageId, function(panelId, data) {
pktUIMessaging.addMessageListener(iframe, _initL10NMessageId, function(panelId, data) {
var strings = {};
var bundle = Services.strings.createBundle("chrome://pocket/locale/pocket.properties");
var e = bundle.getSimpleEnumeration();
@ -609,10 +614,11 @@ var pktUIMessaging = (function() {
/**
* Register a listener and callback for a specific messageId
*/
function addMessageListener(messageId, callback) {
document.addEventListener(prefixedMessageId(messageId), function(e) {
function addMessageListener(iframe, messageId, callback) {
iframe.addEventListener(prefixedMessageId(messageId), function(e) {
var nodePrincipal = e.target.nodePrincipal;
// ignore to ensure we do not pick up other events in the browser
if (e.target.tagName !== 'PKTMESSAGEFROMPANELELEMENT') {
if (!nodePrincipal || !nodePrincipal.URI || !nodePrincipal.URI.spec.startsWith("about:pocket")) {
return;
}
@ -620,7 +626,7 @@ var pktUIMessaging = (function() {
var payload = JSON.parse(e.target.getAttribute("payload"))[0];
var panelId = payload.panelId;
var data = payload.data;
callback(panelId, data);
callback(panelId, data, nodePrincipal);
// Cleanup the element
e.target.parentNode.removeChild(e.target);
@ -628,14 +634,6 @@ var pktUIMessaging = (function() {
}, false, true);
}
/**
* Remove a message listener
*/
function removeMessageListener(messageId, callback) {
document.removeEventListener(prefixedMessageId(messageId), callback);
}
/**
* Send a message to the panel's iframe
*/
@ -733,7 +731,6 @@ var pktUIMessaging = (function() {
*/
return {
addMessageListener: addMessageListener,
removeMessageListener: removeMessageListener,
sendMessageToPanel: sendMessageToPanel,
sendResponseMessageToPanel: sendResponseMessageToPanel,
sendErrorMessageToPanel: sendErrorMessageToPanel,