<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rstrong&#039;s blog</title>
	<atom:link href="http://blog.mozilla.com/rstrong/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/rstrong</link>
	<description>in search of ponies</description>
	<lastBuildDate>Sun, 21 Mar 2010 21:16:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Status Update &#8211; week of 3/19</title>
		<link>http://blog.mozilla.com/rstrong/2010/03/21/status-update-week-of-319/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/03/21/status-update-week-of-319/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 21:15:52 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=234</guid>
		<description><![CDATA[Progress:


Landed on trunk &#8211; Bug 552602 [Core] &#8211; &#8220;Open Containing Folder&#8221; button on &#8220;about:support(Troubleshooting Information)&#8221; page does not work. [Windows XP]. This is fallout from Bug 548426 [Core] &#8211; xpcom/tests/TestFile.exe fails for windows mobile [Windows Mobile 6 Professional]
Landed on trunk &#8211; Bug 551283 [Toolkit] &#8211; Suspicious and possibly unused code in updates.js updateListener.onProgress [All].
Landed on [...]]]></description>
			<content:encoded><![CDATA[<p>Progress:<br />
<hr />
<ul>
<li>Landed on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=552602">Bug 552602</a> [Core] &#8211; &#8220;Open Containing Folder&#8221; button on &#8220;about:support(Troubleshooting Information)&#8221; page does not work. [Windows XP]. This is fallout from <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=548426">Bug 548426</a> [Core] &#8211; xpcom/tests/TestFile.exe fails for windows mobile [Windows Mobile 6 Professional]</li>
<li>Landed on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=551283">Bug 551283</a> [Toolkit] &#8211; Suspicious and possibly unused code in updates.js updateListener.onProgress [All].</li>
<li>Landed on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=548061">Bug 548061</a> [Toolkit] &#8211; Billboard should handle 404 (other errors?) for billboard better [All].</li>
<li>Landed on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=545707">Bug 545707</a> [Toolkit] &#8211; Software update reports transfer speed in bytes per second [Windows Server 2003.]</li>
<li>Landed on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=549969">Bug 549969</a> [Toolkit] &#8211; Add ability to save xml attributes from update xml that app update doesn&#8217;t care about [All].</li>
<li>Received feedback review for patch in progress &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All].</li>
<li>Started mega-review &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=553169">Bug 553169</a> [Toolkit] &#8211; Initial review of API rewrite [All].</li>
</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Finish patches for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All]. The only part that might be difficult at this stage will be the tests.</li>
<li>Finish reviews for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=553169">Bug 553169</a> [Toolkit] &#8211; Initial review of API rewrite [All].</li>
<li>Start work to add a survey for when an update is declined.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/03/21/status-update-week-of-319/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Application Update billboard</title>
		<link>http://blog.mozilla.com/rstrong/2010/03/14/application-update-billboard/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/03/14/application-update-billboard/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 09:16:22 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=188</guid>
		<description><![CDATA[Previously, when the Application Update billboard is created for a release the billboard&#8217;s size had to be verified for each locale and platform since they determined the size of the billboard in the user interface. This was, to say the least, not a simple task and the people that had to perform this task could [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, when the Application Update billboard is created for a release the billboard&#8217;s size had to be verified for each locale and platform since they determined the size of the billboard in the user interface. This was, to say the least, not a simple task and the people that had to perform this task could have instead been focusing on other important tasks, especially when we are trying to get a release out the door. The billboard page also has buttons that aren&#8217;t always displayed, so localizers were unable to properly determine the width of the user interface. For example, there were several locales that specified a width that was too small when all of the buttons were displayed. This made it so the localizers had to quickly patch previous releases of their locale to increase the width so the buttons would be completely displayed.</p>
<p>Even with these efforts the billboard size would be different than expected if the user changed their system to use non-default fonts. To lessen the work required to create the billboard and prevent the user interface from not being wide enough on some locales, the dimensions of the Application Update user interface is no longer localized and the dimensions of the billboard is the same for all locales and platforms. Another long standing request for the billboard that is now fixed is to extend the billboard to fit the available space. These changes landed on trunk on 3/11 in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480178">Bug 480178</a> [Toolkit] &#8211; Billboard should extend to available space and the update UI should be the same width for all locales [All] and the changes will likely be backported to mozilla-1.9.2 (e.g. Firefox 3.6.x) and mozilla-1.9.1 (e.g. Firefox 3.5.x) though the specific version where these changes will be backported to has not been decided yet.<br />
<br/><br />
The before / after comparison of the button strip for the ka locale below shows how the user interface can easily be too narrow and how the new width solves this problem.<br/><br />
<img src="http://blog.mozilla.com/rstrong/files/2010/03/ka_ui_buttons.png" width="723" height="289"/><br />
<br/><br />
Besides the changes described previously the appearance of the buttons on Mac OS X have also been changed and in my opinion greatly improved (thanks go out to Alex Faaborg for this). There are also <a href="https://bugzilla.mozilla.org/attachment.cgi?id=430909">user interface screenshots</a> on Windows, Mac OS X, and Linux available in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480178">Bug 480178</a>.<br />
<br/><br />
<img src="http://blog.mozilla.com/rstrong/files/2010/03/billboard_mac.png" width="702 height="437"/><br />
<br/><br />
I haven&#8217;t finished the wiki page for these changes yet so I have included a brief summary below&#8230; I&#8217;ll include a link to the wiki in a future blog post after I have finished the pages:</p>
<ul>
<li>The size of the billboard is 700px for the width and 360px for the height for all locales and platforms. The actual width on Windows and Linux ends up being 701px and iirc Mac OS X ends up having a width of 701px and a height of 361px. XUL often adds an extra pixel when specifying the width or height for a child element and allowing the rest of the UI to auto size. So, going with a 700px width by 360px height billboard will be safe.</li>
<li>The existing method of testing using the app.update.url.override preference can still be used but it now requires new attributes. There is a sample of the update xml available in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480178">Bug 480178</a> in <a href="https://bugzilla.mozilla.org/attachment.cgi?id=430898">attachment 430898</a>. I&#8217;ll blog about the new attributes in the near future as well as update the wiki page for the update xml.</li>
<li>There is a new method for testing the billboard (this also displays the three possible buttons for this page) by adding a new string preference named app.update.billboard.test_url with a value of the path to the billboard&#8217;s html. The path when testing using this method supports file:// urls as well as http(s):// urls. Clicking any of the buttons when testing with this method will close the user interface instead of carrying out their normal action.</li>
<li>By specifying an attribute named zoomOutToFit on the body of the billboard it will zoom out to fit using full zoom for the width (zoomOutToFit=&#8221;width&#8221;), the height (zoomOutToFit=&#8221;height&#8221;), or both the width and height (zoomOutToFit=&#8221;both&#8221;) when the billboard html extends beyond the available space. In the css for the billboard, overflow should be set to hidden when using this method since even with zooming out the billboard may still display scroll bars. This will decrease the size of images, hence it isn&#8217;t recommended&#8230; though it might come in handy for locales where the text requires more space. If you use this method you should also test it with the billboard html you are using it with to verify that it works as you are expecting.</li>
</ul>
<p><br/><br />
In the near future I will also be fixing <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=548061">Bug 548061</a> [Toolkit] &#8211; Billboard should handle 404 (other errors?) for billboard better [All]. This will require an attribute on the billboard&#8217;s html body so that Application Update can verify that the page wasn&#8217;t redirected as can be the case when using a hotel&#8217;s wifi, etc.<br />
<br/><br />
I also filed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=548764">Bug 548764</a> [Toolkit] &#8211; The non-billboard pages need UI redesign [All] to improve the remainder of the Application Update user interface pages.<br />
<br/><br />
Thanks goes out to Alex Faaborg for the user interface design / guidance and to Dave Townsend for the quick turnaround on the review so the changes could land in time for the next Developer Preview release.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/03/14/application-update-billboard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Status Update &#8211; App Update week of 3/5</title>
		<link>http://blog.mozilla.com/rstrong/2010/03/07/status-update-app-update-week-of-35/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/03/07/status-update-app-update-week-of-35/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:59:43 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=177</guid>
		<description><![CDATA[Progress:


Landed on trunk &#8211; Bug 530872 [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All]. This is the main patch for adding support for Custom action based on update xml after app update. As a side benefit there are now several mochitest chrome tests for the app [...]]]></description>
			<content:encoded><![CDATA[<p>Progress:<br />
<hr />
<ul>
<li>Landed on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530872">Bug 530872</a> [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All]. This is the main patch for adding support for <a href="https://wiki.mozilla.org/Firefox/Projects/Action_based_on_update_xml_after_app_update">Custom action based on update xml after app update</a>. As a side benefit there are now several mochitest chrome tests for the app update user interface. This will need to be backported without string changes to 3.6 and possibly 3.5.</li>
<li>Submitted patches for review for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480178">Bug 480178</a> [Toolkit] &#8211; Billboard should extend to available space and the update UI should be the same width for all locales [All]. This will need to be backported without string changes to 3.5.</li>
<li>Started working on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=548061">Bug 548061</a> [Toolkit] &#8211; Billboard should handle 404 (other errors?) for billboard better [All].</li>
</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Fix a new requirement for <a href="https://wiki.mozilla.org/Firefox/Projects/Action_based_on_update_xml_after_app_update">Custom action based on update xml after app update</a> &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=549969">Bug 549969</a> [Toolkit] &#8211; Add ability to save xml attributes from update xml that app update doesn&#8217;t care about [All]</li>
<li>Figure out the implementation for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All]. This is the front end patch for adding <a href="https://wiki.mozilla.org/Firefox/Projects/Action_based_on_update_xml_after_app_update">Custom action based on update xml after app update</a>.</li>
<li>Land on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480178">Bug 480178</a> [Toolkit] &#8211; Billboard should extend to available space and the update UI should be the same width for all locales [All]. This will need to be backported without string changes to 3.5.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/03/07/status-update-app-update-week-of-35/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status Update &#8211; App Update</title>
		<link>http://blog.mozilla.com/rstrong/2010/02/26/status-update-app-update/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/02/26/status-update-app-update/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 06:42:31 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=174</guid>
		<description><![CDATA[Progress:


Waiting on remaining reviews for Bug 530872 [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All].]]></description>
			<content:encoded><![CDATA[<p>Progress:<br />
<hr />
<ul>
<li>Waiting on remaining reviews for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530872">Bug 530872</a> [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All].</li</p>
<li>Started looking at the implementation in the patch for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All]. Should have the implementation figured out next week.</li>
<li>Started working on and have received ui-review on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480178">Bug 480178</a> [Toolkit] &#8211; Billboard should extend to available space and the update UI should be the same width for all locales [All].</li>
<li>Started on a patch for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=548061">Bug 548061</a> [Toolkit] &#8211; Billboard should handle 404 (other errors?) for billboard better [All]</li>
</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Get reviews for and land <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530872">Bug 530872</a> [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All]</li>
<li>Figure out the implementation for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All].</li>
<li>Finish the patch for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480178">Bug 480178</a> [Toolkit] &#8211; Billboard should extend to available space and the update UI should be the same width for all locales [All].</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/02/26/status-update-app-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status Update &#8211; App specific actions after App Update</title>
		<link>http://blog.mozilla.com/rstrong/2010/02/12/status-update-app-specification-actions-after-app-update/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/02/12/status-update-app-specification-actions-after-app-update/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 05:02:36 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=167</guid>
		<description><![CDATA[Application update is going to support an application provided string in the update xml which can then be used by the application to determine what to do after a successful application update.
Progress:


Client side patches reviewed but still need to finish tests for Bug 530872 [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a [...]]]></description>
			<content:encoded><![CDATA[<p>Application update is going to support an application provided string in the update xml which can then be used by the application to determine what to do after a successful application update.</p>
<p>Progress:<br />
<hr />
<ul>
<li>Client side patches reviewed but still need to finish tests for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530872">Bug 530872</a> [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All]. The xpcshell tests are finished but the mochitest chrome tests have shown there are leaks in the client code (it also asserts in debug builds) due to the work done to support remote html which was done for Firefox 3.0. As soon as I fix the leaks and assertions the tests should be done. This is taking much longer than I like but tests are important and it is very important to not add new oranges to the tinderbox.</li</p>
<li>ddahl has started work again on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All] as well as general cleanup of overridden attributes in the update xml.</li>
<li>Reviewed code / provided guidance for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=523410">Bug 523410</a> [Core] &#8211; Disable LSPs in WinSock for Firefox [Windows.]</li>
</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Finish up the tests for and land <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530872">Bug 530872</a> [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All]</li>
<li>Write mochitests for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538533">Bug 538533</a> [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All].</li>
<li>Finish up <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All].</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/02/12/status-update-app-specification-actions-after-app-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status update &#8211; week of 1/29</title>
		<link>http://blog.mozilla.com/rstrong/2010/01/31/status-update-week-of-129/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/01/31/status-update-week-of-129/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 00:54:40 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=159</guid>
		<description><![CDATA[Progress:


Patch almost ready for review &#8211; Bug 530872 [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All]. The changes are backward and forward compatible which should minimize releng&#8217;s pain when implementing this on AUS. This is the app update work to support Bug 538331 [Firefox] &#8211; On [...]]]></description>
			<content:encoded><![CDATA[<p>Progress:<br />
<hr />
<ul>
<li>Patch almost ready for review &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530872">Bug 530872</a> [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All]. The changes are backward and forward compatible which should minimize releng&#8217;s pain when implementing this on AUS. This is the app update work to support <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update meta-data [All] as well as general cleanup of overridden attributes in the update xml.</li>
<li>Landed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=536547">Bug 536547</a> [Toolkit] &#8211; 3.5.6 is downloading the same version for an update [Windows]. This prevents resuming the download for an update with the same app version with the same build id.</li>
<li>Landed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=540356">Bug 540356</a> [Toolkit] &#8211; Enforce a sane minimum interval for app.update.timer [All]. There have been several bugs filed over the years due to using extremely low values for this timer along with the app update timer interval during release testing and this is the first of a couple of fixes to prevent this from happening in the future.</li>
<li>Landed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=543312">Bug 543312</a> [Toolkit] &#8211; Remove the dependency on nsTryToClose.js from app update&#8217;s ui [All].</li>
<li>Landed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538533">Bug 538533</a> [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All]. This has caused several bug reports over the years during release testing.</li>
<li>Met with Ken Kovash to define new app update metrics for Firefox Lorentz.</li>
<li>Rewrote <a href="https://wiki.mozilla.org/Software_Update:Manually_Installing_a_MAR_file">Software Update:Manually Installing a MAR file</a>.</li>
</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Land <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530872">Bug 530872</a> [Toolkit] &#8211; app.update.url params / update.xml cleanup and addition of a custom string property for apps [All] and ddahl should have <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update meta-data [All] landed as well. The remainder of the work to enable this will be done on AUS and I&#8217;ll get an ETA for this from nthomas during the week.</a></p>
<li>Write mochitests for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538533">Bug 538533</a> [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All]</li>
<li>Start coding for the new app update metrics for Firefox Lorentz</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/01/31/status-update-week-of-129/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status update &#8211; week of 1/15</title>
		<link>http://blog.mozilla.com/rstrong/2010/01/15/status-update-week-of-115/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/01/15/status-update-week-of-115/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 22:03:50 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=157</guid>
		<description><![CDATA[Progress:


Tracked down the cause of the following crashkill bug &#8211; Bug 501429 [Core] &#8211; Gmail tab crash while closing it&#8217;s tab [@ UserCallWinProcCheckWow ] (caused by Google Talk Plugin) [Windows XP]. This was a PITA due to it being in Firefox 3.0 cycle and there being no nightly builds for the range.
Met with metrics to [...]]]></description>
			<content:encoded><![CDATA[<p>Progress:<br />
<hr />
<ul>
<li>Tracked down the cause of the following crashkill bug &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501429">Bug 501429</a> [Core] &#8211; Gmail tab crash while closing it&#8217;s tab [@ UserCallWinProcCheckWow ] (caused by Google Talk Plugin) [Windows XP]. This was a PITA due to it being in Firefox 3.0 cycle and there being no nightly builds for the range.</li>
<li>Met with metrics to go over their requirements for Firefox.next.</li>
<li>Received r+ on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538533">Bug 538533</a> [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All]. This is actually an old bug that causes QA to file bugs against app update during almost every release cycle.</li>
<li>Performed over 5% of the Firefox 3.6 RC1 Full Functional Tests including all of the Windows 7 Multitouch Full Functional Tests.</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Get back on track with the Quarter 1 app update work.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/01/15/status-update-week-of-115/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status update &#8211; week of 1/8</title>
		<link>http://blog.mozilla.com/rstrong/2010/01/08/status-update-week-of-18/</link>
		<comments>http://blog.mozilla.com/rstrong/2010/01/08/status-update-week-of-18/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 22:41:51 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=155</guid>
		<description><![CDATA[Progress:


Dealt with a few items in my review queue.
Patch ready for review &#8211; Bug 538533 [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All].
Discussed with ddahl the after update action work he will be doing for Firefox.next and filed Bug 538331 [...]]]></description>
			<content:encoded><![CDATA[<p>Progress:<br />
<hr />
<ul>
<li>Dealt with a few items in my review queue.</li>
<li>Patch ready for review &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538533">Bug 538533</a> [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All].</li>
<li>Discussed with ddahl the after update action work he will be doing for Firefox.next and filed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All] for this work.</li>
<li>Profiled startup on Firefox WinCE with and without 325 named anonymous functions which showed there is no longer a cost for naming anonymous functions. I discussed this with Brendan and he confirmed that his upvar2 work removed the additional cost associated with naming anonymous functions.</li>
</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Land <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538533">Bug 538533</a> [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All]</li>
<li>Write mochitests for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538533">Bug 538533</a> [Toolkit] &#8211; If a complete update fails the update prompt should state the error and offer a link to download the update [All]</li>
<li>Add backend suppport for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538331">Bug 538331</a> [Firefox] &#8211; On update perform action based upon the update metadata [All]</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2010/01/08/status-update-week-of-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox JavaScript component startup costs</title>
		<link>http://blog.mozilla.com/rstrong/2009/12/23/firefox-javascript-component-startup-costs/</link>
		<comments>http://blog.mozilla.com/rstrong/2009/12/23/firefox-javascript-component-startup-costs/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:56:18 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=130</guid>
		<description><![CDATA[I&#8217;ve spent some time profiling the startup costs for JavaScript components from the first app-startup notification through the last final-ui-startup notification. I&#8217;ve limited the data to just these notifications for the time being in order to keep the focus specifically on this subset of startup cost to make the analysis easier. All times are in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent some time profiling the startup costs for JavaScript components from the first app-startup notification through the last final-ui-startup notification. I&#8217;ve limited the data to just these notifications for the time being in order to keep the focus specifically on this subset of startup cost to make the analysis easier. All times are in milliseconds and the profiling was done on WinCE Firefox trunk using a Tegra device. The patches in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=507012">Bug 507012</a> were used and as can be seen the noise is pretty darn small. Where possible I have calculated the difference between the start and end time for each component (this isn&#8217;t immediately obvious from the log files) so the data would include at least some of the native code cost for the component during startup. This additional cost is readily apparent in the tables at the end of this post where <code>fuelApplication.js</code> is removed entirely from startup.<br />
<br />
Note: get_PB_Enabled is short for PBS_get_privateBrowsingEnabled in nsPrivateBrowsingService.js.<br />
<br />
Samples: 50</p>
<table border="1" cellspacing="0" cellpadding="2" style="font-family: monospace;">
<tr>
<th>stage</th>
<th>file</th>
<th>function</th>
<th>avg</th>
<th>stdev</th>
<th>min</th>
<th>max</th>
</tr>
<tr>
<td>start&nbsp;to&nbsp;final</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">3946.148</td>
<td style="text-align: right;">62.610&nbsp;(1.59%)</td>
<td style="text-align: right;">3832.055</td>
<td style="text-align: right;">4087.264</td>
</tr>
<tr>
<td>app-startup</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">927.774</td>
<td style="text-align: right;">8.117&nbsp;(0.87%)</td>
<td style="text-align: right;">911.413</td>
<td style="text-align: right;">946.115</td>
</tr>
<tr>
<td>app-startup</td>
<td>fuelApplication.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">632.945</td>
<td style="text-align: right;">7.690&nbsp;(1.21%)</td>
<td style="text-align: right;">617.986</td>
<td style="text-align: right;">655.014</td>
</tr>
<tr>
<td>app-startup</td>
<td>fuelApplication.js</td>
<td>init|observe</td>
<td style="text-align: right;">22.706</td>
<td style="text-align: right;">0.301&nbsp;(1.33%)</td>
<td style="text-align: right;">22.368</td>
<td style="text-align: right;">23.980</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsSessionStartup.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">27.703</td>
<td style="text-align: right;">0.304&nbsp;(1.10%)</td>
<td style="text-align: right;">27.271</td>
<td style="text-align: right;">28.404</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsSessionStartup.js</td>
<td>init|observe</td>
<td style="text-align: right;">12.801</td>
<td style="text-align: right;">0.137&nbsp;(1.07%)</td>
<td style="text-align: right;">12.645</td>
<td style="text-align: right;">13.180</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsBrowserGlue.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">48.739</td>
<td style="text-align: right;">0.527&nbsp;(1.08%)</td>
<td style="text-align: right;">45.564</td>
<td style="text-align: right;">49.544</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsBrowserGlue.js</td>
<td>init|observe</td>
<td style="text-align: right;">22.068</td>
<td style="text-align: right;">0.129&nbsp;(0.58%)</td>
<td style="text-align: right;">21.931</td>
<td style="text-align: right;">22.386</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsPrivateBrowsingService.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">30.141</td>
<td style="text-align: right;">0.306&nbsp;(1.01%)</td>
<td style="text-align: right;">29.725</td>
<td style="text-align: right;">31.694</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsPrivateBrowsingService.js</td>
<td>init|observe</td>
<td style="text-align: right;">21.593</td>
<td style="text-align: right;">0.177&nbsp;(0.82%)</td>
<td style="text-align: right;">21.341</td>
<td style="text-align: right;">22.277</td>
</tr>
<tr>
<td>app-startup</td>
<td>WebContentConverter.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">33.150</td>
<td style="text-align: right;">0.225&nbsp;(0.68%)</td>
<td style="text-align: right;">32.904</td>
<td style="text-align: right;">34.148</td>
</tr>
<tr>
<td>app-startup</td>
<td>WebContentConverter.js</td>
<td>init|observe</td>
<td style="text-align: right;">9.549</td>
<td style="text-align: right;">0.073&nbsp;(0.76%)</td>
<td style="text-align: right;">9.444</td>
<td style="text-align: right;">9.741</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsTryToClose.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">12.994</td>
<td style="text-align: right;">0.386&nbsp;(2.97%)</td>
<td style="text-align: right;">12.587</td>
<td style="text-align: right;">14.098</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsTryToClose.js</td>
<td>init|observe</td>
<td style="text-align: right;">10.511</td>
<td style="text-align: right;">0.247&nbsp;(2.35%)</td>
<td style="text-align: right;">10.164</td>
<td style="text-align: right;">11.232</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">343.994</td>
<td style="text-align: right;">3.557&nbsp;(1.03%)</td>
<td style="text-align: right;">337.407</td>
<td style="text-align: right;">352.034</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsPrivateBrowsingService.js</td>
<td>observe</td>
<td style="text-align: right;">8.906</td>
<td style="text-align: right;">0.278&nbsp;(3.12%)</td>
<td style="text-align: right;">8.232</td>
<td style="text-align: right;">9.834</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsExtensionManager.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">192.271</td>
<td style="text-align: right;">3.356&nbsp;(1.75%)</td>
<td style="text-align: right;">186.200</td>
<td style="text-align: right;">199.659</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsExtensionManager.js</td>
<td>init|observe</td>
<td style="text-align: right;">86.652</td>
<td style="text-align: right;">0.493&nbsp;(0.57%)</td>
<td style="text-align: right;">84.153</td>
<td style="text-align: right;">84.153</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateTimerManager.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">19.618</td>
<td style="text-align: right;">0.099&nbsp;(0.50%)</td>
<td style="text-align: right;">19.376</td>
<td style="text-align: right;">19.832</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateTimerManager.js</td>
<td>init|observe</td>
<td style="text-align: right;">11.913</td>
<td style="text-align: right;">0.100&nbsp;(0.84%)</td>
<td style="text-align: right;">11.779</td>
<td style="text-align: right;">12.122</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateServiceStub.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">9.062</td>
<td style="text-align: right;">0.083&nbsp;(0.92%)</td>
<td style="text-align: right;">8.877</td>
<td style="text-align: right;">9.265</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateServiceStub.js</td>
<td>init</td>
<td style="text-align: right;">9.599</td>
<td style="text-align: right;">0.198&nbsp;(2.06%)</td>
<td style="text-align: right;">9.396</td>
<td style="text-align: right;">10.240</td>
</tr>
<tr>
<td>command-line-startup</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">3.953</td>
<td style="text-align: right;">0.079&nbsp;(2.00%)</td>
<td style="text-align: right;">3.866</td>
<td style="text-align: right;">4.108</td>
</tr>
<tr>
<td>command-line-startup</td>
<td>nsPrivateBrowsingService.js</td>
<td>observe</td>
<td style="text-align: right;">3.953</td>
<td style="text-align: right;">0.079&nbsp;(2.00%)</td>
<td style="text-align: right;">3.866</td>
<td style="text-align: right;">4.108</td>
</tr>
<tr>
<td>called-from-native</td>
<td>nsPrivateBrowsingService.js</td>
<td>get_PB_Enabled</td>
<td style="text-align: right;">2.130</td>
<td style="text-align: right;">0.085&nbsp;(4.01%)</td>
<td style="text-align: right;">2.059</td>
<td style="text-align: right;">2.450</td>
</tr>
<tr>
<td>called-from-native</td>
<td>nsExtensionManager.js</td>
<td>EM_start</td>
<td style="text-align: right;">201.015</td>
<td style="text-align: right;">2.805&nbsp;(1.40%)</td>
<td style="text-align: right;">196.609</td>
<td style="text-align: right;">208.310</td>
</tr>
<tr>
<td>final-ui-startup</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">183.553</td>
<td style="text-align: right;">0.932&nbsp;(0.51%)</td>
<td style="text-align: right;">181.029</td>
<td style="text-align: right;">186.338</td>
</tr>
<tr>
<td>final-ui-startup</td>
<td>nsBrowserGlue.js</td>
<td>observe</td>
<td style="text-align: right;">167.908</td>
<td style="text-align: right;">0.907&nbsp;(0.54%)</td>
<td style="text-align: right;">165.127</td>
<td style="text-align: right;">170.474</td>
</tr>
<tr>
<td>final-ui-startup</td>
<td>nsSessionStartup.js</td>
<td>observe</td>
<td style="text-align: right;">13.533</td>
<td style="text-align: right;">0.179&nbsp;(1.32%)</td>
<td style="text-align: right;">13.235</td>
<td style="text-align: right;">13.995</td>
</tr>
<tr>
<td>final-ui-startup</td>
<td>fuelApplication.js</td>
<td>observe</td>
<td style="text-align: right;">1.637</td>
<td style="text-align: right;">0.110&nbsp;(6.73%)</td>
<td style="text-align: right;">1.564</td>
<td style="text-align: right;">1.873</td>
</tr>
</table>
<p>&nbsp;<br />&nbsp;<br />
Totals for each component using their averages from the previous table.<br />
<br />
Samples: 50</p>
<table border="1" cellspacing="0" cellpadding="2" style="font-family: monospace;">
<tr>
<th>Component</th>
<th>JS_Execute</th>
<th>CallHooks</th>
<th>Total</th>
</tr>
<tr>
<td>fuelApplication.js</td>
<td style="text-align: right;">632.945</td>
<td style="text-align: right;">24.343</td>
<td style="text-align: right;">657.288</td>
</tr>
<tr>
<td>nsExtensionManager.js</td>
<td style="text-align: right;">192.271</td>
<td style="text-align: right;">287.667</td>
<td style="text-align: right;">479.937</td>
</tr>
<tr>
<td>nsBrowserGlue.js</td>
<td style="text-align: right;">48.739</td>
<td style="text-align: right;">189.976</td>
<td style="text-align: right;">238.715</td>
</tr>
<tr>
<td>nsPrivateBrowsingService.js</td>
<td style="text-align: right;">30.141</td>
<td style="text-align: right;">36.582</td>
<td style="text-align: right;">66.723</td>
</tr>
<tr>
<td>nsSessionStartup.js</td>
<td style="text-align: right;">27.703</td>
<td style="text-align: right;">26.334</td>
<td style="text-align: right;">54.037</td>
</tr>
<tr>
<td>WebContentConverter.js</td>
<td style="text-align: right;">33.150</td>
<td style="text-align: right;">9.549</td>
<td style="text-align: right;">42.698</td>
</tr>
<tr>
<td>nsUpdateTimerManager.js</td>
<td style="text-align: right;">19.618</td>
<td style="text-align: right;">11.913</td>
<td style="text-align: right;">31.531</td>
</tr>
<tr>
<td>nsTryToClose.js</td>
<td style="text-align: right;">12.994</td>
<td style="text-align: right;">10.511</td>
<td style="text-align: right;">23.505</td>
</tr>
<tr>
<td>nsUpdateServiceStub.js</td>
<td style="text-align: right;">9.062</td>
<td style="text-align: right;">9.599</td>
<td style="text-align: right;">18.660</td>
</tr>
</table>
<p>&nbsp;<br />&nbsp;<br />
One thing that stands out is that <code>fuelApplication.js</code> appears to be paying a penalty for being the first JavaScript component to load. To verify this I made <code>nsSessionStartup.js</code> load first, <code>fuelApplication.js</code> load second, and analyzed the new data. The results showed that the load first penalty is &#8776; 558ms for JS_Execute and &#8776; 10ms for the first CallHook.<br />
<br />
Totals for each component using their averages with <code>nsSessionStartup.js</code> loading first and <code>fuelApplication.js</code> loading second (complete table not shown).<br />
<br />
Samples: 50</p>
<table border="1" cellspacing="0" cellpadding="2" style="font-family: monospace;">
<tr>
<th>Component</th>
<th>JS_Execute</th>
<th>CallHooks</th>
<th>Total</th>
</tr>
<tr>
<td>nsSessionStartup.js</td>
<td style="text-align: right;">584.927</td>
<td style="text-align: right;">37.141</td>
<td style="text-align: right;">622.067</td>
</tr>
<tr>
<td>nsExtensionManager.js</td>
<td style="text-align: right;">192.704</td>
<td style="text-align: right;">288.571</td>
<td style="text-align: right;">481.275</td>
</tr>
<tr>
<td>nsBrowserGlue.js</td>
<td style="text-align: right;">48.255</td>
<td style="text-align: right;">189.883</td>
<td style="text-align: right;">238.138</td>
</tr>
<tr>
<td>fuelApplication.js</td>
<td style="text-align: right;">74.777</td>
<td style="text-align: right;">15.408</td>
<td style="text-align: right;">90.185</td>
</tr>
<tr>
<td>nsPrivateBrowsingService.js</td>
<td style="text-align: right;">30.115</td>
<td style="text-align: right;">36.482</td>
<td style="text-align: right;">66.597</td>
</tr>
<tr>
<td>WebContentConverter.js</td>
<td style="text-align: right;">33.068</td>
<td style="text-align: right;">9.534</td>
<td style="text-align: right;">42.601</td>
</tr>
<tr>
<td>nsUpdateTimerManager.js</td>
<td style="text-align: right;">19.615</td>
<td style="text-align: right;">11.916</td>
<td style="text-align: right;">31.530</td>
</tr>
<tr>
<td>nsTryToClose.js</td>
<td style="text-align: right;">12.987</td>
<td style="text-align: right;">10.508</td>
<td style="text-align: right;">23.495</td>
</tr>
<tr>
<td>nsUpdateServiceStub.js</td>
<td style="text-align: right;">8.949</td>
<td style="text-align: right;">9.653</td>
<td style="text-align: right;">18.602</td>
</tr>
</table>
<p>&nbsp;<br />&nbsp;<br />
There are a couple of things that can be done to the <code>nsExtensionManager.js</code> component that I&#8217;ll write about later. Besides optimizing a couple of these components I think that the <code>fuelApplication.js</code> component should either be re-written as a JavaScript module or be removed entirely. With its removal from the startup path startup time is reduced by &#8776; 140ms on WinCE Firefox trunk with a Tegra device as can be seen below. I suspect that this would also reduce startup on a few of the Firefox desktop platforms by &#8776; 1%.<br />
<br />
Filed: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=536504">Bug 536504</a> [Firefox] &#8211; Remove fuelApplications.js from the startup path [All]<br />
<br />
Samples: 30</p>
<table border="1" cellspacing="0" cellpadding="2" style="font-family: monospace;">
<tr>
<th>stage</th>
<th>file</th>
<th>function</th>
<th>avg</th>
<th>stdev</th>
<th>min</th>
<th>max</th>
</tr>
<tr>
<td>start&nbsp;to&nbsp;final</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">3806.027</td>
<td style="text-align: right;">54.004&nbsp;(1.42%)</td>
<td style="text-align: right;">3673.833</td>
<td style="text-align: right;">3919.366</td>
</tr>
<tr>
<td>app-startup
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">824.938</td>
<td style="text-align: right;">9.636&nbsp;(1.17%)</td>
<td style="text-align: right;">807.022</td>
<td style="text-align: right;">844.464</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsSessionStartup.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">569.328</td>
<td style="text-align: right;">6.921&nbsp;(1.22%)</td>
<td style="text-align: right;">554.889</td>
<td style="text-align: right;">580.804</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsSessionStartup.js</td>
<td>init|observe</td>
<td style="text-align: right;">23.529</td>
<td style="text-align: right;">1.419&nbsp;(6.03%)</td>
<td style="text-align: right;">21.495</td>
<td style="text-align: right;">26.296</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsBrowserGlue.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">52.306</td>
<td style="text-align: right;">3.796&nbsp;(7.26%)</td>
<td style="text-align: right;">36.339</td>
<td style="text-align: right;">59.105</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsBrowserGlue.js</td>
<td>init|observe</td>
<td style="text-align: right;">22.714</td>
<td style="text-align: right;">0.112&nbsp;(0.50%)</td>
<td style="text-align: right;">22.513</td>
<td style="text-align: right;">22.945</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsPrivateBrowsingService.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">28.945</td>
<td style="text-align: right;">0.163&nbsp;(0.56%)</td>
<td style="text-align: right;">28.527</td>
<td style="text-align: right;">29.397</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsPrivateBrowsingService.js</td>
<td>init|observe</td>
<td style="text-align: right;">20.176</td>
<td style="text-align: right;">0.110&nbsp;(0.55%)</td>
<td style="text-align: right;">19.980</td>
<td style="text-align: right;">20.384</td>
</tr>
<tr>
<td>app-startup</td>
<td>WebContentConverter.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">35.192</td>
<td style="text-align: right;">0.173&nbsp;(0.49%)</td>
<td style="text-align: right;">34.916</td>
<td style="text-align: right;">35.591</td>
</tr>
<tr>
<td>app-startup</td>
<td>WebContentConverter.js</td>
<td>init|observe</td>
<td style="text-align: right;">9.532</td>
<td style="text-align: right;">0.128&nbsp;(1.34%)</td>
<td style="text-align: right;">9.305</td>
<td style="text-align: right;">9.968</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsTryToClose.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">13.500</td>
<td style="text-align: right;">0.560&nbsp;(4.14%)</td>
<td style="text-align: right;">13.083</td>
<td style="text-align: right;">14.826</td>
</tr>
<tr>
<td>app-startup</td>
<td>nsTryToClose.js</td>
<td>init|observe</td>
<td style="text-align: right;">9.889</td>
<td style="text-align: right;">0.317&nbsp;(3.20%)</td>
<td style="text-align: right;">9.559</td>
<td style="text-align: right;">10.702</td>
</tr>
<tr>
<td>profile-after-change
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">343.520</td>
<td style="text-align: right;">5.753&nbsp;(1.67%)</td>
<td style="text-align: right;">330.411</td>
<td style="text-align: right;">360.803</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsPrivateBrowsingService.js</td>
<td>observe</td>
<td style="text-align: right;">5.880</td>
<td style="text-align: right;">0.442&nbsp;(7.51%)</td>
<td style="text-align: right;">4.748</td>
<td style="text-align: right;">6.569</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsExtensionManager.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">196.433</td>
<td style="text-align: right;">5.820&nbsp;(2.96%)</td>
<td style="text-align: right;">184.414</td>
<td style="text-align: right;">215.039</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsExtensionManager.js</td>
<td>init|observe</td>
<td style="text-align: right;">86.338</td>
<td style="text-align: right;">0.264&nbsp;(0.31%)</td>
<td style="text-align: right;">85.751</td>
<td style="text-align: right;">86.854</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateTimerManager.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">19.623</td>
<td style="text-align: right;">0.094&nbsp;(0.48%)</td>
<td style="text-align: right;">19.428</td>
<td style="text-align: right;">19.792</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateTimerManager.js</td>
<td>init|observe</td>
<td style="text-align: right;">11.814</td>
<td style="text-align: right;">0.111&nbsp;(0.94%)</td>
<td style="text-align: right;">11.701</td>
<td style="text-align: right;">11.701</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateServiceStub.js</td>
<td>JS_Execute</td>
<td style="text-align: right;">7.826</td>
<td style="text-align: right;">0.083&nbsp;(1.06%)</td>
<td style="text-align: right;">7.608</td>
<td style="text-align: right;">8.059</td>
</tr>
<tr>
<td>profile-after-change</td>
<td>nsUpdateServiceStub.js</td>
<td>init</td>
<td style="text-align: right;">9.714</td>
<td style="text-align: right;">0.080&nbsp;(0.82%)</td>
<td style="text-align: right;">9.588</td>
<td style="text-align: right;">9.882</td>
</tr>
<tr>
<td>command-line-startup
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">4.940</td>
<td style="text-align: right;">0.073&nbsp;(1.48%)</td>
<td style="text-align: right;">4.837</td>
<td style="text-align: right;">5.111</td>
</tr>
<tr>
<td>command-line-startup</td>
<td>nsPrivateBrowsingService.js</td>
<td>observe</td>
<td style="text-align: right;">4.940</td>
<td style="text-align: right;">0.073&nbsp;(1.48%)</td>
<td style="text-align: right;">4.837</td>
<td style="text-align: right;">5.111</td>
</tr>
<tr>
<td>called-from-native</td>
<td>nsPrivateBrowsingService.js</td>
<td>get_PB_Enabled</td>
<td style="text-align: right;">2.137</td>
<td style="text-align: right;">0.103&nbsp;(4.81%)</td>
<td style="text-align: right;">2.054</td>
<td style="text-align: right;">2.390</td>
</tr>
<tr>
<td>called-from-native</td>
<td>nsExtensionManager.js</td>
<td>EM_start</td>
<td style="text-align: right;">197.268</td>
<td style="text-align: right;">2.809&nbsp;(1.42%)</td>
<td style="text-align: right;">193.497</td>
<td style="text-align: right;">204.272</td>
</tr>
<tr>
<td>final-ui-startup
<td>&nbsp;</td>
<td>&nbsp;</td>
<td style="text-align: right;">177.882</td>
<td style="text-align: right;">0.716&nbsp;(0.40%)</td>
<td style="text-align: right;">177.263</td>
<td style="text-align: right;">180.097</td>
</tr>
<tr>
<td>final-ui-startup</td>
<td>nsBrowserGlue.js</td>
<td>observe</td>
<td style="text-align: right;">164.155</td>
<td style="text-align: right;">0.631&nbsp;(0.38%)</td>
<td style="text-align: right;">163.518</td>
<td style="text-align: right;">166.598</td>
</tr>
<tr>
<td>final-ui-startup</td>
<td>nsSessionStartup.js</td>
<td>observe</td>
<td style="text-align: right;">13.495</td>
<td style="text-align: right;">0.399&nbsp;(2.96%)</td>
<td style="text-align: right;">13.215</td>
<td style="text-align: right;">15.489</td>
</tr>
</table>
<p>&nbsp;<br />&nbsp;<br />
Totals for each component using their averages without <code>fuelApplication.js</code> from the previous table.<br />
<br />
Samples: 30</p>
<table border="1" cellspacing="0" cellpadding="2" style="font-family: monospace;">
<tr>
<th>Component</th>
<th>JS_Execute</th>
<th>CallHooks</th>
<th>Total</th>
</tr>
<tr>
<td>nsSessionStartup.js</td>
<td style="text-align: right;">569.328</td>
<td style="text-align: right;">37.024</td>
<td style="text-align: right;">606.352</td>
</tr>
<tr>
<td>nsExtensionManager.js</td>
<td style="text-align: right;">196.433</td>
<td style="text-align: right;">283.605</td>
<td style="text-align: right;">480.038</td>
</tr>
<tr>
<td>nsBrowserGlue.js</td>
<td style="text-align: right;">52.306</td>
<td style="text-align: right;">186.869</td>
<td style="text-align: right;">239.174</td>
</tr>
<tr>
<td>nsPrivateBrowsingService.js</td>
<td style="text-align: right;">28.945</td>
<td style="text-align: right;">33.134</td>
<td style="text-align: right;">62.080</td>
</tr>
<tr>
<td>WebContentConverter.js</td>
<td style="text-align: right;">35.192</td>
<td style="text-align: right;">9.532</td>
<td style="text-align: right;">44.724</td>
</tr>
<tr>
<td>nsUpdateTimerManager.js</td>
<td style="text-align: right;">19.623</td>
<td style="text-align: right;">11.814</td>
<td style="text-align: right;">31.437</td>
</tr>
<tr>
<td>nsTryToClose.js</td>
<td style="text-align: right;">13.500</td>
<td style="text-align: right;">9.889</td>
<td style="text-align: right;">23.389</td>
</tr>
<tr>
<td>nsUpdateServiceStub.js</td>
<td style="text-align: right;">7.826</td>
<td style="text-align: right;">9.714</td>
<td style="text-align: right;">17.539</td>
</tr>
</table>
<p>&nbsp;<br />&nbsp;<br />
The profile logs used for this analysis include additional details including call stacks and are available for download&#8230;<br /> <a href="http://exchangecode.com/robert/work/ce_logs/profile_logs.zip">profile logs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2009/12/23/firefox-javascript-component-startup-costs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>status update – week of 12/18</title>
		<link>http://blog.mozilla.com/rstrong/2009/12/18/status-update-%e2%80%93-week-of-1218/</link>
		<comments>http://blog.mozilla.com/rstrong/2009/12/18/status-update-%e2%80%93-week-of-1218/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 20:20:33 +0000</pubDate>
		<dc:creator>rstrong</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/rstrong/?p=121</guid>
		<description><![CDATA[Progress:


Landed on 1.9.0 for Firefox 3.0.18, 1.9.0 GECKO190_20091130_RELBRANCH for Firefox 3.0.17, 1.9.1 for Firefox 3.5.8, 1.9.1 GECKO1916_20091130_RELBRANCH for Firefox 3.5.7, 1.9.2 for Firefox 3.6, and trunk (yes, it is a tad ridiculous listing them all but it was even more ridiculous having to land this six times) &#8211; Bug 534090 [Toolkit] &#8211; do not use [...]]]></description>
			<content:encoded><![CDATA[<p>Progress:<br />
<hr />
<ul>
<li>Landed on 1.9.0 for Firefox 3.0.18, 1.9.0 GECKO190_20091130_RELBRANCH for Firefox 3.0.17, 1.9.1 for Firefox 3.5.8, 1.9.1 GECKO1916_20091130_RELBRANCH for Firefox 3.5.7, 1.9.2 for Firefox 3.6, and trunk (yes, it is a tad ridiculous listing them all but it was even more ridiculous having to land this six times) &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=534090">Bug 534090</a> [Toolkit] &#8211; do not use background notification for major updates (was PMU 3.0->3.5 major update has been really poor) [All].</li>
<li>Performed a bunch of startup JavaScript component profiling and I&#8217;ll blog about my findings after I have correlated the data.</li>
<li><b>Edited to add</b> &#8211; Landed on trunk &#8211; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=529942">Bug 529942</a> [Toolkit] &#8211; Remove nsIApplicationUpdateService2 on trunk [All]</li>
</ul>
<p>Future targets:<br />
<hr />
<ul>
<li>Define app update work for Q1 2010.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/rstrong/2009/12/18/status-update-%e2%80%93-week-of-1218/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
