From MozillaWiki
Jump to: navigation, search

Document Overview

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


Architectural Overview: 2013.10.17
Recommendation Meeting:
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, we keep track of that, as well as the fact that visiting that URL also caused us to load image.jpg,, and because those resources were included in index.html. Then, the next time the user visits, we can set up connections to,, and, 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.

Stored Data:

What Where
history (with subresources) sqlite database in the profile

Communication with Docshell

Direction Message Data Notes
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

Direction Message Data Notes
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

Direction Message Data Notes
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.

See Also: Privacy/Roadmap_2011#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)

  • None

Principle: Real Choice

  • users can disable the feature via about:config if they so choose
    • network.seer.enabled


  • None

Principle: Sensible Defaults

  • defaults discussed above and are sensibly chosen


  • None

Principle: Limited Data

  • no data is collected that is outside normal browsing already and Private Browsing is respected


  • None

Follow-up Tasks and tracking

What Who Bug Details
[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