<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Neil&#039;s Place</title>
	<atom:link href="http://enndeakin.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://enndeakin.wordpress.com</link>
	<description></description>
	<lastBuildDate>Sat, 05 Nov 2011 15:04:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='enndeakin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Neil&#039;s Place</title>
		<link>http://enndeakin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://enndeakin.wordpress.com/osd.xml" title="Neil&#039;s Place" />
	<atom:link rel='hub' href='http://enndeakin.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Window Reflows on Startup</title>
		<link>http://enndeakin.wordpress.com/2011/11/03/window-reflows-on-startup/</link>
		<comments>http://enndeakin.wordpress.com/2011/11/03/window-reflows-on-startup/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 18:02:43 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=175</guid>
		<description><![CDATA[I took a look at what happens on Firefox startup on Mac with a profile I&#8217;ve used for testing for a while. Specifically, how often and why the root element (&#60;window&#62;) in the browser window is asked to be laid out. Each line below is an attempt to lay out (reflow) the root element. A [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=175&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
I took a look at what happens on Firefox startup on Mac with a profile I&#8217;ve used for testing for a while. Specifically, how often and why the root element (&lt;window&gt;) in the browser window is asked to be laid out. Each line below is an attempt to lay out (reflow) the root element. A reflow can happen as a result of a number of different things such as new elements being inserted, images being loaded and so forth. What happens is that the document layout objects are marked as dirty as necessary, then at a future point, a reflow occurs. This allows a script to make a number of changes without having each change cause a full refresh. I&#8217;ve broken down each attempt to mark the root element (or some other reflow root) as dirty, separated by commas in each line. In the table below, a reflow occurs 15 times.
</p>
<table border="1" width="60%" align="center">
<thead>
<tr>
<th>Action</p>
<th>Time to finish
</thead>
<tr>
<td>Hidden Window</p>
<td>0.55ms</p>
<tr>
<td>Main Window is parsed and laid out</p>
<td>14.95ms</p>
<tr>
<td>Attribute changed, and loaded page (about:blank) is laid out</p>
<td>0.78ms</p>
<tr>
<td>Search icon is set</p>
<td>0.35ms</p>
<tr>
<td>Scrollbar attributes changed, toolbarspring is inserted, window&#8217;s load event fires and listeners called and finished </p>
<td>2.21.ms</p>
<tr>
<td>Scrollbar attributes changed, tabview.png is set</p>
<td>0.34ms</p>
<tr>
<td>folderDropArrow.png is set</p>
<td>0.27ms</p>
<tr>
<td>browser.js delayedStartup() is called, splitter is inserted into urlbar</p>
<td>0.24ms</p>
<tr>
<td>menupopup is appended to back button, delayedStartup() finishes, bookmarks toolbar handling begins</p>
<td>5.77ms</p>
<tr>
<td>chrome://browser/skin/places/query.png is set</p>
<td>0.56ms</p>
<tr>
<td>chrome://browser/skin/page-livemarks.png is set</p>
<td>0.39ms</p>
<tr>
<td>chrome://global/skin/tree/folder.png is set</p>
<td>0.46ms</p>
<tr>
<td>Call to flush frames</p>
<td>0.33ms</p>
<tr>
<td>Bookmark icon is set</p>
<td>0.48ms</p>
<tr>
<td>Bookmark icon is set</p>
<td>0.37ms<br />
</table>
<p>
The last few images are all the assignment of the icons on the bookmarks toolbar. These don&#8217;t occur if the toolbar is hidden. In total, approximately 400 changes to an element&#8217;s attribute are made and 41 nodes are appended to the document after it is parsed.
</p>
<p>
Now let&#8217;s take a look at the mobile version, running on an Android tablet. Here, 24 reflows occur over the 2200ms startup time.
</p>
<table border="1" width="60%" align="center">
<thead>
<tr>
<th>Action</p>
<th>Time to finish
</thead>
<tr>
<td>Insert html element into main window?, insert html element into hidden window?, parse and lay out main window</p>
<td>7.43ms (also 183.7ms reading xbl)</p>
<tr>
<td>Four dirty marks caused by scrollbar attribute changes</p>
<td>1.07ms</p>
<tr>
<td>Remove text node (a &lt;br&gt; is appended to a &lt;div&gt; immediately following), append &lt;documenttab&gt;</p>
<td>2.55ms</p>
<tr>
<td>Append &lt;notificationbox&gt;</p>
<td>0.78ms</p>
<tr>
<td>Some attributes on &lt;label&gt; and &lt;image&gt; elements are changed, some &lt;label&gt; elements are removed</p>
<td>1.20ms</p>
<tr>
<td>scrollbar.pageincrement is changed</p>
<td>0.28ms</p>
<tr>
<td>SizeToContent is called</p>
<td>0.22ms</p>
<tr>
<td>Unknown reason, but probably caused by bug <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=230959">230959<a> </p>
<td>0.94ms</p>
<tr>
<td>slider.pageincrement is changed, attributes on &lt;tablet&gt; are changed</p>
<td>5.329ms</p>
<tr>
<td>Three dirty marks caused by scrollbar attribute changes</p>
<td>1.65ms</p>
<tr>
<td>Attribute changed on a &lt;scrollbox&gt;</p>
<td>1.19ms</p>
<tr>
<td>Attribute changed on a &lt;scrollbox&gt;</p>
<td>0.57ms</p>
<tr>
<td>Attributes left, width and height changed on a &lt;vbox&gt;</p>
<td>1.40ms</p>
<tr>
<td>Two scrollbar related dirty marks, mode attribute changed on various things (no dirty mark), loading attribute on an &lt;image&gt;</p>
<td>1.88ms</p>
<tr>
<td>mode attribute changed on various things (no dirty mark), loading attribute on an &lt;image&gt;</p>
<td>0.76ms</p>
<tr>
<td>Some &lt;image&gt; elements are inserted and removed</p>
<td>0.72ms</p>
<tr>
<td>Unknown reason, probably a flush caused by retrieving some layout information</p>
<td>0.53ms</p>
<tr>
<td>Unknown reason, probably a flush caused by retrieving some layout information</p>
<td>0.68ms</p>
<tr>
<td>Loaded page starts appearing, &lt;toolbarbutton&gt; label changed</p>
<td>2.27ms</p>
<tr>
<td>Text node appended to page</p>
<td>0.51ms</p>
<tr>
<td>Text node removed from page, height changed on an &lt;hbox&gt; related to a nearby &lt;canvas&gt;.</p>
<td>1.54ms</p>
<tr>
<td>mode attribute changed on various things (no dirty mark), loading attribute on an &lt;image&gt;</p>
<td>0.74ms</p>
<tr>
<td>&lt;box&gt; is marked not hidden (think this is the autocomplete widget), insert frames into box, some attributes on &lt;richlistitem&gt; and &lt;menuitem&gt; are changed</p>
<td>33.78ms (also 265.18ms reading xbl)</p>
<tr>
<td>Eight dirty marks caused by scrollbar attribute changes</p>
<td>2.70ms<br />
</table>
<p>
Observations:
</p>
<ul>
<li>There are lots of changes to scrollbars here, despite no scrollbars on mobile Firefox being visible. The set listed in the last row is likely caused by the resize caused by the on-screen keyboard appearing. 120ms of time occurs from when this begins to when this ends, although it is likely that only a small amount of this is directly scrollbar related.
<li>I didn&#8217;t measure XBL parsing time on desktop Firefox in this test, but it typically takes about 10% of the startup time. Of course, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=94199">XBL caching</a> should reduce the time to load XBL here. It should be noted though that parsing and creating the main document takes 25% of the rest of the time.
<li>The time between reflow 2 and reflow 18 is 550ms. I&#8217;m not familiar enough with the mobile code, but this appears to be the time to process and manipulate things after the main document is parsed, equivalent to desktop Firefox&#8217;s handling in browser.js.
<li>The last two rows are for the autocomplete and on-screen keyboard appearing. It takes up 675ms of time, but the main window has already appeared, so the user&#8217;s perception of the time to start up may not need to include this time.
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=175&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/11/03/window-reflows-on-startup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
		<item>
		<title>XBL Performance Tips</title>
		<link>http://enndeakin.wordpress.com/2011/10/04/xbl-performance-tips/</link>
		<comments>http://enndeakin.wordpress.com/2011/10/04/xbl-performance-tips/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 21:13:08 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=150</guid>
		<description><![CDATA[As I&#8217;ve been investigating XBL caching, I&#8217;ve been looking into some additional performance characteristics. Here are some tips on improving your use of XBL in Mozilla, relying on specific implementation details to gain performance benefits. You probably won&#8217;t notice much difference, but lots of minor changes can add up. Properties and methods, that is the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=150&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve been investigating XBL caching, I&#8217;ve been looking into some additional performance characteristics. Here are some tips on improving your use of XBL in Mozilla, relying on specific implementation details to gain performance benefits. You probably won&#8217;t notice much difference, but lots of minor changes can add up.</p>
<p>Properties and methods, that is the code in &lt;property&gt; and method &lt;body&gt; elements are compiled once per session. The code is compiled once when the first element that uses the binding is added into a document. For elements included in a XUL document, this means that they will be compiled while the window is being created and opened. Constructors and destructors are treated similarly.</p>
<p>Fields and handlers (&lt;field&gt; and &lt;handler&gt; elements) however are not compiled when the element is added. Instead, they are compiled on demand when they are used. This means that both fields and handlers do not directly affect the time to open a window, but can instead, in the case of handlers, affect the time to respond to an event.</p>
<h3>Fields</h3>
<p>The field element defines a value on a element. The code for it is compiled when the field is first accessed, not when it is defined. For example, assume a field exists such as that below:</p>
<pre><code> &lt;field name="someValue"&gt;10 * 50&lt;/field&gt;</code></pre>
<p>The code &#8217;10 * 50&#8242; will be compiled and evaluated when code that checks &#8216;element.someValue&#8217; is encountered. Naturally, if this happens during the binding constructor, this will affect creation time. Although I haven&#8217;t investigated this, if this is the case, it might be better to just initialize the field directly in the constructor to save the overhead of having to evaluate the field separately.</p>
<p>However, for fields that are rarely accessed, initialization within the field itself is generally more optimal.</p>
<p>A very important note however, is that the field value is compiled and evaluated not once per session or even once per window. The code in a field body is compiled and evaluated once for every element that uses it. Sometimes, people write large blocks of initialization code directly in the field element. If this field isn&#8217;t accessed often, or the binding is only used once or twice in a window, this won&#8217;t matter too much. But if the binding is used frequently, this can have notable impact on performance. Instead, call a method from the field initializer such that at least the compilation is only performed once.</p>
<p>It also goes without saying that enumerating an object with a binding will invoke all of the fields and evaluate all of their code.</p>
<h3>Handlers</h3>
<p>Event handlers defined in XBL are compiled the first time the event occurs. So, for example, a handler for a keydown event will get compiled when the element is focused and a key is pressed down. This saves time when creating the element for rarely used event handlers.</p>
<p>Unlike fields, handlers are only compiled once per window, even when multiple elements exist within the same window. This means that putting all of your code in a method and having handlers that simply wrap the method requires more time to create as methods are compiled when created. If improved creation or startup time is more important to you, then place the code in the handler instead.</p>
<p>It helps to use the event filtering attributes on the &lt;handler&gt; element when possible. These will filter out events that aren&#8217;t what the handler code is interested in, and avoids the need to compile and call the script code at all, as these filters are implemented entirely in native code. Attributes for filtering available include: modifiers, button, clickcount, keycode, charcode, and phase.</p>
<p>The description above mainly applies to compile time of the various XBL parts. In all cases, for fields, properties, methods and handlers, the compiled code must still be attached to the content each time the binding is used.</p>
<p>In summary, the choice of how to structure the specific parts of the XBL depends on where better performance is needed.</p>
<h3>The display and extends attributes</h3>
<p>This isn&#8217;t a entirely a performance tip but sometimes the display attribute (or the extends attribute) on a binding is used when it doesn&#8217;t need to be, for example:</p>
<pre><code> &lt;binding extends="xul:box"&gt; </code></pre>
<p>This particular example doesn&#8217;t generally do anything for XUL elements as they are already boxes. The example above might do something if you had changed the display type in a some other manner, but that is a very rare occurrence. The colon-form syntax used here does not mean that it extends some other binding or element. In fact, where it does have a use doesn&#8217;t relate to XBL at all. Instead, it specifies which internal layout objects get created for the element.</p>
<p>Although in the past any element could be used for the display/extends colon-syntax, today there are only sixteen tags that are allowed, only half of which are actually useful. (The list of tags to allow was generated by searching the Mozilla source for usage rather than fixing up the cases where it was used and wasn&#8217;t necessary).</p>
<p>One such tag that might be worth investigating for performance is using display=&#8221;xul:spacer&#8221; on a binding. It creates a layout object that will never have children. If you know your binding will have no children, either regular or anonymous, it saves a very tiny amount of extra time and storage (60 bytes or so per element).</p>
<p>Many specific additional tips could be made but it is hard to measure the exact benefit in many cases. I&#8217;ve investigated some cases with xbl inheritance, but haven&#8217;t found any specific tips there yet. I&#8217;m continuing to look into other areas.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/150/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=150&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/10/04/xbl-performance-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
		<item>
		<title>Status Report for July 17</title>
		<link>http://enndeakin.wordpress.com/2011/07/17/status-report-for-july-17/</link>
		<comments>http://enndeakin.wordpress.com/2011/07/17/status-report-for-july-17/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 23:48:03 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Status Updates]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=163</guid>
		<description><![CDATA[This week I mainly did two things: Made a few minor changes to the patch to handle using popups as drag feedback, to simplify the code. Posted patches to store and read XBL bindings to the startup cache. This is a work in progress, but I spent this week getting the patches to the point [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=163&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This week I mainly did two things:</p>
<ul>
<li>Made a few minor changes to the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533460">patch</a> to handle using popups as drag feedback, to simplify the code.</li>
<li>Posted <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=94199">patches</a> to store and read XBL bindings to the startup cache. This is a work in progress, but I spent this week getting the patches to the point where they don&#8217;t cause any test failures. There is still some work to be done: various warnings occur when reading the bindings, error handling needs to be improved, there may be a minor memory leak to investigate and, for whatever reason, the cache is only read the second time rather than the first time it is available. The latter is some remnant of the switch to using a startup cache, which stores the cached data in a zip file, rather than the specialized format fastload file.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=163&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/07/17/status-report-for-july-17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
		<item>
		<title>Status Update for July 8</title>
		<link>http://enndeakin.wordpress.com/2011/07/08/status-update-for-july-8/</link>
		<comments>http://enndeakin.wordpress.com/2011/07/08/status-update-for-july-8/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 00:14:15 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Status Updates]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=154</guid>
		<description><![CDATA[This week I mostly finished off a patch to handle panels as drag feedback images. Currently, when dragging, a feedback image is created from the element being dragged, or a script may change the feedback image with the setDragImage function. However, the image is always a static image. With this patch, if you pass a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=154&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This week I mostly finished off a patch to handle panels as drag feedback images. Currently, when dragging, a feedback image is created from the element being dragged, or a script may change the feedback image with the setDragImage function. However, the image is always a static image. With this patch, if you pass a &lt;panel&gt; element to the setDragImage function, the panel will be used directly as the drag feedback, allowing the feedback image to be changed while dragging.</p>
<p>This will allow you to not only change the content and appearance of the drag feedback image while the drag is occurring, but also the position and size. This should allow for some interesting drag effects.</p>
<p>The only other step besides using the setDragImage function, is to ensure that you set type=&#8221;drag&#8221; on the &lt;panel&gt; element. This ensures that the popup behaves as a drag feedback image. Otherwise, drag events will get fired on the panel itself, and you will likely want them to be ignored and instead fired on what you are dragging over underneath the panel.</p>
<p>See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533460">bug 533460</a> for more details. Some <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/try-builds/neil@mozilla.com-3350048387c4">builds</a> are also available with these feature.</p>
<p>Some other things I have done recently:</p>
<ul>
<li>Put up a some <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=407983">updated patches</a> for clipboard event handling.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655004">Fixed</a> some elements such as the datepicker and tree such that they cancel mouse scroll events and key events properly</li>
<li>An <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=666256">issue</a> where dropping on plugins was not allowed.</li>
<li>Some <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=670148"> cleanup of xul headers.</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=663728">Changed</a> xml-datasource template generation so that the ids from the source document are used. This allows persistence to work properly.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=154&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/07/08/status-update-for-july-8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
		<item>
		<title>Loading XBL Performance</title>
		<link>http://enndeakin.wordpress.com/2011/04/04/loading-xbl-performance/</link>
		<comments>http://enndeakin.wordpress.com/2011/04/04/loading-xbl-performance/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 19:56:55 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=123</guid>
		<description><![CDATA[A while ago I spent a bit of time looking at the performance of opening a new window recently. My first few experiments were actually a bit off track as I realized that I had my XUL cache disabled. This isn&#8217;t representative of most users, so isn&#8217;t completely valid for testing real performance, but it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=123&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A while ago I spent a bit of time looking at the performance of opening a new window recently. My first few experiments were actually a bit off track as I realized that I had my XUL cache disabled. This isn&#8217;t representative of most users, so isn&#8217;t completely valid for testing real performance, but it did get me thinking a bit.</p>
<p>In case you&#8217;re wondering, the XUL cache does two things. When a XUL file is loaded, it is parsed into an in-memory form and the scripts compiled into a bytecode-like form. When that file is needed again, the already parsed and compiled form is used instead of reading it again. The second step is that the parsed form is saved out to disk in a file. When the browser is restarted, this file is read instead. This way, the source form is not reparsed each time. This process happens for both XUL content and for Javascript. Instead of compiling the script into bytecode each time, the bytecode is serialized to disk and reused the next time. This process improves performance significantly at the cost of a couple of megabytes of disk space.</p>
<p>The file the parsed data is stored in, generally called the fastload file, is currently located in the same place as the network cache and can be found with the filename XUL.mfasl. You can safely delete it and it will get recreated when you start the browser again if you want to see how it affects startup time. (although that test will of course be affected by the time it takes to write it out again).</p>
<p>With the cache disabled, none of the above happens and the files must be reread from the source every time. However, when I had the cache disabled, I noticed that a significant amount of time was taken up by compiling the script associated with XBL bindings. Much less time was used with the cache enabled again.</p>
<p>Now, one thing of note here, is that, unlike XUL documents, only one part of the cache mechanism is used for XBL. XBL is only cached in memory and it isn&#8217;t saved out to the fastload file on disk. This means that this compilation time occurs upon each startup. I decided to investigate what would happen if XBL was also saved into the fastload file.</p>
<p>But first, let&#8217;s look at the performance with the current behaviour. Reading XBL generally has three steps, the first is to load and parse the source XML document and convert it into an internal representation. The second step is to attach the binding into the document and create the anonymous content. The third and final step is to compile the property and method scripts associated with the binding. Testing shows that the second step takes only 15 percent of the total time, so I&#8217;m going to focus on the first and last steps here. (Here I&#8217;m only considering the time spent executing within the area of code used to implement XBL.)</p>
<p><img src="http://chart.apis.google.com/chart?chxl=0:|urlbar|urlbar+popup|tree|tabbrowser-tabbox|tabbrowser|tabbrowser-tabs|1:|0|5|10|15|20|25|2:|milliseconds&amp;chxp=2,50&amp;chxr=0,0,160|1,0,25&amp;chxs=0,000000,14,1,lt,000000|1,000000,12,0,l,000000|2,000000,12,0,_,000000&amp;chxt=y,x,x&amp;chbh=a,14&amp;chs=600x300&amp;cht=bhs&amp;chco=3399CC,AAD891&amp;chds=0,25,0,25&amp;chd=t:16.8,0.7,1.6,9.2,19.9,8.9|2.6,17.3,3.1,5.5,0.6,4.9&amp;chdl=Parse+Time|Compile+Time&amp;chtt=Time+to+Load+Selected+XBL+Bindings&amp;chts=000000,16" alt="" /></p>
<p>This chart shows the time to read a few selected bindings used by the Firefox UI. The first three are some of the pieces that make up the tabbrowser, the fourth is the tree element, the fifth is the dropdown autocomplete popup for the URL address field, and the last is the URL address field itself. This chart only shows a selection of the more complex bindings; in reality about 60 bindings or so are read at startup to create a window.</p>
<p>The chart breaks down the time to load and parse the binding (the blue bar) and the time to compile the properties and method scripts associated with the bindings (the green bar).</p>
<p>The first binding &#8216;tabbrowser-tabs&#8217; takes a lot longer to parse than the following two tabbrowser related bindings. This should be expected since all three bindings are stored in the same XML file. As the document is only loaded and the XML parsed once per file, we expect that most of the parsing time will be for whatever binding is asked for first. The parse time for &#8216;tabbrowser&#8217; and &#8216;tabbrowser-tabbox&#8217; is mostly just overhead from having to locate the cached bindings previously read. (Remember that in-memory caching of XBL is performed currently.)</p>
<p>The compile time for the bindings, especially &#8216;tabbrowser&#8217; correlates to the amount of script used by that binding. As evidenced, the &#8216;tabbrowser&#8217; binding has a lot of methods, so significant time is spent on this.</p>
<p>The tree binding shows that a more complex binding that requires both parsing and compiling does indeed require notable time for both parsing and for script compiling.</p>
<p>As with the tabbrowser, the two urlbar bindings are contained within the same file, so the parsing time of the first takes the brunt of the total time. But notice that the &#8216;urlbar&#8217; also requires significant time to parse as well. Again, there is an explanation. This last binding inherits from the autocomplete binding, so the time here also includes the time to load and parse the base autocomplete binding as well.</p>
<p>As evidenced, script compilation is a significant part of reading a binding. It is this part that we hope to reduce by fastloading.</p>
<p>I implemented a simple XBL fastloading mechanism to see what would happen. The hope is that we can see faster loading if the parsing and compiling steps are replaced by a single mechanism to read data from the fastload file that is already in a format that is close to the in-memory representation used. We can&#8217;t eliminate the time entirely of course, as we still need to read the compiled form, but if the original testing is correct, we should be able to eliminate the time needed to compile the scripts at least. The following chart shows the results.</p>
<p><img src="http://chart.apis.google.com/chart?chxl=0:|urlbar|urlbar+popup|tree|tabbrowser-tabbox|tabbrowser|tabbrowser-tabs|1:|0|5|10|15|20|25|2:|milliseconds&amp;chxp=0,1,4,7,10,13,16|2,50&amp;chxr=0,0,17|1,0,25&amp;chxs=0,000000,14,1,lt,000000|1,000000,12,0,l,000000|2,000000,12,0,_,000000&amp;chxt=y,x,x&amp;chbh=a,4,10&amp;chs=600x400&amp;cht=bhs&amp;chco=3399CC,AAD891,FFAF88&amp;chds=0,25,0,25&amp;chd=t:16.8,0,0,0.7,0,0,1.6,0,0,9.2,0,0,19.9,0,0,8.9|2.6,0,0,17.3,0,0,3.1,0,0,5.5,0,0,0.6,0,0,4.9|0,11.6,0,0,0.7,0,0,1.5,0,0,6.7,0,0,16,0,0,7.1&amp;chdl=Parse+Time|Compile+Time|With+Fast+Load&amp;chtt=Time+to+Load+Selected+XBL+Bindings&amp;chts=000000,16" alt="" /></p>
<p>This chart includes a bar showing the time taken when fastloading the same set of bindings (the orange bar) with the original data for comparison.</p>
<p>We can clearly see that the compilation time is entirely gone. The &#8216;tabbrowser&#8217; binding shows this most obviously as it eliminates over 17 milliseconds off of the original time. But all of the other bindings have also saved this compilation time as well.</p>
<p>In all, it appears that the parse time is reduced by around 20 to 25 percent. In the two cases where parsing is not done, &#8216;tabbrowser&#8217; and &#8216;tabbrowser-tabbox&#8217;, there is no difference in parse time. Note that in the implementation I did, all of the loading for all bindings in a file happens when the first binding for that file is loaded, so the parse time for all three actually occurs during the first tabbrowser-tabs binding. The small amount that exists is from the overhead of retrieving a binding from a file in the cache that is already been read. That might be worth investigating as well, since this overhead occurs over 500 times just when starting up Firefox.</p>
<p><img src="http://chart.apis.google.com/chart?chxl=1:|Typical+Test|Startup|2:|milliseconds&amp;chxp=1,1,4|2,350&amp;chxr=0,0,700|1,0,5|2,0,700&amp;chxt=x,y,x&amp;chbh=a,4,10&amp;chs=440x180&amp;cht=bhs&amp;chco=3399CC,AAD891,FFAF88&amp;chds=0,700,0,700,0,700&amp;chd=t:244.1,0,0,505.8,0|81.7,0,0,132.6,0|0,236,0,0,480.1&amp;chdl=Parse+Time|Compile+Time|With+Fast+Load&amp;chtt=Total+Time+to+Load+XBL+Bindings&amp;chxs=0,000000,14,1,lt,000000|1,000000,12,0,l,000000|2,000000,12,0,_,000000&amp;chts=000000,16" alt="" /></p>
<p>This last chart shows the total time taken up by XBL parsing and compilation to load all of the bindings using two tests. The first is the time taken during startup. The second is a test which starts the browser, opens the bookmarks window, the sidebar, a couple of panes in the preferences window, a new blank window and then closes them again. As not all elements and bindings are used in the basic Firefox window, this latter test ensures we read a good selection of the additional bindings.</p>
<p>This chart shows that overall, using XBL fastloading removes the time needed for compilation, but has only a marginal effect on the total parsing time.</p>
<p>Note that this testing is only based on a few basic observations, but other tests I&#8217;ve done show that similar results occur at least on Windows and Mac, both with optimized and debug builds. Testing suggests about a 3-5% improvement in startup time once the fastload data is cached.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=123&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/04/04/loading-xbl-performance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>

		<media:content url="http://chart.apis.google.com/chart?chxl=0:&#124;urlbar&#124;urlbar+popup&#124;tree&#124;tabbrowser-tabbox&#124;tabbrowser&#124;tabbrowser-tabs&#124;1:&#124;0&#124;5&#124;10&#124;15&#124;20&#124;25&#124;2:&#124;milliseconds&#038;chxp=2,50&#038;chxr=0,0,160&#124;1,0,25&#038;chxs=0,000000,14,1,lt,000000&#124;1,000000,12,0,l,000000&#124;2,000000,12,0,_,000000&#038;chxt=y,x,x&#038;chbh=a,14&#038;chs=600x300&#038;cht=bhs&#038;chco=3399CC,AAD891&#038;chds=0,25,0,25&#038;chd=t:16.8,0.7,1.6,9.2,19.9,8.9&#124;2.6,17.3,3.1,5.5,0.6,4.9&#038;chdl=Parse+Time&#124;Compile+Time&#038;chtt=Time+to+Load+Selected+XBL+Bindings&#038;chts=000000,16" medium="image" />

		<media:content url="http://chart.apis.google.com/chart?chxl=0:&#124;urlbar&#124;urlbar+popup&#124;tree&#124;tabbrowser-tabbox&#124;tabbrowser&#124;tabbrowser-tabs&#124;1:&#124;0&#124;5&#124;10&#124;15&#124;20&#124;25&#124;2:&#124;milliseconds&#038;chxp=0,1,4,7,10,13,16&#124;2,50&#038;chxr=0,0,17&#124;1,0,25&#038;chxs=0,000000,14,1,lt,000000&#124;1,000000,12,0,l,000000&#124;2,000000,12,0,_,000000&#038;chxt=y,x,x&#038;chbh=a,4,10&#038;chs=600x400&#038;cht=bhs&#038;chco=3399CC,AAD891,FFAF88&#038;chds=0,25,0,25&#038;chd=t:16.8,0,0,0.7,0,0,1.6,0,0,9.2,0,0,19.9,0,0,8.9&#124;2.6,0,0,17.3,0,0,3.1,0,0,5.5,0,0,0.6,0,0,4.9&#124;0,11.6,0,0,0.7,0,0,1.5,0,0,6.7,0,0,16,0,0,7.1&#038;chdl=Parse+Time&#124;Compile+Time&#124;With+Fast+Load&#038;chtt=Time+to+Load+Selected+XBL+Bindings&#038;chts=000000,16" medium="image" />

		<media:content url="http://chart.apis.google.com/chart?chxl=1:&#124;Typical+Test&#124;Startup&#124;2:&#124;milliseconds&#038;chxp=1,1,4&#124;2,350&#038;chxr=0,0,700&#124;1,0,5&#124;2,0,700&#038;chxt=x,y,x&#038;chbh=a,4,10&#038;chs=440x180&#038;cht=bhs&#038;chco=3399CC,AAD891,FFAF88&#038;chds=0,700,0,700,0,700&#038;chd=t:244.1,0,0,505.8,0&#124;81.7,0,0,132.6,0&#124;0,236,0,0,480.1&#038;chdl=Parse+Time&#124;Compile+Time&#124;With+Fast+Load&#038;chtt=Total+Time+to+Load+XBL+Bindings&#038;chxs=0,000000,14,1,lt,000000&#124;1,000000,12,0,l,000000&#124;2,000000,12,0,_,000000&#038;chts=000000,16" medium="image" />
	</item>
		<item>
		<title>Fun with Toolbars</title>
		<link>http://enndeakin.wordpress.com/2011/03/02/fun-with-toolbars/</link>
		<comments>http://enndeakin.wordpress.com/2011/03/02/fun-with-toolbars/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 20:58:58 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=129</guid>
		<description><![CDATA[I started to work on a prototype for being able to dock panels onto a window, which might be used for the console panel. This would allow one to drag a panel around and snap it into a window so that it was no longer a separate piece of UI. While looking for a good [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=129&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I started to work on a prototype for being able to dock panels onto a window, which might be used for the <a href="http://mozilla.github.com/devtools/2011/ui.html">console panel</a>. This would allow one to drag a panel around and snap it into a window so that it was no longer a separate piece of UI.</p>
<p>While looking for a good means to test what I&#8217;d implemented, I realized that the simplest was to allow the toolbar to be pulled out of the window.</p>
<p><img src="http://enndeakin.files.wordpress.com/2011/03/dock-tools2.png" alt="" /></p>
<p>Or, when dragged near the bottom of the window, the toolbar snaps onto the bottom:</p>
<p><img src="http://enndeakin.files.wordpress.com/2011/03/dock-tools31.png" alt="" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=129&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/03/02/fun-with-toolbars/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>

		<media:content url="http://enndeakin.files.wordpress.com/2011/03/dock-tools2.png" medium="image" />

		<media:content url="http://enndeakin.files.wordpress.com/2011/03/dock-tools31.png" medium="image" />
	</item>
		<item>
		<title>Status Update for February 5</title>
		<link>http://enndeakin.wordpress.com/2011/02/05/status-update-for-january-21-2/</link>
		<comments>http://enndeakin.wordpress.com/2011/02/05/status-update-for-january-21-2/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 21:36:42 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Status Updates]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=118</guid>
		<description><![CDATA[Things I did this week: Worked on more arrow panel and popup positioning bugs: 524545, 628238, and 629002. A couple of issues with the printer dialog not receiving focus properly: 628157 and 626403. Fixed a problem where pressing the mouse button down to select text but releasing the mouse button on a different frame didn&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=118&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Things I did this week:</p>
<ul>
<li>Worked on more arrow panel and popup positioning bugs: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=524545">524545</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=628238">628238</a>, and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=629002">629002</a>.</li>
<li>A couple of issues with the printer dialog not receiving focus properly: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=628157">628157</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=626403">626403</a>.</li>
<li>Fixed a  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=624127">problem</a> where pressing the mouse button down to select text but releasing the mouse button on a different frame didn&#8217;t cancel selecting mode.</li>
<li>Created a patch for an <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=627065">issue</a> where some commands were not working from the context menu for a page loaded in the sidebar.</li>
<li>Fixed a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=619089">problem</a> where key events were being redirected when the focus changes between a content document and a chrome document during the keydown event. An <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=551434">earlier bug</a> had fixed the opposite case.</li>
<li>Spent a lot of time on the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=626956">leak</a> from the resizer patch. It turns out it might not be that patch after all but a global storage related change.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=118&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/02/05/status-update-for-january-21-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
		<item>
		<title>Status Update for January 21</title>
		<link>http://enndeakin.wordpress.com/2011/01/21/status-update-for-january-21/</link>
		<comments>http://enndeakin.wordpress.com/2011/01/21/status-update-for-january-21/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 04:11:25 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Status Updates]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=112</guid>
		<description><![CDATA[Some highlights of things I have been working on over the last few weeks: A number of bugs related to focus and mouse behaviour with the tab modal dialogs: Bug 617872, bug 620145, bug 622663 and bug 615186. Arrow panel related issues: Bug 616502 and Bug 616607. Testing why there was a performance issue on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=112&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some highlights of things I have been working on over the last few weeks:</p>
<ul>
<li>A number of bugs related to focus and mouse behaviour with the tab modal dialogs: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=617872">Bug 617872</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=620145">bug 620145</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=622663">bug 622663</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=615186">bug 615186</a>.</li>
<li>Arrow panel related issues: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=616502">Bug 616502</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=616607">Bug 616607</a>.</li>
<li>Testing why there was a performance issue on Linux with resizers in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=489303">bug 489303</a>. In addition, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=626997">bug 626997</a> where the resizer was allowing the window to be resized even when the window was maximized or in full screen mode.</li>
<li>A new property of menus, openedWithKey, was added which returns true if the menu was opened with the keyboard instead of the mouse. This always returns false on Mac. This was implemented in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=607224">bug 607224</a>.</li>
<li>In <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=618907">bug 618907</a>, an workaround was added to resolve an issue where canceling a mousedown event doesn&#8217;t move the focus to the window frame that was clicked. A better fix may be implemented in the future.</li>
<li>The patch to show resizers on Windows when the statusbar is hidden is causing a leak. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=626956">Bug 626956</a> if you want to help fix it.
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=112&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2011/01/21/status-update-for-january-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
		<item>
		<title>Status Update for November 26</title>
		<link>http://enndeakin.wordpress.com/2010/11/26/status-update-for-november-26/</link>
		<comments>http://enndeakin.wordpress.com/2010/11/26/status-update-for-november-26/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 23:28:13 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Status Updates]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=108</guid>
		<description><![CDATA[Bug 613748 &#8211; fixed some issues with keys not working in other tabs when one tab has a prompt displayed. Bug 561243 &#8211; clicking the mouse wasn&#8217;t focusing or adjusting the caret in the name field in the bookmarks popup. The issue was that the outline on the textbox was trapping the mouse event. Bug [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=108&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=613748">Bug 613748</a> &#8211; fixed some issues with keys not working in other tabs when one tab has a prompt displayed.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=561243">Bug 561243</a> &#8211; clicking the mouse wasn&#8217;t focusing or adjusting the caret in the name field in the bookmarks popup. The issue was that the outline on the textbox was trapping the mouse event.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=614152">Bug 614152</a> &#8211; after opening a menu from a notification, the page&#8217;s context menu was not working.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=527749">Bug 527749</a> &#8211; IE fires the dragleave event at the element being dragged out of after firing the dragenter event on the element being dragged into. The patch in this bug changes to match this behaviour, but as this makes the events fire backwards from what would seem logical and isn&#8217;t quite as useful, the older dragexit event is also available which remains unchanged; it still gets fired before the dragenter event as before.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=108&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2010/11/26/status-update-for-november-26/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
		<item>
		<title>Status Update for November 12</title>
		<link>http://enndeakin.wordpress.com/2010/11/12/status-update-for-november-12/</link>
		<comments>http://enndeakin.wordpress.com/2010/11/12/status-update-for-november-12/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 20:22:27 +0000</pubDate>
		<dc:creator>enndeakin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Status Updates]]></category>

		<guid isPermaLink="false">http://enndeakin.wordpress.com/?p=105</guid>
		<description><![CDATA[Bugs worked on this week: Bug 606343 &#8211; almost finished with arrow panel alignment as the current patch in the bug seems to work on all platforms. Bug 610378 &#8211; fixed an issue where drops were not being allowed when the effectAllowed property was being set. Bug 607224 &#8211; added support to handle pressing F10 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=105&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bugs worked on this week:</p>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=606343">Bug 606343</a> &#8211; almost finished with arrow panel alignment as the current patch in the bug seems to work on all platforms.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=610378">Bug 610378</a> &#8211; fixed an issue where drops were not being allowed when the effectAllowed property was being set.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=607224">Bug 607224</a> &#8211; added support to handle pressing F10 or the Alt key by itself to this bug which adds a flag to indicate if a menu is being used via the keyboard.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=611313">Bug 611313</a> &#8211; created a patch which might fix some issues that cause various template tests to occasionally fail.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=511010">Bug 511010</a> &#8211; worked on some display flickering when closing a menu from the bookmarks panel. I created a patch to not adjust window activation when closing a menu when clicking on a panel.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enndeakin.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enndeakin.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enndeakin.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enndeakin.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enndeakin.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enndeakin.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enndeakin.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enndeakin.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enndeakin.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enndeakin.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enndeakin.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enndeakin.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enndeakin.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enndeakin.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enndeakin.wordpress.com&amp;blog=6982180&amp;post=105&amp;subd=enndeakin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enndeakin.wordpress.com/2010/11/12/status-update-for-november-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Enn</media:title>
		</media:content>
	</item>
	</channel>
</rss>
