Personal tools

Mobile/Projects/GeckoView

From MozillaWiki

Jump to: navigation, search

Contents

Tracking

ID Priority Summary Status Assigned to
889100 -- Kill the Tabs singleton and move it into GeckoView ASSIGNED bnicholson
889994 -- Support having multiple GeckoViews in one Activity/process NEW
891634 -- [meta] Use the appropriate context for global state versus UI operations NEW
908744 -- BaseGeckoInterface: Implement GeckoEventListener NEW
908752 -- BaseGeckoInterface: Implement SensorEventListener NEW
908755 -- BaseGeckoInterface: Implement LocationListener NEW
908756 -- BaseGeckoInterface: Implement Tabs.OnTabsChangedListener NEW
908760 -- BaseGeckoInterface: Implement GeckoEventResponder NEW
908770 -- BaseGeckoInterface: Implement getPromptService() NEW
908772 -- BaseGeckoInterface: Implement getLocationListener() NEW
908773 -- BaseGeckoInterface: Implement getSensorEventListener() NEW
908775 -- BaseGeckoInterface: Implement doRestart() NEW
908779 -- BaseGeckoInterface: Implement addPluginView() NEW
908781 -- BaseGeckoInterface: Implement removePluginView() NEW
908783 -- BaseGeckoInterface: Implement enableCameraView() NEW
908785 -- BaseGeckoInterface: Implement disableCameraView() NEW
908786 -- BaseGeckoInterface: Implement addAppStateListener() NEW
908787 -- BaseGeckoInterface: Implement removeAppStateListener() NEW
908788 -- BaseGeckoInterface: Implement getCameraView() NEW
908789 -- BaseGeckoInterface: Implement notifyWakeLockChanged() NEW
908790 -- BaseGeckoInterface: Implement getFormAssistPopup() NEW
908791 -- BaseGeckoInterface: Implement getPluginContainer() NEW
908792 -- BaseGeckoInterface: Implement invalidateOptionsMenu() NEW
921664 -- create basic GeckoView test NEW
921792 -- GeckoView is busted; browser.js never seems to load on Android 4.3 NEW
927388 -- Generate an Android Archive (AAR) for GeckoView NEW
927831 -- [geckoview] Support running without special permissions NEW
932642 -- [GeckoView] Resources id issue when build with gradle UNCONFIRMED
942655 -- [GeckoView] Don't include Firefox resources in GeckoView build output NEW
948325 -- [GeckoView] Please add client-side proxy to load some static resources from asset. NEW
948465 -- [GeckoView] Allow loading from assets/ via URL, e.g. file://android_asset/ NEW
957873 -- Add support for a permssion API in GeckoView NEW
958267 -- [GeckoView] Crash when changing screen orientation of device NEW

Open; Resolved; Total (0% complete)


Goals

  • [P1] Create a View and support interfaces needed to allow developers to use Gecko in place of a WebView
  • [P1] Create a library (JAR) that makes it easy to pull in the Gecko code into a normal Android application. Devs should not need to build Mozilla/Gecko to get this to work.
  • [P1] Use GeckoView in Firefox for Android as a first class citizen.
  • [P2] We'd like to support using more than one GeckoView in an application.

Non-goals

  • We will not create a system style component that only requires Firefox to be installed. Applications will need to bundle the library into their APK.
  • We will not create a drop-in replacement for WebView. While we'll have the same concepts, we do not intend to chase 1-1 parity with the WebView interfaces.

Details

  • GeckoView is an Android View wrapper around browser.js/browser.xul
    • GeckoView will have an API to allow basic control, such as loading HTML content.
  • GeckoView does not include any browser chrome UI, such as URL editors, toolbar or tab strips
    • Host applications supply the chrome UI
    • Host applications control GeckoView behavior by implementing callback interfaces and providing GeckoView with references to the implementations
    • If the Host provides no implementation, GeckoView is essentially a simple HTML content renderer

Background

ActiveX Wrapper

We used to support an ActiveX wrapper around Gecko. The wrapper had the same core interfaces as the standard MSHTML control that wrapped Trident. You could use Visual Basic, Delphi and even early .NET IDE's to drop the control on your Form. Viola! Gecko HTML renderer in your app. We dropped support because we were constantly chasing the hundreds of interfaces Microsoft supported around MSHTML. Getting the simple stuff to work was one thing. Supporting the rest was unrealistic. Plus, Microsoft kept adding new interfaces. Not all of the concepts matched 1-to-1 with Mozilla concepts, which made truly supporting the interfaces difficult and confusing to use.

System XULRunner

XULRunner is the Gecko-based runtime on desktops. It allows you to build applications like Firefox (XUL-based) using Gecko. This is not an embedding. One of the unrealized dreams of XULRunner was a "Shared Runtime" that could be used by multiple XUL-based apps. Versioning became the nightmare. Updating the shared runtime might break some of the apps using it.

Profiles

The Mozilla platform has an inherent dependency on profiles, which are used to store various preferences, data files and caches. In the case of an embeddable widget, it's often not desirable to use profiles. Gecko stores the profiles in a location of it's choosing, although this location can be changed as long as Gecko has read/write privileges to the new location. Only one profile can be used by a given process.