Fennec/NativeUI: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(63 intermediate revisions by 18 users not shown)
Line 1: Line 1:
==Features==
This page has been deleted because it's archaic. Please see the main [[Mobile/Fennec/Android | Fennec]] development page.
 
* 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==
[http://dougt.org/wordpress/2011/09/fennec-and-native-android-uis/]
 
==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 [[Fennec/NativeUI/Architecture_Overview|structured]].
 
==Known Issue==
 
===Near Term===
* tabs (dougt / ram)
* Dialogs
** http auth
** nsIPrompt
** cert auth (xul)
* door hangers (gcp)
** content permission (geolocation, desktop notification, indexedDb)
** popup permission
* preferences (alexp)
* bookmarking (blassey)
* Panning perf (clord)
* zooming perf (clord)
* IME (alexp)
* Don't initialize this early. https://github.com/snorp/mozilla-central/blob/faster/embedding/android/GeckoApp.java#L383. So far, the only usage is here: https://github.com/snorp/mozilla-central/blob/faster/embedding/android/GeckoAppShell.java#L1717 -- which is after a page has loaded. I would recommend the initialization happen right there, when the mDb is null. Or probably at the end of onCreate in GeckApp.java
* https://github.com/snorp/mozilla-central/blob/faster/embedding/android/AwesomeBar.java#L178 -- This can be moved to an AsyncTask. A database access can happen in the background and the results can be pushed to the UI. In that way, the responsiveness of AwesomeBar will be faster and better.
* Setting the FilterQueryProvider automatically processes the SQL in a background thread (see http://developer.android.com/reference/android/widget/CursorAdapter.html#runQueryOnBackgroundThread%28java.lang.CharSequence%29). I verified this by adding a Thread.sleep() call in the filter - the UI remains responsive.
* Better to use styles in layout. This helps in reusability. (sriram)
* 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.
 
===Mid Term===
 
* Sync support (thebnich) ** see https://github.com/rnewman/clj-weave to start
* page info
* sharing
* Ability to pan around last screen shot.
* Remove unused cruft from the APK.
 
===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

Latest revision as of 21:26, 12 August 2013

This page has been deleted because it's archaic. Please see the main Fennec development page.