<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How do restartless add-ons work?</title>
	<atom:link href="http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work/feed" rel="self" type="application/rss+xml" />
	<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work</link>
	<description>Spouting nonsense from the depths of my spare time</description>
	<lastBuildDate>Sat, 14 Jan 2012 22:20:26 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: sys</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-49076</link>
		<dc:creator>sys</dc:creator>
		<pubDate>Mon, 07 Jun 2010 08:56:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-49076</guid>
		<description>&quot;In order to do this, rather than the application loading chrome and components from the add-on it is up to the add-on developer to do all of this manually.&quot;

This is an excellent idea, we are waiting for this feature ! 
We can already manually load / unload chromes, load / unload resources aliases (nsIResProtocolHandler.setSubstitution(&quot;xxx&quot;, null))... But I don&#039;t find a way to unload jsm modules (xpcIJSModuleLoader.idl). Do you know if there is a project for unload and reload jsm modules ?</description>
		<content:encoded><![CDATA[<p>&#8220;In order to do this, rather than the application loading chrome and components from the add-on it is up to the add-on developer to do all of this manually.&#8221;</p>
<p>This is an excellent idea, we are waiting for this feature !<br />
We can already manually load / unload chromes, load / unload resources aliases (nsIResProtocolHandler.setSubstitution(&#8220;xxx&#8221;, null))&#8230; But I don&#8217;t find a way to unload jsm modules (xpcIJSModuleLoader.idl). Do you know if there is a project for unload and reload jsm modules ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian King</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45293</link>
		<dc:creator>Brian King</dc:creator>
		<pubDate>Wed, 14 Apr 2010 09:57:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45293</guid>
		<description>Clear yes, thanks.</description>
		<content:encoded><![CDATA[<p>Clear yes, thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: johnjbarton</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45274</link>
		<dc:creator>johnjbarton</dc:creator>
		<pubDate>Wed, 14 Apr 2010 03:31:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45274</guid>
		<description>Ok, even though it seems obvious to you I think it would be good to say this on the wiki, since it&#039;s a critical difference one needs to know up front.</description>
		<content:encoded><![CDATA[<p>Ok, even though it seems obvious to you I think it would be good to say this on the wiki, since it&#8217;s a critical difference one needs to know up front.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mossop</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45250</link>
		<dc:creator>Mossop</dc:creator>
		<pubDate>Tue, 13 Apr 2010 19:48:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45250</guid>
		<description>The application may be in the middle of starting up (no browser window present) or it may be already up and running. Your code should use the window enumerator to find if there any windows that you need to add UI to or wait until such windows are opened. You have to handle loading overlays etc. yourself, the platform will not do it for you if you switch to this type of add-on.</description>
		<content:encoded><![CDATA[<p>The application may be in the middle of starting up (no browser window present) or it may be already up and running. Your code should use the window enumerator to find if there any windows that you need to add UI to or wait until such windows are opened. You have to handle loading overlays etc. yourself, the platform will not do it for you if you switch to this type of add-on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: johnjbarton</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45248</link>
		<dc:creator>johnjbarton</dc:creator>
		<pubDate>Tue, 13 Apr 2010 19:43:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45248</guid>
		<description>Sorry, now I realize there is a pretty fundamental question:
 
We currently initialize when the browser.xul is loaded (actually we have to hack a delay to allow the XBL to initialize correctly).  Now we should use startup()?  What state is the application in when startup is called? browser.xul is loaded? our scripts in overlays are compiled? our overlays are added to the browser.xul but the js that backs the controls is not attached (because we have not initialized)?</description>
		<content:encoded><![CDATA[<p>Sorry, now I realize there is a pretty fundamental question:</p>
<p>We currently initialize when the browser.xul is loaded (actually we have to hack a delay to allow the XBL to initialize correctly).  Now we should use startup()?  What state is the application in when startup is called? browser.xul is loaded? our scripts in overlays are compiled? our overlays are added to the browser.xul but the js that backs the controls is not attached (because we have not initialized)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mossop</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45235</link>
		<dc:creator>Mossop</dc:creator>
		<pubDate>Tue, 13 Apr 2010 16:52:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45235</guid>
		<description>Thanks, fixed</description>
		<content:encoded><![CDATA[<p>Thanks, fixed</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: johnjbarton</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45234</link>
		<dc:creator>johnjbarton</dc:creator>
		<pubDate>Tue, 13 Apr 2010 16:46:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45234</guid>
		<description>&quot;The add-on must at this point do anything necessary to make its functionality available, the platform not execute any other part of the add-on.  &quot;

I guess a word is missing.</description>
		<content:encoded><![CDATA[<p>&#8220;The add-on must at this point do anything necessary to make its functionality available, the platform not execute any other part of the add-on.  &#8221;</p>
<p>I guess a word is missing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mossop</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45224</link>
		<dc:creator>Mossop</dc:creator>
		<pubDate>Tue, 13 Apr 2010 15:13:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45224</guid>
		<description>I&#039;m not sure why code is simpler with strings, and comparing against fixed constants has the benefit that if you mistype the constant in your code you&#039;ll see a JS error warning you about it. With strings it isn&#039;t the case.

The clarifications I&#039;ve made should answer all your questions I think.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure why code is simpler with strings, and comparing against fixed constants has the benefit that if you mistype the constant in your code you&#8217;ll see a JS error warning you about it. With strings it isn&#8217;t the case.</p>
<p>The clarifications I&#8217;ve made should answer all your questions I think.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mossop</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45223</link>
		<dc:creator>Mossop</dc:creator>
		<pubDate>Tue, 13 Apr 2010 15:12:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45223</guid>
		<description>Thanks, I&#039;ve added an additional section and tried to clarify the wording for consistency, let me know if it makes things better.</description>
		<content:encoded><![CDATA[<p>Thanks, I&#8217;ve added an additional section and tried to clarify the wording for consistency, let me know if it makes things better.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: johnjbarton</title>
		<link>http://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work#comment-45221</link>
		<dc:creator>johnjbarton</dc:creator>
		<pubDate>Tue, 13 Apr 2010 14:53:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.oxymoronical.com/?p=747#comment-45221</guid>
		<description>Numbers in APIs are so 20th century: how about passing the &#124;reason&#124; values as strings so our code is simpler?

The spec also needs to tell us about the state of the system during these calls. For example, we need to know if &#124;uninstall&#124; is always preceded by &#124;install&#124;. 

We need to know what this means:
  Note that install will never be called if the add-on is never loaded. 
since the spec describes install and startup but not &#039;load&#039;.</description>
		<content:encoded><![CDATA[<p>Numbers in APIs are so 20th century: how about passing the |reason| values as strings so our code is simpler?</p>
<p>The spec also needs to tell us about the state of the system during these calls. For example, we need to know if |uninstall| is always preceded by |install|. </p>
<p>We need to know what this means:<br />
  Note that install will never be called if the add-on is never loaded.<br />
since the spec describes install and startup but not &#8216;load&#8217;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

