michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: false michael@0: michael@0: michael@0: michael@0: let widgetGroup = CustomizableUI.getWidget(this.getAttribute("id")); michael@0: let widget = widgetGroup.forWindow(window); michael@0: this.inMenuPanel = widgetGroup.areaType == CustomizableUI.TYPE_MENU_PANEL; michael@0: if (this.inMenuPanel) { michael@0: widget.node.setAttribute("closemenu", "none"); michael@0: return document.getElementById("PanelUI-socialapi"); michael@0: } michael@0: return document.getAnonymousElementByAttribute(this, "anonid", "panel"); michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: return this.content.contentWindow; michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: return this.content.contentDocument; michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: return Social._getProviderFromOrigin(this.getAttribute("origin")); michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: return this._isMarked; michael@0: michael@0: michael@0: michael@0: michael@0: { michael@0: this.isMarked = isMarked; michael@0: }); michael@0: } michael@0: michael@0: this.content.setAttribute("origin", provider.origin); michael@0: if (!this.inMenuPanel) { michael@0: let panel = this.panel; michael@0: // if customization is currently happening, we may not have a panel michael@0: // that we can hide michael@0: if (panel.hidePopup) { michael@0: panel.hidePopup(); michael@0: panel.hidden = true; michael@0: } michael@0: } michael@0: this.pageData = null; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: { michael@0: if (event.target != this.contentDocument) michael@0: return; michael@0: this._loading = false; michael@0: this.content.removeEventListener("DOMContentLoaded", DOMContentLoaded, true); michael@0: // add our resizer after the dom is ready michael@0: if (!this.inMenuPanel) { michael@0: let DynamicResizeWatcher = Cu.import("resource:///modules/Social.jsm", {}).DynamicResizeWatcher; michael@0: this._dynamicResizer = new DynamicResizeWatcher(); michael@0: this._dynamicResizer.start(this.panel, this.content); michael@0: } else if (this._dynamicResizer) { michael@0: this._dynamicResizer.stop(); michael@0: this._dynamicResizer = null; michael@0: } michael@0: // send the opengraph data michael@0: let evt = this.contentDocument.createEvent("CustomEvent"); michael@0: evt.initCustomEvent("OpenGraphData", true, true, JSON.stringify(this.pageData)); michael@0: this.contentDocument.documentElement.dispatchEvent(evt); michael@0: michael@0: let contentWindow = this.contentWindow; michael@0: let markUpdate = function(event) { michael@0: // update the annotation based on this event, then update the michael@0: // icon as well michael@0: this.isMarked = JSON.parse(event.detail).marked; michael@0: let uri = Services.io.newURI(this.pageData.url, null, null); michael@0: if (this.isMarked) { michael@0: Social.markURI(provider.origin, uri); michael@0: } else { michael@0: Social.unmarkURI(provider.origin, uri, () => { michael@0: this.update(); michael@0: }); michael@0: } michael@0: }.bind(this); michael@0: contentWindow.addEventListener("socialMarkUpdate", markUpdate); michael@0: contentWindow.addEventListener("unload", function unload() { michael@0: contentWindow.removeEventListener("unload", unload); michael@0: contentWindow.removeEventListener("socialMarkUpdate", markUpdate); michael@0: }); michael@0: } michael@0: this.content.addEventListener("DOMContentLoaded", DOMContentLoaded, true); michael@0: this._loading = true; michael@0: this.content.setAttribute("src", endpoint); michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: { michael@0: panel.removeEventListener(evName, _hidden); michael@0: this.update(); michael@0: }; michael@0: panel.addEventListener(evName, _hidden, false); michael@0: } michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: { michael@0: this.content.removeEventListener("load", panelBrowserOnload, true); michael@0: this.dispatchPanelEvent("socialFrameShow"); michael@0: if (!this.inMenuPanel) michael@0: sizeSocialPanelToContent(this.panel, this.content); michael@0: }; michael@0: this.content.addEventListener("load", panelBrowserOnload, true); michael@0: } michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: