aboutsummaryrefslogtreecommitdiff
path: root/js/firefox/page-shim.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/firefox/page-shim.js')
-rw-r--r--js/firefox/page-shim.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/js/firefox/page-shim.js b/js/firefox/page-shim.js
new file mode 100644
index 0000000..fc63f89
--- /dev/null
+++ b/js/firefox/page-shim.js
@@ -0,0 +1,62 @@
+(function() {
+ //Communication functions for
+
+ var messageId = 1;
+ var callbacks = {};
+ function send(type, message, callback) {
+ var id = messageId++;
+ window.postMessage({sender:'page', messageId:id, messageType:type, payload:message}, '*');
+ callbacks[id] = callback;
+ }
+
+ window.addEventListener('message', function(message) {
+ if (message.data.sender == 'page') {
+ return; //Ignore messages we sent ourselves
+ }
+
+ console.info('page got message: ' + JSON.stringify(message.data));
+
+ var callback = callbacks[message.data.messageId];
+ if (callback) {
+ callback(message.data.payload);
+ delete callbacks[message.data.messageId];
+ }
+ });
+
+ window.chrome = {
+ storage : {
+ local : {
+ get : function(query, callback) {
+ send('storage.get', query, callback);
+ },
+ set : function(data, callback) {
+ send('storage.set', data, callback);
+ }
+ }
+ },
+
+ extension : {
+ getURL : function(file) {
+ return document.location.protocol + '//' + document.location.host + '/' + file;
+ }
+ },
+
+ tabs : {
+ query : function(data, callback) {
+
+ },
+
+ update : function(tabId, options, callback) {
+
+ }
+ },
+
+ runtime : {
+ getManifest : function() {
+ return { version : '3.0' };
+ }
+ }
+ };
+
+})();
+