<?xml version="1.0"?>
<rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel>
	<title>Planet Firefox Mobile</title>
	<link>http://planet.firefox.com/mobile/</link>
	<language>en</language>
	<description>Planet Firefox Mobile - http://planet.firefox.com/mobile/</description>
	<atom:link rel="self" href="http://planet.firefox.com/mobile/rss20.xml" type="application/rss+xml"/>

<item>
	<title>Geoff Brown: Firefox for Android’s Disk Cache</title>
	<guid isPermaLink="false">http://gbrownmozilla.wordpress.com/?p=585</guid>
	<link>http://gbrownmozilla.wordpress.com/2013/06/19/firefox-for-androids-disk-cache/</link>
	<description>&lt;p&gt;Last year we enabled the Firefox disk cache on Android and improved its sizing (see for example, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=742560&quot; title=&quot;bug 742560&quot;&gt;bug 742560&lt;/a&gt;, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=745340&quot; title=&quot;bug 745340&quot;&gt;bug 745340&lt;/a&gt;, and &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=751603&quot; title=&quot;bug 751603&quot;&gt;bug 751603&lt;/a&gt;). Now that those changes are stable – no significant changes since Firefox 15 – this seems like a good time to review how Firefox for Android uses the disk cache, and why.&lt;/p&gt;
&lt;p&gt;The Firefox disk cache uses &lt;a href=&quot;http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html&quot;&gt;HTTP caching&lt;/a&gt; to reduce page load times by saving page resources to files, and then using the saved copies – as long as they are not stale – on subsequent page loads. On Android devices, file system access is generally slower than found in desktop environments, reducing the effectiveness of disk caching. However, network latency and bandwidth are also generally slower in mobile environments, making disk caching more likely to pay off. Our tests and telemetry suggest that disk caching reduces page load times overall, and disk caching is used by competitive mobile browsers.&lt;/p&gt;
&lt;p&gt;(Firefox also has a memory-based cache for network resources, but it is difficult to use effectively on Android, because there is usually not enough memory available to store entries long enough for them to be re-used.)&lt;/p&gt;
&lt;p&gt;The size of the disk cache is important, and tricky to get “right”. If the maximum size of the disk cache is too small, there isn’t enough space to effectively hold content, and stored entries may be evicted before they can be re-used. However, space on some Android devices is very limited, and we don’t want Firefox for Android to use more than its fair share.&lt;/p&gt;
&lt;p&gt;The disk cache has an optional “smart sizing” feature, which Firefox for Android uses by default, with slight modifications. With smart sizing, the maximum size of the disk cache is set dynamically, based on the amount of space available on the device’s /data partition. On devices with a great deal of storage, the cache may use up to 200 MB; devices with much less storage may be constrained to only 10 MB of cache files.&lt;/p&gt;
&lt;p&gt;The rules for calculating the maximum size of the cache are complicated to describe, but some examples will illustrate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2.5 GB or more available -&amp;gt; cache uses up to 200 MB&lt;/li&gt;
&lt;li&gt;1 GB available -&amp;gt; cache uses up to 125 MB&lt;/li&gt;
&lt;li&gt;500 MB available -&amp;gt; cache uses up to 100 MB&lt;/li&gt;
&lt;li&gt;200 MB available -&amp;gt; caches uses up to 40 MB&lt;/li&gt;
&lt;li&gt;50 MB or less available -&amp;gt; cache uses up to 10 MB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this way, Firefox for Android tries to balance the need to be a “good citizen” on the device – leaving space for other apps, media, etc – with storing enough in the cache to be effective over time.&lt;/p&gt;
&lt;p&gt;You can see your disk cache’s maximum and actual size by going to “about:cache” in Firefox:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/06/about-cache.png&quot;&gt;&lt;img alt=&quot;about-cache&quot; class=&quot;alignnone size-full wp-image-589&quot; height=&quot;494&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/06/about-cache.png?w=791&amp;amp;h=494&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this example, from a tablet with lots of available storage, the maximum cache size is 200 MB (204800 KiB), with about 80 MB actually in use.&lt;/p&gt;
&lt;p&gt;You can also see the location of the disk cache directory in the screenshot above. Notice that disk cache files reside in the Firefox profile, on Android just like for desktop Firefox. On Android, this is surprising to some people, since Android applications have their own notion of a &lt;a href=&quot;http://developer.android.com/reference/android/content/Context.html#getCacheDir%28%29&quot;&gt;cache directory&lt;/a&gt;. There is an open &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=742558&quot;&gt;bug&lt;/a&gt; considering the possibility of moving the Firefox for Android disk cache into the Android cache directory, but that’s not simple and may take a while to work out.&lt;/p&gt;
&lt;p&gt;To see Android’s view of Firefox’s storage requirements, you can open the Android Settings &amp;gt; Applications &amp;gt; Firefox:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/06/firefox-beta-data.png&quot;&gt;&lt;img alt=&quot;firefox-beta-data&quot; class=&quot;alignnone size-full wp-image-591&quot; height=&quot;494&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/06/firefox-beta-data.png?w=791&amp;amp;h=494&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is taken from that same tablet. The Data size of 103 MB includes our 80 MB disk cache (the remainder is for fonts, databases, and miscellaneous profile data). Notice that the Android Cache is 0.00 B — as discussed, Firefox isn’t using the Android cache at all. Want to reclaim that cache space included in the Data size shown here? Remember, the cache is there for a reason, and it’s probably helping you to browse more efficiently. But if you are sure, you can always do it within Firefox: open the menu &amp;gt; Settings &amp;gt; Privacy &amp;amp; Security &amp;gt; Clear private data, and then clear the Cache:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/06/clear-private.png&quot;&gt;&lt;img alt=&quot;clear-private&quot; class=&quot;alignnone size-full wp-image-592&quot; height=&quot;494&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/06/clear-private.png?w=791&amp;amp;h=494&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;More questions about the Firefox disk cache on Android? Let me know — :gbrown on #mobile.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/gbrownmozilla.wordpress.com/585/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gbrownmozilla.wordpress.com/585/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gbrownmozilla.wordpress.com&amp;amp;blog=22801181&amp;amp;post=585&amp;amp;subd=gbrownmozilla&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 19 Jun 2013 04:28:09 +0000</pubDate>
	<dc:creator>gbrown-mozilla</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Super Toast!</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/52960516545</guid>
	<link>http://fennecnightly.tumblr.com/post/52960516545</link>
	<description>&lt;p&gt;We landed a neat new feature recently in Firefox, called Super Toast. It’s great for those times where you get notified of an action completing, but you might want to take an additional action.&lt;/p&gt;
&lt;p&gt;The first use of Super Toast is when adding a bookmark. Instead of just telling you the bookmark was added, you now have the option of doing more with the new bookmark:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/d868e6ab266ceddd1b83dbf7e46571a6/tumblr_inline_moeahkedLo1qz4rgp.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Tap on “Options” and you can edit parts of the new bookmark or add the  new bookmark to your Android home screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/7345cd123806aaf852dc61fe7d08708e/tumblr_inline_moeajg4n5V1qz4rgp.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We have a few more use cases for Super Toast, so be on the look out.&lt;/p&gt;</description>
	<pubDate>Fri, 14 Jun 2013 18:15:33 +0000</pubDate>
</item>
<item>
	<title>Naoki Hirata: VM for B2G</title>
	<guid isPermaLink="false">http://shizen008.wordpress.com/?p=3092</guid>
	<link>https://shizen008.wordpress.com/2013/06/14/vm-for-b2g/</link>
	<description>&lt;p&gt;It took a while to hunt down a site that allowed for free hosting of 50 gigs or more and then post the file up.  There are certain modifications I had made from yesterday to the image as well.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;There are certain files I shouldn’t host for the unagi, so having the directories pulled for them didn’t’ make sense.  I decided to get rid of those.  instead it’s a ~/Project/B2G folder that’s waiting for you to config.sh with whatever device you have. see &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build&quot;&gt;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I decided to download the marionette test cases and also install virtualenvwrapper and virtualenv.  see: &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Marionette/Running_Tests&quot;&gt;https://developer.mozilla.org/en-US/docs/Marionette/Running_Tests&lt;/a&gt; and &lt;a href=&quot;http://doughellmann.com/2008/05/virtualenvwrapper.html&quot;&gt;http://doughellmann.com/2008/05/virtualenvwrapper.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I also have a separate ~/Projects/gaia folder so that you can build your own gaia.  Here are some tips and tricks : &lt;a href=&quot;https://wiki.mozilla.org/B2G/QA/Tips_And_Tricks#B2G_Compiling_Gaia&quot;&gt;https://wiki.mozilla.org/B2G/QA/Tips_And_Tricks#B2G_Compiling_Gaia&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The username is Ubuntu and the password is reverse:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mega.co.nz/#!9w9ihJwB!YF-zymendf-uzLnhYlssjUFcW9l6XJp31Vx4uyEoDn8&quot;&gt;https://mega.co.nz/#!9w9ihJwB!YF-zymendf-uzLnhYlssjUFcW9l6XJp31Vx4uyEoDn8&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;Filed under: &lt;a href=&quot;https://shizen008.wordpress.com/category/mobifx/&quot;&gt;mobifx&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/category/mobile/&quot;&gt;mobile&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/category/planet/&quot;&gt;Planet&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/category/qa/&quot;&gt;QA&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/category/qmo/&quot;&gt;QMO&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/category/uncategorized/&quot;&gt;Uncategorized&lt;/a&gt; Tagged: &lt;a href=&quot;https://shizen008.wordpress.com/tag/b2g/&quot;&gt;B2G&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/tag/gaia/&quot;&gt;gaia&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/tag/mobifx/&quot;&gt;mobifx&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/tag/mobile/&quot;&gt;mobile&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/tag/planet/&quot;&gt;Planet&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/tag/qa/&quot;&gt;QA&lt;/a&gt;, &lt;a href=&quot;https://shizen008.wordpress.com/tag/qmo/&quot;&gt;QMO&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/shizen008.wordpress.com/3092/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/shizen008.wordpress.com/3092/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;https://stats.wordpress.com/b.gif?host=shizen008.wordpress.com&amp;amp;blog=15780868&amp;amp;post=3092&amp;amp;subd=shizen008&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 14 Jun 2013 17:31:52 +0000</pubDate>
	<dc:creator>shizen008</dc:creator>
</item>
<item>
	<title>Sriram Ramasubramanian: Share Quickly</title>
	<guid isPermaLink="false">http://sriramramani.wordpress.com/?p=311</guid>
	<link>http://sriramramani.wordpress.com/2013/06/12/share-quickly/</link>
	<description>&lt;p&gt;Android’s &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/ActionProvider.html&quot;&gt;ActionProviders&lt;/a&gt;&lt;/code&gt; are a really nice feature. They provide a nice way to show an alternative or a secondary context in an activity. &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/widget/ShareActionProvider.html&quot;&gt;ShareActionProvider&lt;/a&gt;&lt;/code&gt; takes them to another level. The secondary context of showing a list of shareable activities is available as a menu item. In addition, they show the most frequently used Activity for quick sharing. But they come with a downside. As the name says, ActionProviders can only be present in an ActionBar. Most of the popular android apps don’t use an ActionBar as it is very limiting. Firefox for Android has the same problem, as it doesn’t use an ActionBar. How do we provide the user with such a fast and easy access to the most frequently used activity?&lt;/p&gt;
&lt;p&gt;Since Firefox for Android uses a custom menu, adding an ActionProvider logic inside a ListView was easy. Analogous to the ShareActionProvider, the main menu item gives the list of shareable activities as a &lt;code&gt;SubMenu&lt;/code&gt;, and the most frequently used app is shown along with the actual menu item. To use the same metrics as Android for the frequency calculation, we chose to use the same underlying model. Android’s implementation of storing and receiving applications from an XML file, ordering the applications based on a time based weight is available in &lt;code&gt;&lt;a href=&quot;https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ActivityChooserModel.java&quot;&gt;ActivityChooserModel&lt;/a&gt;&lt;/code&gt;. (Note: When used, one would have to copy this file to their code base, as this file is an internal file).&lt;/p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_315&quot; style=&quot;width: 235px;&quot;&gt;&lt;a href=&quot;http://sriramramani.wordpress.com/2013/06/12/share-quickly/quick-share/&quot; rel=&quot;attachment wp-att-315&quot;&gt;&lt;img alt=&quot;Share menu item with the more frequently used application for sharing quickly.&quot; class=&quot;size-medium wp-image-315&quot; height=&quot;400&quot; src=&quot;http://sriramramani.files.wordpress.com/2013/06/quick-share.png?w=225&amp;amp;h=400&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Share menu item with the more frequently used application for sharing quickly.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;While working on this feature, I was left with so many puzzling discoveries!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;While setting an Intent with ShareActionProvider for the first time, it calls ActivityChooserModel’s setIntent(). This triggers reading the list from the history file by calling &lt;code&gt;&lt;a href=&quot;https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ActivityChooserModel.java#L975&quot;&gt;readHistoricalDataImpl&lt;/a&gt;()&lt;/code&gt;. The problem here is that, even though the comment — oops, just a comment! — says everything is done off the UI thread, the reading of a file from the disk and parsing it happens in the UI thread. This causes StrictModeViolation, and hogs the UI.&lt;/li&gt;
&lt;li&gt;ShareActionProvider’s &lt;a href=&quot;http://developer.android.com/reference/android/widget/ShareActionProvider.html#setShareIntent%28android.content.Intent%29&quot;&gt;setShareIntent()&lt;/a&gt; should be used sparsely. Though one of the Android articles touches this, the reason is not explained. Let’s say the application is a photo sharing application and it needs to update the image date when the user flips through the gallery. Calling &lt;code&gt;setShareIntent()&lt;/code&gt; sounds the easiest way. However, setShareIntent() rebuilds the list every single time. And, as I mentioned earlier, setShareIntent() runs on the UI thread. This would result in UI jankiness. Instead, it’s better to store the Intent that was given to the ShareActionProvider, and update the &lt;code&gt;EXTRA&lt;/code&gt; parameters in it, leaving the &lt;code&gt;ACTION&lt;/code&gt; and MIME type intact. This way, the intent remains the same, and the data varies, without doing any work on the UI thread. But hey, there is not getter for this method! So, it’s our responsibility to store it in our class.&lt;/li&gt;
&lt;li&gt;Even getters in this file wants to ensure a consistent state. In case something had changed with the list of activities, either it loads them all once again, or reads from the disk. Which thread will this run on? Clicking on the Share icon, would ask the ActionProvider to get a list of activities. The event handling runs on the UI thread. This in turn ensures a consistent state and returns the items back on the UI thread. So, every setter or getter will (usually) be run on the UI thread and could cause considerable work to be done on the main thread.&lt;/li&gt;
&lt;li&gt;Lets say, some other application wants to expose Share with a custom ActionProvider like Firefox for Android. When they try to use the ActivityChooserModel, there is a reference to &lt;code&gt;&lt;a href=&quot;https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/content/PackageMonitor.java&quot;&gt;PackageMonitor&lt;/a&gt;&lt;/code&gt;. Unfortunately this file is internal and has a lot of other internal dependencies. Commenting the related code will leave the history file, and the list in a stale state if some other shareable app is installed/uninstalled while this app is in the background.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phew! Basically ShareActionProvider is some sort of a UI hog, if not used correctly. ActionProviders cannot be used outside of ActionBar, even though they provide a nice paradigm. Why Android, why?&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/sriramramani.wordpress.com/311/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/sriramramani.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=sriramramani.wordpress.com&amp;amp;blog=10234005&amp;amp;post=311&amp;amp;subd=sriramramani&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 13 Jun 2013 05:39:48 +0000</pubDate>
	<dc:creator>Sriram Ramani</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Quick Share</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/52724863280</guid>
	<link>http://fennecnightly.tumblr.com/post/52724863280</link>
	<description>&lt;p&gt;Quick Share remembers your commonly used sharing application and displays it on the menu to make sharing even easier. Just a quick tap on the icon to share the web page.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/7574f0bd99df677d0e21cb3041a29f34/tumblr_inline_mo8skuut631qz4rgp.png&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 11 Jun 2013 18:57:07 +0000</pubDate>
