|Feature/Product:||Necko Predictive Network Actions|
|Projected Feature Freeze Date:||(tbd)|
|Product Champions:||Nick Hurley|
|Privacy Champions:||Curtis Koenig|
|Security Contact:||Frederik Braun|
|Document State:||[DONE] Public Comments|
|Review Complete ETA:||2013.11.05|
In this section, the product's architecture is described. Any individual components or actors are identified, their "knowledge" or what data they store is identified, and data flow between components and external entities is described.
The main objective of this feature/product is: To improve page load time by performing overhead for connections (DNS lookup, TCP handshake, TLS handshake) before the connections are actually needed.
Design Documents: Link to any design or architectural documents here. (There are no design documents)
The major component in this is the Seer, interface defined by nsINetworkSeer. This keeps track of URLs the user has visited, along with URLs that were loaded by the loading of the initial URL. For example, when the user visits http://example.com/index.html, we keep track of that, as well as the fact that visiting that URL also caused us to load , http://styles.example.com/style.css, and http://scripts.example.com/jquery.js because those resources were included in index.html. Then, the next time the user visits http://example.com/index.html, we can set up connections to images.example.com, styles.example.com, and scripts.example.com, reducing the overhead on the page load.
The seer does not record any data, nor does it take any action, when in private browsing mode.
The tables below simply summarize the data encountered by this component.
|history (with subresources)||sqlite database in the profile|
Communication with Docshell
|In:||Redirect detected||Tells the seer that url1 redirected to url2|
|In:||Start predicting for a page load||Tells the seer that url1 is being loaded, and it should start trying to predict for url1 if possible|
|In:||Start predicting for a link hover||Tells the seer that url1 has been hovered over on a page at url2, and it should start trying to predict for url1 if possible|
Communication with Script, Stylesheet, Font, and Image loaders
|In:||Loaded script from page||Tells the seer that a script, stylesheet, font, or image at url2 was loaded because a page at url1 was loaded|
Communication with Firefox UI
|In:||Erase data||Tells the seer to erase all its data because of Clear Private Data or Forget About Site|
User Data Risk Minimization
In this section, the privacy champion will identify areas of user data risk and recommendations for minimizing the risk.
- none raised
Alignment with Privacy Operating Principles
In this section, the privacy champion will identify how the feature lines up with Mozilla's privacy operating principles.
Principle: Transparency / No Surprises
- Only does pre-connect not prefetch
- does not pre-connect to https addresses
- no data is actually sent to the site until a user actively clicks a link
- DNS prefetch and TCP preconnect (which includes SSL handshake)
- honors settings in Private Browsing to erase data
Recommendations: (what can be improved)
Principle: Real Choice
- users can disable the feature via about:config if they so choose
Principle: Sensible Defaults
- defaults discussed above and are sensibly chosen
Principle: Limited Data
- no data is collected that is outside normal browsing already and Private Browsing is respected
Follow-up Tasks and tracking
|[DONE] Initial Overview Discussion||Curtis Koenig, Nick Hurley||2013.10.11 15:51|
|[NEW] public comment||Curtis Koenig, Nick Hurley||2013.10.29 - 2013.11.05|