XPInstall for Netscape 6 Engineering Specification

RFE:  4523287

Author:Xiaobin Lu
Date: May 14, 2002
 
 

1 Project Description

1.1 Overview

The goal of this RFE is to make XPInstall packages for Windows and Linux platforms and host these XPI packages under a public URL domain so that Netscape 7/Mozilla browser clients can access and execute when Java Plug-in is not installed in their systems. This RFE does not apply for Solaris system since Netscape 7 in Solaris always bundle the JRE package with the browser itself.

1.2 Project Dependencies

N/A

1.3 OS and Browser Compatibility and Interoperability

This feature will be available for Windows and Linux systems. It is only for Netscape 7/Mozilla 1.0+ browsers.

1.4 Performance and Scalability

N/A

1.5 Security

N/A

1.6 Internationalization (I18N) / Localization (L10N)

N/A

1.7 Packaging

In addition to generate the JRE/JDK bundles, we probably need to generate four XPI packages for Windows and Linux. The reason why we have four is to consider the English version vs. Internationalized version of browser.

1.8 Usability

This feature provides easy access to JRE for the user.

1.9 Quality

1.9.1 Unit or Functional Tests to be Delivered
 
1.9.2 Additional Testing Note:
Testings steps include the following:
1. Remove any JREs from the system;
2. Install Mozilla 1.0+ /Netscape 7.0;
3. Open the browser and visit http://java.sun.com, click "Get Java Plug-in", you should probably see the XPI packages got downloaded from java.sun.com and executed. Finally after Java Plug-in installed successfully, reload the page and you should be able to see the applets. In Linux, type about:plugins and you should see the plugins mietypes got registered. Go to java.sun.com and you should see the applet working.
 

2 Technical Description

2.1 Architecture

The approach used in this RFE is to utilize the APIs provided by Netscape to write an XPI file. Mainly it should conatin "install.js" which contains most of the logic to do the installation. Except from the install.js, the XPI package also contain a jre executable file for Windows and a jre binaries bundles for Linux.

For Windows, the XPI package contains:
install.js
j2re1_4_1.exe

For Linux, the XPI package contains:
install.js
j2re1.4.1 ( A directory structure contains the binary image)
symlink.sh ( A shell script to do the softlink).

The "install.js" for Windows contains the following logic which is necessary to make Java Plug-in to successfully download and work..
* Before installation, we explicitly check the available size in the default location (c:\program files). Currently we need about 30M bytes.
* After installation is done, call refreshPlugins() to make the new plugin to work seamlessly.
* For Netscape browser, dll copy is not done by the installer which performing silent installation. So for Netscape browser we need to copy plugin dll files explicilty.

The "install.js" for Linux contains the following logic which is necessary to make Java Plug-in to successfully download and work..
* After installlation is done, make a softlink to linkjavapligin_oji.so.
* The JRE images is downloaded to Mozilla/Netscape 6 plugins directory called Java2.
* We explicitly check the disk space which plugins directory mounted to  to see if it has enough space. The minimum space Java Plugin needs is 57.3 Mega bytes.

The installation scheme is listed as below.

This feature is available only for Netscape 7 or later and Mozilla 1.0 + browser. So when Netscape plugin finder service hooks up with our download page. That page will explicitly checks for the user agent string. And we assume the user agent string is named as usrAgtStr just for ease of explaination.

The pesudo code is:

var version = GetVersion (usrAgtStr); //* The user agent string looks like "Mozilla 5.0 Windows NT.......Netscape 7/Netscape 7.0.0 " we extract the version  from last three numbers. For 7.0.0, the version number will be 700.

if (usrAgtStr contains "Netscape")
    if (version >= 700)
        if (usrAgtStr contains "en-US")
                jpi = "j2re1_4_1.xpi"
        else
                jpi = "j2re1_4_1_i.xpi"  // Internationalized version;

    else
       alert("Please upgrade the  browser to Netscape 7");
      answer = confirm("Do you want to upgrade your browser?");
      if (answer)
            windows.location = "http://www.netscape.com"

else  // User is using Mozilla browser
    if (buildNo >= 20020504) // Mozilla 1.0+
        if (usrAgtStr contains "en-US")
                jpi = "j2re1_4_1.xpi"
        else
                jpi = "j2re1_4_1_i.xpi"  // Internationalized version;

    else
         alert("Please upgrade the  browser to Mozilla 1.0 or later");
        answer = confirm("Do you want to upgrade your browser?");
        if (answer)
            windows.location = "http://www.mozilla.org"

2.3 Imported Interfaces/API

N/A

2.4 User Interface

N/A
 
 
 

3 Marketing

3.1 Justification

In order to keep Netscape 7 users to get the latest JRE version, it is necessary to leverage the version of JRE user get downloaded. There is always a delay between the JRE version users are using and the JRE version which the user actually want due to the instablity of Mozilla APIs so that JRE can not keep comatibility with Netscape 6 or higher. However, with more APIs become freeze in Mozilla 1.0, JRE can be tested and certified to work with Mozilla 1.0 or higher. So in order to achieve this, we should gain control to the XPI package the user get downloaded and executed.

3.2 Customer Request

Above

3.3 Competitive Analysis


4 Management and Planning

4.1 Scope/Priority

P4/S2

4.2 Target Release

Mantis

4.3 Resources

4.3.1 Development
Xiaobin Lu
4.3.2 Quality Assurance/Testing
4.3.3 Documentation
http://developer.netscape.com/docs/manuals/xpinstall/
4.3.4 Technical Support
4.3.4 Special Hardware/Software

4.4 Schedule



Start Date End Date Activity Owner Status
5/13/2002       
 

         
Complete Started Not Started Difficulties Trouble

 

Appendices (as needed, suggestions below)

A. Background Information

B. Interface Specifications

C. Notes and Additional Details

D. Miscellaneous

E. Tracking

E.1 Final Webrev
E.2 Bugtraq


Bugid P S Subcategory Type Engineer Synopsis
             

 
 

Revision History



Date Version Author Description