Fennec/NativeUI: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 68: Line 68:
* GeckoApp activity uses a lot of static variables. This has issues while rotation (they tend to hold previous values). It's better to avoid static variables and use getter and setters. [see http://stackoverflow.com/questions/2475978/using-static-variables-in-android]
* GeckoApp activity uses a lot of static variables. This has issues while rotation (they tend to hold previous values). It's better to avoid static variables and use getter and setters. [see http://stackoverflow.com/questions/2475978/using-static-variables-in-android]
* Change directory structure under embedding/android to follow a more traditional Android app layout (src, res, gen, etc) for better integration with Eclipse.
* Change directory structure under embedding/android to follow a more traditional Android app layout (src, res, gen, etc) for better integration with Eclipse.
* Take into account best-practices and coding conventions from http://developer.android.com/guide/practices/design/performance.html since the whole point of this is to speed up the UI. In particular, the current code:
** creates a lot of string objects which (from my past experience) triggers the GC mechanism more often and slows things down
** uses unnecessarily visible (public or package instead of private) and non-final variables, which prevents certain classes of compiler optimizations


===Mid Term===
===Mid Term===

Revision as of 14:31, 12 October 2011

Features

  • Awesome Bar – Go to your favorite sites in just a couple of keystrokes with intelligent and personalized searching
  • Firefox Sync – Sync your Firefox tabs, history, bookmarks and passwords between your desktop and mobile device for a seamless browsing experience
  • Tabbed browsing – View open tabs as thumbnails to easily identify and select the Web page you’d like to go to next
  • Fast - Instantly startup (<300ms)
  • Small - Low memory usage (consistent with other browsers)
  • Energy - Doesn't eat your battery

Background

[1]

How To Build

The project repository is here: http://hg.mozilla.org/projects/birch

Follow the instructions from Mobile/Fennec/Android. Build as you normally would (make -f client.mk), just with a different mozconfig.

Here's an example mozconfig:

# Add the correct paths here:
ac_add_options --with-android-ndk="$HOME/android-ndk-r6"
ac_add_options --with-android-sdk="$HOME/android-sdk-linux_x86/platforms/android-13"
ac_add_options --with-android-version=5

# android options
ac_add_options --enable-application=mobile
ac_add_options --target=arm-linux-androideabi
ac_add_options --with-endian=little
ac_add_options --with-ccache
ac_add_options --enable-tests

mk_add_options MOZ_OBJDIR=./objdir-droid
mk_add_options MOZ_MAKE_FLAGS="-j9 -s"


hg clone http://hg.mozilla.org/projects/birch/ src
cd src
vi mozconfig-droid
...
export MOZCONFIG=~/src/mozconfig-droid
make -f client.mk

Architecture Overview

Get a bird's eye view of how the native UI version of Fennec is structured.

Known Issue

Near Term

Mid Term

Longer term

  • addons (going to use jetpack - mossop)
  • Download
  • find on page
  • selection
  • removing xul
  • profile migration
  • Touch events

Low priority bugs

  • The HttpRequestObsever is not appropriate for one.

http://hg.mozilla.org/projects/birch/file/2f3d39316c54/mobile/chrome/content/browser.js#l22

  • OpenURI is not supposed to load the frame, only provide the frame:

http://hg.mozilla.org/projects/birch/file/2f3d39316c54/mobile/chrome/content/browser.js#l80