</item>
<item>
	<title>Sriram Ramasubramanian: Ellip…sis</title>
	<guid isPermaLink="false">http://sriramramani.wordpress.com/?p=302</guid>
	<link>http://sriramramani.wordpress.com/2013/06/06/ellip-sis/</link>
	<description>&lt;p&gt;In the dub-dub-dub browser world, there’s a lot of need for the dot-dot-dot. The pages titles are exponentially long, to make sure Google indexes them, and they don’t fit properly on a small screen. For e.g., CNN shows a very long title that cannot be shown comfortably in a &lt;code&gt;ListView&lt;/code&gt;‘s row. Firefox used to show ellipsis and truncate the text in such cases. However, there are a couple of problems: An ellipsis in the middle cuts the text off in such a way that the context is lost; an end ellipsis is not good from a design point of view. To mitigate this problem, we wanted a &lt;code&gt;TextView&lt;/code&gt; that fades in the end. (Design philosophy: Show a small path, and leave the imagination to the viewer).&lt;/p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_304&quot; style=&quot;width: 235px;&quot;&gt;&lt;a href=&quot;http://sriramramani.wordpress.com/2013/06/06/ellip-sis/faded-text-view/&quot; rel=&quot;attachment wp-att-304&quot;&gt;&lt;img alt=&quot;A TextView that fades if there is more text to show.&quot; class=&quot;size-medium wp-image-304&quot; height=&quot;400&quot; src=&quot;http://sriramramani.files.wordpress.com/2013/06/faded-text-view.png?w=225&amp;amp;h=400&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;A TextView that fades if there is more text to show.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;To show a faded &lt;code&gt;TextView&lt;/code&gt;, we need to know when, how and how much to fade. The amount of fading needed can be exposed as an attribute, say &lt;code&gt;fadeWidth&lt;/code&gt; for the custom view. When to fade part becomes easier if we can constrain the &lt;code&gt;TextView&lt;/code&gt; to a single line and see if the text runs longer than available width. The XML for such a view would look like:&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;    &amp;lt;com.sriramramani.widget.FadedTextView android:layout_width=&quot;wrap_content&quot;
                                           android:layout_height=&quot;wrap_content&quot;
                                           android:singleLine=&quot;true&quot;
                                           android:ellipsize=&quot;none&quot;
                                           sirius:fadeWidth=&quot;30dp&quot;/&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Every &lt;code&gt;TextView&lt;/code&gt; is backed by a &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/text/Layout.html&quot;&gt;Layout&lt;/a&gt;&lt;/code&gt;, that holds the information on how to draw the text on the screen. This includes the number of lines, text in each line, the line ascent, baseline, etc. Unfortunately, the &lt;code&gt;getWidth()&lt;/code&gt; on the layout returns a very huge number. Fortunately, we know that the &lt;code&gt;TextView&lt;/code&gt; will have only one line. Using &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/text/Layout.html#getLineWidth%28int%29&quot;&gt;getLineWidth(0)&lt;/a&gt;&lt;/code&gt;, we can find the width of the first line — the entire text.&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;    // ... somewhere in the custom text view.
    Layout layout = getLayout();
    if (layout.getLineWidth(0) &amp;gt; getMeasuredWidth()) {
        // add fading.
    } else {
        // don't add fading.
    }
&lt;/pre&gt;
&lt;p&gt;That was simple! How do we add a fading effect to the end? The &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/graphics/LinearGradient.html&quot;&gt;LinearGradient&lt;/a&gt;&lt;/code&gt; can take a range of colors and stops, and can be added as a &lt;code&gt;Shader&lt;/code&gt; to a &lt;code&gt;Paint&lt;/code&gt;. Voila!&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;    // ... somewhere in the custom text view.
    float start = 0.0f;
    float end = getMeasuredWidth();

    // mFadeWidth is obtained from the attribute.
    float stop = ((float) (end - mFadeWidth) / (float) end);

    // Setup the linear gradient.
    LinearGradient gradient = new LinearGradient(0, 0, end, 0,
                                                 new int[] { color, color, Color.TRANSPARENT },
                                                 new float[] { 0, stop, 1.0f }
                                                 Shader.TileMode.CLAMP);
&lt;/pre&gt;
&lt;p&gt;Let’s build the entire custom view now.&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;public class FadedTextView extends TextView {

    // Width of the fade effect from end of the view.
    private int mFadeWidth;

    // Add other constructors too.
    public FadedTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FadedTextView);
        mFadeWidth = a.getDimensionPixelSize(R.styleable.FadedTextView_fadeWidth, 0);
        a.recycle();
    }

    @Override
    public void onDraw(Canvas canvas) {
        int width = getMeasuredWidth();

        // Layout doesn't return a proper width for getWidth().
        // Instead check the width of the first line, as we've restricted to just one line.
        if (getLayout().getLineWidth(0) &amp;gt; width) {
            // Always get the current text color before setting the gradient.
            int color = getCurrentTextColor();

            // [0..stop] will be current text color, [stop..1] will be the actual gradient
            float stop = ((float) (width - mFadeWidth) / (float) width);

            // Set up a linear gradient.
            LinearGradient gradient = new LinearGradient(0, 0, width, 0,
                                                         new int[] { color, color, Color.TRANSPARENT },
                                                         new float[] { 0, stop, 1.0f },
                                                         Shader.TileMode.CLAMP);
            getPaint().setShader(gradient);
        } else {
            getPaint().setShader(null);
        }

        // Do a default draw.
        super.onDraw(canvas);
    }
}
&lt;/pre&gt;
&lt;p&gt;This doesn’t take care of compound drawables and their padding. But that’s pretty straightforward as there are methods to access their properties. And that’s how we kill the ellip…sis.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/sriramramani.wordpress.com/302/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/sriramramani.wordpress.com/302/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=sriramramani.wordpress.com&amp;amp;blog=10234005&amp;amp;post=302&amp;amp;subd=sriramramani&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 07 Jun 2013 00:07:29 +0000</pubDate>
	<dc:creator>Sriram Ramani</dc:creator>
</item>
<item>
	<title>Sriram Ramasubramanian: Color Drawable</title>
	<guid isPermaLink="false">http://sriramramani.wordpress.com/?p=300</guid>
	<link>http://sriramramani.wordpress.com/2013/05/30/color-drawable/</link>
	<description>&lt;p&gt;Sometimes apps would need creating &lt;code&gt;ColorDrawable&lt;/code&gt; in Java instead of using an XML. Usually, these colors are specified in &lt;code&gt;colors.xml&lt;/code&gt;. And the corresponding code to create such a drawable would look like,&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;    &amp;lt;!-- ... in res/values/colors.xml ... --&amp;gt;
    &amp;lt;resources&amp;gt;
        &amp;lt;color name=&quot;background_color&quot;&amp;gt;#FF00FF00&amp;lt;/color&amp;gt;
    &amp;lt;/resources&amp;gt;
&lt;/pre&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;    // ... in some java file ...
    something.setBackground(new ColorDrawable(getResources().getColor(R.color.background_color)));
&lt;/pre&gt;
&lt;p&gt;The other way round is to create a &lt;code&gt;ShapeDrawable&lt;/code&gt; with the required color.&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;    &amp;lt;!-- ... in res/drawable/background_color.xml ... --&amp;gt;
    &amp;lt;shape android:shape=&quot;rectangle&quot;&amp;gt;
        &amp;lt;solid android:color=&quot;#FF00FF00&quot;&amp;gt;
    &amp;lt;/shape&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Actually, Android has a better and shorter way of creating such drawables! Instead of specifying a color and using it, we can directly create a &amp;lt;drawable&amp;gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;    &amp;lt;!-- ... in res/values/colors.xml --&amp;gt;
    &amp;lt;resources&amp;gt;

        &amp;lt;!-- note: this uses &quot;drawable&quot; instead of &quot;color&quot; --&amp;gt;
        &amp;lt;drawable name=&quot;background_color&quot;&amp;gt;#FF00FF00&amp;lt;/drawable&amp;gt;

    &amp;lt;/resources&amp;gt;
&lt;/pre&gt;
&lt;p&gt;And this can be used in Java as,&lt;/p&gt;
&lt;pre class=&quot;brush: java; title: ; notranslate&quot;&gt;    // ... in some java file ...
    // note: it's referred as R.drawable and not R.color.
    something.setBackground(getResources().getDrawable(R.drawable.background_color));
&lt;/pre&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/sriramramani.wordpress.com/300/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/sriramramani.wordpress.com/300/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=sriramramani.wordpress.com&amp;amp;blog=10234005&amp;amp;post=300&amp;amp;subd=sriramramani&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 31 May 2013 06:19:15 +0000</pubDate>
	<dc:creator>Sriram Ramani</dc:creator>
</item>
<item>
	<title>Geoff Brown: Firefox for Android Performance Measures – May Check-up</title>
	<guid isPermaLink="false">http://gbrownmozilla.wordpress.com/?p=529</guid>
	<link>http://gbrownmozilla.wordpress.com/2013/05/30/firefox-for-android-performance-measures-may-check-up/</link>
	<description>&lt;p&gt;The May 2013 summary of performance measures for Firefox for Android.&lt;/p&gt;
&lt;p&gt;Significant regression in RSS measures was caused by bug 848764 and is expected; see discussion in bug.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Talos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This section tracks Perfomatic graphs from graphs.mozilla.org for mozilla-central builds of Native Fennec (Android 2.2 opt). The test names shown are those used on tbpl. See &lt;a href=&quot;https://wiki.mozilla.org/Buildbot/Talos&quot;&gt;https://wiki.mozilla.org/Buildbot/Talos&lt;/a&gt; for background on Talos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tcheckerboard&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Simple measure of “checkerboarding”. Lower values are better.&lt;/p&gt;
&lt;p&gt;0.0 (start of month) – 0.0 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tcheck2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Measure of “checkerboarding” during simulation of real user interaction with page. Lower values are better.&lt;/p&gt;
&lt;p&gt;4.0 (start of month) – 4.0 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;trobopan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Panning performance test. Value is square of frame delays (ms greater than 25 ms) encountered while panning. Lower values are better.&lt;/p&gt;
&lt;p&gt;14000 (start of month) – 12000 (end of month).&lt;/p&gt;
&lt;p&gt;There is noise in this test; it’s not clear if there was an actual improvement this month.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tprovider&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Performance of history and bookmarks’ provider. Reports time (ms) to perform a group of database operations. Lower values are better.&lt;/p&gt;
&lt;p&gt;375 (start of month) – 375 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tsvg_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Page load test for svg. Lower values are better.&lt;/p&gt;
&lt;p&gt;3800 (start of month) – 3800 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Generic page load test. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513tp4.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-547&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513tp4.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;780 (start of month) – 680 (end of month).&lt;/p&gt;
&lt;p&gt;Improvement on May 16.&lt;/p&gt;
&lt;p&gt;Bug &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=877779&quot;&gt;877779&lt;/a&gt; – Talos Regression tp4m_nochrome 14% on Android 2.2, May 29&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_main_rss_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513tp4rss.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-545&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513tp4rss.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;90000000 (start of month) – 125000000 (end of month).&lt;/p&gt;
&lt;p&gt;The significant regression on May 20 is an expected change — see bug 848764, especially comments 6 – 13.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_shutdown_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;25000000 (start of month) – 25000000 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Startup performance test. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513ts.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-568&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513ts.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3800 (start of month) – 3800 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ts_shutdown&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Shutdown performance test. Lower values are better.&lt;/p&gt;
&lt;p&gt;25000000 (start of month) – 25000000 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Throbber Start / Throbber Stop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These graphs are taken from &lt;a href=&quot;http://mrcote.info/phonedash/#/&quot;&gt;http://mrcote.info/phonedash/#/&lt;/a&gt;.  Browser startup performance is measured on real phones (a variety of popular devices).&lt;/p&gt;
&lt;p&gt;“Time to throbber start” measures the time from process launch to the start of the throbber animation. Smaller values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513throbstart.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-552&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513throbstart.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“Time to throbber stop” measures the time from process launch to the end of the throbber animation. Smaller values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513-throberstop.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-554&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513-throberstop.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice that some of these devices are reporting highly variable results — see bug &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=877812&quot;&gt;877812&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eideticker&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These graphs are taken from &lt;a href=&quot;http://eideticker.wrla.ch&quot; title=&quot;http://eideticker.wrla.ch&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://eideticker.mozilla.org&quot; rel=&quot;nofollow&quot;&gt;http://eideticker.mozilla.org&lt;/a&gt;. Eideticker is a performance harness that measures user perceived performance of web browsers by video capturing them in action and subsequently running image analysis on the raw result.&lt;/p&gt;
&lt;p&gt;More info at: &lt;a href=&quot;https://wiki.mozilla.org/Project_Eideticker&quot;&gt;https://wiki.mozilla.org/Project_Eideticker&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide01.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-570&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide01.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide02.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-573&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide02.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide03.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-575&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide03.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide04.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-577&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide04.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide05.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-578&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide05.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide06.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-580&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide06.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide07.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-582&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513eide07.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;awsy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.areweslimyet.com/mobile/&quot; rel=&quot;nofollow&quot;&gt;https://www.areweslimyet.com/mobile/&lt;/a&gt; for content and background information.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513awsy1.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-558&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513awsy1.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Again, notice the regression around May 20 — bug 848764.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513awsy2.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-560&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513awsy2.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513awsy3.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-561&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/05/0513awsy3.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/gbrownmozilla.wordpress.com/529/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gbrownmozilla.wordpress.com/529/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gbrownmozilla.wordpress.com&amp;amp;blog=22801181&amp;amp;post=529&amp;amp;subd=gbrownmozilla&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 30 May 2013 21:55:07 +0000</pubDate>
	<dc:creator>gbrown-mozilla</dc:creator>
</item>
<item>
	<title>Kartikaya Gupta: Taming coordinate systems</title>
	<guid isPermaLink="false">https://staktrace.com/spout/entry.php?referTag=mozilla&amp;id=799</guid>
	<link>https://staktrace.com/spout/entry.php?id=799</link>
	<description>&lt;p class=&quot;blogEntry&quot;&gt;For a while now we've had problems stemming from having to deal with too many coordinate systems. I blogged about this &lt;a href=&quot;https://staktrace.com/spout/entry.php?id=743&quot;&gt;before&lt;/a&gt; and the problem has only gotten worse. The &lt;tt&gt;AsyncPanZoomController&lt;/tt&gt; class in particular deals with a variety of coordinate systems and it's often not clear which coordinate system a particular variable is in.
