Fennec/NativeUI: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 28: Line 28:


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

Revision as of 18:03, 21 December 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]

Nightly Builds

If you want to try the new NativeUI on your Android device, you can download the latest nightly builds here: https://wiki.mozilla.org/Mobile/Platforms/Android#Download_Nightly

What's in them? See here: https://wiki.mozilla.org/Fennec/NativeUI/NightlyFeatures

How To Build

The project repository is here: http://hg.mozilla.org/mozilla-central

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-r6b"
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/android
ac_add_options --target=arm-linux-androideabi
ac_add_options --with-ccache

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


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

Build for Mac OSX

Requirements : Mercurial (hg), autoconf-2.13 (Use Macports to install), Android SDK/NDK (use r6b; r7 will build but crash)

hg clone http://hg.mozilla.org/mozilla-central src
cd src
vi .mozconfig

Here's an example .mozconfig:

# Add the correct paths here:
ac_add_options --with-android-ndk="$HOME/android-ndk-r6b"
ac_add_options --with-android-toolchain="$HOME/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86"
ac_add_options --with-android-platform="$HOME/android-ndk-r6b/platforms/android-8/arch-arm"
ac_add_options --with-android-tools="$HOME/android-sdk-mac_x86/tools"
ac_add_options --with-android-sdk="$HOME/android-sdk-mac_x86/platforms/android-13"
ac_add_options --with-android-version=8

# android options
ac_add_options --enable-debug
ac_add_options --disable-optimize
ac_add_options --with-ccache
ac_add_options --disable-crashreporter

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

# Android options
ac_add_options --enable-application=mobile/android
ac_add_options --target=arm-linux-androideabi

Build and intall on your device:

make -f client.mk
make -C objdir-droid/ package
adb install -r objdir-droid/dist/fennec-12.0a1.en-US.android-arm.apk


Architecture Overview

Get a bird's eye view of how the native UI version of Fennec is structured. There are also some examples of messaging between Java and XUL/JS.

Design

The UI design is under revision, to make it simpler and to make more use of standard Android controls (i.e. hardware/system menu button, back button) and to make sure that more touchevents can be passed directly to web content.

Overview and detail here: https://wiki.mozilla.org/Fennec/NativeUI/UserExperience

Known Issue

Near Term

Mid Term

  • Sync support (thebnich)
  • <meta name="viewport"> support (mbrubeck)
  • page info
  • sharing
  • Ability to pan around last screen shot (in pcwalton's patch queue)
  • Remove unused cruft from the APK.

Longer term

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

Low priority bugs

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

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

Other

  • The current helpers in browser.js are wrong or inadequate. This should be easy to fix. The code is also designed for a single <browser>. We need to add tab support (coming) and see that it works well in the XUL/Java setup. - mostly done in multiple changesets
  • We are not using any Gecko session history (back/forward). I think this is a mistake. We should be capturing as much session in Gecko as possible. Any reason not to? done - cd8813d5469d
  • We are not using favicons in awesomebar. Just missing? or intentional?
  • URL edit box is not of "URL" type. The keyboard should change to show URL keys. done - b4bbaa96238a
  • I like the JSON messaging from XUL to Java, but I think we need the reverse too. done - ca107c8ed542
  • Also, GeckoAppShell.handleGeckoMessage could use a good refactor. It's already too big.
  • Plans for splitting the work between non-visual Java components (like a History or Bookmark object), the visual Java UI (dialogs or buttons that use the non-visual components) and the XUL/JS helpers used to send/receive messages to Java. These seem to be the basic areas of coding. Planning how to attack any particular feature will help make sure we don't have coders stepping on each other and will make the work go faster IMO.
  • investigate using system sqlite, system zlib
  • about:crashes sounds broken

QA

Weekly Showcase