Privacy/Reviews/Necko: Difference between revisions

Line 30: Line 30:
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.  
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:''' (describe the goals of the feature/product here)
'''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''':  
'''Design Documents''':  
Link to any design or architectural documents here.
Link to any design or architectural documents here. (There are no design documents)


== Components  ==
== Components  ==


Describe any major components in the system and how they interact. Also include any third-party APIs (those Mozilla does not control) and what type of data is sent or received via those APIs.
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://images.example.com/image.jpg, 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.


=== Component X ===
The seer does not record any data, nor does it take any action, when in private browsing mode.
 
=== Seer ===


This component does A, B and C and interacts with component Y to do D.


The tables below simply summarize the data encountered by this component.  
The tables below simply summarize the data encountered by this component.  
Line 52: Line 54:
! Where
! Where
|-
|-
| data type
| history (with subresources)
| where stored
| sqlite database in the profile
|}
|}


'''Communication with Component Y'''  
'''Communication with Docshell'''  


{| class="wikitable"
{| class="wikitable"
Line 66: Line 68:
|-
|-
| ''In:''  
| ''In:''  
| message 1
| Redirect detected
| types of data received from component Y with the message
| Tells the seer that url1 redirected to url2
|  
|  
|-
|-
| ''Out:''  
| ''In:''  
| message 2
| Start predicting for a page load
| types of data sent to component Y with the message
| 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'''
 
{| class="wikitable"
|-
! 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'''
{| class="wikitable"
|-
! 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 =
= User Data Risk Minimization =
Confirmed users
96

edits