&lt;br /&gt;
&lt;br /&gt;To try and deal with these code complexity issues, Anthony Jones suggested adding template parameters to some of the gfx classes so that we can enforce unit conversions at compile-time and annotate variables with which units they're in. I filed &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=865735&quot;&gt;bug 865735&lt;/a&gt; for this, and after some discussion with roc, Bas, jrmuizel, BenWa, tn, Cwiiis and some others, we agreed on a way to do this. I landed that patch and it was &lt;a href=&quot;https://hg.mozilla.org/mozilla-central/rev/58bf49390ed4&quot;&gt;merged to m-c&lt;/a&gt; today.
&lt;br /&gt;
&lt;br /&gt;The patch allows for incrementally adding units to uses of &lt;tt&gt;gfx::Point&lt;/tt&gt;, &lt;tt&gt;gfx::Size&lt;/tt&gt;, and &lt;tt&gt;gfx::Rect&lt;/tt&gt; (and their Int variations). By default all instances of these classes are tagged as &lt;tt&gt;UnknownUnits&lt;/tt&gt;. As we update bits of code they will be changed to things like &lt;tt&gt;CSSPixel&lt;/tt&gt;s, &lt;tt&gt;LayerPixel&lt;/tt&gt;s, &lt;tt&gt;ScreenPixel&lt;/tt&gt;s, and so on, depending on what they are. I've been working on a couple of patches that start adding this extra information to pieces of code; these patches can be found on &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=877726&quot;&gt;bug 877726&lt;/a&gt; and &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=877728&quot;&gt;bug 877728&lt;/a&gt;. Doing this is slow work, but very parallelizable, so I would appreciate any help I can get. If you know of some graphics code that uses these classes, and you know what units they data they hold are in, please file a bug with patches to convert them. Feel free to CC me and/or make it depend on &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=865735&quot;&gt;bug 865735&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;They key files that define the templates and units are located at &lt;tt&gt;gfx/2d/Point.h&lt;/tt&gt;, &lt;tt&gt;gfx/2d/Rect.h&lt;/tt&gt;, and &lt;tt&gt;layout/base/Units.h&lt;/tt&gt;. &lt;tt&gt;gfx::Point&lt;/tt&gt; is now just a typedef to &lt;tt&gt;gfx::PointTyped&amp;lt;UnknownUnits&amp;gt;&lt;/tt&gt;. Replacing &lt;tt&gt;UnknownUnits&lt;/tt&gt; with &lt;tt&gt;CSSPixel&lt;/tt&gt; gives us the new type &lt;tt&gt;gfx::PointTyped&amp;lt;CSSPixel&amp;gt;&lt;/tt&gt; to represent points in CSS pixel coordinate systems. Since this is long and unwieldy to type, we have typedef'd this to &lt;tt&gt;CSSPoint&lt;/tt&gt;. Similar changes will be done for the other classes (e.g. &lt;tt&gt;CSSIntPoint&lt;/tt&gt;, &lt;tt&gt;CSSRect&lt;/tt&gt;) and units (e.g. &lt;tt&gt;LayerPoint&lt;/tt&gt;) as we start propagating them. The neat thing about the templating structure we came up with is that &lt;tt&gt;gfx::PointTyped&amp;lt;CSSPixel&amp;gt;&lt;/tt&gt; actually extends from &lt;tt&gt;CSSPixel&lt;/tt&gt;, so we can add methods (e.g. conversion to app units) there that are available on all &lt;tt&gt;CSSPoint&lt;/tt&gt; instances but not other unit classes.
&lt;br /&gt;
&lt;br /&gt;As far as I understand things, layout code currently always keeps &lt;tt&gt;nsPoint&lt;/tt&gt; instances in app units (1/60 of a CSS pixel). &lt;tt&gt;nsIntPoint&lt;/tt&gt;, however, can be used for a variety of units, and many of these (particularly the ones outside layout/) should be converted to &lt;tt&gt;gfx::IntPointTyped&amp;lt;something&amp;gt;&lt;/tt&gt;. What layout code refers to as &quot;device pixels&quot; is generally not the same thing that graphics code refers to as &quot;device pixels&quot;, so I'm trying to avoid using the term &quot;device pixels&quot; entirely in graphics code - I prefer to use &quot;layer pixels&quot;, &quot;display pixels&quot;, and &quot;screen pixels&quot; as needed. For non-OMTC platforms &quot;screen pixels&quot; and &quot;layer pixels&quot; should be equivalent, and for platforms without hidpi adjustments, &quot;display pixels&quot; and &quot;screen pixels&quot; should be the same.
&lt;br /&gt;
&lt;br /&gt;While converting code I've run into many places where new point variables are constructed using the &lt;tt&gt;.x&lt;/tt&gt; and &lt;tt&gt;.y&lt;/tt&gt; members of a different point variable. It's important to ensure that such code is carefully audited to make sure that the old and new variables are in the same units. If it's not clear, it's best to stick in a call to &lt;tt&gt;FromUnknownUnits(...)&lt;/tt&gt; so that it is implicitly flagged for follow-up when other nearby code gets converted.&lt;/p&gt;</description>
	<pubDate>Thu, 30 May 2013 17:31:31 +0000</pubDate>
	<dc:creator>stak</dc:creator>
</item>
<item>
	<title>Geoff Brown: More Robocop tests running…and more disabled</title>
	<guid isPermaLink="false">http://gbrownmozilla.wordpress.com/?p=484</guid>
	<link>http://gbrownmozilla.wordpress.com/2013/05/24/more-robocop-tests-running-and-more-disabled/</link>
	<description>&lt;p&gt;The &lt;a href=&quot;https://wiki.mozilla.org/Auto-tools/Projects/Robocop#Introduction&quot;&gt;Robocop&lt;/a&gt; test suite continues to evolve, providing more and more UI-level testing for Firefox for Android. Recently added tests include:&lt;/p&gt;
&lt;pre&gt;testImportFromAndroid&lt;br /&gt;testOrderedBroadcast&lt;br /&gt;testSharedPreferences&lt;br /&gt;testAddSearchEngine&lt;br /&gt;testInputAwesomeBar&lt;/pre&gt;
&lt;p&gt;testOrderedBroadcast and testSharedPreferences are examples of hybrid tests that make xpcshell-like assertions in Javascript, in a page loaded by the full browser, inside the Robocop framework. These leverage exciting infrastructure changes landed by :nalexander in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=870908&quot;&gt;bug 870908&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course, Robocop has had its share of problems too. We have had to disable some tests because of repeated failures. There is active, on-going work to fix and re-enable some disabled tests, but I fear that we have all but forgotten others. I am concerned about these long-disabled tests:&lt;/p&gt;
&lt;pre&gt;# [test_bug720538] # see bug 746876
# [testPasswordEncrypt] # see bug 824067
# [testThumbnails] # see bug 813107
# [testPermissions] # see bug 757475
# [testJarReader] # see bug 738890
&lt;/pre&gt;
&lt;p&gt;Do you have insight into any of these neglected tests? Want to see them enabled ASAP? Or is it time to remove them completely? Let me know — :gbrown on #mobile.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/gbrownmozilla.wordpress.com/484/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gbrownmozilla.wordpress.com/484/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gbrownmozilla.wordpress.com&amp;amp;blog=22801181&amp;amp;post=484&amp;amp;subd=gbrownmozilla&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 24 May 2013 19:55:25 +0000</pubDate>
	<dc:creator>gbrown-mozilla</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Firefox Tip: Adding Shortcuts to Home Screen</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/51007910533</guid>
	<link>http://fennecnightly.tumblr.com/post/51007910533</link>
	<description>&lt;p&gt;The fastest way to open a favorite webpage is by using a shortcut on your Android home screen. You can add a home screen shortcut from inside Firefox. The “Add to Home Screen” context menu action can be found on several menus:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Long tap on the URL toolbar&lt;/li&gt;
&lt;li&gt;Long tap on the Top Sites, Bookmarks or History pages&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/be91da698d0c436b5bd2ba07b5e47b60/tumblr_inline_mn5ym7or6A1qz4rgp.png&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 21 May 2013 19:41:32 +0000</pubDate>
</item>
<item>
	<title>Lucas Rocha: Introducing The Layout</title>
	<guid isPermaLink="false">http://lucasr.org/?p=3791</guid>
	<link>http://lucasr.org/2013/05/17/introducing-the-layout/</link>
	<description>&lt;p dir=&quot;ltr&quot;&gt;As engineers, I believe the way we &lt;em&gt;approach&lt;/em&gt; a problem is as important as the code we write. This is especially relevant in the context of UI engineering where design is such a vital element.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Unfortunately, it seems quite hard to find good content about everything that happens &lt;em&gt;around&lt;/em&gt; us and &lt;em&gt;inside&lt;/em&gt; our heads when we are building user interfaces. This is what &lt;a href=&quot;http://thelayout.cc/&quot;&gt;The Layout&lt;/a&gt; is about.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;My &lt;a href=&quot;http://thelayout.cc/preamble/&quot;&gt;intent&lt;/a&gt; is to create a space for high quality content discussing the principles, mindset, and practices that I believe shape the craft of UI engineering. It is meant to be a shared space with many voices—so, expect some awesome guest authors.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;I’ve just posted the very first article, &lt;a href=&quot;http://thelayout.cc/mind-the-gap/&quot;&gt;Mind the Gap&lt;/a&gt;. My plan is to publish a new article every other week-ish. For now, subscribe to the &lt;a href=&quot;http://thelayout.cc/feed/&quot;&gt;RSS feed&lt;/a&gt; or simply follow The Layout on &lt;a href=&quot;http://twitter.com/readthelayout&quot;&gt;Twitter&lt;/a&gt; or &lt;a href=&quot;https://plus.google.com/u/0/109366488041901352956/posts&quot;&gt;Google+&lt;/a&gt; to get future updates.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;I really hope you enjoy it!&lt;/p&gt;</description>
	<pubDate>Fri, 17 May 2013 05:28:00 +0000</pubDate>
	<dc:creator>Lucas Rocha</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Just Landed: Switch to Tab</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/50105668873</guid>
	<link>http://fennecnightly.tumblr.com/post/50105668873</link>
	<description>&lt;p&gt;Already got the tab open? Just quickly switch to it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/5364931b1bd74083d58b46bedb6182f9/tumblr_inline_mmlkz33Sgz1qz4rgp.png&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 10 May 2013 19:33:52 +0000</pubDate>
</item>
<item>
	<title>Margaret Leibovic: Dominant Favicon Color, Revisited on Android</title>
	<guid isPermaLink="true">http://blog.margaretleibovic.com/post/49947104486</guid>
	<link>http://blog.margaretleibovic.com/post/49947104486</link>
	<description>&lt;p&gt;Almost two years, I experimented with using the &lt;a href=&quot;http://blog.margaretleibovic.com/post/6356312141/dominant-favicon-color&quot;&gt;dominant color&lt;/a&gt; of a favicon to give a small icon a colorful background. And over the past week, I &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=839855&quot;&gt;wrote&lt;/a&gt; &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=867249&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=867627&quot;&gt;patches&lt;/a&gt; to incorporate this design into Firefox for Android!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;image&quot; src=&quot;http://media.tumblr.com/21f23ad62ccf880e640dac1b5300bc9a/tumblr_inline_mmhr6vH6oE1qz4rgp.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The simple algorithm I wrote long ago was done in JS with canvas, but to use this in our native Android UI, it’s simplest to just do it in Java. Luckily, we already had a dominant color utility method in the tree, but creating a background and border with different saturation levels was trickier than I thought it would be. To solve this problem, I gave the ImageView a background drawable with a solid white interior and a gray border, then applied a transparent version of the dominant color as a color filter. This worked pretty well once I figured out which PorterDuff mode to use, but it made me appreciate the simplicity of CSS.&lt;/p&gt;
&lt;p&gt;When testing with various icons, I found that our &lt;a href=&quot;http://hg.mozilla.org/mozilla-central/file/afb7995ef276/mobile/android/base/gfx/BitmapUtils.java#l57&quot;&gt;dominant color algorithm&lt;/a&gt; could use some improvement. Our Java algorithm is different than the one I experimented with in JS mainly because it uses the HSV color model as opposed to RGB. Instead of counting every distinct color, we split the range of hues into different bins and find the bin that holds the most colors. For the winning bin, we compute the average H, S, and V values within that bin, and return that as the dominant color. To make sure we only return colorful colors, we ignore transparent pixels, as well as pixels that are close enough to black or white. This simple algorithm may not be perfect, but it works pretty well for us, especially for small favicons.&lt;/p&gt;
&lt;p&gt;As an interesting bit of history, after I blogged about my dominant color experiment, &lt;a href=&quot;http://ed.agadak.net/2011/06/restartless-dominant-color&quot;&gt;Mardak wrote an add-on&lt;/a&gt; that used an improved version of my JS snippet. At the time, &lt;a href=&quot;http://digdug2k.wordpress.com/&quot;&gt;Wes&lt;/a&gt; saw this add-on and incorporated the code into XUL Fennec to create icons for homescreen shortcuts. During the Fennec Native rewrite, Wes reimplemented this feature in Java, and that’s the code I found myself in last week. And for those interested in a more robust solution implemented in JS, there’s actually a &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIColorAnalyzer&quot;&gt;toolkit service&lt;/a&gt; that does this now.&lt;/p&gt;</description>
	<pubDate>Wed, 08 May 2013 18:37:00 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: Showing Page URL in Toolbar</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/49936222676</guid>
	<link>http://fennecnightly.tumblr.com/post/49936222676</link>
	<description>&lt;p&gt;Firefox for Android has always shown the page title in the toolbar. Many people like this, but a growing group of vocal voices would rather see the page URL in the toolbar. Seeing the URL can help confirm you are actually on the real page and not being phished.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Fennec Nightly adds support for showing the URL, with domain highlighting.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img src=&quot;http://media.tumblr.com/ea248b597992cc7e4053c72f2334c0c2/tumblr_inline_mmhj97ZWOL1qz4rgp.png&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;To activate, go to Settings&amp;gt; Title bar &amp;gt; Show page address&lt;/p&gt;</description>
	<pubDate>Wed, 08 May 2013 15:08:05 +0000</pubDate>
