diff --git a/chrome/content/zotero/xpcom/server_connector.js b/chrome/content/zotero/xpcom/server_connector.js index 7875f677b..e8312cbfd 100755 --- a/chrome/content/zotero/xpcom/server_connector.js +++ b/chrome/content/zotero/xpcom/server_connector.js @@ -341,63 +341,51 @@ Zotero.Server.Connector.SaveSnapshot.prototype = { */ "init":function(url, data, sendResponseCallback) { Zotero.Server.Connector.Data[data["url"]] = ""+data["html"]+""; - var browser = Zotero.Browser.createHiddenBrowser(); - - var pageShowCalled = false; - var cookieSandbox = new Zotero.CookieSandbox(browser, data["url"], data["cookie"], url.userAgent); - browser.addEventListener("pageshow", function() { - if(browser.contentDocument.location.href == "about:blank" - || browser.contentDocument.readyState !== "complete") return; - if(pageShowCalled) return; - pageShowCalled = true; - delete Zotero.Server.Connector.Data[data["url"]]; - - // figure out where to save - var libraryID = null; - var collectionID = null; - var zp = Zotero.getActiveZoteroPane(); - try { - var libraryID = zp.getSelectedLibraryID(); - var collection = zp.getSelectedCollection(); - } catch(e) {} - - try { - var doc = browser.contentDocument; + Zotero.HTTP.processDocuments(["zotero://connector/"+encodeURIComponent(data["url"])], + function(doc) { + delete Zotero.Server.Connector.Data[data["url"]]; - // create new webpage item - var item = new Zotero.Item("webpage"); - item.libraryID = libraryID; - item.setField("title", doc.title); - item.setField("url", data.url); - item.setField("accessDate", "CURRENT_TIMESTAMP"); - var itemID = item.save(); - if(collection) collection.addItem(itemID); + // figure out where to save + var libraryID = null; + var collectionID = null; + var zp = Zotero.getActiveZoteroPane(); + try { + var libraryID = zp.getSelectedLibraryID(); + var collection = zp.getSelectedCollection(); + } catch(e) {} - // determine whether snapshot can be saved - var filesEditable; - if (libraryID) { - var group = Zotero.Groups.getByLibraryID(libraryID); - filesEditable = group.filesEditable; - } else { - filesEditable = true; + try { + // create new webpage item + var item = new Zotero.Item("webpage"); + item.libraryID = libraryID; + item.setField("title", doc.title); + item.setField("url", data.url); + item.setField("accessDate", "CURRENT_TIMESTAMP"); + var itemID = item.save(); + if(collection) collection.addItem(itemID); + + // determine whether snapshot can be saved + var filesEditable; + if (libraryID) { + var group = Zotero.Groups.getByLibraryID(libraryID); + filesEditable = group.filesEditable; + } else { + filesEditable = true; + } + + // save snapshot + if(filesEditable) { + Zotero.Attachments.importFromDocument(doc, itemID); + } + + sendResponseCallback(201); + } catch(e) { + sendResponseCallback(500); + throw e; } - - // save snapshot - if(filesEditable) { - Zotero.Attachments.importFromDocument(doc, itemID); - } - - // remove browser - Zotero.Browser.deleteHiddenBrowser(browser); - - sendResponseCallback(201); - } catch(e) { - sendResponseCallback(500); - throw e; - } - }, false); - - browser.loadURI("zotero://connector/"+encodeURIComponent(data["url"])); + }, + null, null, false, + new Zotero.CookieSandbox(null, data["url"], data["cookie"], url.userAgent)); } }