Monday, December 12, 2011

Importing bookmark (and etc) from other web browsers to Firefox

Several years, we had not maintained profile migration code. On Firefox 4 source code, we had unused migrators such as OmniWeb (not working!), iCab (not working!!) and Camino (not working!!!). Also, localized files had konqueror, epiphany and galeon..

But, from Firefox 11...

Firefox 11

  • Added Google Chrome migrator
    This migrator supports bookmakrs, histories and cookies. And it may support signon data on Windows if possible. This migrator uses async database and file functions, so migration is faster than migrations for other web browsers.
  • Remove Opera migrator
    Current implementation of Opera profile migration is broken. Although this is written for Opera 6!, this doesn't work on the latest Opera. So we will remove this on Firefox 11.

Firefox 12 and feature

  • More support Google Chrome migrator
    It will support preferences and signon data for Mac and Linux
  • New Opera migrator
    I am rewriting new opera migator. This uses async operation as possible and fit with new Gecko code. I will land on Firefox 12 train.

Friday, October 14, 2011

HTC touch input w/ Fennec

In this week, I bought HTC Desire Z to debug several input issue on Firefox Mobile. HTC touch input is very buggy implementation as IME (Input Method Editor). Although I turn on IME support on hardware keyboard for Firefox Mobile from version 9 (released at Dec 2011), Touch Input with hardware keyboard doesn't work well.

When I investigate this, a articles of stackoverflow.com is found. But this wasn't good article for workaround and details.

When IME support on android application, onKeyPreIme has to return false. Then, InputConnection.commitText() is called per input. But 1st parameter may be incorrect because it has no meta state (alt/fn or shift). In other word, When you input Shift+[A], we expect "A". But HTC touch input calls commitText("a")....

If you doesn't implement full IME support using BaseInputConnection. this issue doesn't occurs. BaseInputConnection.commitText() has a workaround code for this issue. It generates KeyEvent for input, then it uses InputConnection.sendKeyEvent. Since this event has correct state, onKeyDown can handle correct key event.

I will create new fix for this problem then, I will land this to Firefox 9 and 10.

Wednesday, September 21, 2011

Starting new platform porting

You know, you can build Firefox, Thunderbird, Seamonkey and Xulrunner as Windows x64 binary by my work. Now, Firefox x64 is tier 2. (automation builder builds binary, runs automation test and nightly is available.). I am interested in porting new platforms

Android x86

It already works on gingerbread of Android x86 and will work on Honeybomb. Bug number is 681202. Also, Opera mobile already runs on Android x86

Windows/arm

Required Visual Studio 11. There is a lack of important libraries such as wsock32 to build binaries. I believe that it will be fixed by Visual Studio 11 beta (actually CTP, not beta!). Also, bug number for my status is 686843.

Monday, September 5, 2011

Windows x64 status updated

Today, I have landed bug 663748 to mozilla-inbound. (Also this will be integrated to mozilla-central today or tomorrow). It means that Win64 build will pass all automation tests. But, since this is for test tool, no effect on Firefox package.

Next Step

  • To analyze crash data easily, we have to improve google breakpad for Win64. dumpsym.exe has to add unwind information to symbol file.
  • PGO using VS2010. We consider to use VS2010 as official build. Now although we uses VS2008SP1 with PGO options, switching to VS2010SP1 means that we can get more performance. Here is a data how improve to switch to VS2010. But, unfortunately, due to a bug of VS2010, we cannot use 64-bit toolchain. Of course, there is a workaround.

Friday, August 5, 2011

Status Win64 build

Mochitest-1 failure

This is WebGL issue. Actually, Win64 build has no ANGLE that is D3D -> OpenGL ES wrapper. ANGLE now supports Win64 building by r697, and I and ransGaming fix a Win64 bug by r707. After merging these into m-c, it will pass mochitest-1.

test failures on jstest

I cannot reproduce this on my development machine. So if you know reproduce step, let me know. I think that this is GC issue, but I am still investigating...

But if this is compiler issue, this will be fixed using VS2010SP1. We have a plan to upgrade toolchains to VS2010SP1 as default.

Wednesday, May 18, 2011

Some browser migrations are gone

Since I landed bug 656205, some old migration (MacIE, Netscape 4 and Firebird / Phoenix) functions is gone. This code was too old and it didn't use async Places APIs.

Also, I am working Chrome migration code. At least, it will be landed on Firefox 7.

Monday, March 21, 2011

Firefox 4 on pandaboard (Ubuntu 10.10)

I got pandaboard to improve ARM code on Firefox. Pandaboard uses TI OMAP4 (Dual-core Cortex-A9 and PowerVR SGX 540), so it is the most powerful ARM board.

This data is sunspider benchmark on Firefox 4 on pandaboard. BTW, my Android phone (HTC Desire HD) is 2800ms.

============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 1984.1ms +/- 0.7%
--------------------------------------------

  3d:                   354.2ms +/- 1.3%
    cube:               139.8ms +/- 2.0%
    morph:               65.2ms +/- 5.1%
    raytrace:           149.2ms +/- 3.5%

  access:               290.7ms +/- 2.5%
    binary-trees:        47.1ms +/- 3.5%
    fannkuch:           116.6ms +/- 6.9%
    nbody:               47.1ms +/- 6.9%
    nsieve:              79.9ms +/- 2.0%

  bitops:               105.1ms +/- 1.8%
    3bit-bits-in-byte:    5.1ms +/- 8.0%
    bits-in-byte:        50.4ms +/- 1.2%
    bitwise-and:         12.3ms +/- 5.5%
    nsieve-bits:         37.3ms +/- 2.9%

  controlflow:           21.5ms +/- 7.2%
    recursive:           21.5ms +/- 7.2%

  crypto:               181.5ms +/- 1.9%
    aes:                 94.5ms +/- 0.8%
    md5:                 51.8ms +/- 4.7%
    sha1:                35.2ms +/- 5.2%

  date:                 279.9ms +/- 1.9%
    format-tofte:       173.9ms +/- 2.6%
    format-xparb:       106.0ms +/- 2.9%

  math:                 144.1ms +/- 1.2%
    cordic:              39.7ms +/- 1.5%
    partial-sums:        47.5ms +/- 2.3%
    spectral-norm:       56.9ms +/- 1.7%

  regexp:               123.1ms +/- 3.9%
    dna:                123.1ms +/- 3.9%

  string:               484.0ms +/- 1.0%
    base64:              44.3ms +/- 3.3%
    fasta:               96.4ms +/- 3.1%
    tagcloud:           146.4ms +/- 1.5%
    unpack-code:        135.5ms +/- 1.7%
    validate-input:      61.4ms +/- 3.2%

Although I have already landed ARM optimized NSS code (for crypto) into cvs.mozilla.org, it won't used by Firefox 4 or 5. It is for NSS trunk (NSS version 4). But I am investigate ARM specific optimization for Firefox 5.