</item>
<item>
	<title>William Lachance: Proof of concept Eideticker dashboard for FirefoxOS</title>
	<guid isPermaLink="false">http://wrla.ch/blog/?p=909</guid>
	<link>http://wrla.ch/blog/2013/05/proof-of-concept-eideticker-dashboard-for-firefoxos/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=proof-of-concept-eideticker-dashboard-for-firefoxos</link>
	<description>&lt;p&gt;&lt;em&gt;[ For more information on the Eideticker software I'm referring to, see &lt;a href=&quot;http://wrla.ch/blog/2012/06/mobile-firefox-measuring-how-a-browser-feels/&quot;&gt;this entry&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I just put up a proof of concept Eideticker dashboard for FirefoxOS &lt;a href=&quot;http://eideticker.wrla.ch/b2g&quot;&gt;here&lt;/a&gt;. Right now it has two days worth of data, manually sampled from an Unagi device running b2g18. Right now there are two tests: one the measures the “speed” of the contacts application scrolling, another that measures the amount of time it takes for the contacts application to be fully loaded.&lt;/p&gt;
&lt;p&gt;For those not already familiar with it, Eideticker is a benchmarking suite which captures live video data coming from a device and analyzes it to determine performance. This lets us get data which is more representative of actual user experience (as opposed to an oft artificial benchmark). For example, Eideticker measures contacts startup as taking anywhere between 3.5 seconds and 4.5 seconds, versus than the 0.5 to 1 seconds that the &lt;a href=&quot;https://datazilla.mozilla.org/b2g/?branch=master&amp;amp;range=7&amp;amp;test=cold_load_time&amp;amp;app_list=contacts&amp;amp;app=contacts&amp;amp;gaia_rev=114bf216de0a19f7&amp;amp;gecko_rev=9c0de2afd22a8476&quot;&gt;existing datazilla benchmarks&lt;/a&gt; show. What accounts for the difference? If you step through an eideticker-captured video, you can see that even though &lt;i&gt;something&lt;/i&gt; appears very quickly, not all the contacts are displayed until the 3.5 second mark. There is a gap between an app being reported as “loaded” and it being fully available for use, which we had not been measuring until now.&lt;/p&gt;
&lt;p&gt;&lt;video controls=&quot;controls&quot; src=&quot;http://eideticker.wrla.ch/b2g/videos/video-1367875760.86.webm&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;At this point, I am most interested in hearing from FirefoxOS developers on new tests that would be interesting and useful to track performance of the system on an ongoing basis. I’d obviously prefer to focus on things which have been difficult to measure accurately through other means. My setup is rather fiddly right now, but hopefully soon we can get some useful numbers going on an ongoing basis, as we &lt;a href=&quot;http://eideticker.wrla.ch&quot;&gt;do already&lt;/a&gt; for Firefox for Android.&lt;/p&gt;</description>
	<pubDate>Mon, 06 May 2013 22:23:16 +0000</pubDate>
	<dc:creator>William Lachance</dc:creator>
        <enclosure url="http://eideticker.wrla.ch/b2g/videos/video-1367875760.86.webm" length="164347" type="video/webm"/>
</item>
<item>
	<title>Chris Lord: Writing and deploying a small Firefox OS application</title>
	<guid isPermaLink="false">http://chrislord.net/?p=202</guid>
	<link>http://chrislord.net/index.php/2013/05/04/writing-and-deploying-a-small-firefox-os-application/</link>
	<description>&lt;p&gt;For the last week I’ve been using a &lt;a href=&quot;http://www.geeksphone.com/#feat&quot; title=&quot;Geeksphone Keon&quot;&gt;Geeksphone Keon&lt;/a&gt; as my only phone. There’s been no cheating here, I don’t have a backup Android phone and I’ve not taken to carrying around a tablet everywhere I go (though its use has increased at home slightly…) On the whole, the experience has been positive. Considering how entrenched I was in Android applications and Google services, it’s been surprisingly easy to make the switch. I would recommend anyone getting the Geeksphones to &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building&quot; title=&quot;Building Firefox OS&quot;&gt;build their own OS images&lt;/a&gt; though, the shipped images are pretty poor.&lt;/p&gt;
&lt;p&gt;Among the many things I missed (Spotify is number 1 in that list btw), I could have done with a countdown timer. Contrary to what the interfaces of most Android timer apps would have you believe, it’s not rocket-science to write a usable timer, so I figured this would be a decent entry-point into writing mobile web applications. For the most part, this would just be your average web-page, but I did want it to feel ‘native’, so I started looking at the &lt;a href=&quot;http://buildingfirefoxos.com/&quot; title=&quot;Firefox OS Building Blocks&quot;&gt;new building blocks site&lt;/a&gt; that documents the FirefoxOS shared resources. I had elaborate plans for tabs and headers and such, but turns out, all I really needed was the button style. The site doesn’t make hugely clear that you’ll actually need to check out the shared resources yourself, which can be found on &lt;a href=&quot;https://github.com/mozilla-b2g/gaia/tree/master/shared&quot; title=&quot;Gaia shared resources&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Writing the app was easy, except perhaps for getting things to align vertically (for which I used the nested div/”display: table-cell; vertical-alignment: middle;” trick), but it was a bit harder when I wanted to use some of the new APIs. In particular, I wanted the timer to continue to work when the app is closed, and I wanted it to alert you only when you aren’t looking at it. This required use of the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/WebAPI/Alarm&quot; title=&quot;Alarm API&quot;&gt;Alarm API&lt;/a&gt;, the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/DOM/Displaying_notifications&quot; title=&quot;Displaying Notifications&quot;&gt;Notifications API&lt;/a&gt; and the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API&quot; title=&quot;Using the Page Visibility API&quot;&gt;Page Visibility API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The page visibility API was pretty self-explanatory, and I had no issues using it. I use this to know when the app is put into the background (which, handily, always happens before closing it. I think). When the page gets hidden, I use the Alarm API to set an alarm for when the current timer is due to elapse to wake up the application. I found this particularly hard to use as the documentation is very poor (though it turns out the code you need is quite short). Finally, I use the Notifications API to spawn a notification if the app isn’t visible when the timer elapses. &lt;del&gt;Notifications were reasonably easy to use, but I’ve yet to figure out how to map clicking on a notification to raising my application – I don’t really know what I’m doing wrong here, any help is appreciated!&lt;/del&gt; &lt;em&gt;Update: Thanks to Thanos Lefteris in the comments below, this now works – activating the notification will bring you back to the app. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The last hurdle was deploying to an actual device, as opposed to the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/firefox-os-simulator/&quot; title=&quot;Firefox OS Simulator add-on&quot;&gt;simulator&lt;/a&gt;. Apparently the simulator has a deploy-to-device feature, but this wasn’t appearing for me and it would mean having to fire up my Linux VM (I have my reasons) anyway, as there are currently no Windows drivers for the Geeksphone devices available. I obviously don’t want to submit this to the Firefox marketplace yet, as I’ve barely tested it. I have my own VPS, so ideally I could just upload the app to a directory, add a meta tag in the header and try it out on the device, but unfortunately it isn’t as easy as that.&lt;/p&gt;
&lt;p&gt;Getting it to work well as a web-page is a good first step, and to do that you’ll want to add a &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag&quot; title=&quot;Using the Viewport Meta tag&quot;&gt;meta viewport tag&lt;/a&gt;. Getting the app to install itself from that page was easy to do, but difficult to find out about. I think the process for this is harder than it needs to be and quite poorly documented, but basically, you want this in your app:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;if (navigator.mozApps) {
  var request = navigator.mozApps.getSelf();
  request.onsuccess = function() {
    if (!this.result) {
      request = navigator.mozApps.install(location.protocol + &quot;//&quot; + location.host + location.pathname + &quot;manifest.webapp&quot;);
      request.onerror = function() {
        console.log(&quot;Install failed: &quot; + this.error.name);
      };
    }
  };
}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;And you want all paths in your &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Apps/Manifest&quot; title=&quot;App manifest&quot;&gt;manifest&lt;/a&gt; and &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache&quot; title=&quot;Using the Application Cache&quot;&gt;appcache&lt;/a&gt; manifest to be absolute (you can assume the host, but you can’t have paths relative to the directory the files are in). This last part makes deployment very awkward, assuming you don’t want to have all of your app assets in the root directory of your server and you don’t want to setup vhosts for every app. You also need to make sure your server has the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Apps/Manifest#Serving_manifests&quot; title=&quot;Serving App Manifests&quot;&gt;webapp mimetype&lt;/a&gt; setup. Mozilla has a great &lt;a href=&quot;https://marketplace.firefox.com/developers/validator&quot; title=&quot;Firefox Marketplace App Validator&quot;&gt;online app validation tool&lt;/a&gt; that can help you debug problems in this process.&lt;/p&gt;
&lt;div class=&quot;wp-caption alignnone&quot; style=&quot;width: 348px;&quot;&gt;&lt;a href=&quot;http://chrislord.net/demos/timer/&quot;&gt;&lt;img alt=&quot;Timer app screenshot&quot; height=&quot;575&quot; src=&quot;http://chrislord.net/images/timer.png&quot; width=&quot;338&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;And we’re done! (Ctrl+Shift+M to toggle responsive design mode in Firefox)&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Visiting the page will offer to install the app for you on a device that supports app installation (i.e. a Firefox OS device). Not bad for a night’s work! Feel free to laugh at my n00b source and tell me how terrible it is in the comments &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://chrislord.net/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; &lt;/p&gt;</description>
	<pubDate>Sat, 04 May 2013 08:37:53 +0000</pubDate>
	<dc:creator>Chris Lord</dc:creator>
</item>
<item>
	<title>Ian Barlow: Polish All The Things!!1</title>
	<guid isPermaLink="false">http://ianbarlow.wordpress.com/?p=457</guid>
	<link>http://ianbarlow.wordpress.com/2013/05/03/polish-all-the-things1/</link>
	<description>&lt;h3&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/title.png&quot;&gt;&lt;img alt=&quot;title&quot; class=&quot;alignnone size-full wp-image-490&quot; height=&quot;355&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/title.png?w=710&amp;amp;h=355&quot; title=&quot;&quot; width=&quot;710&quot; /&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h3&gt;Firefox for Android UI Hackathon, Spring 2013&lt;/h3&gt;
&lt;p&gt;Hackathons are a great way to get a bunch of people sprinting through a very focused body of work, and they’re also great fun to do.&lt;/p&gt;
&lt;p&gt;And much to the UX team’s delight, our engineering team recently organized one that was focused solely on UI polish bugs! We almost always have a backlog of subtle but important refinements we’d like to add to Firefox, and while we are incredibly lucky to work with an engineering team that values good design, there are still only so many hours in the day and only so much of peoples’ time available to make fixes. This was a great opportunity to sand down some of the rough edges we had been thinking about for a while.&lt;/p&gt;
&lt;p&gt;The hackathon bugs had to be simple enough fixes that could be made in the short time frame of the hackathon, so brand new features were off the table. This was all about polish. And in order for the sprint to be successful, there couldn’t be any road blocks or missing details, so I made sure that whichever ones people wanted to work on had the most up to date instructions and designs ready to go.&lt;/p&gt;
&lt;p&gt;—&lt;/p&gt;
&lt;p&gt;This was our short list when we kicked off the hackathon. &lt;a href=&quot;https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3Aui-hackathon&quot;&gt;https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3Aui-hackathon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Over the course of a few days, the team knocked off *19* of these bugs. Some of the most visible improvements included:&lt;/p&gt;
&lt;h3&gt;New tab counter icon&lt;/h3&gt;
&lt;p&gt;We recently simplified the title bar area to use a single ‘background layer’ colour. For the hackathon we also revisited the icon design to more clearly communicate what would happen when you tapped it, using a visual metaphor that has become more or less the standard for tabs on mobile web browsers. Some earlier design explorations are shown below.  / &lt;a href=&quot;http://bugzil.la/863379&quot;&gt;http://bugzil.la/863379&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/icon-tests.png&quot;&gt;&lt;img alt=&quot;icon tests&quot; height=&quot;425&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/icon-tests.png?w=710&amp;amp;h=425&quot; title=&quot;&quot; width=&quot;710&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;New tab increment animation&lt;/h3&gt;
&lt;p&gt;We also wanted to add a little dimension to the new tab counter icon, so we added a fun transition that appears when you create a new a tab.  / &lt;a href=&quot;http://bugzil.la/863828&quot;&gt;http://bugzil.la/863828&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/tab-increment.gif&quot;&gt;&lt;img alt=&quot;tab-increment&quot; class=&quot;alignnone size-full wp-image-474&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/tab-increment.gif?w=710&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Refined tab tray transition&lt;/h3&gt;
&lt;p&gt;We have been exploring ways of making the tab tray opening feel more fluid and interesting. Below is an example of a parallax-like transition we experimented with for opening the tab tray. A slightly simplified adaptation of the animation below is in our Nightly build. / &lt;a href=&quot;http://bugzil.la/864960&quot;&gt;http://bugzil.la/864960&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/tab-tray-opening3.gif&quot;&gt;&lt;img alt=&quot;tab-tray-opening&quot; class=&quot;alignnone size-full wp-image-482&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/tab-tray-opening3.gif?w=710&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Text labels in the tab tray&lt;/h3&gt;
&lt;p&gt;The tab section icons that existed in the previous design didn’t communicate the section contents as clearly as we would have liked, so we replaced them with text labels. / &lt;a href=&quot;http://bugzil.la/862996&quot;&gt;http://bugzil.la/862996&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-05-03-at-3-02-24-pm.png&quot;&gt;&lt;img alt=&quot;Screen Shot 2013-05-03 at 3.02.24 PM&quot; class=&quot;alignnone size-full wp-image-461&quot; height=&quot;163&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-05-03-at-3-02-24-pm.png?w=710&amp;amp;h=163&quot; title=&quot;&quot; width=&quot;710&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Increased Reader Mode touch target size&lt;/h3&gt;
&lt;p&gt;Kind of a no brainer, but for some reason the touch area was tiny here for a long time. / &lt;a href=&quot;http://bugzil.la/862755&quot;&gt;http://bugzil.la/862755&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-05-03-at-3-05-29-pm.png&quot;&gt;&lt;img alt=&quot;Screen Shot 2013-05-03 at 3.05.29 PM&quot; class=&quot;alignnone size-full wp-image-464&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-05-03-at-3-05-29-pm.png?w=710&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Reader Mode refinements&lt;/h3&gt;
&lt;p&gt;We recently added an option to use Charis — a serif typeface — in our Reader Mode, and it makes for a very pleasant read. / &lt;a href=&quot;http://bugzil.la/862445&quot;&gt;http://bugzil.la/862445&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/reader.png&quot;&gt;&lt;img alt=&quot;reader&quot; class=&quot;alignnone size-full wp-image-466&quot; height=&quot;478&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/reader.png?w=710&amp;amp;h=478&quot; title=&quot;&quot; width=&quot;710&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Dominant colour sampling for favicon backgrounds&lt;/h3&gt;
&lt;p&gt;We display large favicons whenever we can, but many websites still only provide 16px favicons. This often makes for rather dissonant looking lists in our UI. Adding a tint of the favicon’s dominant colour to the background makes individual list items more quickly recognizable, and makes the lists look a little more designed overall. We’ll also use this approach for thumbnail boxes in cases where a screenshot of the website is unavailable. / &lt;a href=&quot;http://bugzil.la/837392&quot;&gt;http://bugzil.la/837392 &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-04-19-at-3-46-44-pm.png&quot;&gt;&lt;img alt=&quot;Screen Shot 2013-04-19 at 3.46.44 PM&quot; class=&quot;alignnone size-full wp-image-467&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-04-19-at-3-46-44-pm.png?w=710&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Optional title bar URLs&lt;/h3&gt;
&lt;p&gt;We added a setting to let users display URLs in the title bar, instead of page titles. / &lt;a href=&quot;http://bugzil.la/837392&quot;&gt;http://bugzil.la/778216&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-05-03-at-3-23-15-pm.png&quot;&gt;&lt;img alt=&quot;Screen Shot 2013-05-03 at 3.23.15 PM&quot; class=&quot;alignnone size-full wp-image-468&quot; height=&quot;72&quot; src=&quot;http://ianbarlow.files.wordpress.com/2013/05/screen-shot-2013-05-03-at-3-23-15-pm.png?w=710&amp;amp;h=72&quot; title=&quot;&quot; width=&quot;710&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;—&lt;/p&gt;
&lt;p&gt;Not bad for a couple of days of work, right? A huge thanks to &lt;a href=&quot;http://lucasr.org&quot; title=&quot;Lucas Rocha&quot;&gt;Lucas Rocha&lt;/a&gt; for organizing the event, and to the Firefox for Android front-end team and all the contributors who participated in our hackathon. Each one of these tweaks are wonderful refinements on their own, and having watched all of them land in the course of a few days was truly delightful. The next few releases are shaping up to be pretty special on Firefox for Android.&lt;/p&gt;
&lt;p&gt;Of course, as always if you don’t want to wait for the update on Google Play, you can try out all of these enhancements _right now_ by downloading one of our &lt;a href=&quot;http://nightly.mozilla.org/&quot; title=&quot;Firefox Nightly Builds&quot;&gt;Firefox Nightly builds&lt;/a&gt;. Enjoy!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/ianbarlow.wordpress.com/457/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ianbarlow.wordpress.com/457/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ianbarlow.wordpress.com&amp;amp;blog=775558&amp;amp;post=457&amp;amp;subd=ianbarlow&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 03 May 2013 20:27:10 +0000</pubDate>
	<dc:creator>ianbarlow</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Firefox for Android Hits 4.5 Stars</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/49451634492</guid>
	<link>http://fennecnightly.tumblr.com/post/49451634492</link>
	<description>&lt;a href=&quot;https://medium.com/what-i-learned-building/f4488e366b91&quot;&gt;Firefox for Android Hits 4.5 Stars&lt;/a&gt;: &lt;p&gt;&lt;/p&gt;&lt;blockquote class=&quot;link_og_blockquote&quot;&gt;1 year ago, I started a spreadsheet. For 9 months we’d been rewriting Firefox for Android from the ground up, and on May 16, 2012 we release…&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 02 May 2013 19:04:33 +0000</pubDate>
</item>
<item>
	<title>Geoff Brown: More xpcshell tests for Android</title>
	<guid isPermaLink="false">http://gbrownmozilla.wordpress.com/?p=482</guid>
	<link>http://gbrownmozilla.wordpress.com/2013/05/01/more-xpcshell-tests-for-android/</link>
	<description>&lt;p&gt;We are gradually running more and more xpcshell tests for Android on tbpl.&lt;/p&gt;
&lt;p&gt;Do you have a favorite xpcshell test that you are eager to see running on Android ASAP?&lt;/p&gt;
&lt;p&gt;Do you know of certain xpcshell tests that should not be run on Android?&lt;/p&gt;
&lt;p&gt;Let me know, or comment in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=865006&quot;&gt;bug 865006&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/gbrownmozilla.wordpress.com/482/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gbrownmozilla.wordpress.com/482/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gbrownmozilla.wordpress.com&amp;amp;blog=22801181&amp;amp;post=482&amp;amp;subd=gbrownmozilla&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 01 May 2013 04:17:37 +0000</pubDate>
	<dc:creator>gbrown-mozilla</dc:creator>
</item>
<item>
	<title>Geoff Brown: Firefox for Android Performance Measures – April Check-up</title>
	<guid isPermaLink="false">http://gbrownmozilla.wordpress.com/?p=434</guid>
	<link>http://gbrownmozilla.wordpress.com/2013/04/30/firefox-for-android-performance-measures-april-check-up/</link>
	<description>&lt;div&gt;
&lt;p&gt;The April 2013 summary of performance measures for Firefox for Android.&lt;/p&gt;
&lt;p&gt;Minor regressions in tcheck2 and tp4m. Slight improvement in “time to throbber stop”.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Talos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This section tracks Perfomatic graphs from graphs.mozilla.org for mozilla-central builds of Native Fennec (Android opt). The test names shown are those used on tbpl. See &lt;a href=&quot;https://wiki.mozilla.org/Buildbot/Talos&quot;&gt;https://wiki.mozilla.org/Buildbot/Talos&lt;/a&gt; for background on Talos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tcheckerboard&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Simple measure of “checkerboarding”. Lower values are better.&lt;/p&gt;
&lt;p&gt;0.0 (start of month) – 0.0 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tcheck2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Measure of “checkerboarding” during simulation of real user interaction with page. Lower values are better.&lt;/p&gt;
&lt;p&gt;3.5 (start of month) – 4.0 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=866113&quot;&gt;&lt;b&gt;Bug 866113&lt;/b&gt;&lt;/a&gt; – Talos Regression tcheck2 26% on Android 2.2, Apr 26&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;trobopan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Panning performance test. Value is square of frame delays (ms greater than 25 ms) encountered while panning. Lower values are better.&lt;/p&gt;
&lt;p&gt;12000 (start of month) – 14000 (end of month).&lt;/p&gt;
&lt;p&gt;There is noise in this test; it’s not clear if there was an actual regression this month.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tprovider&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Performance of history and bookmarks’ provider. Reports time (ms) to perform a group of database operations. Lower values are better.&lt;/p&gt;
&lt;p&gt;375 (start of month) – 375 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tsvg_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Page load test for svg. Lower values are better.&lt;/p&gt;
&lt;p&gt;4000 (start of month) – 3800 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Generic page load test. Lower values are better.&lt;/p&gt;
&lt;p&gt;720 (start of month) – 780 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=864637&quot;&gt;&lt;b&gt;Bug 864637&lt;/b&gt;&lt;/a&gt; – 11% Android Tp4 NoChrome regression on 2013-04-18&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_main_rss_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;88000000 (start of month) – 90000000 (end of month).&lt;/p&gt;
&lt;p&gt;Gradual regression — no bug.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_shutdown_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;25000000 (start of month) – 25000000 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Startup performance test. Lower values are better.&lt;/p&gt;
&lt;p&gt;3800 (start of month) – 3800 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ts_shutdown&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Shutdown performance test. Lower values are better.&lt;/p&gt;
&lt;p&gt;25000000 (start of month) – 25000000 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Throbber Start / Throbber Stop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These graphs are taken from &lt;a href=&quot;http://mrcote.info/phonedash/#/&quot;&gt;http://mrcote.info/phonedash/#/&lt;/a&gt;.  Browser startup performance is measured on real phones (a variety of popular devices).&lt;/p&gt;
&lt;p&gt;“Time to throbber start” measures the time from process launch to the start of the throbber animation. Smaller values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413throbstart.png&quot;&gt;&lt;img alt=&quot;Image&quot; id=&quot;i-455&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413throbstart.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“Time to throbber stop” measures the time from process launch to the end of the throbber animation. Smaller values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413throbstop.png&quot;&gt;&lt;img alt=&quot;Image&quot; id=&quot;i-456&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413throbstop.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eideticker&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These graphs are taken from &lt;a href=&quot;http://eideticker.wrla.ch&quot; title=&quot;http://eideticker.wrla.ch&quot;&gt;http://eideticker.wrla.ch&lt;/a&gt;. Eideticker is a performance harness that measures user perceived performance of web browsers by video capturing them in action and subsequently running image analysis on the raw result.&lt;/p&gt;
&lt;p&gt;More info at: &lt;a href=&quot;https://wiki.mozilla.org/Project_Eideticker&quot;&gt;https://wiki.mozilla.org/Project_Eideticker&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide01.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-468&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide01.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide02.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-469&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide02.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide03.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-471&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide03.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide04.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-472&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide04.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide05.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-473&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide05.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide06.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-475&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide06.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide07.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-476&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide07.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide08.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-477&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413eide08.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;awsy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.areweslimyet.com/mobile/&quot; rel=&quot;nofollow&quot;&gt;https://www.areweslimyet.com/mobile/&lt;/a&gt; for content and background information.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413awsy1.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-461&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413awsy1.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413awsy2.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-463&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413awsy2.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413awsy3.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-464&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/04/0413awsy3.png?w=650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/gbrownmozilla.wordpress.com/434/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gbrownmozilla.wordpress.com/434/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gbrownmozilla.wordpress.com&amp;amp;blog=22801181&amp;amp;post=434&amp;amp;subd=gbrownmozilla&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 30 Apr 2013 23:07:05 +0000</pubDate>
	<dc:creator>gbrown-mozilla</dc:creator>
</item>
<item>
	<title>Lucas Rocha: UI polishing in Firefox for Android</title>
	<guid isPermaLink="false">http://lucasr.org/?p=3717</guid>
	<link>http://lucasr.org/2013/04/29/ui-polishing-in-firefox-for-android/</link>
	<description>&lt;p&gt;Last week, we did our very first topic-oriented &lt;a href=&quot;http://lucasr.org/2013/04/22/firefox-for-androids-ui-polishing-hackathon/&quot; title=&quot;Firefox for Android's UI polishing Hackathon&quot;&gt;hackathon&lt;/a&gt; focused on UI polishing bugs. The UI changes we’ve done will make a substantial difference in the experience of using Firefox on Android. Here are some of my favourite fixes and improvements.&lt;/p&gt;
&lt;h3&gt;Tabs&lt;/h3&gt;
&lt;p&gt;Details in the tabs UI can make a big difference UX-wise. We changed the tabs button icon (see image) to provide better affordance. The new icon also features a much cooler animation when tabs are added or removed.&lt;/p&gt;
&lt;p&gt;Last but not least, we added a subtle parallax effect when you the open/close the tabs panel giving it a more fluid feel.&lt;/p&gt;
&lt;h3&gt;Address bar&lt;/h3&gt;
&lt;p&gt;As Wes has already &lt;a href=&quot;http://digdug2k.wordpress.com/2013/04/29/show-urls-in-fennec/&quot; title=&quot;Show Urls in Fennec&quot;&gt;reported&lt;/a&gt;, you now have the option to show URLs instead of page titles in the address bar. The domain highlight (see image) is a nice touch and gives us feature parity with Firefox on desktop.&lt;/p&gt;
&lt;p&gt;The reader and stop buttons now have properly sized hit areas to avoid tapping other parts of the toolbar by mistake—a long overdue issue.&lt;/p&gt;
&lt;h3&gt;That’s not all&lt;/h3&gt;
&lt;p&gt;Reader Mode will get some nice style updates for serif fonts, doorhanger notifications now have a more polished animation, text selection handles have a more consistent style, favicons in the awesomescreen will look &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=839855&quot;&gt;fancier&lt;/a&gt;, some visual glitches in the awesomescreen and toolbar were fixed, and more.&lt;/p&gt;
&lt;p&gt;Not all these changes are in &lt;a href=&quot;http://nightly.mozilla.org/&quot; title=&quot;Nightly&quot;&gt;Nightly&lt;/a&gt; just yet but they will show up in the next days. Firefox 23 has everything to be my favourite release &lt;em&gt;ever&lt;/em&gt;. Download and install our &lt;a href=&quot;http://nightly.mozilla.org/&quot; title=&quot;Nightly&quot;&gt;Nightly&lt;/a&gt; build on your Android and let us know what you think.&lt;/p&gt;</description>
	<pubDate>Mon, 29 Apr 2013 14:15:05 +0000</pubDate>
	<dc:creator>Lucas Rocha</dc:creator>
</item>
<item>
	<title>Wes Johnston: Show Urls in Fennec</title>
	<guid isPermaLink="false">http://digdug2k.wordpress.com/?p=292</guid>
	<link>http://digdug2k.wordpress.com/2013/04/29/show-urls-in-fennec/</link>
	<description>&lt;p&gt;One common request we get in Fennec is the ability to show url’s in the titlebar. At one point I even wrote an &lt;a href=&quot;https://addons.mozilla.org/en-US/mobile/addon/urlfortitle/&quot;&gt;addon&lt;/a&gt; to do it. Ignoring the arguments for and against, the feature is finally available built in to Nightly builds:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://digdug2k.files.wordpress.com/2013/04/public1.png&quot;&gt;&lt;img alt=&quot;Image&quot; class=&quot;size-full wp-image&quot; id=&quot;i-294&quot; src=&quot;http://digdug2k.files.wordpress.com/2013/04/public1.png?w=487&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To enable, just open Settings -&amp;gt; Privacy and change the “Title Bar” pref to “Show page address”. We’ve also set up domain highlighting like you see on desktop Firefox (for both regular and private tabs show above, with or without Personas enabled, although Personas are a nice security measure for our new scroll away urlbar too!). Enjoy!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/digdug2k.wordpress.com/292/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/digdug2k.wordpress.com/292/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=digdug2k.wordpress.com&amp;amp;blog=19823411&amp;amp;post=292&amp;amp;subd=digdug2k&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 29 Apr 2013 05:43:44 +0000</pubDate>
	<dc:creator>digdug2k</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Firefox for Android on Yandex Store</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/48625594702</guid>
	<link>http://fennecnightly.tumblr.com/post/48625594702</link>
	<description>&lt;p&gt;You can install Firefox from the Yandex Store.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/d174c6e4452172e269f2798974eb5c1f/tumblr_inline_mlo5rnm4UF1qz4rgp.png&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 22 Apr 2013 18:26:09 +0000</pubDate>
</item>
<item>
	<title>William Lachance: Actual useful FirefoxOS Eideticker results at last</title>
	<guid isPermaLink="false">http://wrla.ch/blog/?p=893</guid>
	<link>http://wrla.ch/blog/2013/04/actual-useful-firefoxos-eideticker-results-at-last/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=actual-useful-firefoxos-eideticker-results-at-last</link>
	<description>&lt;p&gt;Another update on getting &lt;a href=&quot;http://wrla.ch/blog/2013/02/eideticker-for-firefoxos/&quot;&gt;Eideticker working with FirefoxOS&lt;/a&gt;. Once again this is sort of high-level, looking forward to writing something more in-depth soon now that we have the basics working. &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://wrla.ch/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; &lt;/p&gt;
&lt;p&gt;I finally got the last kinks out of the rig I was using to capture live video from FirefoxOS phones using the Point Grey devices last week. In order to make things reasonable I had to write some custom code to isolate the actual device screen from the rest of capture and a few other things. The setup looks interesting (reminds me a bit of something out of the War of the Worlds):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wrla.ch/blog/wp-content/uploads/2013/04/eideticker-pointgrey-mounted.jpg&quot;&gt;&lt;img alt=&quot;eideticker-pointgrey-mounted&quot; class=&quot;alignnone size-full wp-image-894&quot; height=&quot;683&quot; src=&quot;http://wrla.ch/blog/wp-content/uploads/2013/04/eideticker-pointgrey-mounted.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here’s some example video of a test I wrote up to measure the performance of contacts scrolling performance (measured at a very respectable 44 frames per second, in case you wondering):&lt;/p&gt;
&lt;p&gt;&lt;video controls=&quot;controls&quot; src=&quot;http://wrla.ch/blog/wp-content/uploads/eideticker/contacts-scrolling-pointgrey.webm&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Surprisingly enough, I didn’t wind up having to write up any code to compensate for a noisy image. Of course there’s a certain amount of variance in every frame depending on how much light is hitting the camera sensor at any particular moment, but apparently not enough to interfere with getting useful results in the tests I’ve been running.&lt;/p&gt;
&lt;p&gt;Likely next step: Create some kind of chassis for mounting both the camera and device on a permanent basis (instead of an adhoc one on my desk) so we can start running these sorts of tests on a daily basis, much like we currently do with Android on the &lt;a href=&quot;http://eideticker.wrla.ch&quot;&gt;Eideticker Dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As an aside, I’ve been really impressed with both the &lt;a href=&quot;https://wiki.mozilla.org/Auto-tools/Projects/Marionette&quot;&gt;Marionette&lt;/a&gt; framework and the gaiatests python module that was written up for FirefoxOS. Writing the above test took just 5 minutes — and &lt;a href=&quot;https://github.com/mozilla/eideticker/blob/master/src/tests/b2g/appscrolling/scroll.py&quot;&gt;the code&lt;/a&gt; is quite straightforward. Quite the pleasant change from my various efforts in Android automation.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Apr 2013 15:32:51 +0000</pubDate>
	<dc:creator>William Lachance</dc:creator>
        <enclosure url="http://wrla.ch/blog/wp-content/uploads/eideticker/contacts-scrolling-pointgrey.webm" length="88771" type="video/webm"/>
</item>
<item>
	<title>Kartikaya Gupta: Watching commits to mozilla-central</title>
	<guid isPermaLink="false">https://staktrace.com/spout/entry.php?referTag=mozilla&amp;id=797</guid>
	<link>https://staktrace.com/spout/entry.php?id=797</link>
	<description>&lt;p class=&quot;blogEntry&quot;&gt;Something I've wanted for a while is a way to receive notifications of commits to specific folders in mozilla-central, with some reasonable amount of diff included. Well, turns out there are now a bunch of ways to do this, so here's a quick rundown.
&lt;br /&gt;&lt;/p&gt;&lt;ul class=&quot;blogEntry&quot;&gt;&lt;li&gt;&lt;b&gt;hgweb's Atom feed&lt;/b&gt; - I'm only including this for completeness, but you can get an Atom feed of all changes to the repository by using the RSS icon at the bottom of any page in the &lt;a href=&quot;https://hg.mozilla.org/mozilla-central/&quot;&gt;repo&lt;/a&gt;. Unfortunately, the feed &lt;strike&gt;is for all changes to the repo (can't filter by particular folders/files) and&lt;/strike&gt; doesn't include diffs, so it's limited in usefulness.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dave Townsend's Hg Change Feed&lt;/b&gt; - Dave Townsend recently set up a more comprehensive feed system and blogged about this (see &lt;a href=&quot;http://www.oxymoronical.com/blog/2013/04/Get-notifications-about-changes-to-any-directory-in-mercurial&quot;&gt;blog post&lt;/a&gt; or jump straight to &lt;a href=&quot;http://hgchanges.fractalbrew.com/&quot;&gt;the tree navigator&lt;/a&gt; to subscribe). He has it set up for comm-central, mozilla-central, and mozilla-inbound, and you can watch any folder/file in any of these repos. Pretty nifty! However, the RSS feeds don't include diffs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RSS to email options&lt;/b&gt; - Both of the above options give you RSS or Atom feeds, but some people prefer to get this as email. IFTTT recipes are a simple way to do this; Dave Townsend set up one for &lt;a href=&quot;https://ifttt.com/recipes/88239&quot;&gt;the toolkit folder&lt;/a&gt; and Margaret created one for &lt;a href=&quot;https://ifttt.com/recipes/88897&quot;&gt;the mobile folder&lt;/a&gt;. If you use Zimbra to manage your mail, you can also use that to get RSS as email; you can set this up in the web interface when you create a new folder. As is to be expected, these options just convert the RSS item to email, and so also don't contain diffs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;My mailing lists&lt;/b&gt; - Since I really really wanted to get diffs in the email notifications, I decided to roll my own solution. I already have an Amazon EC2 instance running for ZNC, so I cloned mozilla-central there, and wrote a quick script to pull the tree, look for changes in specific folders, and send an email using Amazon SES (free for the volume I'm sending at). The email goes to a &lt;a href=&quot;http://lists.staktrace.com/listinfo.cgi&quot;&gt;mailman instance&lt;/a&gt; I also set up on this domain, so anybody who is interested can sign up. Right now I have mailing lists for &lt;a href=&quot;http://lists.staktrace.com/listinfo.cgi/mobile-patches-staktrace.com&quot;&gt;mobile/&lt;/a&gt; and &lt;a href=&quot;http://lists.staktrace.com/listinfo.cgi/widget-android-patches-staktrace.com&quot;&gt;widget/android/&lt;/a&gt;, since that's what I'm interested in, but I can add other folders if there is sufficient demand. With this approach it requires some work on my part to set it up for specific files and folders, but I get diffs in the emails and can customize it further as I find things that would be useful.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;blogEntry&quot;&gt;
&lt;br /&gt;Did I miss any options? Post in the comments.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Apr 2013 14:11:47 +0000</pubDate>
	<dc:creator>stak</dc:creator>
</item>
<item>
	<title>Lucas Rocha: Multi-part items in Smoothie</title>
	<guid isPermaLink="false">http://lucasr.org/?p=3628</guid>
	<link>http://lucasr.org/2013/04/22/multi-part-items-in-smoothie/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://lucasr.org/2013/01/06/introducing-smoothie/&quot; title=&quot;Introducing Smoothie&quot;&gt;Smoothie&lt;/a&gt; makes it really easy to load &lt;em&gt;ListView&lt;/em&gt;/&lt;em&gt;GridView&lt;/em&gt; items asynchronously, off the UI thread. It handles all the complexity from gestures, threads, scrolling state, preloading, and view recycling behind a simple API.&lt;/p&gt;
&lt;p&gt;Up until now, one of the biggest limitations of the Smoothie API has been the lack of proper support for multi-part items. What is a multi-part item? It’s a &lt;em&gt;ListView&lt;/em&gt;/&lt;em&gt;GridView&lt;/em&gt; item composed by multiple parts that have to be loaded asynchronously with different priorities as you scroll.&lt;/p&gt;
&lt;p&gt;Classic example: a list of photos with items composed by the photo image and the author’s avatar—both loaded from the cloud. With the existing API,  Smoothie would force you to load the whole content of each item in one go. This means you were forced to load both the main photo image and the avatar image for each item before loading the next item in the list.&lt;/p&gt;
&lt;p&gt;What if you wanted to start loading the main photo image of all visible items before loading their respective avatars? The photos are probably the content your users are actually interested in after all. That’s what the multi-part item support is about. It allows you to split the loading of each item into multiple asynchronous operations with different global priorities.&lt;/p&gt;
&lt;p&gt;So, how would you implement the above example assigning higher priority to the main photo image over the avatar using Smoothie? Assuming you’re already familiar with Smoothie’s API, just follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Override the &lt;em&gt;getItemPartCount()&lt;/em&gt; method from &lt;em&gt;ItemLoader. &lt;/em&gt;Return the number of parts the item in the given Adapter position has.&lt;/li&gt;
&lt;li&gt;Handle the new &lt;em&gt;itemPart &lt;/em&gt;argument accordingly in &lt;em&gt;loadItemPartFromMemory()&lt;/em&gt;,&lt;em&gt; loadItemPart()&lt;/em&gt;, and &lt;em&gt;displayItemPart(). &lt;/em&gt;These methods will be called once for each item part.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The item parts will have indexes starting from zero. e.g. for items with 2 parts, the part indexes will be 0 and 1. The indexes also define the relative priority between parts. &lt;em&gt;Smoothie&lt;/em&gt; will load the part with index 0 for all visible items before loading part with index 1.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important note:&lt;/strong&gt; I had to break API backwards compatibility. If you don’t really need multi-part items, the only change you’ll have to make in your code is to subclass from &lt;em&gt;SimpleItemLoader&lt;/em&gt; instead of &lt;em&gt;ItemLoader. SimpleItemLoader &lt;/em&gt;is an &lt;em&gt;ItemLoader&lt;/em&gt; specialized in single-part items that hides all the part-related bits from the API.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/lucasr/smoothie/blob/master/library/src/org/lucasr/smoothie/ItemLoader.java&quot;&gt;updated documentation&lt;/a&gt; contains code samples and a more detailed overview of the new API. Grab the &lt;a href=&quot;https://github.com/lucasr/smoothie&quot;&gt;latest code&lt;/a&gt; while it’s hot. Feedback, bug reports, and patches are all very welcome as usual.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Apr 2013 11:51:24 +0000</pubDate>
	<dc:creator>Lucas Rocha</dc:creator>
</item>
<item>
	<title>Lucas Rocha: Firefox for Android’s UI polishing Hackathon</title>
	<guid isPermaLink="false">http://lucasr.org/?p=3610</guid>
	<link>http://lucasr.org/2013/04/22/firefox-for-androids-ui-polishing-hackathon/</link>
	<description>&lt;p&gt;We’ve been discussing the idea of doing periodic topic-oriented hackathons in the front-end team. The idea is simple: pick a topic—a specific part or aspect of the product—and have the whole team focused on it for a couple days. The goal is to bring substantial and fast improvements on specific areas.&lt;/p&gt;
&lt;p&gt;As an initial experiment, we’ll be doing the &lt;a href=&quot;https://wiki.mozilla.org/Mobile/Hacking/UIPolishingHackathon&quot;&gt;first hackathon&lt;/a&gt; this week from Wednesday to Friday and we’re going to focus on UI polishing bugs—those UI papercuts that are not so prominent in isolation but, when fixed en masse, make a whole lot of difference.&lt;/p&gt;
&lt;p&gt;It’s important to have a good list of bugs before we begin. So, you can start nominating Fennec bugs for the hackathon now by tagging them with “ui-hackathon”. We’ll cleanup this list and maybe prioritize them a bit during the planning session on the first day of the hackathon.&lt;/p&gt;
&lt;p&gt;As usual, everyone is welcome to participate. You can help us by tagging bugs, or better yet, fixing them. Have a look at the &lt;a href=&quot;https://wiki.mozilla.org/Mobile/Hacking/UIPolishingHackathon&quot;&gt;wiki page&lt;/a&gt; for more details on the agenda.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Apr 2013 09:51:49 +0000</pubDate>
	<dc:creator>Lucas Rocha</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Search Providers: Changing the Default</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/48467767845</guid>
	<link>http://fennecnightly.tumblr.com/post/48467767845</link>
	<description>&lt;p&gt;When you type a non-URL into Firefox, we search for the terms using the default search provider. You can now change the default provider.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/bab33c42e7bd8216f3177e12f835f1de/tumblr_inline_mlko7uOeOX1qz4rgp.png&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 20 Apr 2013 21:14:02 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: Domain auto-completion support lands in Nightly. Navigate with...</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/48380781320</guid>
	<link>http://fennecnightly.tumblr.com/post/48380781320</link>
	<description>&lt;img src=&quot;http://24.media.tumblr.com/ccc225150719f639fd60d0cad2df1b4f/tumblr_mlitauF5jg1s8xn2do1_500.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Domain auto-completion support lands in Nightly. Navigate with even less typing!&lt;/p&gt;</description>
	<pubDate>Fri, 19 Apr 2013 21:06:31 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: Faster LocalStorage</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/48294952308</guid>
	<link>http://fennecnightly.tumblr.com/post/48294952308</link>
	<description>&lt;a href=&quot;http://www.janbambas.cz/firefox-23-new-faster-localstorage/&quot;&gt;Faster LocalStorage&lt;/a&gt;: &lt;p&gt;Honza Bambas lands a faster implementation of LocalStorage in Nightly&lt;/p&gt;</description>
	<pubDate>Thu, 18 Apr 2013 19:32:36 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: WebRTC Support on Android</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/48216548530</guid>
	<link>http://fennecnightly.tumblr.com/post/48216548530</link>
	<description>&lt;a href=&quot;http://www.morbo.org/2013/04/webrtc-support-on-android.html&quot;&gt;WebRTC Support on Android&lt;/a&gt;: &lt;p&gt;Gian-Carlo talks about the initial WebRTC support that just landed in Nightly.&lt;/p&gt;</description>
	<pubDate>Wed, 17 Apr 2013 19:37:01 +0000</pubDate>
</item>
<item>
	<title>Gian-Carlo Pascutto: WebRTC support on Android</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-5232577621384962517.post-5972088845572313665</guid>
	<link>http://www.morbo.org/2013/04/webrtc-support-on-android.html</link>
	<description>Yesterday, WebRTC support landed in Firefox for Android, which means it is available in today's Nightly. Wait a minute, you might say, didn't you &lt;a href=&quot;http://www.youtube.com/watch?v=rWPZZeXK6g4&quot;&gt;demo this already at MWC a month and a half ago&lt;/a&gt;? Well yes. But to get the code used for that demo landed in the main Firefox repository (instead of a branch), some cleanup work was needed, and we needed to make sure that older, pre-ICS phones didn't just blow up when you tried to make a phone call on them.&lt;br /&gt;&lt;br /&gt;Although, in theory, WebRTC should work on any device Firefox for Android supports, for an ideal experience you're going to want to have an Ice Cream Sandwich or Jelly Bean device. We'll do what we can for older devices, but realistically Android was missing some essential APIs before that time (especially before Android 2.3) and device performance will also limit what experience you get. Nevertheless I had no problems getting a video call up on my Galaxy Tab 10.1 with Android 3.2, and many devices will probably work just fine.&lt;br /&gt;&lt;br /&gt;By default WebRTC is included in Firefox for Android, but behind a preference that is off by default. To enable, flip these preferences to &quot;true&quot;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;media.navigator.enabled&lt;/li&gt;&lt;li&gt;media.peerconnection.enabled&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Secondly, because the UI is currently very provisional, you might want to disable the dialog that asks for permission to use your camera and microphone (but remember the implications of this, you probably don't want to keep it that way after testing!). Enable this setting:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;media.navigator.permission.disabled&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Some example pages for WebRTC APIs are here:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://mozilla.github.io/webrtc-landing/&quot;&gt;Mozilla WebRTC landing page&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Note that as the code only just landed, there are going to be bugs. Some known ones are the permissions dialog (if enabled) only remembering the first choice you make, giving you audio or video, but not both, and when disabling permissions, we always take the first camera, which is probably the one you didn't want. On some devices the video might be upside down, too. Expect most of these to be fixed in the next days and weeks. If you find any bugs that I haven't listed here, feel free to file in &lt;a href=&quot;https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&quot;&gt;Bugzilla&lt;/a&gt; and we'll get to work on them.</description>
	<pubDate>Wed, 17 Apr 2013 19:06:53 +0000</pubDate>
	<author>noreply@blogger.com (Gian-Carlo Pascutto)</author>
</item>
<item>
	<title>Fennec Nightly News: Easier Search</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/48213299345</guid>
	<link>http://fennecnightly.tumblr.com/post/48213299345</link>
	<description>&lt;p&gt;Search gets easier in Nightlies. We show your search terms in the URLbar instead of the long, strange search URL.&lt;/p&gt;</description>
	<pubDate>Wed, 17 Apr 2013 18:46:23 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: Push Announcements</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/47778310034</guid>
	<link>http://fennecnightly.tumblr.com/post/47778310034</link>
	<description>&lt;p&gt;Firefox for Android has a background system built-in that allows Mozilla to broadcast important messages to Firefox users. We use it when we need to deliver a message quickly, even if Firefox is not running.&lt;/p&gt;
&lt;p&gt;We had a chance to test this system:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://media.tumblr.com/8798e481e98d89a0cfa984c85888c312/tumblr_inline_ml58g2RRSs1qz4rgp.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A few days ago, we broke the update system in Nightly, meaning people would be stuck on an old version and never be able to automatically update to a new version. It happens sometimes.&lt;/p&gt;
&lt;p&gt;The broadcast announcement made it easier to let people know about the problem and give them a way to get back on updates. &lt;/p&gt;</description>
	<pubDate>Fri, 12 Apr 2013 13:11:18 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: JavaScript Improvements</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/47588165150</guid>
	<link>http://fennecnightly.tumblr.com/post/47588165150</link>
	<description>&lt;p&gt;OdinMonkey (asm.js support) landed on Android ARMv7 and x86 Nightlies. IonMonkey landed in Android ARMv6 Nightlies. Along with the new &lt;a href=&quot;https://blog.mozilla.org/javascript/2013/04/05/the-baseline-compiler-has-landed/&quot;&gt;Baseline Compiler&lt;/a&gt;, JavaScript performance is on fire. Check out the &lt;a href=&quot;http://www.arewefastyet.com/#machine=10&quot;&gt;graphs&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Wed, 10 Apr 2013 02:05:51 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: Firefox Tip: Managing Site Settings</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/47514467513</guid>
	<link>http://fennecnightly.tumblr.com/post/47514467513</link>
	<description>&lt;p&gt;Blocking popups, sharing location, saving passwords, storing offline data and the list goes on. Web sites can ask your permission to enable and use several Web APIs. The list keeps getting longer too.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;After making a decision to allow or not allow a web site to do something, how do you manage those permissions? In Firefox for Android, the URLBar long-tap menu offers a way to manage a web site’s settings.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img src=&quot;http://media.tumblr.com/2d2e98f9bd35f00e182b0d184e6e2cf9/tumblr_inline_mkywgxgfD11qz4rgp.png&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Choose “Site Settings” from the menu and you’ll be shown a list of all the permission set for the current web site.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img src=&quot;http://media.tumblr.com/e317f94354b4c9c5c324946b5eb2ff7f/tumblr_inline_mkywjrJuE41qz4rgp.png&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The dialog shows you the current value of each setting and allows you to clear settings. If you clear a setting, you’ll be prompted again the next time the web site attempts to use the specific feature.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 09 Apr 2013 03:38:34 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: Android Makes Ugly Code</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/47473061081</guid>
	<link>http://fennecnightly.tumblr.com/post/47473061081</link>
	<description>mfinkle, I'm inclined to r- but this is just because I feel we don't know what's actually going on&lt;br /&gt;
 gingerbread calls &quot;lock&quot; when closing a cursor, but ICS+ does not&lt;br /&gt;
 mfinkle, ok, then my suspicion was correct: locking db to close a cursor is nonsense&lt;br /&gt;
 mfinkle, in which case I'd probably only do the close-cursor-in-bg-thread for pre-ics&lt;br /&gt;
 lucasr, that is even uglier!&lt;br /&gt;
 mfinkle, it's not cute I agree ;-)&lt;br /&gt;
 all code must be cute</description>
	<pubDate>Mon, 08 Apr 2013 19:17:03 +0000</pubDate>
</item>
<item>
	<title>Kartikaya Gupta: Twitter: 1, Google Reader: 0</title>
	<guid isPermaLink="false">https://staktrace.com/spout/entry.php?referTag=mozilla&amp;id=795</guid>
	<link>https://staktrace.com/spout/entry.php?id=795</link>
	<description>&lt;p class=&quot;blogEntry&quot;&gt;Here's my hypothesis: Twitter has subsumed RSS.
&lt;br /&gt;
&lt;br /&gt;Pretty much any news site or blogger you would usually want to follow has both RSS and Twitter, and Twitter is just much simpler to use. It's a lot easier to follow somebody on Twitter than it is to add an RSS feed to a web-based aggregator like Google Reader. If you don't use a web-based aggregator you have portability/syncing issues where you have to set up your feeds on individual devices and keep them all in sync. Most importantly, Twitter serves as single notification stream that includes simple messages (tweets) and links to other longer/larger content.
&lt;br /&gt;
&lt;br /&gt;So really, it's Twitter's fault that Google Reader is going away. But they're not the only one to blame. Firefox 4 (IIRC) removed the RSS button, making it that much harder to use RSS. Sure, you can argue very few people used it anyway, so removing it was a good idea, but that doesn't mean it didn't accelerate the downfall of RSS. I think other browsers have also made the RSS subscription flow less easy to use over the last few years.
&lt;br /&gt;
&lt;br /&gt;Ordinarily I wouldn't really care about this, except that I kind of like the open web. Twitter is not the open web. I don't want Twitter to end up as the only way for me to subscribe to content. I fear that Google killing Reader is a sign that RSS use is already dwindling, and unless we act to save it, it will die completely.
&lt;br /&gt;
&lt;br /&gt;Thankfully, the fine folks at Digg are building a &lt;a href=&quot;http://blog.digg.com/post/45355701332/were-building-a-reader&quot;&gt;Reader replacement&lt;/a&gt;, which I think is great. Not because I'll use it, but because it'll help slow (and hopefully reverse) the death of RSS.
&lt;br /&gt;
&lt;br /&gt;It would be cool to see their reader clone (or any other web-based aggregators) take on Twitter directly, by making it as easy to reply/comment on articles as possible, and by having a lightweight way to &quot;tweet&quot; new content directly from the aggregator. For the former, it might be necessary to extend RSS to include things like URLs that accept HTTP POST replies or comments, and to specify the format of those POSTs (yay open standards). The latter will take a bit more architecting, probably requiring your feed aggregator to also be your feed publisher, so that it can insert these &quot;tweets&quot; into your feed along with your blog and/or other content.
&lt;br /&gt;
&lt;br /&gt;I don't exactly know what would work and what wouldn't, and I'm probably the wrong person to be asking anyway since I don't use Twitter. But I do use RSS, and I hope that the only thing that kills RSS is another, even better, open standard.&lt;/p&gt;</description>
	<pubDate>Sun, 07 Apr 2013 20:12:14 +0000</pubDate>
	<dc:creator>stak</dc:creator>
</item>
<item>
	<title>Margaret Leibovic: Building the Firefox for Android Community</title>
	<guid isPermaLink="true">http://blog.margaretleibovic.com/post/47206783096</guid>
	<link>http://blog.margaretleibovic.com/post/47206783096</link>
	<description>&lt;p&gt;Last week I attended a &lt;a href=&quot;https://wiki.mozilla.org/Contribute/Meetup/Toronto_Mar_2013&quot; id=&quot;&quot; target=&quot;_blank&quot;&gt;community building meetup in Toronto&lt;/a&gt;, where I had the opportunity to meet with individuals who are driving volunteer participation across different areas of the Mozilla project. Together we discussed the things our teams are doing to engage volunteers, and we brainstormed ways that we can continue to grow Mozilla. These discussions gave me lots of ideas about what we can do to grow our Firefox for Android community, but most of them boiled down to three main points.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Improve communication.&lt;/strong&gt; The first part of getting involved in a project is figuring out what’s going on. Our team tends to have lots of discussions on IRC and in Bugzilla, which is great if you’re following those channels closely, but it can be hard for a casual observer to keep up. We’re already trying to address this issue with a &lt;a href=&quot;https://mail.mozilla.org/listinfo/mobile-firefox-dev&quot; id=&quot;&quot; target=&quot;_blank&quot;&gt;new mailing list&lt;/a&gt; for development discussions, as well as &lt;a href=&quot;https://twitter.com/FennecNightly&quot; id=&quot;&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt; and &lt;a href=&quot;http://fennecnightly.tumblr.com/&quot; id=&quot;&quot; target=&quot;_blank&quot;&gt;Tumblr&lt;/a&gt; accounts for more lightweight updates. Mark Finkle just wrote a &lt;a href=&quot;http://starkravingfinkle.org/blog/2013/04/following-the-firefox-for-android-team/&quot; id=&quot;&quot; target=&quot;_blank&quot;&gt;blog post&lt;/a&gt; covering these communication channels in more detail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Diversify opportunities.&lt;/strong&gt; When newcomers show up, we help them set up a build environment and point them at a list of &lt;a href=&quot;http://www.joshmatthews.net/bugsahoy/?mobile=1&quot; id=&quot;&quot; target=&quot;_blank&quot;&gt;mentor bugs&lt;/a&gt;. This is a great way to get started, but it doesn’t provide a path to becoming a core contributor, or a path toward other types of contributions. I’d like us to encourage more advanced contributions, such as helping debug difficult crashes, or working on bugs that will help us complete a feature we’re targeting for a given release. I also want us to do a better job advertising all the different ways someone can contribute to Firefox for Android, especially testing and support. Our &lt;a href=&quot;https://wiki.mozilla.org/Mobile/Get_Involved&quot; id=&quot;&quot; target=&quot;_blank&quot;&gt;“Get Involved” page&lt;/a&gt; mentions some of these opportunities, but there’s probably more we can do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Manage expectations. &lt;/strong&gt;Even though we do our best to make it easy, writing a patch is hard. New contributors need to remember that it can take a significant amount of effort to get a patch accepted, and core team members need to remember that it takes time for newcomers to develop the knowledge that we often take for granted. We also need to recognize that newcomers are volunteering their time to help improve Firefox, and that mentors are volunteering their time to help grow our community. It’s a lot of work all around, but no one ever said open source software was easy!&lt;/p&gt;</description>
	<pubDate>Fri, 05 Apr 2013 18:38:44 +0000</pubDate>
</item>
<item>
	<title>Fennec Nightly News: Subscribing to Feeds</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/47123794636</guid>
	<link>http://fennecnightly.tumblr.com/post/47123794636</link>
	<description>&lt;a href=&quot;http://starkravingfinkle.org/blog/2013/04/firefox-for-android-subscribing-to-feeds/&quot;&gt;Subscribing to Feeds&lt;/a&gt;: &lt;p&gt;Nightly adds support for subscribing to RSS/Atom feeds&lt;/p&gt;</description>
	<pubDate>Thu, 04 Apr 2013 18:59:12 +0000</pubDate>
</item>
<item>
	<title>Mark Finkle: Firefox for Android: Subscribing to Feeds</title>
	<guid isPermaLink="false">http://starkravingfinkle.org/blog/?p=1251</guid>
	<link>http://starkravingfinkle.org/blog/2013/04/firefox-for-android-subscribing-to-feeds/</link>
	<description>&lt;p&gt;Firefox on desktop has nice support for previewing and subscribing to syndication feeds (RSS and Atom). There is even support for creating Live Bookmarks. Firefox for Android does not support anything related to syndication feeds… &lt;strong&gt;until now&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We just landed basic support for subscribing to feeds discovered on a web page. This is only initial support, so many things are not supported.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If feeds are discovered on a page, Firefox will enable a menu action on the URLBar long-tap menu. Yes, we have a URLBar long-tap menu!&lt;/li&gt;
&lt;li&gt;Tap the “Subscribe to Page” menu action.&lt;/li&gt;
&lt;li&gt;If there is more than one advertised feed, choose the feed you want.&lt;/li&gt;
&lt;li&gt;Pick the online web service where you want to add the subscription. The choices really depend on the locale, but initially Google Reader (but not for long) and Yahoo are supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The limitations:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We only support online web services right now. We are looking into local application support too, but have not seen a universal way of listing feed reader applications. We are working on a proposal and want to get support from native feed reader apps like Feedly and Newsblur.&lt;/li&gt;
&lt;li&gt;No support for feed previews. No plan to add support&lt;/li&gt;
&lt;li&gt;No support for adding new web service handlers. We are working to add this support.&lt;/li&gt;
&lt;li&gt;No support for Live Bookmarks. No plan to add support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;In pictures:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Long-tap on the URLBar&lt;br /&gt;
&lt;a href=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-a.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;alignnone size-medium wp-image-1253&quot; height=&quot;250&quot; src=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-a-300x250.png&quot; title=&quot;fennec-feeds-a&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Choose “Subscribe to Page”&lt;br /&gt;
&lt;a href=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-2.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;alignnone size-medium wp-image-1254&quot; height=&quot;300&quot; src=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-2-180x300.png&quot; title=&quot;fennec-feeds-2&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Choose the feed&lt;br /&gt;
&lt;a href=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-3.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;alignnone size-medium wp-image-1255&quot; height=&quot;300&quot; src=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-3-180x300.png&quot; title=&quot;fennec-feeds-3&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Choose the web service&lt;br /&gt;
&lt;a href=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-4.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;alignnone size-medium wp-image-1256&quot; height=&quot;300&quot; src=&quot;http://starkravingfinkle.org/blog/wp-content/uploads/2013/04/fennec-feeds-4-180x300.png&quot; title=&quot;fennec-feeds-4&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 04 Apr 2013 18:56:07 +0000</pubDate>
	<dc:creator>Mark Finkle</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Add-on: URL Fixer</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/47109339075</guid>
	<link>http://fennecnightly.tumblr.com/post/47109339075</link>
	<description>&lt;a href=&quot;https://addons.mozilla.org/en-US/android/addon/url-fixer/&quot;&gt;Add-on: URL Fixer&lt;/a&gt;: &lt;p&gt;Fixes common typos in URLs entered in the address bar&lt;/p&gt;</description>
	<pubDate>Thu, 04 Apr 2013 14:47:00 +0000</pubDate>
</item>
<item>
	<title>Mark Finkle: Following the Firefox for Android Team</title>
	<guid isPermaLink="false">http://starkravingfinkle.org/blog/?p=1248</guid>
	<link>http://starkravingfinkle.org/blog/2013/04/following-the-firefox-for-android-team/</link>
	<description>&lt;p&gt;&lt;strong&gt;On The Web&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you want to stay up to date on any new developments in Firefox for Android (Fennec), check out the new &lt;a href=&quot;http://fennecnightly.tumblr.com/&quot; target=&quot;_blank&quot;&gt;Tumblr&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/FennecNightly&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt; stream. Lots of updates on what’s landing in Fennec Nightly, tips and tricks and summaries of the Mobile Engineering Team meetings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mailing List&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We have a new mailing list at &lt;a href=&quot;https://mail.mozilla.org/listinfo/mobile-firefox-dev&quot; target=&quot;_blank&quot;&gt;mobile-dev-firefox@mozilla.org&lt;/a&gt;. The newsgroup at &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.platforms.mobile&quot; target=&quot;_blank&quot;&gt;mozilla.dev.platforms.mobile&lt;/a&gt; is being closed. Use the new mailing list to following along and give feedback on topics being discussed, or post your own ideas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On IRC&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As always, you can jump on &lt;a href=&quot;https://wiki.mozilla.org/IRC&quot; target=&quot;_blank&quot;&gt;Mozilla IRC&lt;/a&gt; and talk directly to the Mobile team in the #mobile channel. This is great if you want to start &lt;a href=&quot;https://wiki.mozilla.org/Mobile/Get_Involved#Hacking&quot; target=&quot;_blank&quot;&gt;working on the code&lt;/a&gt;, need help &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Extensions/Mobile&quot; target=&quot;_blank&quot;&gt;writing an add-on&lt;/a&gt;, want to help &lt;a href=&quot;https://wiki.mozilla.org/Mobile/Get_Involved#Testing&quot; target=&quot;_blank&quot;&gt;investigate a bug&lt;/a&gt; or just rant about some design decision.&lt;/p&gt;</description>
	<pubDate>Thu, 04 Apr 2013 13:17:49 +0000</pubDate>
	<dc:creator>Mark Finkle</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: JavaScript Improvements</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/47066114802</guid>
	<link>http://fennecnightly.tumblr.com/post/47066114802</link>
	<description>&lt;a href=&quot;http://www.arewefastyet.com/#machine=10&quot;&gt;JavaScript Improvements&lt;/a&gt;: &lt;p&gt;Checkout the latest ARMv7 JavaScript performance improvements&lt;/p&gt;</description>
	<pubDate>Thu, 04 Apr 2013 00:38:12 +0000</pubDate>
</item>
<item>
	<title>Ian Barlow: Firefox, Android and Quit Buttons</title>
	<guid isPermaLink="false">http://ianbarlow.wordpress.com/?p=423</guid>
	<link>http://ianbarlow.wordpress.com/2013/04/03/quitting-on-android/</link>
	<description>&lt;p&gt;With the recent launch of Firefox 20 for Android, we retired the quit button. Some of you noticed. Some of you were sad. Which in turn made us sad. Here’s how you can get it back, and some background around why we removed it in the first place.&lt;/p&gt;
&lt;h3&gt;You broke my workflow!&lt;/h3&gt;
&lt;p&gt;If you used Quit and were unhappy to see it go, well, we’re really sorry about that. The good news is that it’s easy to get back. Just install the &lt;a href=&quot;https://addons.mozilla.org/en-US/android/addon/quitnow/&quot; title=&quot;Get the QuitNow Add-on&quot;&gt;QuitNow add-on&lt;/a&gt;, which will put Quit right back in the menu where it was.&lt;/p&gt;
&lt;p&gt;Easy, right? Now go forth and quit like the wind!&lt;/p&gt;
&lt;h3&gt;A bit of history&lt;/h3&gt;
&lt;p&gt;We introduced Quit about 2 years ago, in a time where Android phones were lower in performance, and had poorer memory management built in than they do today. Our users were having memory issues on lower end phones, where Android wasn’t killing background tasks as well as it should have been.&lt;/p&gt;
&lt;p&gt;Now, adding a Quit button was kind of a hack that apps aren’t supposed to do. Quitting an app isn’t really a core UI concept on Android, since it handles this kind of memory management at the OS level, and isn’t user controlled per app like on desktop. But we added it in, and our users were happy.&lt;/p&gt;
&lt;p&gt;As time went by, phones continued to get faster, and Android improved by leaps and bounds. Android 4.0 brought with it better memory management than before, and also provided users with a multi-tasking interface that also allowed apps to be manually closed, satisfying those who preferred managing apps on their own over simply allowing the OS to make choices for them.&lt;/p&gt;
&lt;h3&gt;Growing with Android&lt;/h3&gt;
&lt;p&gt;As these improvements have developed on Android, Firefox has been improving release by release as well. Firefox 20 shipped with Private Browsing, for example. We have lots of other great stuff in the pipeline over the next several releases. A better homepage. A more beautiful Reader experience. Enhancements to Search. And much more.&lt;/p&gt;
&lt;p&gt;The thing is, controls to operate these features need somewhere to live in our UI, and Firefox is designed to be as minimal and out of the way as we can make it. We aim to avoid overwhelming people with UI since web content always comes first. So we tuck things into the title bar, into the tab menu, and remaining items go into the Android menu.&lt;/p&gt;
&lt;p&gt;This means that from time to time, we need to do a bit of spring cleaning on our UI to make sure we have the most useful, and most commonly used controls at your fingertips.&lt;/p&gt;
&lt;p&gt;Given the advances in the Android memory management I mentioned above, it seemed reasonable to remove the Quit button to free up menu UI, and that it wouldn’t adversely affect device performance. The fact is, users simply aren’t faced with the same issues on newer phones that existed 2 years ago. (I should note that we only removed the quit button on phones running Android 4.0+ because of its aforementioned improvements. This means if you are on Android 2.3 Gingerbread or older, nothing will have changed. The quit button will still be there.)&lt;/p&gt;
&lt;p&gt;It’s also worth repeating that Quit simply isn’t a core UI concept in Android apps anyway — notice that none of Google’s apps (GMail, Maps, even Chrome, to name a few) include a quit function, nor do must other independently produced apps.&lt;/p&gt;
&lt;h3&gt;Make it yours&lt;/h3&gt;
&lt;p&gt;Of course, none of that is meant to convince you that you shouldn’t have a quit button if you truly have a need for one. And that’s what makes Firefox so great: even if a feature doesn’t exist as core functionality in the browser, chances are that an add-on either exists or can be built to satisfy that need. We recognize that everyone uses the internet differently, and we encourage everyone to customize, hack and tweak your way to a better Firefox that works for you. It’s a lot easier than you think, and can make a world of difference to your experience!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/ianbarlow.wordpress.com/423/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ianbarlow.wordpress.com/423/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ianbarlow.wordpress.com&amp;amp;blog=775558&amp;amp;post=423&amp;amp;subd=ianbarlow&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 03 Apr 2013 21:33:47 +0000</pubDate>
	<dc:creator>ianbarlow</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Firefox Tip: Quitting</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/46949323385</guid>
	<link>http://fennecnightly.tumblr.com/post/46949323385</link>
	<description>&lt;p&gt;Firefox 20 for Android is out and we added a lot of cool features, like customizable home page and private browsing. We also removed some things, most notably the Quit menu.&lt;/p&gt;
&lt;p&gt;Android, and most mobile platforms, don’t really support the notion of quitting an application. The OS will take care of killing processes when it needs more resources. Android also has a “Recent Apps” list and allows you to kill an application by &lt;em&gt;swiping&lt;/em&gt; the application off the list.&lt;/p&gt;
&lt;p&gt;If you really want a Quit menu, try using the &lt;a href=&quot;https://addons.mozilla.org/en-US/android/addon/quitnow/&quot;&gt;QuitNow&lt;/a&gt; add-on for Firefox.&lt;/p&gt;</description>
	<pubDate>Tue, 02 Apr 2013 18:03:00 +0000</pubDate>
</item>
<item>
	<title>Geoff Brown: Firefox for Android Performance Measures – March Check-up</title>
	<guid isPermaLink="false">http://gbrownmozilla.wordpress.com/?p=404</guid>
	<link>http://gbrownmozilla.wordpress.com/2013/03/29/firefox-for-android-performance-measures-march-check-up/</link>
	<description>&lt;div&gt;
&lt;p&gt;The March 2013 summary of performance measures for Firefox for Android.&lt;/p&gt;
&lt;p&gt;No Talos regressions this month. RSS measurements are improving.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Talos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This section tracks Perfomatic graphs from graphs.mozilla.org for mozilla-central builds of Native Fennec (Android opt). The test names shown are those used on tbpl. See &lt;a href=&quot;https://wiki.mozilla.org/Buildbot/Talos&quot;&gt;https://wiki.mozilla.org/Buildbot/Talos&lt;/a&gt; for background on Talos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tcheckerboard&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Simple measure of “checkerboarding”. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tcheck.png&quot;&gt;&lt;img alt=&quot;0313tcheck&quot; class=&quot;alignnone size-full wp-image-406&quot; height=&quot;78&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tcheck.png?w=791&amp;amp;h=78&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;0.23 (start of month) – 0.0 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tcheck2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Measure of “checkerboarding” during simulation of real user interaction with page. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tcheck2.png&quot;&gt;&lt;img alt=&quot;0313tcheck2&quot; class=&quot;alignnone size-full wp-image-407&quot; height=&quot;74&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tcheck2.png?w=791&amp;amp;h=74&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3.47 (start of month) – 3.47 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;trobopan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Panning performance test. Value is square of frame delays (ms greater than 25 ms) encountered while panning. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tpan.png&quot;&gt;&lt;img alt=&quot;0313tpan&quot; class=&quot;alignnone size-full wp-image-411&quot; height=&quot;73&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tpan.png?w=791&amp;amp;h=73&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;12000 (start of month) – 12000 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tprovider&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Performance of history and bookmarks’ provider. Reports time (ms) to perform a group of database operations. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313provider.png&quot;&gt;&lt;img alt=&quot;0313provider&quot; class=&quot;alignnone size-full wp-image-405&quot; height=&quot;75&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313provider.png?w=791&amp;amp;h=75&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;375 (start of month) – 375 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tsvg_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Page load test for svg. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tsvg.png&quot;&gt;&lt;img alt=&quot;0313tsvg&quot; class=&quot;alignnone size-full wp-image-414&quot; height=&quot;77&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tsvg.png?w=791&amp;amp;h=77&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4020 (start of month) – 4000 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Generic page load test. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tp.png&quot;&gt;&lt;img alt=&quot;0313tp&quot; class=&quot;alignnone size-full wp-image-410&quot; height=&quot;74&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tp.png?w=791&amp;amp;h=74&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;720 (start of month) – 720 (end of month).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_main_rss_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tp-rss.png&quot;&gt;&lt;img alt=&quot;0313tp-rss&quot; class=&quot;alignnone size-full wp-image-408&quot; height=&quot;69&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tp-rss.png?w=791&amp;amp;h=69&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;95000000 (start of month) – 88000000 (end of month).&lt;/p&gt;
&lt;p&gt;Several improvements&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tp4m_shutdown_nochrome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tp-shutdown.png&quot;&gt;&lt;img alt=&quot;0313tp-shutdown&quot; class=&quot;alignnone size-full wp-image-409&quot; height=&quot;74&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313tp-shutdown.png?w=791&amp;amp;h=74&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;28000000 (start of month) – 25000000 (end of month).&lt;/p&gt;
&lt;p&gt;This “improvement” is bogus — see bug 797339.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Startup performance test. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313ts.png&quot;&gt;&lt;img alt=&quot;0313ts&quot; class=&quot;alignnone size-full wp-image-413&quot; height=&quot;73&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313ts.png?w=791&amp;amp;h=73&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3400 (start of month) – 3800 (end of month).&lt;/p&gt;
&lt;p&gt;There is significant noise in this test; it’s not clear if there was an actual regression this month.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ts_shutdown&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Shutdown performance test. Lower values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313ts-shutdown.png&quot;&gt;&lt;img alt=&quot;0313ts-shutdown&quot; class=&quot;alignnone size-full wp-image-412&quot; height=&quot;74&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313ts-shutdown.png?w=791&amp;amp;h=74&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;28000000 (start of month) – 25000000 (end of month).&lt;/p&gt;
&lt;p&gt;This “improvement” is bogus — see bug 797339.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Throbber Start / Throbber Stop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These graphs are taken from &lt;a href=&quot;http://mrcote.info/phonedash/#/&quot;&gt;http://mrcote.info/phonedash/#/&lt;/a&gt;.  Browser startup performance is measured on real phones (a variety of popular devices).&lt;/p&gt;
&lt;p&gt;This month’s graphs are incomplete (end early) but reflect the best data available at time of writing.&lt;/p&gt;
&lt;p&gt;“Time to throbber start” measures the time from process launch to the start of the throbber animation. Smaller values are better.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313throbstart.png&quot;&gt;&lt;img alt=&quot;0313throbstart&quot; height=&quot;375&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313throbstart.png?w=791&amp;amp;h=375&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“Time to throbber stop” measures the time from process launch to the end of the throbber animation. Smaller values are better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313throbstop.png&quot;&gt;&lt;img alt=&quot;0313throbstop&quot; class=&quot;alignnone size-full wp-image-417&quot; height=&quot;380&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313throbstop.png?w=791&amp;amp;h=380&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eideticker&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These graphs are taken from &lt;a href=&quot;http://eideticker.wrla.ch&quot; title=&quot;http://eideticker.wrla.ch&quot;&gt;http://eideticker.wrla.ch&lt;/a&gt;. Eideticker is a performance harness that measures user perceived performance of web browsers by video capturing them in action and subsequently running image analysis on the raw result. More info at: &lt;a href=&quot;https://wiki.mozilla.org/Project_Eideticker&quot;&gt;https://wiki.mozilla.org/Project_Eideticker&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide1.png&quot;&gt;&lt;img alt=&quot;0313eide1&quot; class=&quot;alignnone size-full wp-image-418&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide1.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide2.png&quot;&gt;&lt;img alt=&quot;0313eide2&quot; class=&quot;alignnone size-full wp-image-419&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide2.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide3.png&quot;&gt;&lt;img alt=&quot;0313eide3&quot; class=&quot;alignnone size-full wp-image-420&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide3.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide4.png&quot;&gt;&lt;img alt=&quot;0313eide4&quot; class=&quot;alignnone size-full wp-image-421&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide4.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide5.png&quot;&gt;&lt;img alt=&quot;0313eide5&quot; class=&quot;alignnone size-full wp-image-422&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide5.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide6.png&quot;&gt;&lt;img alt=&quot;0313eide6&quot; class=&quot;alignnone size-full wp-image-423&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide6.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide7.png&quot;&gt;&lt;img alt=&quot;0313eide7&quot; class=&quot;alignnone size-full wp-image-424&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide7.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide8.png&quot;&gt;&lt;img alt=&quot;0313eide8&quot; class=&quot;alignnone size-full wp-image-425&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide8.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide9.png&quot;&gt;&lt;img alt=&quot;0313eide9&quot; class=&quot;alignnone size-full wp-image-426&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide9.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide10.png&quot;&gt;&lt;img alt=&quot;0313eide10&quot; class=&quot;alignnone size-full wp-image-427&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide10.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide11.png&quot;&gt;&lt;img alt=&quot;0313eide11&quot; class=&quot;alignnone size-full wp-image-428&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/0313eide11.png?w=791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;awsy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.areweslimyet.com/mobile/&quot; rel=&quot;nofollow&quot;&gt;https://www.areweslimyet.com/mobile/&lt;/a&gt; for content and background information.&lt;/p&gt;
&lt;p&gt;awsy-mobile had a difficult month; we are re-generating the March graph data now. I’m going to skip these graphs this month since they are not quite ready yet.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/gbrownmozilla.wordpress.com/404/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gbrownmozilla.wordpress.com/404/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gbrownmozilla.wordpress.com&amp;amp;blog=22801181&amp;amp;post=404&amp;amp;subd=gbrownmozilla&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 29 Mar 2013 00:28:38 +0000</pubDate>
	<dc:creator>gbrown-mozilla</dc:creator>
</item>
<item>
	<title>Fennec Nightly News: Meeting Highlights (2013-03-27)</title>
	<guid isPermaLink="true">http://fennecnightly.tumblr.com/post/46441681250</guid>
	<link>http://fennecnightly.tumblr.com/post/46441681250</link>
	<description>&lt;p&gt;&lt;strong&gt;WebGL Canvas Performance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;James landed &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=829747&quot;&gt;bug 829747&lt;/a&gt; to improve performance of WebGL canvas updates. It could boost performance by 10%.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Packaged Apps Support&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;James Hugman landed initial &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=813736&quot;&gt;support&lt;/a&gt; for packaged apps in Firefox for Android.&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Apps/Packaged_apps&quot;&gt; Packaged apps&lt;/a&gt; will allow Firefox for Android to support privileged WebAPIs, giving apps more freedom to access more device APIs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keyboard &amp;amp; Gamepad Navigation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Kartikaya has been working to add navigation control for non-touch input systems like keyboards and game controllers. We have been testing on an &lt;a href=&quot;http://www.ouya.tv/&quot;&gt;Ouya&lt;/a&gt; game console system. Keep up to date on our status by following &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=831778&quot;&gt;bug 831778&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automated Testing&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Chris and Jim have been working to get IME tests into our automated test system. Geoff also landed &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=854549&quot;&gt;code&lt;/a&gt; to create screenshots from the test device when tests fail. This could make it easier to find the root cause of the failure or just debug intermittently failing tests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Miscellaneous&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Finkle is looking for ways to &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=853844&quot;&gt;remove&lt;/a&gt; the pageload throbber, which has produced some good feedback. Brian and Nick are closer to a release milestone for their Eclipse integration work. Sriram has been doing more work to reduce the number of views used on the UI layout. Lucas is adding &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=854457&quot;&gt;a11y support&lt;/a&gt; into the TwoWayView widget.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wiki.mozilla.org/Mobile/Notes/27-Mar-2013&quot;&gt;Full Details&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 27 Mar 2013 20:01:54 +0000</pubDate>
</item>
<item>
	<title>Geoff Brown: Screenshots for Robocop</title>
	<guid isPermaLink="false">http://gbrownmozilla.wordpress.com/?p=358</guid>
	<link>http://gbrownmozilla.wordpress.com/2013/03/26/screenshots-for-robocop/</link>
	<description>&lt;p&gt;&lt;a href=&quot;https://wiki.mozilla.org/Auto-tools/Projects/Robocop&quot; title=&quot;Robocop&quot;&gt;Robocop&lt;/a&gt; supports UI testing of Firefox for Android using &lt;a href=&quot;http://code.google.com/p/robotium/&quot; title=&quot;Robotium&quot;&gt;Robotium&lt;/a&gt;. With the changes in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=854549&quot; title=&quot;bug 854549&quot;&gt;bug 854549&lt;/a&gt;, Robocop now automatically generates a screenshot when a test fails, so you can see what was happening at the moment the test failed.&lt;/p&gt;
&lt;p&gt;I am hoping that this will help diagnose intermittent test failures, especially those that seem to only happen during automated testing.&lt;/p&gt;
&lt;p&gt;With these changes, robocop takes a screenshot whenever a test assertion fails or a test throws an exception. It does that with Robotium’s Solo.takeScreenshot(), which simply generates a jpg. Unfortunately, takeScreenshot is confused by our content view: Instead of capturing the displayed web page, it shows a big black rectangle. That’s going to be a big disappointment when debugging some failures, and I hope we can find a solution to this limitation, but at least we can see chrome — and a lot of tests fail on the awesome screen or when interacting with menus or other Java UI elements.&lt;/p&gt;
&lt;p&gt;The screenshot jpg is written to /mnt/sdcard/Robotium-Screenshots on the device. To allow this to work on tbpl, the robocop framework pulls the screenshot, base64 encodes it, and dumps it to the log. When debugging robocop failures on tbpl, look for “SCREENSHOT” in the log. You should see something like:&lt;/p&gt;
&lt;pre&gt;SCREENSHOT: data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEB ...&lt;/pre&gt;
&lt;p&gt;Copy/paste the base64 text to a file and decode it:&lt;/p&gt;
&lt;p&gt;base64 -d myfile &amp;gt; screenshot.jpg&lt;/p&gt;
&lt;p&gt;And now you can view your screenshot:&lt;/p&gt;
&lt;p&gt;firefox screenshot.jpg&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/bookmark-fail.jpg&quot;&gt;&lt;img alt=&quot;bookmark-fail&quot; height=&quot;593&quot; src=&quot;http://gbrownmozilla.files.wordpress.com/2013/03/bookmark-fail.jpg?w=791&amp;amp;h=593&quot; width=&quot;791&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is still a little rough. One of these days I hope we can:&lt;/p&gt;
&lt;p&gt;- capture content…maybe use a gecko screenshot?&lt;/p&gt;
&lt;p&gt;- display the screenshot directly off of tbpl, similar to the reftest analyzer (see &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=747440&quot;&gt;bug 747440&lt;/a&gt;)&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/gbrownmozilla.wordpress.com/358/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gbrownmozilla.wordpress.com/358/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gbrownmozilla.wordpress.com&amp;amp;blog=22801181&amp;amp;post=358&amp;amp;subd=gbrownmozilla&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 26 Mar 2013 18:07:54 +0000</pubDate>
	<dc:creator>gbrown-mozilla</dc:creator>
</item>

</channel>
</rss>
