$Id: RequirementsAnalysis.html,v 1.16 2000/03/08 19:38:17 edburns%acm.org Exp $
|webclient interface||feasibility scale||time to implement||time to prepare analysis||implementation depends on||implementation % complete||owner|
||Add/Remove bookmarks||4||1 week||0.5 hours||Netscape RDF impl||20 (1 of 5 methods)||edburns|
||Add/Remove cookies||4||1 week||0.5 hours||Depends on Blackconnect||0|
||Selection manipulation||2||2 weeks||2 hours||nsIPresShell||10 (1 of 10 methods)||ashuk|
|Find in Page||3|
|Get DOM||1||depends on JavaDOM project|
||Container Events||2||3 weeks||2 hours||Mozilla Observer interfaces||8 (1 of 12 methods)||ashuk|
|Document Load Events||2|
||HyperLink Events||1||0.5 weeks||0.25 hours||-||0||
||Add/Remove HistoryEntry||4||1 week||0.5 hours||nsISessionHistory||60 (8 of 13 methods)|
||Navigation||1||0.2 weeks||1 hour||nsIDocShell||100 (3 of 3 methods)||edburns|
||Import Export of bookmarks and cookies||4||6 weeks||2 hours||-||0|
|History Expiration, etc.||3|
|Font, color, etc||3|
|Set user stylesheet||3|
|Total Implementation Time:||14 weeks|
|Estimated Total Implementation Time (with padding):||18 weeks|
mozilla/source/webshell/src/nsWebShell.cpp Back() CanBack() Forward() CanForward() GetHistoryIndex() GoTo() GetHistoryLength() GetURL() GetSessionHistory() SetSessionHistory() mozilla/source/xpfe/appshell/src/nsSessionHistory.cpp GetTitleForIndex() NS_NewSessionHistory()
mozilla/modules/libpref/public/nsIPrefs.idl, accessed through GetPrefs in nsIWebShell.h. (Other APIs may be needed for specific tasks; see below.)
mozilla/modules/libpref/src/init/all.js indicates that the bookmark file is indicated by the property "browser.bookmark_location". However, to add to, or read from, the current bookmarks, the API must use the RDF service to get a tree of DOM nodes denoting the bookmarks, and modify it.
Cookies: There is an nsICookieService defined in mozilla/extensions/cookie/nsICookieService.h. It is presumably accessible through the Service Manager (or Component Manager). However, it only allows item-by-item addition of cookies (and a method to clear all current cookies), so the API must parse the file containing cookies.
In both cases, we will need to prototype solutions before definitively claiming that the API as it stands is or is not feasible.
These are simple properties, get and set through nsIPrefs methods. However, there is not a one-to-one correspondence between nsIPrefs and webclient.Preferences methods; instead, each get must pass a Mozilla property name to GetTypePref(), where Type is one of String, Int, or Bool. Set methods must do something similar, after perhaps checking the result of GetPrefType to make sure the value passed in is of the expected type.
There seems no direct way to implement adding HTTP headers, except to insert headers into the disk cache, or on each sent message. It might be better to make this a separate API, since this might be a seldom-used feature, and a difficult one to implement.
mozilla/modules/libpref/src/init/all.js indicates that the character set is tied to the property "intl.character_set". The Java API must translate the string value to a java.lang.Character.Subset.
I can't find a mechanism that actually sets history expiration. It may not be implemented yet.
mozilla/modules/libpref/src/init/all.js lists various security-related properties, starting with "security.policy".
mozilla\layout\html\content\src\nsHTMLFontElement.cppthat queries a preference and does the right thing. feasibility scale: 3