| Index: safari/ext/background.js |
| diff --git a/safari/ext/background.js b/safari/ext/background.js |
| index ebb96332a03c370ff5e7bdcd1bc6875135895f56..38870c0564b31fca093a5cb0c36419a0063014a7 100644 |
| --- a/safari/ext/background.js |
| +++ b/safari/ext/background.js |
| @@ -382,230 +382,6 @@ |
| } |
| }; |
| - |
| - /* Background page proxy (for access from content scripts) */ |
| - |
| - var backgroundPageProxy = { |
| - cache: new ext.PageMap(), |
| - |
| - registerObject: function(obj, objects) |
| - { |
| - var objectId = objects.indexOf(obj); |
| - |
| - if (objectId == -1) |
| - objectId = objects.push(obj) - 1; |
| - |
| - return objectId; |
| - }, |
| - serializeSequence: function(sequence, objects, memo) |
| - { |
| - if (!memo) |
| - memo = {specs: [], arrays: []}; |
| - |
| - var items = []; |
| - for (var i = 0; i < sequence.length; i++) |
| - items.push(this.serialize(sequence[i], objects, memo)); |
| - |
| - return items; |
| - }, |
| - serialize: function(obj, objects, memo) |
| - { |
| - if (typeof obj == "object" && obj != null || typeof obj == "function") |
| - { |
| - if (obj.constructor == Array) |
| - { |
| - if (!memo) |
| - memo = {specs: [], arrays: []}; |
| - |
| - var idx = memo.arrays.indexOf(obj); |
| - if (idx != -1) |
| - return memo.specs[idx]; |
| - |
| - var spec = {type: "array"}; |
| - memo.specs.push(spec); |
| - memo.arrays.push(obj); |
| - |
| - spec.items = this.serializeSequence(obj, objects, memo); |
| - return spec; |
| - } |
| - |
| - if (obj.constructor != Date && obj.constructor != RegExp) |
| - return {type: "object", objectId: this.registerObject(obj, objects)}; |
| - } |
| - |
| - return {type: "value", value: obj}; |
| - }, |
| - createCallback: function(callbackId, pageId, frameId) |
| - { |
| - var proxy = this; |
| - |
| - return function() |
| - { |
| - var page = pages[pageId]; |
| - if (!page) |
| - return; |
| - |
| - var objects = proxy.cache.get(page); |
| - if (!objects) |
| - return; |
| - |
| - var targetDocument; |
| - for (var documentId in page._tab._documentLookup) |
| - { |
| - var result = page._tab._documentLookup[documentId]; |
| - if (result.pageId == pageId && result.frameId == frameId) |
| - { |
| - targetDocument = documentId; |
| - break; |
| - } |
| - } |
| - if (!targetDocument) |
| - return; |
| - |
| - page._tab.page.dispatchMessage("proxyCallback", |
| - { |
| - targetDocuments: [targetDocument], |
| - callbackId: callbackId, |
| - contextId: proxy.registerObject(this, objects), |
| - args: proxy.serializeSequence(arguments, objects) |
| - }); |
| - }; |
| - }, |
| - deserialize: function(spec, objects, pageId, frameId, memo) |
| - { |
| - switch (spec.type) |
| - { |
| - case "value": |
| - return spec.value; |
| - case "hosted": |
| - return objects[spec.objectId]; |
| - case "callback": |
| - return this.createCallback(spec.callbackId, pageId, frameId); |
| - case "object": |
| - case "array": |
| - if (!memo) |
| - memo = {specs: [], objects: []}; |
| - |
| - var idx = memo.specs.indexOf(spec); |
| - if (idx != -1) |
| - return memo.objects[idx]; |
| - |
| - var obj; |
| - if (spec.type == "array") |
| - obj = []; |
| - else |
| - obj = {}; |
| - |
| - memo.specs.push(spec); |
| - memo.objects.push(obj); |
| - |
| - if (spec.type == "array") |
| - for (var i = 0; i < spec.items.length; i++) |
| - obj.push(this.deserialize(spec.items[i], objects, |
| - pageId, frameId, memo)); |
| - else |
| - for (var k in spec.properties) |
| - obj[k] = this.deserialize(spec.properties[k], objects, |
| - pageId, frameId, memo); |
| - |
| - return obj; |
| - } |
| - }, |
| - getObjectCache: function(page) |
| - { |
| - var objects = this.cache.get(page); |
| - if (!objects) |
| - { |
| - objects = [window]; |
| - this.cache.set(page, objects); |
| - } |
| - return objects; |
| - }, |
| - fail: function(error) |
| - { |
| - if (error instanceof Error) |
| - error = error.message; |
| - return {succeed: false, error: error}; |
| - }, |
| - handleMessage: function(message) |
| - { |
| - var objects = this.getObjectCache(pages[message.pageId]); |
| - |
| - switch (message.type) |
| - { |
| - case "getProperty": |
| - var obj = objects[message.objectId]; |
| - |
| - try |
| - { |
| - var value = obj[message.property]; |
| - } |
| - catch (e) |
| - { |
| - return this.fail(e); |
| - } |
| - |
| - return {succeed: true, result: this.serialize(value, objects)}; |
| - case "setProperty": |
| - var obj = objects[message.objectId]; |
| - var value = this.deserialize(message.value, objects, |
| - message.pageId, message.frameId); |
| - |
| - try |
| - { |
| - obj[message.property] = value; |
| - } |
| - catch (e) |
| - { |
| - return this.fail(e); |
| - } |
| - |
| - return {succeed: true}; |
| - case "callFunction": |
| - var func = objects[message.functionId]; |
| - var context = objects[message.contextId]; |
| - |
| - var args = []; |
| - for (var i = 0; i < message.args.length; i++) |
| - args.push(this.deserialize(message.args[i], objects, |
| - message.pageId, message.frameId)); |
| - |
| - try |
| - { |
| - var result = func.apply(context, args); |
| - } |
| - catch (e) |
| - { |
| - return this.fail(e); |
| - } |
| - |
| - return {succeed: true, result: this.serialize(result, objects)}; |
| - case "inspectObject": |
| - var obj = objects[message.objectId]; |
| - var objectInfo = {properties: {}, isFunction: typeof obj == "function"}; |
| - |
| - Object.getOwnPropertyNames(obj).forEach(function(prop) |
| - { |
| - objectInfo.properties[prop] = { |
| - enumerable: Object.prototype.propertyIsEnumerable.call(obj, prop) |
| - }; |
| - }); |
| - |
| - var proto = Object.getPrototypeOf(obj); |
| - if (proto) |
| - objectInfo.prototypeId = this.registerObject(proto, objects); |
| - |
| - if (obj == Object.prototype) |
| - objectInfo.prototypeOf = "Object"; |
| - if (obj == Function.prototype) |
| - objectInfo.prototypeOf = "Function"; |
| - |
| - return objectInfo; |
| - } |
| - } |
| - }; |
| - |
| - |
| /* Message processing */ |
| safari.application.addEventListener("message", function(event) |
| @@ -636,11 +412,6 @@ |
| event.message = (results.indexOf(false) == -1); |
| break; |
| - case "proxy": |
| - message.pageId = sender.pageId; |
| - message.frameId = sender.frameId; |
| - event.message = backgroundPageProxy.handleMessage(message); |
| - break; |
| case "request": |
| var response = null; |
| var sendResponse = function(message) { response = message; }; |