<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hchang</id>
	<title>MozillaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hchang"/>
	<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/Special:Contributions/Hchang"/>
	<updated>2026-11-05T05:24:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1157789</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1157789"/>
		<updated>2016-12-23T09:58:15Z</updated>

		<summary type="html">&lt;p&gt;Hchang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Using custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepare a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Try it on! =&lt;br /&gt;
V4 has been function ready (but pref&#039;ed off) since Bug 1312339 was resolved. By changing preferences&lt;br /&gt;
# &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; to &#039;&#039;&#039;goog-phish-shavar,goog-phish-proto,test-phish-simple&#039;&#039;&#039; &lt;br /&gt;
# &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; to &#039;&#039;&#039;goog-malware-shavar,goog-malware-proto,goog-unwanted-shavar,goog-unwanted-proto,test-malware-simple,test-unwanted-simple&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;browser.safebrowsing.provider.google4.gethashURL&#039;&#039;&#039; to &#039;&#039;&#039;https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&amp;amp;key=%GOOGLE_API_KEY%&#039;&#039;&#039;&lt;br /&gt;
you can turn on v4 feature (while v2 is still up and running).&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M2 (TBC, maybe 10/15) ==&lt;br /&gt;
The intention of M2 is to push the date where we &amp;quot;enable v4 list update on nightly by default&amp;quot; to two weeks later because we have identified some issues and lacks in M0 and M1 in Vancouver SBv4 work week. The target date is the end of second week in October. &lt;br /&gt;
&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# {{Bug|1305486}} to enable v4 table update on nightly by default (The most important!)&lt;br /&gt;
# {{Bug|1305567}} so that we won&#039;t get 400 error while doing list update. (landed)&lt;br /&gt;
# {{Bug|1305581}} to examine checksum against the updated lists.&lt;br /&gt;
# {{Bug|1285848}} to support compressed list update. (under review)&lt;br /&gt;
# {{Bug|1305801}} to store v4 list to disk. (landed)&lt;br /&gt;
# {{Bug|1305484}} to store v4 list states to disk rather than preference.&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
== M3 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
== M4 (2017/1/23) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable update by default&lt;br /&gt;
# Fix crashes and regressions&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;br /&gt;
&lt;br /&gt;
== M6 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Fennec&lt;br /&gt;
# Download protection&lt;br /&gt;
# Make v2 testcases can also test v4&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M6 Dashboard for M6 bugs]&lt;br /&gt;
&lt;br /&gt;
== M7 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M7 Dashboard for M7 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1150196</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1150196"/>
		<updated>2016-10-05T06:17:54Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Use custom API key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Using custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepare a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M2 (TBC, maybe 10/15) ==&lt;br /&gt;
The intention of M2 is to push the date where we &amp;quot;enable v4 list update on nightly by default&amp;quot; to two weeks later because we have identified some issues and lacks in M0 and M1 in Vancouver SBv4 work week. The target date is the end of second week in October. &lt;br /&gt;
&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# {{Bug|1305486}} to enable v4 table update on nightly by default (The most important!)&lt;br /&gt;
# {{Bug|1305567}} so that we won&#039;t get 400 error while doing list update. (landed)&lt;br /&gt;
# {{Bug|1305581}} to examine checksum against the updated lists.&lt;br /&gt;
# {{Bug|1285848}} to support compressed list update. (under review)&lt;br /&gt;
# {{Bug|1305801}} to store v4 list to disk. (landed)&lt;br /&gt;
# {{Bug|1305484}} to store v4 list states to disk rather than preference.&lt;br /&gt;
&lt;br /&gt;
== M3 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M6 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1150195</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1150195"/>
		<updated>2016-10-05T06:17:29Z</updated>

		<summary type="html">&lt;p&gt;Hchang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Use custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepare a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M2 (TBC, maybe 10/15) ==&lt;br /&gt;
The intention of M2 is to push the date where we &amp;quot;enable v4 list update on nightly by default&amp;quot; to two weeks later because we have identified some issues and lacks in M0 and M1 in Vancouver SBv4 work week. The target date is the end of second week in October. &lt;br /&gt;
&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# {{Bug|1305486}} to enable v4 table update on nightly by default (The most important!)&lt;br /&gt;
# {{Bug|1305567}} so that we won&#039;t get 400 error while doing list update. (landed)&lt;br /&gt;
# {{Bug|1305581}} to examine checksum against the updated lists.&lt;br /&gt;
# {{Bug|1285848}} to support compressed list update. (under review)&lt;br /&gt;
# {{Bug|1305801}} to store v4 list to disk. (landed)&lt;br /&gt;
# {{Bug|1305484}} to store v4 list states to disk rather than preference.&lt;br /&gt;
&lt;br /&gt;
== M3 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M6 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149873</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149873"/>
		<updated>2016-10-03T07:24:32Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* M1.5 (TBC, maybe 10/15) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Use custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepare a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M1.5 (TBC, maybe 10/15) ==&lt;br /&gt;
The intention of M1.5 is to push the date where we &amp;quot;enable v4 list update on nightly by default&amp;quot; to two weeks later because we have identified some issues and lacks in M0 and M1 in Vancouver SBv4 work week. The target date is the end of second week in October. &lt;br /&gt;
&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# {{Bug|1305486}} to enable v4 table update on nightly by default (The most important!)&lt;br /&gt;
# {{Bug|1305567}} so that we won&#039;t get 400 error while doing list update. (landing)&lt;br /&gt;
# {{Bug|1305581}} to examine checksum against the updated lists.&lt;br /&gt;
# {{Bug|1285848}} to support compressed list update. (under review)&lt;br /&gt;
# {{Bug|1305801}} to store v4 list to disk. (landing)&lt;br /&gt;
# {{Bug|1305484}} to store v4 list states to disk rather than preference. (TBD)&lt;br /&gt;
&lt;br /&gt;
As for the last one ({{Bug|1305484}}), the down side of NOT fixing it before enabling list update on nightly is that all the nightly user would have a full list update once we&#039;ve changed to storing list states in disk (if we didn&#039;t deal with the annoying migration things).&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149864</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149864"/>
		<updated>2016-10-03T07:06:08Z</updated>

		<summary type="html">&lt;p&gt;Hchang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Use custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepare a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M1.5 (TBC, maybe 10/15) ==&lt;br /&gt;
The intention of M1.5 is to push the date where we &amp;quot;enable v4 list update on nightly by default&amp;quot; to two weeks later because we have identified some issues and lacks in M0 and M1 in Vancouver SBv4 work week. The target date is the end of second week in October. &lt;br /&gt;
&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# {{Bug|1305486}} to enable v4 table update on nightly by default (The most important!)&lt;br /&gt;
# {{Bug|1305567}} so that we won&#039;t get 400 error while doing list update.&lt;br /&gt;
# {{Bug|1305581}} to examine checksum against the updated lists.&lt;br /&gt;
# {{Bug|1285848}} to support compressed list update.&lt;br /&gt;
# {{Bug|1305801}} to store list update to disk.&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149861</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149861"/>
		<updated>2016-10-03T07:02:11Z</updated>

		<summary type="html">&lt;p&gt;Hchang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Use custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepare a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M1.5 == (TBC, maybe 10/15)&lt;br /&gt;
The intention of M1.5 is to push the date where we &amp;quot;enable v4 list update on nightly by default&amp;quot; to two weeks later because we have identified some issues and lacks in M0 and M1 in Vancouver SBv4 work week. The target date is the end of second week in October. &lt;br /&gt;
&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Bug 1305486 to enable v4 table update on nightly by default (The most important!)&lt;br /&gt;
# Bug 1305567 so that we won&#039;t get 400 error while doing list update.&lt;br /&gt;
# Bug 1305581 to examine checksum against the updated lists.&lt;br /&gt;
# Bug 1285848 to support compressed list update.&lt;br /&gt;
# Bug 1305801 to store list update to disk.&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149846</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149846"/>
		<updated>2016-10-03T01:57:27Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Use custom API key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Use custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepare a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149845</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149845"/>
		<updated>2016-10-03T01:56:39Z</updated>

		<summary type="html">&lt;p&gt;Hchang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Use custom API key =&lt;br /&gt;
We are required to have a API key to access google services like geolocation and safe browsing. The nightly/beta/aurora/release Firefox builds will have a proper API key associated with mozilla. However, if you are using the Firefox built on your own, the API key will be substituted with &amp;quot;no-google-api-key&amp;quot;, which is apparently not available. There are a couple of ways to use a working API key for Safe Browsing. The most recommended way is to prepared a key file and add the path to mozconfig:&lt;br /&gt;
&lt;br /&gt;
# Obtain a Safe Browsing google API key from https://console.developers.google.com&lt;br /&gt;
#* If you don&#039;t know how to get a API key, buy hchang@mozilla.com a beer and ask him :p&lt;br /&gt;
# Create a key file which only contains the API key.&lt;br /&gt;
# Add &amp;quot;ac_add_options --with-google-api-keyfile=/path/to/your/keyfile&amp;quot; to mozconfig&lt;br /&gt;
# Rebuild and check if config.status has something like &#039;MOZ_GOOGLE_API_KEY&#039;: b&#039;AIzaSooxxxxoxoxoxoxooxx&#039;&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149844</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1149844"/>
		<updated>2016-10-03T01:30:02Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* M1 (2016/9/30) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Workweek in Vancouver ===&lt;br /&gt;
# Etherpad: https://public.etherpad-mozilla.org/p/sbv4yvr&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1148825</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1148825"/>
		<updated>2016-09-22T22:40:26Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* M1 (2016/9/30) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quick Links =&lt;br /&gt;
* [[Security/Safe_Browsing/V4_Implementation/Dashboard|Dashboard]]&lt;br /&gt;
* [https://bugzilla.mozilla.org/showdependencytree.cgi?id=1167038&amp;amp;hide_resolved=1 Bug Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;googpub-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M0 Dashboard for M0 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M1 Dashboard for M1 bugs]&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# Pre-populated blacklists?&lt;br /&gt;
# Gethash timeout?&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes: it&#039;s possible to get a 32-bit prefix match for &amp;lt;tt&amp;gt;foo.com&amp;lt;/tt&amp;gt; in V2 and no match on V4 because that entry uses a 48-bit prefix instead&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M2 Dashboard for M2 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M3 Dashboard for M3 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M4 Dashboard for M4 bugs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
[https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation/Dashboard#M5 Dashboard for M5 bugs]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140068</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140068"/>
		<updated>2016-07-18T10:04:10Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Design and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039;. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &#039;&#039;&#039;google4&#039;&#039;&#039;, which owns v4 tables: &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;&#039;goog-unwanted-proto&#039;&#039;&#039; and &#039;&#039;&#039;goog-malware-proto&#039;&#039;&#039;. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own &#039;&#039;&#039;updateURL&#039;&#039;&#039; and &#039;&#039;&#039;gethashURL&#039;&#039;&#039;. You can consider &#039;&#039;&#039;google4&#039;&#039;&#039; yet another provider like &#039;&#039;&#039;mozilla&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;ListManager&#039;&#039;&#039; and &#039;&#039;&#039;HashCompleter&#039;&#039;&#039; (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in &#039;&#039;&#039;listmanager.js&#039;&#039;&#039;, while making update request for table &#039;&#039;&#039;goog-phish-proto&#039;&#039;&#039;, &#039;&#039;nsIUrlClassifier.makeUpdateRequestV4&#039;&#039; will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m3&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m4&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m5&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140067</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140067"/>
		<updated>2016-07-18T09:59:26Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Design and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
To have v2 and v4 run in parallel, we must carefully refactor some core components like ListManager and HashCompleter. Instead of having a master preference to switch between v2 and v4, we take the &amp;quot;table name driven&amp;quot; approach. The plan is to add a separate provider called &amp;quot;google4&amp;quot;, which owns v4 tables: goog-phish-proto, goog-unwanted-proto and goog-malware-proto. The suffix &amp;quot;-proto&amp;quot; indicates that the table should be updated and completed via protobuf. Besides, the new provider google4 has its own updateURL and gethashURL. You can consider &amp;quot;google4&amp;quot; yet another provider like &amp;quot;mozilla&amp;quot;. When ListManager and HashCompleter (and any other related components like ProtocolParser) sees table names suffixed by &amp;quot;-proto&amp;quot;, they would behave differently. For example, in listmanager.js, while making update request for table &amp;quot;goog-phish-proto&amp;quot;, nsIUrlClassifier.makeUpdateRequestV4 will be called to build a v4 specific request. (See {{Bug|1264885}} and {{Bug|1275507}} for more information.)&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m3&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m4&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m5&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140062</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140062"/>
		<updated>2016-07-18T09:09:02Z</updated>

		<summary type="html">&lt;p&gt;Hchang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
Safe Browsing v4 is designed to reduce network bandwidth and disk storage (mainly for mobile devices). The usage of partial URL hashes (aka prefixes) and complete hashes remains the same but the way we get those prefixes and complete hashes is changed. The update and hash completion API will be based on protobuf and content compression (in additional to HTTP compression) is introduced. For further information, see https://developers.google.com/safe-browsing/v4 (The public specification is not complete. For example, the protobuf is not mentioned.)&lt;br /&gt;
&lt;br /&gt;
= Design and Implementation =&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m3&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m4&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m5&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing&amp;diff=1140060</id>
		<title>Security/Safe Browsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing&amp;diff=1140060"/>
		<updated>2016-07-18T08:46:55Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* History */ Added v4 history&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: The Safe Browsing feature in Firefox has been renamed to Phishing Protection, but it&#039;s still known as Safe Browsing internally.&lt;br /&gt;
&lt;br /&gt;
[[Security/Application Reputation|Download Protection]] and [[Security/Tracking protection|Tracking protection]] have their own separate pages.&lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
[http://www.google.com/tools/firefox/safebrowsing/ Google Safe Browsing] was an anti-phishing extension released by Google on [http://labs.google.com/ labs.google.com] in December 2005. Google has released this extension to the Mozilla Foundation under MPL 1.1/GPL 2.0/LGPL 2.1 in order that it might be used as part of Firefox if desired. We&#039;ve landed this change on the trunk as a global extension as of 7 March 2006. You can read the discussion that lead up to to its integration in https://bugzilla.mozilla.org/show_bug.cgi?id=329292&lt;br /&gt;
&lt;br /&gt;
Google is migrating Safe Browsing to v4 protocol since 2015 and we are now working on integrating to our code base with a incremental approach. That is, we will be landing v4 patches progressively and leave v2 up and running until v4 is extensively tested. In other words, v2 and v4 will co-exist for a while to make sure Safe Browsing feature not broken. See https://wiki.mozilla.org/Security/Safe_Browsing/V4_Implementation to know the plans and milestones for v4 implementation.&lt;br /&gt;
&lt;br /&gt;
= Prefs =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.blockedURIs.enabled&amp;lt;/tt&amp;gt;: enable the plugin stability blocking (no override or UI)&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.debug&amp;lt;/tt&amp;gt;: show debugging info from the JavaScript list update code on the command line&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.id&amp;lt;/tt&amp;gt;: what SAFEBROWSING_ID in &amp;lt;tt&amp;gt;gethashURL&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;updateURL&amp;lt;/tt&amp;gt; maps to&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.malware.enabled&amp;lt;/tt&amp;gt;: enable &#039;&#039;&#039;malware&#039;&#039;&#039; protection (includes &#039;&#039;&#039;unwanted&#039;&#039;&#039; as well)&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.provider.google.gethashURL&amp;lt;/tt&amp;gt;: server endpoint for completions of malware and phishing lists&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.provider.google.lists&amp;lt;/tt&amp;gt;: list of tables coming from the Google Safe Browsing service&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.provider.google.reportURL&amp;lt;/tt&amp;gt;: probably unused&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.provider.google.updateURL&amp;lt;/tt&amp;gt;: server endpoint for malware and phishing list updates&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.provider.google.lastupdatetime&amp;lt;/tt&amp;gt;: timestamp (in ms) of when the last list update happened.&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.provider.google.nextupdatetime&amp;lt;/tt&amp;gt;: timestamp (in ms) of when the list should next be downloaded.&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.reportMalwareMistakeURL&amp;lt;/tt&amp;gt;: destination for the &amp;quot;This isn&#039;t an attack site&amp;quot; button (after ignoring the interstitial warning)&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.reportPhishMistakeURL&amp;lt;/tt&amp;gt;: destination for the &amp;quot;This isn&#039;t a web forgery&amp;quot; button (after ignoring the interstitial warning)&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.reportPhishURL&amp;lt;/tt&amp;gt;: destination for the &amp;quot;Help | Report Web Forgery&amp;quot; menu item&lt;br /&gt;
* &amp;lt;tt&amp;gt;urlclassifier.blockedTable&amp;lt;/tt&amp;gt;: list of tables to use for the plugin stability blocking&lt;br /&gt;
* &amp;lt;tt&amp;gt;urlclassifier.disallow_completions&amp;lt;/tt&amp;gt;: list of tables for which we never call &amp;lt;tt&amp;gt;gethash&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;urlclassifier.gethashnoise&amp;lt;/tt&amp;gt;: the number of fake entries to add to any &amp;lt;tt&amp;gt;gethash&amp;lt;/tt&amp;gt; calls&lt;br /&gt;
* &amp;lt;tt&amp;gt;urlclassifier.gethash.timeout_ms&amp;lt;/tt&amp;gt;: the timeout after which gethash requests should be aborted&lt;br /&gt;
* &amp;lt;tt&amp;gt;urlclassifier.malwareTable&amp;lt;/tt&amp;gt;: list of tables to use when looking for malware (they need to be named &amp;lt;tt&amp;gt;*-malware-*&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;*-unwanted-*&amp;lt;/tt&amp;gt;)&lt;br /&gt;
* &amp;lt;tt&amp;gt;urlclassifier.max-complete-age&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;urlclassifier.phishTable&amp;lt;/tt&amp;gt;: list of tables to use when looking for phishing (they need to be named &amp;lt;tt&amp;gt;*-phish-*&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Firefox 49 and earlier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.enabled&amp;lt;/tt&amp;gt;: enable &#039;&#039;&#039;phishing&#039;&#039;&#039; protection&lt;br /&gt;
&lt;br /&gt;
Firefox 50 and later:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;browser.safebrowsing.phishing.enabled&amp;lt;/tt&amp;gt;: enable &#039;&#039;&#039;phishing&#039;&#039;&#039; protection&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
* Safe Browsing Protocol [https://web.archive.org/web/20160422212049/https://developers.google.com/safe-browsing/developers_guide_v2 v2.2] and [https://developers.google.com/safe-browsing/v4/ v4]&lt;br /&gt;
* [[Phishing Protection: Design Documentation|Design Documentation]]&lt;br /&gt;
* [[Phishing Protection: Server Spec|Server Spec]]&lt;br /&gt;
* [[Phishing Protection: Client Spec|Client Spec]]&lt;br /&gt;
* [https://support.mozilla.org/en-US/kb/how-does-phishing-and-malware-protection-work SUMO]&lt;br /&gt;
* [https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/ Overview of how Safe Browsing works in Firefox]&lt;br /&gt;
&lt;br /&gt;
= Engineering =&lt;br /&gt;
Product/Component: &#039;&#039;&#039;Toolkit/Safe Browsing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1149867 Tracking bug]&lt;br /&gt;
* The Firefox implementation is split into a few parts:&lt;br /&gt;
** &amp;lt;tt&amp;gt;browser/components/safebrowsing/&amp;lt;/tt&amp;gt; (front-end tests)&lt;br /&gt;
** &amp;lt;tt&amp;gt;netwerk/base/nsChannelClassifier&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;toolkit/components/url-classifier/&amp;lt;/tt&amp;gt; (includes the list manager)&lt;br /&gt;
* Local store is in:&lt;br /&gt;
** &amp;lt;tt&amp;gt;~/.cache/mozilla/firefox/XXXX/safebrowsing/&amp;lt;/tt&amp;gt; on Linux&lt;br /&gt;
** &amp;lt;tt&amp;gt;~/Library/Caches/Firefox/Profiles/XXXX/safebrowsing/&amp;lt;/tt&amp;gt; on Mac&lt;br /&gt;
** &amp;lt;tt&amp;gt;C:\Users\XXXX\AppData\Local\mozilla\firefox\profiles\XXXX\safebrowsing\&amp;lt;/tt&amp;gt; on Windows&lt;br /&gt;
* [https://github.com/mozilla/itisatrap itisatrap.org] test pages&lt;br /&gt;
* [https://people.mozilla.org/~fmarier/safebrowsing-dashboard/ Telemetry dashboard]&lt;br /&gt;
&lt;br /&gt;
== Code walkthrough ==&lt;br /&gt;
&lt;br /&gt;
Both [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/netwerk/base/nsBaseChannel.cpp#611 nsBaseChannel::Open()] and [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/netwerk/base/nsBaseChannel.cpp#672 nsBaseChannel::AsyncOpen()] ask for the channel to be [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/netwerk/base/nsBaseChannel.cpp#306 &amp;quot;classified&amp;quot;] by&lt;br /&gt;
[https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/netwerk/base/nsChannelClassifier.cpp#354 nsChannelClassifier]. There is also a [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/netwerk/protocol/http/nsHttpChannel.cpp#5185 local-only classification] that is requested by [[Security/Tracking protection|tracking protection]].&lt;br /&gt;
&lt;br /&gt;
The classifier [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp#173 determines the type of URL that it is] and then [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp#988 returns the appropriate NS_ERROR code]. That causes the channel to be [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/netwerk/base/nsChannelClassifier.cpp?offset=200#646 cancelled with that error code].&lt;br /&gt;
&lt;br /&gt;
When the [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/docshell/base/nsDocShell.cpp#7613 classification state of the page  changes], the appropriate UI [https://dxr.mozilla.org/mozilla-central/rev/f8086bd3c84fc1a42c3625cf3cc2253f0a5e8cfd/docshell/base/nsDocShell.cpp#4854  is shown].&lt;br /&gt;
&lt;br /&gt;
= QA =&lt;br /&gt;
&lt;br /&gt;
* Test pages&lt;br /&gt;
** [http://itisatrap.org/firefox/its-an-attack.html Malware], [http://itisatrap.org/firefox/its-a-trap.html phishing], [http://itisatrap.org/firefox/unwanted.html unwanted software] and [http://itisatrap.org/firefox/forbidden.html forbidden] hard-coded test URLs&lt;br /&gt;
** [http://phishtank.com/ Phishtank] (real phishing sites)&lt;br /&gt;
** [http://testsafebrowsing.appspot.com Google test pages] (we don&#039;t implement: Clank Warnings, Client-side phishing detection, Bad IP Warnings)&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1250329 Meta QA bug]&lt;br /&gt;
* [https://www.google.com/transparencyreport/safebrowsing/diagnostic/index.html Info on why certain URLs are blocked]&lt;br /&gt;
* [https://github.com/fmarier/sbdbdump/blob/master/dump.py Script to dump the contents of the local store]&lt;br /&gt;
* [https://dxr.mozilla.org/mozilla-central/source/testing/firefox-ui/tests/functional/security UI tests (Marionette)]&lt;br /&gt;
* [https://hg.mozilla.org/qa/mozmill-tests/file/default/firefox/tests/remote/restartTests/testSafeBrowsing_initialDownload/test2.js Mozmill test for initial list download] (needs to be [https://bugzilla.mozilla.org/show_bug.cgi?id=1237396 ported to Marionette])&lt;br /&gt;
&lt;br /&gt;
To turn on debugging output, export the following environment variable:&lt;br /&gt;
&lt;br /&gt;
 MOZ_LOG=&amp;quot;UrlClassifierDbService:5,nsChannelClassifier:5,UrlClassifierProtocolParser:5,UrlClassifierStreamUpdater:5,UrlClassifierPrefixSet:5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and also see the &amp;lt;tt&amp;gt;browser.safebrowsing.debug&amp;lt;/tt&amp;gt; pref to see debugging output from the JS pieces of Safe Browsing.&lt;br /&gt;
&lt;br /&gt;
= Telemetry =&lt;br /&gt;
&lt;br /&gt;
* Performance&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_CL_CHECK_TIME&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_CL_CHECK_TIME]: how long a Safe Browsing lookup took&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_CL_UPDATE_TIME&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_CL_UPDATE_TIME]: how long table updates takes&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_LOOKUP_TIME&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_LOOKUP_TIME]: time spent in the dbservice while doing a lookup&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_PS_CONSTRUCT_TIME&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_PS_CONSTRUCT_TIME]: time spent constructing a PrefixSet&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_PS_FALLOCATE_TIME&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_PS_FALLOCATE_TIME]: time spent allocating a PrefixSet&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_PS_FILELOAD_TIME&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_PS_FILELOAD_TIME]: time spent loading PrefixSet from disk&lt;br /&gt;
* Server-related&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_COMPLETE_TIMEOUT&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_COMPLETE_TIMEOUT]: whether or not a client timed out while contacting the gethash server&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_COMPLETE_REMOTE_STATUS&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_COMPLETE_REMOTE_STATUS]: HTTP status code returned by the gethash server&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_UPDATE_REMOTE_STATUS&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_UPDATE_REMOTE_STATUS]: HTTP status code returned by the update server&lt;br /&gt;
* Database size&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_LC_COMPLETIONS&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_LC_COMPLETIONS]: number of entries in the completion cache&lt;br /&gt;
** [https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&amp;amp;end_date=2016-06-06&amp;amp;keys=__none__!__none__!__none__&amp;amp;max_channel_version=nightly%252F49&amp;amp;measure=URLCLASSIFIER_LC_PREFIXES&amp;amp;min_channel_version=null&amp;amp;product=Firefox&amp;amp;sanitize=1&amp;amp;sort_keys=submissions&amp;amp;start_date=2016-04-25&amp;amp;table=1&amp;amp;trim=1&amp;amp;use_submission_date=0 URLCLASSIFIER_LC_PREFIXES]: number of entries in the prefix cache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* Google reporting forms:&lt;br /&gt;
** [https://www.google.com/safebrowsing/report_badware/ Malware]&lt;br /&gt;
** [https://www.google.com/safebrowsing/report_phish/ Phishing] -- [https://www.google.com/safebrowsing/report_phish/?tpl=mozilla Firefox-specific]&lt;br /&gt;
** [https://www.google.com/safebrowsing/report_error/ Phishing error] (false positive) -- [https://www.google.com/safebrowsing/report_error/?tpl=mozilla Firefox-specific]&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140059</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140059"/>
		<updated>2016-07-18T08:27:02Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* M0 (2016/7/31) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
# v4 table download/update will be opt-in.&lt;br /&gt;
# To test M0 features, modify the following preferences:&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.malwareTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-malware-proto&#039;&#039; and &#039;&#039;goog-unwanted-proto&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;urlclassifier.phishTable&#039;&#039;&#039; ==&amp;gt; Add &#039;&#039;goog-phish-proto&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m3&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m4&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m5&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140058</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140058"/>
		<updated>2016-07-18T07:52:33Z</updated>

		<summary type="html">&lt;p&gt;Hchang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M3 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Do and use v4 complete hashes (in addition to v2) but ignore the result&lt;br /&gt;
# v2/v4 URL hash matching consistency telemetry&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m3&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M4 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Cache&lt;br /&gt;
# Anything else&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m4&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M5 (Deadline TBD) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Enable v4 by default!&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m5&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140057</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140057"/>
		<updated>2016-07-18T07:46:28Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140052</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140052"/>
		<updated>2016-07-18T07:42:41Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;,&lt;br /&gt;
    &amp;quot;resolution&amp;quot;: [&amp;quot;FIXED&amp;quot;, &amp;quot;WONTFIX&amp;quot;, &amp;quot;DUPLICATE&amp;quot;, &amp;quot;WORKSFORME&amp;quot;, &amp;quot;INCOMPLETE&amp;quot;],&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140051</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140051"/>
		<updated>2016-07-18T07:41:05Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m2&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140050</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140050"/>
		<updated>2016-07-18T07:40:16Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m1&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140049</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140049"/>
		<updated>2016-07-18T07:39:20Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;whiteboard&amp;quot;: &amp;quot;#sbv4-m0&amp;quot;,&lt;br /&gt;
    &amp;quot;include_fields&amp;quot;: &amp;quot;id, summary, status, assigned_to,resolution,&amp;quot;,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;bug_id&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140048</id>
		<title>Security/Safe Browsing/V4 Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Safe_Browsing/V4_Implementation&amp;diff=1140048"/>
		<updated>2016-07-18T07:30:32Z</updated>

		<summary type="html">&lt;p&gt;Hchang: Created page with &amp;quot;= Milestones =  == M0 (2016/7/31) == === Deliverables === # Send v4 update request on time # Parse v4 update response but not store to disk # Use v4 request backoff settings #...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Milestones =&lt;br /&gt;
&lt;br /&gt;
== M0 (2016/7/31) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Send v4 update request on time&lt;br /&gt;
# Parse v4 update response but not store to disk&lt;br /&gt;
# Use v4 request backoff settings&lt;br /&gt;
# v2 will still be up and running&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
== M1 (2016/9/30) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Store v4 tables to disk (including fixed and variable length prefixes)&lt;br /&gt;
# Store table states&lt;br /&gt;
# Split v4 tables to different directory per provider&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;br /&gt;
&lt;br /&gt;
== M2 (Right before Hawaii Workweek) ==&lt;br /&gt;
=== Deliverables ===&lt;br /&gt;
# Check v4 prefixes (in addition to v4) but ignore the result&lt;br /&gt;
# v2/v4 prefix matching consistency telemetry (e.g. v2/v4 should both &#039;have&#039; or &#039;not have&#039; certain URL hash)&lt;br /&gt;
## Be careful of the variable length prefixes&lt;br /&gt;
&lt;br /&gt;
=== Bugs ===&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105948</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105948"/>
		<updated>2015-11-17T08:58:32Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Configure your device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add additional required attributes to the manifest file&lt;br /&gt;
* Use the developer signing tool to create and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
The configuring steps will be covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest even though system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Additional Required Attributes to the Manifest File ===&lt;br /&gt;
Beside the well-known attributes in the gaia manifest, there are two additional attributes required by signed package and you have to manually add to the manifest: &lt;br /&gt;
# &#039;&#039;&#039;package-identifer&#039;&#039;&#039;: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# &#039;&#039;&#039;moz-package-origin&#039;&#039;&#039;: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add additional attributes to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For example, your manifest file may look like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  &lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After packaging and signing, it becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  &lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot;,&lt;br /&gt;
  //&lt;br /&gt;
  // Auto-generated part.&lt;br /&gt;
  &amp;quot;moz-resources&amp;quot;: [...],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Now you can use [URL-of-the-package]!//[resource-path-relative-to-the-package] to access the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages support: &#039;&#039;&#039;network.http.enable-packaged-apps&#039;&#039;&#039; = true&lt;br /&gt;
** Enables Signed Package support: &#039;&#039;&#039;network.http.signed-packages.enabled&#039;&#039;&#039; = true&lt;br /&gt;
** Create a &#039;&#039;&#039;network.http.signed-packages.developer-root&#039;&#039;&#039; preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g or restart the device.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105922</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105922"/>
		<updated>2015-11-17T03:59:02Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* 2. Add Additional Required Attributes to the Manifest File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add additional required attributes to the manifest file&lt;br /&gt;
* Use the developer signing tool to create and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
The configuring steps will be covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest even though system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Additional Required Attributes to the Manifest File ===&lt;br /&gt;
Beside the well-known attributes in the gaia manifest, there are two additional attributes required by signed package and you have to manually add to the manifest: &lt;br /&gt;
# &#039;&#039;&#039;package-identifer&#039;&#039;&#039;: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# &#039;&#039;&#039;moz-package-origin&#039;&#039;&#039;: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add additional attributes to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For example, your manifest file may look like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  &lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After packaging and signing, it becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  &lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot;,&lt;br /&gt;
  //&lt;br /&gt;
  // Auto-generated part.&lt;br /&gt;
  &amp;quot;moz-resources&amp;quot;: [...],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Now you can use [URL-of-the-package]!//[resource-path-relative-to-the-package] to access the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages support: network.http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Package support: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g or restart the device.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105920</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105920"/>
		<updated>2015-11-17T03:29:30Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* 2. Add Additional Required Attributes to the Manifest File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add additional required attributes to the manifest file&lt;br /&gt;
* Use the developer signing tool to create and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
The configuring steps will be covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest even though system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Additional Required Attributes to the Manifest File ===&lt;br /&gt;
Beside the well-known attributes in the gaia manifest, there are two additional attributes required by signed package and you have to manually add to the manifest: &lt;br /&gt;
# package-identifer: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add additional attributes to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For example, your manifest file may look like the following:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  &lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
After packaging and signing, it becomes:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  &lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot;,&lt;br /&gt;
  //&lt;br /&gt;
  // Auto-generated part.&lt;br /&gt;
  &amp;quot;moz-resources&amp;quot;: [...],&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Now you can use [URL-of-the-package]!//[resource-path-relative-to-the-package] to access the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages support: network.http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Package support: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g or restart the device.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105918</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105918"/>
		<updated>2015-11-17T03:25:45Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Creating/Modifying a Signed Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add additional required attributes to the manifest file&lt;br /&gt;
* Use the developer signing tool to create and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
The configuring steps will be covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest even though system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Additional Required Attributes to the Manifest File ===&lt;br /&gt;
Beside the well-known attributes in the gaia manifest, there are two additional attributes required by signed package and you have to manually add to the manifest: &lt;br /&gt;
# package-identifer: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add additional attributes to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For example, your manifest file may look like the following:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
&lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
After packaging and signing, it would become:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  // Regular manifest attributes.&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
  ...,&lt;br /&gt;
&lt;br /&gt;
  // New attributes introduced by NSec.&lt;br /&gt;
  &amp;quot;package-identifier&amp;quot;: &amp;quot;3bd9a32f-8fd6-404f-bfbe-b883d2e93646&amp;quot;,&lt;br /&gt;
  &amp;quot;moz-package-origin&amp;quot;: &amp;quot;http://people.mozilla.org&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  // Auto-generated part.&lt;br /&gt;
  &amp;quot;moz-resources&amp;quot;: [...],&lt;br /&gt;
}&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Now you can use [URL-of-the-package]!//[resource-path-relative-to-the-package] to access the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages support: network.http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Package support: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g or restart the device.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105721</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105721"/>
		<updated>2015-11-16T09:34:56Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Creating/Modifying a Signed Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add additional required attributes to the manifest file&lt;br /&gt;
* Use the developer signing tool to create and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
The configuring steps will be covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest even though system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Additional Required Fields to the Manifest File ===&lt;br /&gt;
Beside the well-known fields in the gaia manifest, there are two additional fields that you have to add to the manifest: &lt;br /&gt;
# package-identifer: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add other fields to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Now you can use [URL-of-the-package]!//[resource-path-relative-to-the-package] to access the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages support: network.http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Package support: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g or restart the device.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105719</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105719"/>
		<updated>2015-11-16T09:31:05Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Getting Started with Signed Packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add additional required attributes to the manifest file&lt;br /&gt;
* Use the developer signing tool to create and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
The configuring steps will be covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest. Note that system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Required Fields to the Manifest File ===&lt;br /&gt;
Beside the well-known fields in the gaia manifest, there are two additional fields that you have to add to the manifest: &lt;br /&gt;
# package-identifer: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add other fields to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Then you can now use [URL-of-the-package]!//[relative-path-to-resource] to navigate the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages support: network.http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Package support: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g or restart the device.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105717</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105717"/>
		<updated>2015-11-16T09:28:58Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Configuring your device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add required fields to the manifest file&lt;br /&gt;
* Use the developer signing tool to make and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
These steps are covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest. Note that system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Required Fields to the Manifest File ===&lt;br /&gt;
Beside the well-known fields in the gaia manifest, there are two additional fields that you have to add to the manifest: &lt;br /&gt;
# package-identifer: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add other fields to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Then you can now use [URL-of-the-package]!//[relative-path-to-resource] to navigate the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages support: network.http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Package support: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g or restart the device.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105716</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105716"/>
		<updated>2015-11-16T09:26:18Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Creating/Modifying a Signed Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add required fields to the manifest file&lt;br /&gt;
* Use the developer signing tool to make and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
These steps are covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file. However, you don&#039;t need to create the package on your own. What you need to do is:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. Claim the permissions/system message/web activity as usual in the manifest. Note that system message and web activity is still not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Required Fields to the Manifest File ===&lt;br /&gt;
Beside the well-known fields in the gaia manifest, there are two additional fields that you have to add to the manifest: &lt;br /&gt;
# package-identifer: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add other fields to the manifest like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 3. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 4. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
Then you can now use [URL-of-the-package]!//[relative-path-to-resource] to navigate the packaged web content via browser. For example, if you host your package in http://foo.com/app.pak, the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages network: http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Packages: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g (ie either):&lt;br /&gt;
  restart your device&lt;br /&gt;
  “adb shell stop b2g” then “adb shell start b2g” &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105715</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105715"/>
		<updated>2015-11-16T09:18:34Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* 1. Add Additional Fields to the Manifest File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add required fields to the manifest file&lt;br /&gt;
* Use the developer signing tool to make and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
These steps are covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. &lt;br /&gt;
&lt;br /&gt;
=== 1. Add Additional Required Fields to the Manifest File ===&lt;br /&gt;
# package-identifer: A UUID string to uniquely identify this package. The identifier will be considered as a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add other fields to the manifest file like &amp;quot;moz-resources&amp;quot; during packaging.&lt;br /&gt;
&lt;br /&gt;
=== 2. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 3. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
You can now use [URL-of-the-package]!//[relative-path-to-resource] to navigate the packaged web content via your browser. For example, if you host your package in http://foo.com/app.pak, then the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages network: http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Packages: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g (ie either):&lt;br /&gt;
  restart your device&lt;br /&gt;
  “adb shell stop b2g” then “adb shell start b2g” &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105713</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105713"/>
		<updated>2015-11-16T09:04:38Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Getting Started with Signed Packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a regular gaia app &lt;br /&gt;
* Add required fields to the manifest file&lt;br /&gt;
* Use the developer signing tool to make and sign your package&lt;br /&gt;
* Host the package in where you specify in the manifest file&lt;br /&gt;
&lt;br /&gt;
Since the signed package support (i.e. new security model) is pref&#039;ed out at the moment, you have to &lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
before testing this feature.&lt;br /&gt;
&lt;br /&gt;
These steps are covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. &lt;br /&gt;
&lt;br /&gt;
=== 1. Add Additional Fields to the Manifest File ===&lt;br /&gt;
# package-identifer: A UUID to uniquely identify this package. The identifier will be treated a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add other fields to the manifest file like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 2. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 3. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
You can now use [URL-of-the-package]!//[relative-path-to-resource] to navigate the packaged web content via your browser. For example, if you host your package in http://foo.com/app.pak, then the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages network: http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Packages: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g (ie either):&lt;br /&gt;
  restart your device&lt;br /&gt;
  “adb shell stop b2g” then “adb shell start b2g” &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105711</id>
		<title>FirefoxOS/New security model/Getting Started with Signed Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FirefoxOS/New_security_model/Getting_Started_with_Signed_Packages&amp;diff=1105711"/>
		<updated>2015-11-16T08:58:22Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Creating/Modifying a Signed Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Started with Signed Packages ==&lt;br /&gt;
Signed Packages are web packages that been signed with a signing key. In production, these are signed by MarketPlace, but for testing purposes, developers can configure their device to accept a test signing key, so they can sign their own packages for one specific device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The steps in the process are:&lt;br /&gt;
* Create a manifest for your Signed Package&lt;br /&gt;
* Use the developer signing tool to sign your package&lt;br /&gt;
* Upload the modified package to a server&lt;br /&gt;
&lt;br /&gt;
Before you test for the first time, you must also do the following steps (only the first time):&lt;br /&gt;
* Configure a number of developer preferences&lt;br /&gt;
* Upload your signing certificate to your test device&lt;br /&gt;
&lt;br /&gt;
These steps are covered in detail below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating/Modifying a Signed Package ==&lt;br /&gt;
Signed Packages are similar to existing web apps packaged apps - i.e. they consist of HTML, JavaScript, CSS files and other resources, and are packed into a package with a manifest.webapp file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0. Write a Regular Gaia App ===&lt;br /&gt;
The first step to create and host your signed package is to create a normal gaia app. &lt;br /&gt;
&lt;br /&gt;
=== 1. Add Additional Fields to the Manifest File ===&lt;br /&gt;
# package-identifer: A UUID to uniquely identify this package. The identifier will be treated a part of the origin. So please be careful to change this value across versions.&lt;br /&gt;
# moz-package-origin: The origin where the package is going to be hosted. This prevents the package from being downloaded and hosted by other people.&lt;br /&gt;
&lt;br /&gt;
Note that the packaging/signing tool would automatically add other fields to the manifest file like &amp;quot;moz-resources&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 2. Create and Sign Your Package ===&lt;br /&gt;
* Install a [https://github.com/johnathan79717/fxos-package-signing-tool signing tool]&lt;br /&gt;
* Follow the tool instructions to sign the package&lt;br /&gt;
&lt;br /&gt;
=== 3. Host Your Package ===&lt;br /&gt;
* Signed Packages are hosted as a file on a web server. The only requirements are:&lt;br /&gt;
** The package is served with the MIME type of “application/package”&lt;br /&gt;
** The package is served from the location specified in the manifest (moz-package-origin)&lt;br /&gt;
&lt;br /&gt;
You can now use [URL-of-the-package]!//[relative-path-to-resource] to navigate the packaged web content via your browser. For example, if you host your package in http://foo.com/app.pak, then the path to &amp;quot;index.html&amp;quot; inside the package would be http://foo.com/app.pak!//index.html.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing a Device to Load Signed Packages ==&lt;br /&gt;
In order to test Signed Packages on a device, you must upload your developer certificate to the device, and configure a number of preferences to both enable Signed Packages, and also to switch to trusting the developer certificate. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring your device ===&lt;br /&gt;
If you have not already done so, you will need to enable remote debugging via DevTools, and grant additional access.  (Enable remote debugging in the developer menu of the device. Use WebIDE to request higher privileges, and then access the preferences section. For information on how to do this, see here.)&lt;br /&gt;
&lt;br /&gt;
* Upload the develop certificate created during signing to an accessible location: &lt;br /&gt;
  adb push developercert.der /data/local/developercert.der &lt;br /&gt;
* Configure a number of preferences as follows:&lt;br /&gt;
** Enables web packages network: http.enable-packaged-apps = true&lt;br /&gt;
** Enables Signed Packages: network.http.signed-packages.enabled = true&lt;br /&gt;
** Create a signed-packages.developer-root preference using the path you created in the previous step: network.http.signed-packages.developer-root = /data/local/developercert.der &lt;br /&gt;
* Restart b2g (ie either):&lt;br /&gt;
  restart your device&lt;br /&gt;
  “adb shell stop b2g” then “adb shell start b2g” &lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
System Messages is not supported yet. Any function related to System Message cannot be used for now.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-10-21&amp;diff=1101604</id>
		<title>TPE CONNECTIVITY GROUP/2015-10-21</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-10-21&amp;diff=1101604"/>
		<updated>2015-10-21T03:10:49Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry Chang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Meeting Info =&lt;br /&gt;
* Time: 2015/10/21 (Wed), 11AM&lt;br /&gt;
* Room: 5F, Santos&lt;br /&gt;
* Host: Ethan&lt;br /&gt;
* Attendees: Dimi, Henry, Jonathan, Thomas, Tim, Winnie, Yoshi&lt;br /&gt;
&lt;br /&gt;
= Agenda =&lt;br /&gt;
# Weekly status update&lt;br /&gt;
# Feedback of stand-up meeting&lt;br /&gt;
# 2.5 blockers and root cause analysis&lt;br /&gt;
#* Dashboard: http://charts.mozilla.org/fxos/blockers.html#project=1.4,2.0,2.1,2.2,2.5&lt;br /&gt;
# Initiative of Orlando WW&lt;br /&gt;
&lt;br /&gt;
= Weekly Status Update =&lt;br /&gt;
== Dimi Lee ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1207727}} - Rework updating service workers according to the latest spec. &#039;&#039;&#039;writing testcases, address comment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1181389}} - check for full package update when doing service worker update&lt;br /&gt;
# {{bug|1181390}} - fire install and activate events on service worker&lt;br /&gt;
# {{bug|1179064}} - Ensure that service worker code for signed packages is contained within the package&lt;br /&gt;
&lt;br /&gt;
== Ethan Tseng ==&lt;br /&gt;
* Collaborated with the team to create feature sets of NSec for 2.5.&lt;br /&gt;
** https://wiki.mozilla.org/FirefoxOS/New_security_model/2.5_Status&lt;br /&gt;
* Bug 1179060 - Apply a default CSP for signed packaged content (work in progress)&lt;br /&gt;
* Bug 1214071 - Add APIs get/removeCookiesForOriginAttributes() in nsICookieManager2.idl (work in progress)&lt;br /&gt;
* Bug 1213827 - CSP frame-ancestors breaks firefox os apps (2.5+)&lt;br /&gt;
** This is critical :)&lt;br /&gt;
&lt;br /&gt;
== Henry Chang ==&lt;br /&gt;
# Bug 1178526 - Set appropriate origin attributes for signed packages. &lt;br /&gt;
## Move patch part 2 to Bug 1216062 (landed in mozilla-inbound).&lt;br /&gt;
## Discussing the approach in patch part 3 with Honza.&lt;br /&gt;
# Bug 1180088 - Fix security checks so that they work without appid by tagging a child process with a package identifier.&lt;br /&gt;
## r+&#039;d by Kanru.&lt;br /&gt;
## Figuring out if we can have a test case on B2G emulator (impossible on browser since parent prcoess permission assertion is for B2G only)&lt;br /&gt;
# Bug 1216443 - Navigating from &amp;quot;about:blank&amp;quot; to signed packaged web content doesn&#039;t trigger process switch.&lt;br /&gt;
## The followup bug of Bug 1190088.&lt;br /&gt;
# Bug 1214572 - Should use a new process to load content when loading from a signed packaged web app.&lt;br /&gt;
## Need he20:10, 20 October 2015 (PDT)20:10, 20 October 2015 (PDT)~~lp&lt;br /&gt;
&lt;br /&gt;
== Jonathan Hao ==&lt;br /&gt;
{{Bug|1178448}} - Tool for creating new signed packages&lt;br /&gt;
* Rebasing the r+ package, will land that patch first, and file another bug to address the pref renaming and bypassing trust origin.&lt;br /&gt;
{{Bug|1216469}} - Bypass verification for signed packages from trust origins.&lt;br /&gt;
* Ongoing&lt;br /&gt;
&lt;br /&gt;
== Tim Huang ==&lt;br /&gt;
* {{Bug|1180257}} - mozAlarm fires alarms not at the expected time after a timezone change&lt;br /&gt;
** Marked as the duplicate of {{Bug|1181489}}&lt;br /&gt;
&lt;br /&gt;
* {{Bug|1131493}} - [Wifi Direct] Support bonjour/upnp service advertisement&lt;br /&gt;
** Studying WiFi Direct&lt;br /&gt;
*** Understood the service discovery request/response.&lt;br /&gt;
*** Studying the bonjour over service discovery.&lt;br /&gt;
&lt;br /&gt;
== Thomas Nguyen ==&lt;br /&gt;
*{{Bug|1166210}} - Remove ServicesSetting changes listener in NfcContentHelper&lt;br /&gt;
**r+, Waiting try&lt;br /&gt;
*{{Bug|1201427}} - [Aries] NFC Tap-to-Pay dose not work&lt;br /&gt;
**Duplicated&lt;br /&gt;
*{{Bug|1136512}} - Sony Z3C - nfcd should build with Z3 compatiable libnfc-nci library&lt;br /&gt;
**Under review&lt;br /&gt;
*{{Bug|976457}} - B2G NFC: API for supporting NFC_A tags&lt;br /&gt;
**Working&lt;br /&gt;
&lt;br /&gt;
== Winnie Sun ==&lt;br /&gt;
* {{Bug|1131493}} - [Wifi Direct] Support bonjour/upnp service advertisement&lt;br /&gt;
** Studying how the command send to the wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
== Yoshi Huang ==&lt;br /&gt;
* {{Bug|1196665}} -  Add originAttributes into SpecialPowers&lt;br /&gt;
** addressing bholley&#039;s comment&lt;br /&gt;
* {{Bug|1196652}} - OriginSuffix is shown in about:serviceworker on b2g&lt;br /&gt;
** ongoing, add {wrapReflector: true} in Cu.cloneInto, but still cannot work on b2g.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-10-13&amp;diff=1100499</id>
		<title>TPE CONNECTIVITY GROUP/2015-10-13</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-10-13&amp;diff=1100499"/>
		<updated>2015-10-14T03:06:01Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry Chang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Meeting Info =&lt;br /&gt;
* Time: 2015/10/14 (Wed), 11AM&lt;br /&gt;
* Room: 5F, Santos&lt;br /&gt;
* Host: Ethan&lt;br /&gt;
* Attendees: Dimi, Henry, Jonathan, Tim, Thomas, Winnie, Yoshi&lt;br /&gt;
&lt;br /&gt;
= Agenda =&lt;br /&gt;
# Weekly status update&lt;br /&gt;
# Skip level meeting (10/27)&lt;br /&gt;
# 2015 Q4 goal setting&lt;br /&gt;
#* https://wiki.mozilla.org/TPE_CONNECTIVITY_GROUP/2015-10-13#2015_Q4_Goal_Setting&lt;br /&gt;
# 2.5 blockers and root cause analysis&lt;br /&gt;
#* Dashboard: http://charts.mozilla.org/fxos/blockers.html#project=1.4,2.0,2.1,2.2,2.5&lt;br /&gt;
# Meeting time&lt;br /&gt;
# Initiative of Orlando WW&lt;br /&gt;
# Progress of NSec this week: What can we deliver? What blocks us?&lt;br /&gt;
&lt;br /&gt;
= Weekly Status Update =&lt;br /&gt;
== Dimi Lee ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1207727}} - Rework updating service workers according to the latest spec. &#039;&#039;&#039;f+&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1181389}} - check for full package update when doing service worker update&lt;br /&gt;
# {{bug|1181390}} - fire install and activate events on service worker&lt;br /&gt;
# {{bug|1179064}} - Ensure that service worker code for signed packages is contained within the package&lt;br /&gt;
&lt;br /&gt;
== Ethan Tseng ==&lt;br /&gt;
* New Security Model&lt;br /&gt;
*# {{Bug|1165267}} - Use OriginAttributes for nsCookieService (&#039;&#039;&#039;landed&#039;&#039;&#039; last week)&lt;br /&gt;
*# {{Bug|1214071}} - Add APIs get/removeCookiesForOriginAttributes() in nsICookieManager2.idl (&#039;&#039;&#039;ongoing&#039;&#039;&#039;)&lt;br /&gt;
*# {{Bug|1179060}} - Apply a default CSP for signed packaged content (&#039;&#039;&#039;feedback+&#039;&#039;&#039; from Christoph)&lt;br /&gt;
* Review patch: Bug 1204846 - Amount of mobile data consumed regresses&lt;br /&gt;
* Management&lt;br /&gt;
*# Complete 2015 Q4 goal settings&lt;br /&gt;
&lt;br /&gt;
== Henry Chang ==&lt;br /&gt;
# Bug 1210573 - Add packageIdentifier attribute to nsIPackagedAppUtils&lt;br /&gt;
## To parse the &#039;package-identifier&#039; from the manifest file.&lt;br /&gt;
## Landed.&lt;br /&gt;
## A prerequisite of Bug 1178526&lt;br /&gt;
# Bug 1212223 - nsMultiMixedConv might call |SendData| with incorrect buffer length&lt;br /&gt;
## Landed&lt;br /&gt;
## Fixed corrupt manifest file issue.&lt;br /&gt;
# Bug 1210235 - Pref off any signed web packaged app things&lt;br /&gt;
## r+&#039;d by Valentin.&lt;br /&gt;
## Requires pref &amp;quot;network.http.packaged-signed-apps-enabled&amp;quot; to enable &amp;quot;signed package verification&amp;quot;&lt;br /&gt;
## Also, this patch would bypass the verification process if a package has no signautre (performance issue.)&lt;br /&gt;
#Bug 1214079 - Doom all the cache of the signed packaged web app if it&#039;s not verified.&lt;br /&gt;
## I was hoping to solve Bug 1190757 ([PackagedAppService] Delete all cached files if a package downloading in interrupted.) but Honza has some concerns so I just focus the special case:  &amp;quot;verification failure&amp;quot; first.&lt;br /&gt;
# Bug 1178526 - Set appropriate origin attributes for signed packages &lt;br /&gt;
## Only last one patch waiting for Honza&#039;s review.&lt;br /&gt;
## was suppose to review on Monday Oct 12&lt;br /&gt;
# Bug 1180088 - Fix security checks so that they work without appid by tagging a child process with a package identifier.&lt;br /&gt;
&lt;br /&gt;
== Jonathan Hao ==&lt;br /&gt;
* {{Bug|1178448}} - Let developer add their own trusted CA&lt;br /&gt;
** r-. I shouldn&#039;t do file I/O on main thread.&lt;br /&gt;
* {{Bug|1205209}} - [RTSP]When user connects a special RTSP link, the crash will happen.&lt;br /&gt;
** Landed.&lt;br /&gt;
* {{Bug|1207964}} - Remove workaround from bug 1080461&lt;br /&gt;
** To remove a workaround blocking RTSP live streams.&lt;br /&gt;
** Need to find RTSP live stream links to test.&lt;br /&gt;
&lt;br /&gt;
== Tim Huang ==&lt;br /&gt;
*{{Bug|1204846}} - Amount of mobile data consumed regresses&lt;br /&gt;
** The patch has submitted.&lt;br /&gt;
*{{Bug|1131493}} -  [Wifi Direct] Support bonjour/upnp service advertisement&lt;br /&gt;
** Studying the Wifi Direct.&lt;br /&gt;
*{{Bug|1207066}} -  [NetworkManager] implement nsINetworkInterface.activate()/deactivate() in wifi network interface&lt;br /&gt;
** Planning how to implement this feature.&lt;br /&gt;
&lt;br /&gt;
== Thomas Nguyen ==&lt;br /&gt;
*{{Bug|1168704}} - rename setFocusApp in nsINfcContentHelper&lt;br /&gt;
**r+, Waiting try&lt;br /&gt;
*{{Bug|1166210}} - Remove ServicesSetting changes listener in NfcContentHelper&lt;br /&gt;
**Clarified and provided solution&lt;br /&gt;
*{{Bug|1201427}} - [Aries] NFC Tap-to-Pay dose not work&lt;br /&gt;
**Working&lt;br /&gt;
&lt;br /&gt;
== Winnie Sun ==&lt;br /&gt;
* {{bug|1187262}} - A device cannot connect B device through wifi&lt;br /&gt;
** Finally r+ !!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
* Find out the flow chart to make service discovery of wifi direct&lt;br /&gt;
** Thanks to Henry!!!!&lt;br /&gt;
* Study on the current code, and think about how to make out the flow.&lt;br /&gt;
** How to send command to wpa_supplicant -&amp;gt; WifiCommand.jsm&lt;br /&gt;
** How to new a new event of p2p -&amp;gt; WifiWorker.js&lt;br /&gt;
** How to get &amp;quot;p2p_peers&amp;quot; &#039;s result - &amp;gt; Add a listener of &amp;quot;scanresult&amp;quot;&lt;br /&gt;
** How to get the response? -&amp;gt; Add an event &amp;quot;P2P-SERV-DISC-RESP&amp;quot; in WifiP2pManager.jsm&lt;br /&gt;
&lt;br /&gt;
== Yoshi Huang ==&lt;br /&gt;
&lt;br /&gt;
= 2015 Q4 Goal Setting =&lt;br /&gt;
Also recorded in https://wiki.mozilla.org/TPE_CONNECTIVITY_GROUP/2015-Q4&lt;br /&gt;
== New Security Model ==&lt;br /&gt;
# &#039;&#039;&#039;Deliver a usable first prototype&#039;&#039;&#039; (Henry, Jonathan)&lt;br /&gt;
# &#039;&#039;&#039;Complete all features of NSec&#039;&#039;&#039;&lt;br /&gt;
#* Signing (Jonathan)&lt;br /&gt;
#* Verifying signatures (Henry, Jonathan)&lt;br /&gt;
#* CSP (Ethan)&lt;br /&gt;
#* Process isolation (Henry)&lt;br /&gt;
#* Installing and updating (Henry)&lt;br /&gt;
#* Service Workers (Dimi)&lt;br /&gt;
#* Origin and cookies jars (Yoshi, Ethan, ...)&lt;br /&gt;
# &#039;&#039;&#039;Enhancement of NSec&#039;&#039;&#039;&lt;br /&gt;
#* Add test cases (Henry, ...)&lt;br /&gt;
#* Add debugging tools (Henry, ...)&lt;br /&gt;
# &#039;&#039;&#039;Demonstrate NSec in Orlando work week&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Maintenance of Owned Modules ==&lt;br /&gt;
# &#039;&#039;&#039;Fix 2.5 blockers&#039;&#039;&#039;&lt;br /&gt;
#* Wi-Fi (Henry, Tim)&lt;br /&gt;
#* Alarm and system message (Henry, Tim)&lt;br /&gt;
#* NetworkStats (Ethan, Tim)&lt;br /&gt;
#* NFC (Dimi, Thomas)&lt;br /&gt;
#* RTSP (Jonathan)&lt;br /&gt;
# &#039;&#039;&#039;New features&#039;&#039;&#039;&lt;br /&gt;
#* Wi-Fi change to support NetworkManager enhancement (Tim)&lt;br /&gt;
#* Service Discovery of Wi-Fi Direct (Tim)&lt;br /&gt;
#* Polish NFC on features, emulator and test cases (Thomas)&lt;br /&gt;
&lt;br /&gt;
== Long Term Plan ==&lt;br /&gt;
# Integrate New Security Model with Gaia (NGA?)&lt;br /&gt;
# TBD&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-09-15&amp;diff=1095305</id>
		<title>TPE CONNECTIVITY GROUP/2015-09-15</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-09-15&amp;diff=1095305"/>
		<updated>2015-09-15T03:22:21Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry Chang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.5 Blockers =&lt;br /&gt;
* Dashboard: http://charts.mozilla.org/fxos/blockers.html#project=1.4,2.0,2.1,2.2,2.5&lt;br /&gt;
* Wi-Fi blockers: https://goo.gl/hQugJj&lt;br /&gt;
* NFC blocker: https://goo.gl/xFY5bc&lt;br /&gt;
&lt;br /&gt;
= Weekly Status Update =&lt;br /&gt;
== Dimi == &lt;br /&gt;
&lt;br /&gt;
== Ethan Tseng ==&lt;br /&gt;
&lt;br /&gt;
== Henry Chang ==&lt;br /&gt;
&lt;br /&gt;
# Bug 1186290 - Notify TabParent to switch process when a signed packaged is loading from different origin.&lt;br /&gt;
## Add nsIPackagedAppChannelListener.onStartSignedPackageRequest&lt;br /&gt;
## Decide whether to call nsFrameLoader::SwitchProcessAndLoadURL in TabParent&lt;br /&gt;
## Who is supposed to review this patch? I asked for Jason first cuz he gave me some feedback before.&lt;br /&gt;
&lt;br /&gt;
# Bug 1163254 - Add signedPkg OriginAttribute for new Firefox OS security model&lt;br /&gt;
## Actually &#039;packageId&#039; is added to OriginAttributes rather than &#039;signedPkg&#039;.&lt;br /&gt;
## IPC part is also included in the patch.&lt;br /&gt;
## bholley may review this since he&#039;s back from PTO (?)&lt;br /&gt;
&lt;br /&gt;
# Bug 1178526 - Set appropriate origin attributes for signed packages&lt;br /&gt;
## Depends on Bug 1186290. (we need a path to propagate the packageId from deep internal to nsHttpChannel.)&lt;br /&gt;
## Add attribute &#039;packageId&#039; to nsILoadContext, which is being refacored all around. Don&#039;t think we should wait because the refactor is not blocker.&lt;br /&gt;
## No idea who could review this. Will ask Honza or bholley first.&lt;br /&gt;
&lt;br /&gt;
# Bug 1178518 - Support for verifying signed packages&lt;br /&gt;
## Change PackagedAppVerifier to call back the verification result asynchronously.&lt;br /&gt;
&lt;br /&gt;
# Bug 1178533 - Register permissions, system messages etc on navigation to signed packages&lt;br /&gt;
## Help Stephanie solve issues she met.&lt;br /&gt;
## Worked around the parent side permission check (AssertAppProcessPermission) like what TCPSocketParent uses. Child side perm## ission check is okay since its alll origin-based. However, parent side would depend on if the tab has own app or a browser element to do the check (TabContext). Even more, mozIAppliction.hasPermission would be used to check permissions, where mozIAppliction is passed around child/parent by appId.&lt;br /&gt;
## Have a working fix by hacking TabContext. If we are loading a packaged content, we set the TabContext to AppFrame and owns a hand-made mozIApplication created by origin.&lt;br /&gt;
&lt;br /&gt;
# Followup to Bug 1178533: In the long run we need something like nsIAppService to store proxies of mozIApplication for signed packaged content. For example, CSP module needs the csp defined in the manifest and for now no information in the manifest will be stored at all (except permissions.)&lt;br /&gt;
&lt;br /&gt;
== Jonathan Hao ==&lt;br /&gt;
&lt;br /&gt;
== Tim Huang ==&lt;br /&gt;
* {{Bug|1181489}} - mozAlarm mixes up 2 alarms: one for a regular CalDav sync, the other to wake you up&lt;br /&gt;
** Successfully reproduce this bug.&lt;br /&gt;
** Now, I am trying to confirm the root cause of this bug.&lt;br /&gt;
** A work around had been tried and could avoid this problem, however, it may trigger another issue according to the root cause, that I cannot sure yet, of this bug.&lt;br /&gt;
&lt;br /&gt;
== Winnie Sun ==&lt;br /&gt;
&lt;br /&gt;
== Yoshi Huang ==&lt;br /&gt;
&lt;br /&gt;
== Aaron Wu (EPM) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-07-14&amp;diff=1084489</id>
		<title>TPE CONNECTIVITY GROUP/2015-07-14</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-07-14&amp;diff=1084489"/>
		<updated>2015-07-14T06:57:15Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1158735}} - FetchEvent.client asserting in onFetch when there&#039;s no document. &#039;&#039;&#039;r?&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1143717}} - Update MessageEvent.source to be compliant with the spec. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1179191}} - When updating a sw via about:sw in b2g the parent process kills the settings app. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# {{bug|1172823}} - [FLAME-L] NFC handover passive receive file fail. &#039;&#039;&#039;bt issue&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1182154}} - [Aries-L][NFC] Transfer is not initiated for any file types. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1181389}} - check for full package update when doing service worker update&lt;br /&gt;
# {{bug|1181391}} - Preserve previous package until activate event&lt;br /&gt;
# {{bug|1181390}} - fire install and activate events on service worker&lt;br /&gt;
# ServiceWorker testcases.&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1131493}} - [Wifi Direct] Support bonjour/upnp service advertisement&lt;br /&gt;
# {{bug|1178525}} - Ensure the package is verified before content is served&lt;br /&gt;
# {{bug|1144623}} - [Shinano][Aries] Inconsistent WiFi state reported: connecting in statusbar, connected in Settings app&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Study &#039;&#039;&#039;&lt;br /&gt;
# Every bit about current app/security model on B2G. Will have a presentation.&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1178518}} - Support for verifying signed packages&lt;br /&gt;
*** Studied package formats: http://w3ctag.github.io/packaging-on-the-web/&lt;br /&gt;
*** The signature format is still undefined.&lt;br /&gt;
*** Trace code in DocShell and Necko&lt;br /&gt;
*** Valentin from the Necko team said they&#039;ve already implemented packaging support in {{Bug|1036275}}.&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
** Performance Task Force&lt;br /&gt;
*** {{Bug|1159639}} - Implement API to add performance marker&lt;br /&gt;
**** Waiting for baku&#039;s feedback&lt;br /&gt;
*** {{Bug|1174640}} - [Notification] Improve usability/performance of Wifi icon&lt;br /&gt;
**** Discussed with Bobby, Alphan, aknow several times, and came up with a proposal.&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Winnie ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1165214}} - DOMStorageManager should use cookieJar for ScopeKey and QuotaKey&lt;br /&gt;
** {{Bug|1165466}} - Fix up docshell and loadcontext inheriting code in nsIScriptSecurityManager to use originAttributes rather than explicitly querying appid/browser&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Aaron (EPM for Networking) ==&lt;br /&gt;
&lt;br /&gt;
* 2.5 status and plan&lt;br /&gt;
** Wiki: https://wiki.mozilla.org/Firefox_OS/Releases/2.5&lt;br /&gt;
** Nomination :https://charts.paas.allizom.org/fxos/nominations.html#project=1.4,2.0,2.1,2.2,2.5&lt;br /&gt;
** Blockers:https://charts.paas.allizom.org/fxos/blockers.html#project=1.4,2.0,2.1,2.2,2.5&lt;br /&gt;
** No FL/FLR, please careful about feature quality. FC = Nov 2nd.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-Q2&amp;diff=1079076</id>
		<title>TPE CONNECTIVITY GROUP/2015-Q2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-Q2&amp;diff=1079076"/>
		<updated>2015-06-09T09:19:45Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= High level Goals for the team =&lt;br /&gt;
== Fix 2.2 blockers ==&lt;br /&gt;
* priority: p1&lt;br /&gt;
* https://wiki.mozilla.org/TPE_CONNECTIVITY_GROUP/2.2%2B&lt;br /&gt;
&lt;br /&gt;
== Have the performance improvement plan and finish one performance improvement ==&lt;br /&gt;
* priority: p1&lt;br /&gt;
* Performance bugs - https://etherpad.mozilla.org/B2GPerfItems&lt;br /&gt;
* Performance task force&lt;br /&gt;
*# {{Bug|1159639}} - Implement API to add performance marker&lt;br /&gt;
* Performance plan&lt;br /&gt;
*# WiFi ?&lt;br /&gt;
*# RTSP ?&lt;br /&gt;
*# NFC ?&lt;br /&gt;
&lt;br /&gt;
== Engage with new security model == &lt;br /&gt;
* priority: p1&lt;br /&gt;
* Fix service worker bugs&lt;br /&gt;
*# {{Bug|1158735}} - FetchEvent.client asserting in onFetch when there&#039;s no document&lt;br /&gt;
* Fix CSP bugs&lt;br /&gt;
*# {{Bug|959388}} - CSP 1.1: Workers have their own CSP policies, should not inherit from parent document (&#039;&#039;&#039;in progress&#039;&#039;&#039;)&lt;br /&gt;
*# {{Bug|881509}} - Content Security Policy ShouldLoad and ShouldProcess do not use request principal (blocks 959388)&lt;br /&gt;
*# {{Bug|908933}} - CSP does not block cross-domain applets with object-src &#039;self&lt;br /&gt;
*# {{Bug|1030936}} - [CSP] remove fast-path for certified apps once the C++ backend is activated&lt;br /&gt;
*# Introduction to SOP, XSS and CSP - https://goo.gl/HFUysT&lt;br /&gt;
&lt;br /&gt;
* Fix same origin and cookie jars bugs&lt;br /&gt;
*# https://github.com/allstarschh/b2gSecurity/blob/master/origin.md&lt;br /&gt;
*# Intro for the origin in new security model - http://bit.ly/1AbTqvQ&lt;br /&gt;
*# See depending bug {{Bug|1163254}}&lt;br /&gt;
&lt;br /&gt;
== Emulator porting ==&lt;br /&gt;
* priority: p1&lt;br /&gt;
* Support marionette test for WiFi in emulator-kk&lt;br /&gt;
*# {{Bug|1001261}} - (emulator_wifi) B2G WiFi emulation on emulator-kk&lt;br /&gt;
* Support marionette test for NFC in emulator-kk&lt;br /&gt;
*# {{Bug|1030628}} - (b2g-nfc-emulator) [Meta] NFC emulator improvements&lt;br /&gt;
* Support automatically test for RTSP &lt;br /&gt;
*# {{Bug|998899}} - [META][RTSP] Build automated tests for RTSP feature&lt;br /&gt;
&lt;br /&gt;
== Multiscreen ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
* {{Bug|1116089}} - [Meta] Support &amp;quot;1 UA multi-screen&amp;quot; on FxOS&lt;br /&gt;
&lt;br /&gt;
== NFC/WIFI/RTSP test case ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
&lt;br /&gt;
== A talk for tw all ==&lt;br /&gt;
* End of Stage 1 presentation for Necko study group&lt;br /&gt;
&lt;br /&gt;
== RTSP client refactor ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
* {{Bug|1138262}} - [META][RTSP] Refactor RTSP component&lt;br /&gt;
&lt;br /&gt;
== WIFI related bugs ==&lt;br /&gt;
* Support EAP TLS &lt;br /&gt;
*#{{Bug|1151726}} - [Wifi] TEST-UNEXPECTED-ERROR|test_wifi_associate_WPA_EAP_TTLS.js &lt;br /&gt;
*# {{Bug|1163089}} - [Wifi] Marionette tests for Wifi WPA-EAP associate start to fail&lt;br /&gt;
*# {{Bug|1156204}} - [Settings] Add support for PKCS#12 files&lt;br /&gt;
*# {{Bug|998226}} - [wifi][Gaia] To support EAP-TLS and manage user certificate in WLAN setting&lt;br /&gt;
*# {{Bug|1163031}} - [Wifi] Provide more detail when certificate management API error&lt;br /&gt;
&lt;br /&gt;
== Have a new HAL for emulator/New Gonk layer ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
* meeting minutes - https://taiwan.etherpad.mozilla.org/1253&lt;br /&gt;
* New HAL interface task force&lt;br /&gt;
&lt;br /&gt;
= Individual Goals and high level schedule = &lt;br /&gt;
== Yoshi ==&lt;br /&gt;
# Fix same origin and cookie jars bugs&lt;br /&gt;
# NFC&lt;br /&gt;
&lt;br /&gt;
== Henry ==&lt;br /&gt;
# Landed gecko patches for Multi-Windows&lt;br /&gt;
#* Screen manager redesign for multiple display purpose.&lt;br /&gt;
#* Co-work with Shelly to land the primary gecko Bug 1138287.&lt;br /&gt;
#* Co-work with Luke to land gaia patches.&lt;br /&gt;
# Fixed WiFi bugs&lt;br /&gt;
#* Help investigate Z3C wifi issues.&lt;br /&gt;
# Review slides: https://docs.google.com/presentation/d/1kqP2iD2wyDrQO09vmRTaLduJCJPnp3U15odcmi33X4s/edit#slide=id.p&lt;br /&gt;
&lt;br /&gt;
== Dimi == &lt;br /&gt;
# Fix some service worker bugs&lt;br /&gt;
# Participate new security model architecture design discussion on server worker  &lt;br /&gt;
# Fix NFC bugs&lt;br /&gt;
&lt;br /&gt;
== Ethan == &lt;br /&gt;
# Fix same origin and cookie jars bugs&lt;br /&gt;
# Fix CSP bugs&lt;br /&gt;
# RTSP&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* https://docs.google.com/a/mozilla.com/presentation/d/1tdhu753HBLDHfB9vgQvjT9sC3pF0CgTSgdt5mqN-Pkw/edit?usp=sharing&lt;br /&gt;
# RTSP &lt;br /&gt;
# Performance improvement&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-Q2&amp;diff=1079010</id>
		<title>TPE CONNECTIVITY GROUP/2015-Q2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-Q2&amp;diff=1079010"/>
		<updated>2015-06-09T02:36:17Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= High level Goals for the team =&lt;br /&gt;
== Fix 2.2 blockers ==&lt;br /&gt;
* priority: p1&lt;br /&gt;
* https://wiki.mozilla.org/TPE_CONNECTIVITY_GROUP/2.2%2B&lt;br /&gt;
&lt;br /&gt;
== Have the performance improvement plan and finish one performance improvement ==&lt;br /&gt;
* priority: p1&lt;br /&gt;
* Performance bugs - https://etherpad.mozilla.org/B2GPerfItems&lt;br /&gt;
* Performance task force&lt;br /&gt;
*# {{Bug|1159639}} - Implement API to add performance marker&lt;br /&gt;
* Performance plan&lt;br /&gt;
*# WiFi ?&lt;br /&gt;
*# RTSP ?&lt;br /&gt;
*# NFC ?&lt;br /&gt;
&lt;br /&gt;
== Engage with new security model == &lt;br /&gt;
* priority: p1&lt;br /&gt;
* Fix service worker bugs&lt;br /&gt;
*# {{Bug|1158735}} - FetchEvent.client asserting in onFetch when there&#039;s no document&lt;br /&gt;
* Fix CSP bugs&lt;br /&gt;
*# {{Bug|959388}} - CSP 1.1: Workers have their own CSP policies, should not inherit from parent document (&#039;&#039;&#039;in progress&#039;&#039;&#039;)&lt;br /&gt;
*# {{Bug|881509}} - Content Security Policy ShouldLoad and ShouldProcess do not use request principal (blocks 959388)&lt;br /&gt;
*# {{Bug|908933}} - CSP does not block cross-domain applets with object-src &#039;self&lt;br /&gt;
*# {{Bug|1030936}} - [CSP] remove fast-path for certified apps once the C++ backend is activated&lt;br /&gt;
*# Introduction to SOP, XSS and CSP - https://goo.gl/HFUysT&lt;br /&gt;
&lt;br /&gt;
* Fix same origin and cookie jars bugs&lt;br /&gt;
*# https://github.com/allstarschh/b2gSecurity/blob/master/origin.md&lt;br /&gt;
*# Intro for the origin in new security model - http://bit.ly/1AbTqvQ&lt;br /&gt;
*# See depending bug {{Bug|1163254}}&lt;br /&gt;
&lt;br /&gt;
== Emulator porting ==&lt;br /&gt;
* priority: p1&lt;br /&gt;
* Support marionette test for WiFi in emulator-kk&lt;br /&gt;
*# {{Bug|1001261}} - (emulator_wifi) B2G WiFi emulation on emulator-kk&lt;br /&gt;
* Support marionette test for NFC in emulator-kk&lt;br /&gt;
*# {{Bug|1030628}} - (b2g-nfc-emulator) [Meta] NFC emulator improvements&lt;br /&gt;
* Support automatically test for RTSP &lt;br /&gt;
*# {{Bug|998899}} - [META][RTSP] Build automated tests for RTSP feature&lt;br /&gt;
&lt;br /&gt;
== Multiscreen ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
* {{Bug|1116089}} - [Meta] Support &amp;quot;1 UA multi-screen&amp;quot; on FxOS&lt;br /&gt;
&lt;br /&gt;
== NFC/WIFI/RTSP test case ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
&lt;br /&gt;
== A talk for tw all ==&lt;br /&gt;
* End of Stage 1 presentation for Necko study group&lt;br /&gt;
&lt;br /&gt;
== RTSP client refactor ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
* {{Bug|1138262}} - [META][RTSP] Refactor RTSP component&lt;br /&gt;
&lt;br /&gt;
== WIFI related bugs ==&lt;br /&gt;
* Support EAP TLS &lt;br /&gt;
*#{{Bug|1151726}} - [Wifi] TEST-UNEXPECTED-ERROR|test_wifi_associate_WPA_EAP_TTLS.js &lt;br /&gt;
*# {{Bug|1163089}} - [Wifi] Marionette tests for Wifi WPA-EAP associate start to fail&lt;br /&gt;
*# {{Bug|1156204}} - [Settings] Add support for PKCS#12 files&lt;br /&gt;
*# {{Bug|998226}} - [wifi][Gaia] To support EAP-TLS and manage user certificate in WLAN setting&lt;br /&gt;
*# {{Bug|1163031}} - [Wifi] Provide more detail when certificate management API error&lt;br /&gt;
&lt;br /&gt;
== Have a new HAL for emulator/New Gonk layer ==&lt;br /&gt;
* priority: p2&lt;br /&gt;
* meeting minutes - https://taiwan.etherpad.mozilla.org/1253&lt;br /&gt;
* New HAL interface task force&lt;br /&gt;
&lt;br /&gt;
= Individual Goals and high level schedule = &lt;br /&gt;
== Yoshi ==&lt;br /&gt;
# Fix same origin and cookie jars bugs&lt;br /&gt;
# NFC&lt;br /&gt;
&lt;br /&gt;
== Henry ==&lt;br /&gt;
# Landed gecko patches for Multi-Windows&lt;br /&gt;
#* Screen manager redesign for multiple display purpose.&lt;br /&gt;
#* Co-work with Shelly to land the primary gecko Bug 1138287.&lt;br /&gt;
#* Co-work with Luke to land gaia patches.&lt;br /&gt;
# Fixed WiFi bugs&lt;br /&gt;
#* Help investigate Z3C wifi issues.&lt;br /&gt;
&lt;br /&gt;
== Dimi == &lt;br /&gt;
# Fix some service worker bugs&lt;br /&gt;
# Participate new security model architecture design discussion on server worker  &lt;br /&gt;
# Fix NFC bugs&lt;br /&gt;
&lt;br /&gt;
== Ethan == &lt;br /&gt;
# Fix same origin and cookie jars bugs&lt;br /&gt;
# Fix CSP bugs&lt;br /&gt;
# RTSP&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
# RTSP &lt;br /&gt;
# Performance improvement&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-26&amp;diff=1076431</id>
		<title>TPE CONNECTIVITY GROUP/2015-05-26</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-26&amp;diff=1076431"/>
		<updated>2015-05-26T06:56:41Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1163556}} - [aries-l] NFC does not work in aries-l. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1165774}} - [Flame L] NFC not working. &#039;&#039;&#039;mozilla side is ok&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1162836}} - Fix NFC marionette testcase fail. &#039;&#039;&#039;land&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1158735}} - FetchEvent.client asserting in onFetch when there&#039;s no document. &#039;&#039;&#039;report investigating result&#039;&#039;&#039;&lt;br /&gt;
# Prepare service worker slide&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1136512}} - Sony Z3C - nfcd should build with Z3 compatiable libnfc-nci library&lt;br /&gt;
# {{bug|1055959}} - [NFC] testNfcBadSessionIdError testcase fail. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
*# Attend meeting @5/21: Origins and cookie jar transition to Yoshi&lt;br /&gt;
*#* Also discussed IPC security with Paul Theriault&lt;br /&gt;
*# {{Bug|1030936}} - [CSP] remove fast-path for certified apps once the C++ backend is activated (&#039;&#039;&#039;in progress&#039;&#039;&#039;)&lt;br /&gt;
*#* Path is ready (simply code deletion) and review+. Need to resolve test failure in Gu test.&lt;br /&gt;
*#* Learning Gaia unit test (Gu test).&lt;br /&gt;
*# {{Bug|908933}} - CSP does not block cross-domain applets with object-src &#039;self (&#039;&#039;&#039;in progress&#039;&#039;&#039;)&lt;br /&gt;
*# Prepare sharing talk: SOP, XSS and CSP&lt;br /&gt;
*# Arrange a brown bag sharing from Necko study group&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
*# Review: {{Bug|849642}} - Intermittent test_networkstats_enabled_perm.html | navigator.mozNetworkStats should be a nsIDOMMozNetworkStatsManager object (&#039;&#039;&#039;landed&#039;&#039;&#039;)&lt;br /&gt;
*# Review: {{Bug|958689}} - Intermittent test_networkstats_alarms.html | uncaught exception - TypeError: navigator.mozNetworkStats is null | test_networkstats_enabled_no_perm.html | Accessing navigator.mozNetworkStats.getAvailableNetworks should have thrown! | Got an exception (&#039;&#039;&#039;landed&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
*#* {{Bug|959388}} - CSP 1.1: Workers have their own CSP policies, should not inherit from parent document&lt;br /&gt;
*#* {{Bug|881509}} - Content Security Policy ShouldLoad and ShouldProcess do not use request principal (blocks 959388)&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1160913}} - [Emulator][Wifi] Unable to connect to secure Wifi AP on emulator&lt;br /&gt;
# {{Bug|1165844}} - Add stopDhcp function to nsINetworkService&lt;br /&gt;
#* landed.&lt;br /&gt;
# {{Bug|1161874}} - Add an entry point to trigger wifi display on B2G&lt;br /&gt;
#* r+&#039;d for AudioManager.cpp part&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
# {{Bug|1138287}} - Refactor GonkDisplay/nsWindow/hwc to support multiple displays&lt;br /&gt;
#* Merging with mc complete. Testing&lt;br /&gt;
#* Dedicated to redesign of nsScreenGonk/nsScreenManagerGonk/nsWindow&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1166658}} - [Emulator][meta] wifi marionette test case fixup&lt;br /&gt;
#* {{Bug|1166660}} - [Emulator][KK] test_wifi_auto_connect.js fails on KK emulator&lt;br /&gt;
#* {{Bug|1167099}} - [Emulator][KK] Wifi tethering test case failure&lt;br /&gt;
#* {{Bug|1168285}} - [Emulator][KK] When re-enable wifi, the remembered network cannot be automatically connected.&lt;br /&gt;
#* {{Bug|1160913}} - [Emulator][Wifi] Unable to connect to secure Wifi AP on emulator&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
（Took 3 days off)&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1159639}} - Implement API to add performance marker (WIP)&lt;br /&gt;
*** Have a patch now, can be recognized by Raptor.&lt;br /&gt;
*** :baku implemented a PerformanceBase. I should be able to inherit that and reduced duplicated code.&lt;br /&gt;
** Preparing for a sharing in DOM study group about DocShell&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1142383}} - [RTSP] More RTSP testcases (&#039;&#039;&#039;emulator black screen, try to use emulator-kk or x86 now&#039;&#039;&#039;)&lt;br /&gt;
** Refactor planning&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1165841}} - [NFC] Unable to share image from gallery, if this image was once previewed through notification. &#039;&#039;&#039;2.2+, landed on master already, waiting for Bug 1166595 landed on v2.2&#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1165787}} - Use origin in RequestSyncService.jsm. &#039;&#039;&#039;ongoing&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Howie/Aaron (EPM for Networking) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-19&amp;diff=1075211</id>
		<title>TPE CONNECTIVITY GROUP/2015-05-19</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-19&amp;diff=1075211"/>
		<updated>2015-05-19T06:43:59Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
* 6/12 電影+老乾杯+三重 e7 club - http://www.e7club.com.tw/&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1163556}} - [aries-l] NFC does not work in aries-l. &#039;&#039;&#039;co-work with selin&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1165774}} - [Flame L] NFC not working. &#039;&#039;&#039;co-work with viral&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1162836}} - Fix NFC marionette testcase fail. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1163952}} - nfcd should notify techlost if there is a tag or p2p connection and then nfc is turned off. &#039;&#039;&#039;won&#039;t fix&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1158735}} - FetchEvent.client asserting in onFetch when there&#039;s no document. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1136512}} - Sony Z3C - nfcd should build with Z3 compatiable libnfc-nci library&lt;br /&gt;
# {{bug|1055959}} - [NFC] testNfcBadSessionIdError testcase fail. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
*# Attend CSP bug triage @ Fri May 15, 2015&lt;br /&gt;
*#* CSP (bug 493857) has 50 open bugs (https://bugzilla.mozilla.org/showdependencytree.cgi?id=493857&amp;amp;hide_resolved=1)&lt;br /&gt;
*# Take CSP bugs&lt;br /&gt;
*#* {{Bug|959388}} - CSP 1.1: Workers have their own CSP policies, should not inherit from parent document (&#039;&#039;&#039;in progress&#039;&#039;&#039;)&lt;br /&gt;
*#* {{Bug|881509}} - Content Security Policy ShouldLoad and ShouldProcess do not use request principal (blocks 959388)&lt;br /&gt;
*#* {{Bug|908933}} - CSP does not block cross-domain applets with object-src &#039;self&lt;br /&gt;
*#* {{Bug|1030936}} - [CSP] remove fast-path for certified apps once the C++ backend is activated&lt;br /&gt;
*# Trace CSP implementation&lt;br /&gt;
*#* nsDocument::InitCSP()&lt;br /&gt;
*#* nsCSPService and its ShoudLoad()&lt;br /&gt;
*#* CSPContext and its ShouldLoad()&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
*# Review: {{Bug|849642}} - Intermittent test_networkstats_enabled_perm.html | navigator.mozNetworkStats should be a nsIDOMMozNetworkStatsManager object (&#039;&#039;&#039;r+&#039;&#039;&#039;)&lt;br /&gt;
*# Review: {{Bug|958689}} - Intermittent test_networkstats_alarms.html | uncaught exception - TypeError: navigator.mozNetworkStats is null | test_networkstats_enabled_no_perm.html | Accessing navigator.mozNetworkStats.getAvailableNetworks should have thrown! | Got an exception (&#039;&#039;&#039;r+&#039;&#039;&#039;)&lt;br /&gt;
*# Both bugs have the same root cause and solution: Replace SpecialPowers.addPermission() by pushPermissions().&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1160913}} - [Emulator][Wifi] Unable to connect to secure Wifi AP on emulator&lt;br /&gt;
# {{Bug|1165776}} - Support &amp;quot;run in new thread&amp;quot; for dhcpRequest in NetworkWorker&lt;br /&gt;
#* r+&#039;d and flagged checkin-needed&lt;br /&gt;
# {{Bug|1165844}} - Add stopDhcp function to nsINetworkService&lt;br /&gt;
#* under review&lt;br /&gt;
# {{Bug|1161874}} - Add an entry point to trigger wifi display on B2G&lt;br /&gt;
#* r+&#039;d for AudioManager.cpp part&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
# {{Bug|1138287}} - Refactor GonkDisplay/nsWindow/hwc to support multiple displays&lt;br /&gt;
#* Merging with mc complete. Testing&lt;br /&gt;
# {{Bug|1138288}} - Extend nsScreenManagerGonk to support multiple screens&lt;br /&gt;
#* landed&lt;br /&gt;
#* Dedicated to redesign of nsScreenGonk/nsScreenManagerGonk/nsWindow&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** Filed bugs depending on {{bug|1163254}}&lt;br /&gt;
** {{Bug|1165841}} - [NFC] Unable to share image from gallery, if this image was once previewed through notification. &#039;&#039;&#039;2.2+, ongoing&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
** Intro for the origin in new security model. http://bit.ly/1AbTqvQ&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Aaron (EPM for Networking) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-12&amp;diff=1074062</id>
		<title>TPE CONNECTIVITY GROUP/2015-05-12</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-12&amp;diff=1074062"/>
		<updated>2015-05-12T06:59:35Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
* Q2 Team building - https://connectivity.etherpad.mozilla.org/15&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|964697}} - (emulator-NFC) B2G Emulator: NFC support in KK. &#039;&#039;&#039;land&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1055959}} - [NFC] testNfcBadSessionIdError testcase fail. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1162836}} - Fix NFC marionette testcase fail. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
# Help viral check flame-l NFC porting&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1158735}} - FetchEvent.client asserting in onFetch when there&#039;s no document&lt;br /&gt;
# {{bug|1136512}} - Sony Z3C - nfcd should build with Z3 compatiable libnfc-nci library&lt;br /&gt;
# {{bug|1163556}} - [aries-l] NFC does not work in aries-l&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
*# Contact with security team&lt;br /&gt;
*#* Christoph Kerschbaumer will be my mentor in CSP&lt;br /&gt;
*#* CSP bug triage @ Fri May 15, 2015 1:45am – 3:15am (CST)&lt;br /&gt;
*# {{Bug|959388}} - CSP 1.1: Workers may have their own CSP policies&lt;br /&gt;
*#* Depends on {{Bug|881509}} - Content Security Policy ShouldLoad and ShouldProcess do not use request principal&lt;br /&gt;
*#* Study Web Worker: a means for web content to run scripts in background threads&lt;br /&gt;
*# Trace CSP code: nsDocument::InitCSP()&lt;br /&gt;
*# Attend DOM study group: Focus management&lt;br /&gt;
*#* nsFocusManager is in charge of window and content focus management&lt;br /&gt;
*#* &#039;&#039;&#039;Cross-window shifting&#039;&#039;&#039; applies same-origin policy&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1154690}} - [Shinano][Aries] Sometimes it&#039;s hard to connect to some WiFi network&lt;br /&gt;
# {{Bug|1157657}} - [Wifi Direct] Periodically do p2p scan if in inactive state&lt;br /&gt;
# {{Bug|1160913}} - [Emulator][Wifi] Unable to connect to secure Wifi AP on emulator&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
# {{Bug|1116089}} - [Meta] Support &amp;quot;1 UA multi-screen&amp;quot; on FxOS&lt;br /&gt;
#* https://wiki.mozilla.org/Firefox_OS/1UA_Multi-Screen&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1138287}} - Refactor GonkDisplay/nsWindow/hwc to support multiple displays&lt;br /&gt;
# {{Bug|1138288}} - Extend nsScreenManagerGonk to support multiple screens&lt;br /&gt;
#* Dedicated to redesign of nsScreenGonk/nsScreenManagerGonk/nsWindow&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1159639}} - Implement API to add performance marker (WIP)&lt;br /&gt;
*** Eli replied, we could use absolute timestamp for now.&lt;br /&gt;
*** Took some time to get familliar with XPCOM to implement a service from scratch.&lt;br /&gt;
** Studying DocShell&lt;br /&gt;
*** http://mikeconley.ca/blog/2014/07/07/docshell-in-a-nutshell-part-1-original-intents/&lt;br /&gt;
*** http://mikeconley.ca/blog/2014/08/10/docshell-in-a-nutshell-part-2-the-wonder-years-1999-2004/&lt;br /&gt;
*** http://mikeconley.ca/blog/2015/01/03/docshell-in-a-nutshell-part-3-maturation-2005-2010/&lt;br /&gt;
*** http://www-archive.mozilla.org/projects/embedding/docshell.html&lt;br /&gt;
*** https://developer.mozilla.org/en-US/docs/Document_Loading_-_From_Load_Start_to_Finding_a_Handler&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1142383}} - [RTSP] More RTSP testcases (&#039;&#039;&#039;emulator black screen, try to use emulator-kk or x86 now&#039;&#039;&#039;)&lt;br /&gt;
** Refactor planning&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** List the changes needed in https://github.com/allstarschh/b2gSecurity/blob/master/origin.md&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1119152}} - [SecureElement] Implement SEReader.isSEPresent&lt;br /&gt;
** {{Bug|884594}} - Support NFC Access Control for Secure Element Access&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Howie/Aaron (EPM for Networking) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-05&amp;diff=1072187</id>
		<title>TPE CONNECTIVITY GROUP/2015-05-05</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-05-05&amp;diff=1072187"/>
		<updated>2015-05-05T08:21:02Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1160671}} - [Flame] Unable to turn on NFC. &#039;&#039;&#039;root cause found&#039;&#039;&#039;&lt;br /&gt;
# {{bug|964697}} - (emulator-NFC) B2G Emulator: NFC support in KK. &#039;&#039;&#039;working&#039;&#039;&#039;&lt;br /&gt;
# Study service worker&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1136512}} - [Lightsaber] Support NFC . &#039;&#039;&#039;checking if sony can support libnfc-nci github&#039;&#039;&#039;&lt;br /&gt;
# {{bug|964697}} - (emulator-NFC) B2G Emulator: NFC support in KK. &#039;&#039;&#039;on-going&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
*# Study JavaScript security&lt;br /&gt;
*#* Review &#039;&#039;&#039;Same-Origin Policy (SOP)&#039;&#039;&#039; to clarify how SOP uses &#039;&#039;&#039;origin&#039;&#039;&#039;&lt;br /&gt;
*#* Relaxing SOP&lt;br /&gt;
*#*# Document.domain&lt;br /&gt;
*#*# Cross-Origin Resource Sharing (CORS)&lt;br /&gt;
*#*# Cross-document messaging: postMessage API&lt;br /&gt;
*# Study &#039;&#039;&#039;Cross-Site Scripting (XSS)&#039;&#039;&#039; attack&lt;br /&gt;
*#* Reflected XSS&lt;br /&gt;
*#* Persistent (Stored) XSS&lt;br /&gt;
*# Study &#039;&#039;&#039;Content Security Policy (CSP)&#039;&#039;&#039;&lt;br /&gt;
*#* CSP directive&lt;br /&gt;
*#* Script execution: script-src&lt;br /&gt;
*#** Plug-in content: object-src&lt;br /&gt;
*#** Stylesheets and fonts: style-src and font-src&lt;br /&gt;
*#** Passive multimedia: img-src and media-src&lt;br /&gt;
*#** Subframes: frame-src&lt;br /&gt;
*#** Default policy: default-src&lt;br /&gt;
*#* CSP key words&lt;br /&gt;
*#** none&lt;br /&gt;
*#** self&lt;br /&gt;
*#** data:&lt;br /&gt;
*#** unsafe-inline&lt;br /&gt;
*#** unsafe-eval&lt;br /&gt;
*# Start to trace CSP implementation in Firefox&lt;br /&gt;
*#* nsDocument::initCSP()&lt;br /&gt;
*#* nsCSPParser - which separates the CSP header into tokens and parses the CSP&lt;br /&gt;
*#* nsCSPUtils which holds the internal representation of the CSP&lt;br /&gt;
*#* nsCSPContext which is the interface through which CSP gets called&lt;br /&gt;
*# Start to play with CSP mochitest in Gecko&lt;br /&gt;
*#* dom/base/test/csp/test_csp_path_matching.html&lt;br /&gt;
*# Attend meeting on 5/5: New security model update hosted by Jean Gong&lt;br /&gt;
*# Coordinate Necko study group sessions&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
*# Help Jonathan on {{Bug|1158661}} - [FFOS2.0][Woodduck][HOMO]RSTP video in 720 H-264 Plays abnormal which can hear the audio only without the video shows&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1154690}} - [Shinano][Aries] Sometimes it&#039;s hard to connect to some WiFi network&lt;br /&gt;
# {{Bug|1157657}} - [Wifi Direct] Periodically do p2p scan if in inactive state&lt;br /&gt;
# {{Bug|1160913}} - [Emulator][Wifi] Unable to connect to secure Wifi AP on emulator&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
# {{Bug|1116089}} - [Meta] Support &amp;quot;1 UA multi-screen&amp;quot; on FxOS&lt;br /&gt;
#* https://wiki.mozilla.org/Firefox_OS/1UA_Multi-Screen&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1138287}} - Refactor GonkDisplay/nsWindow/hwc to support multiple displays&lt;br /&gt;
# {{Bug|1138288}} - Extend nsScreenManagerGonk to support multiple screens&lt;br /&gt;
#* Dedicated to redesign of nsScreenGonk/nsScreenManagerGonk/nsWindow&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1158661}} - [FFOS2.0][Woodduck][HOMO]RSTP video in 720 H-264 Plays abnormal which can hear the audio only without the video shows.&lt;br /&gt;
*** It can play well on my flame, but CN&#039;s QA still has problems. I made a few patches, and finally we convinced our partner that the server is malfunctioning.&lt;br /&gt;
** Studying and planning about gecko performance marker interface.&lt;br /&gt;
*** I thought we could reuse the C++ implementation of WebIDL performance.mark(), but it seems that we don&#039;t necessarily have the window object. I will try to get the precise time from some API, and generate output of similar format so that Raptor can parse them.&lt;br /&gt;
** Studying DocShell&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1142383}} - [RTSP] More RTSP testcases (&#039;&#039;&#039;emulator black screen, try to use emulator-kk or x86 now&#039;&#039;&#039;)&lt;br /&gt;
** Refactor planning&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** Discussed with Jonas with his cookie proposal, still need to confirm with him. http://bit.ly/1zf8VlV&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1119152}} - [SecureElement] Implement SEReader.isSEPresent&lt;br /&gt;
** {{Bug|884594}} - Support NFC Access Control for Secure Element Access&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Aaron (EPM for Networking) ==&lt;br /&gt;
* 2.2 Status Update&lt;br /&gt;
** Code Complete (CC) - June 8th&lt;br /&gt;
*** NEXUS-5-L 5.1 PVT build MTBF 13.77 hrs https://bugzil.la/1155490&lt;br /&gt;
*** FLAME-KK 4.4 PVT build MTBF 34.42 hrs. &lt;br /&gt;
** CSRR - May 8th&lt;br /&gt;
*** CAF-v2.2-metabug http://mzl.la/1ELeOXg&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-28&amp;diff=1070672</id>
		<title>TPE CONNECTIVITY GROUP/2015-04-28</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-28&amp;diff=1070672"/>
		<updated>2015-04-28T06:37:03Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
* CAF CS code freeze: May 8th&lt;br /&gt;
* Bugs priority: 2.2 &amp;gt; spark &amp;gt; anything else&lt;br /&gt;
&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
*# {{Bug|1158661}} - [FFOS2.0][Woodduck][HOMO]RSTP video in 720 H-264 Plays abnormal which can hear the audio only without the video shows&lt;br /&gt;
*## Follow-up of {{Bug|1155544}} - [FFOS2.0][Woodduck][HOMO] Device reset when user try to see a RTSP video in H-264&lt;br /&gt;
*# Study Content Security Policy&lt;br /&gt;
*# Interview x 2&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
*# Review: {{Bug|1151760}} - [RTSP] Playback jumps to the end-of-stream after playing 34 seconds&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|992772}} - [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.&lt;br /&gt;
#* checkin-needed&lt;br /&gt;
# {{Bug|1154690}} - [Shinano][Aries] Sometimes it&#039;s hard to connect to some WiFi network&lt;br /&gt;
# {{Bug|1157657}} - [Wifi Direct] Periodically do p2p scan if in inactive state&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
# {{Bug|1116089}} - [Meta] Support &amp;quot;1 UA multi-screen&amp;quot; on FxOS&lt;br /&gt;
#* https://wiki.mozilla.org/Firefox_OS/1UA_Multi-Screen&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1138287}} - Refactor GonkDisplay/nsWindow/hwc to support multiple displays&lt;br /&gt;
#* Dedicated to redesign of nsScreenGonk/nsScreenManagerGonk/nsWindow&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1130962}} - Remove http proxy pref from NetworkService&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** Study suborigin proposal from Google, and send it to dev-b2g. https://groups.google.com/forum/#!topic/mozilla.dev.b2g/Rm9Yxg4r3W8&lt;br /&gt;
** Check the issues from cookie jars from Jonas&#039; proposal.&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Aaron (EPM for Networking) ==&lt;br /&gt;
* 2.2 Status&lt;br /&gt;
** QA report: https://wiki.mozilla.org/B2G/QA/2.2/2015-04-27Status &lt;br /&gt;
** MTBF&lt;br /&gt;
*** NEXUS-5-L 5.1 PVT build MTBF 38.5 hrs &amp;amp; counting.&lt;br /&gt;
***FLAME-KK 4.4 PVT build MTBF 34.42 hrs. &lt;br /&gt;
** CAF CS code freeze: May 8th (CSRR)&lt;br /&gt;
*** Must meet stability numbers MTBF &amp;gt; 200, CPTH &amp;lt; 3&lt;br /&gt;
--&amp;gt; CPTH : the number of unique crashes per thousand hours.  So less than 3 unique crashes, and each of those crashing less than once per 200 hours.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-28&amp;diff=1070671</id>
		<title>TPE CONNECTIVITY GROUP/2015-04-28</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-28&amp;diff=1070671"/>
		<updated>2015-04-28T06:34:52Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
* CAF CS code freeze: May 8th&lt;br /&gt;
* Bugs priority: 2.2 &amp;gt; spark &amp;gt; anything else&lt;br /&gt;
&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
*# {{Bug|1158661}} - [FFOS2.0][Woodduck][HOMO]RSTP video in 720 H-264 Plays abnormal which can hear the audio only without the video shows&lt;br /&gt;
*## Follow-up of {{Bug|1155544}} - [FFOS2.0][Woodduck][HOMO] Device reset when user try to see a RTSP video in H-264&lt;br /&gt;
*# Study Content Security Policy&lt;br /&gt;
*# Interview x 2&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
*# Review: {{Bug|1151760}} - [RTSP] Playback jumps to the end-of-stream after playing 34 seconds&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|992772}} - [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.&lt;br /&gt;
#* checkin-needed&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1154690}} - [Shinano][Aries] Sometimes it&#039;s hard to connect to some WiFi network&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
# {{Bug|1116089}} - [Meta] Support &amp;quot;1 UA multi-screen&amp;quot; on FxOS&lt;br /&gt;
#* https://wiki.mozilla.org/Firefox_OS/1UA_Multi-Screen&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1138287}} - Refactor GonkDisplay/nsWindow/hwc to support multiple displays&lt;br /&gt;
#* Dedicated to redesign of nsScreenGonk/nsScreenManagerGonk/nsWindow&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1130962}} - Remove http proxy pref from NetworkService&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** Study suborigin proposal from Google, and send it to dev-b2g. https://groups.google.com/forum/#!topic/mozilla.dev.b2g/Rm9Yxg4r3W8&lt;br /&gt;
** Check the issues from cookie jars from Jonas&#039; proposal.&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Aaron (EPM for Networking) ==&lt;br /&gt;
* 2.2 Status&lt;br /&gt;
** QA report: https://wiki.mozilla.org/B2G/QA/2.2/2015-04-27Status &lt;br /&gt;
** MTBF&lt;br /&gt;
*** NEXUS-5-L 5.1 PVT build MTBF 38.5 hrs &amp;amp; counting.&lt;br /&gt;
***FLAME-KK 4.4 PVT build MTBF 34.42 hrs. &lt;br /&gt;
** CAF CS code freeze: May 8th (CSRR)&lt;br /&gt;
*** Must meet stability numbers MTBF &amp;gt; 200, CPTH &amp;lt; 3&lt;br /&gt;
--&amp;gt; CPTH : the number of unique crashes per thousand hours.  So less than 3 unique crashes, and each of those crashing less than once per 200 hours.&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-21&amp;diff=1069370</id>
		<title>TPE CONNECTIVITY GROUP/2015-04-21</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-21&amp;diff=1069370"/>
		<updated>2015-04-21T01:36:09Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|992772}} - [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.&lt;br /&gt;
#* checkin-needed&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1154690}} - [Shinano][Aries] Sometimes it&#039;s hard to connect to some WiFi network&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
# {{Bug|1116089}} - [Meta] Support &amp;quot;1 UA multi-screen&amp;quot; on FxOS&lt;br /&gt;
#* https://wiki.mozilla.org/Firefox_OS/1UA_Multi-Screen&lt;br /&gt;
&lt;br /&gt;
# {{Bug|1138287}} - Refactor GonkDisplay/nsWindow/hwc to support multiple displays&lt;br /&gt;
#* Dedicated to redesign of nsScreenGonk/nsScreenManagerGonk/nsWindow&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1130962}} - Remove http proxy pref from NetworkService&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Aaron (EPM for Networking) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-14&amp;diff=1068018</id>
		<title>TPE CONNECTIVITY GROUP/2015-04-14</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-14&amp;diff=1068018"/>
		<updated>2015-04-14T03:23:03Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|992772}} - [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.&lt;br /&gt;
#* r+&#039;d&lt;br /&gt;
# {{Bug|1053650}} - [B2G][MMS] Host Resolving with specified DNS in XMLHttpRequest&lt;br /&gt;
#* r+&#039;d&lt;br /&gt;
# {{Bug|1130962}} - Remove http proxy pref from NetworkService&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1118272}} - Alarms API does not fire at the right time with mozPower.cpuSleepAllowed on&lt;br /&gt;
#* Landed&lt;br /&gt;
# {{Bug|1146248}} - Avoid concurrent dhcp_do_request execution&lt;br /&gt;
#* Landed&lt;br /&gt;
# {{Bug|1146208}} - &amp;quot;Error: wifiListStart mark not found&amp;quot; while opening settings app&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Aaron (EPM for Networking) ==&lt;br /&gt;
&lt;br /&gt;
* New Security Model&lt;br /&gt;
** https://wiki.mozilla.org/FirefoxOS/New_security_model&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-07&amp;diff=1066653</id>
		<title>TPE CONNECTIVITY GROUP/2015-04-07</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-04-07&amp;diff=1066653"/>
		<updated>2015-04-07T05:52:49Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
* Sensitive API - https://wiki.mozilla.org/FirefoxOS/New_security_model&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1144561}} - Create branch for platform_external_libnfc-nci. &#039;&#039;&#039;testing&#039;&#039;&#039;&lt;br /&gt;
# Prepare Necko Study Group TLS presentation slide&lt;br /&gt;
# Study New security model&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1069201}} - [NFC] Support HCE in nfcd. &#039;&#039;&#039;on-going&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1146251}} - [Midori 2.0][Crash][Video streaming] MS crashed when play RTSP video&lt;br /&gt;
#* Uplift to 2.0 to avoid crash: {{bug|1088538}} - [RTSP] System crash in the end of playback due to NULL accessUnit&lt;br /&gt;
#* However, the long duration clip cannot be played normally, it would jump to end-of-stream&lt;br /&gt;
# Multi-screen project&lt;br /&gt;
#* Support the demonstration brown bag&lt;br /&gt;
#* Pick up the architecture from Henry&lt;br /&gt;
# FxOS new security model&lt;br /&gt;
#* Collect and digest information&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# Documentation: Design draft of Necko idle state (ongoing)&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|992772}} - [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.&lt;br /&gt;
#* r+&#039;d&lt;br /&gt;
# {{Bug|1053650}} - [B2G][MMS] Host Resolving with specified DNS in XMLHttpRequest&lt;br /&gt;
#* r+&#039;d&lt;br /&gt;
# {{Bug|1130962}} - Remove http proxy pref from NetworkService&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1118272}} - Alarms API does not fire at the right time with mozPower.cpuSleepAllowed on&lt;br /&gt;
#* Landed&lt;br /&gt;
# {{Bug|1146248}} - Avoid concurrent dhcp_do_request execution&lt;br /&gt;
#* Landed&lt;br /&gt;
# {{Bug|1146208}} - &amp;quot;Error: wifiListStart mark not found&amp;quot; while opening settings app&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1149431}} - Add nfc as privileged permission in app-validator. &#039;&#039;&#039;landed, expected to work on 4/8 CST&#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1150372}} - Add nfc feature checkbox in App Minimum Requirements. &lt;br /&gt;
** {{Bug|1146270}} - Move HCI Event Origin into NfcOptions.webidl. &#039;&#039;&#039;r+&#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1127735}} - Update TechDiscoveredNotication. &#039;&#039;&#039;r+&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Howie/Aaron (EPM for Networking) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-03-24&amp;diff=1063944</id>
		<title>TPE CONNECTIVITY GROUP/2015-03-24</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-03-24&amp;diff=1063944"/>
		<updated>2015-03-24T06:28:22Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
* Q1 performance review presentation &lt;br /&gt;
* NFC Tokyo workweek sharing - https://github.com/changyihsin/nfcworkshopkddi/blob/master/note.md&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{bug|1143528}} - [Flame][NFC] Can&#039;t enable/disable NFC in Settings. &#039;&#039;&#039;thomas fixed&#039;&#039;&#039; &lt;br /&gt;
# {{bug|1136515}} - [Flame][NFC] libnfc-pn547.so is not built. &#039;&#039;&#039;land&#039;&#039;&#039; &lt;br /&gt;
# {{bug|1144561}} - Create branch for platform_external_libnfc-nci. &#039;&#039;&#039;ni?&#039;&#039;&#039;&lt;br /&gt;
# {{bug|1069201}} - [NFC] Support HCE in nfcd. &#039;&#039;&#039;on-going&#039;&#039;&#039;&lt;br /&gt;
# Prepare HCE presentation&lt;br /&gt;
# Study Cryptography and TLS&lt;br /&gt;
&lt;br /&gt;
nfcd refactor:&lt;br /&gt;
# {{bug|1057918}} - [NFC] Support enable/disable debug message at runtime. &#039;&#039;&#039;r?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
# {{bug|884594}} - Support NFC Access Control for Secure Element Access&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan (Last 2 Weeks) ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1117486}} - [FFOS2.0][Woodduck] System crash by replaying the same RTSP clip several times (&#039;&#039;&#039;resolved fixed&#039;&#039;&#039;)&lt;br /&gt;
#* Uplift to 2.0, 2.1, 2.2, 2.1S and 2.0M&lt;br /&gt;
# {{Bug|1059144}} - [MADAI][Multimedia] System crash when RTSP client connects to a non-RTSP-server port&lt;br /&gt;
#* Uplift to 2.0&lt;br /&gt;
# {{Bug|1133461}} - [RTSP] Remove the extra PLAY request for seek operation (&#039;&#039;&#039;resolved fixed&#039;&#039;&#039;)&lt;br /&gt;
#* Follow-up: {{Bug|1141412}} - [RTSP] Tweak EnsureActive to make it more suitable for RTSP streaming&lt;br /&gt;
# {{Bug|1139811}} - [Nexus 5][Cost Control]The device can&#039;t pop up the warn box when the data usage exceeds limit value&lt;br /&gt;
#* Cannot reproduce, extreme corner case&lt;br /&gt;
# DOM group: Review all sessions/slides of phase 1 and provide categorization idea&lt;br /&gt;
# Necko group&lt;br /&gt;
#* Coordinate and work out Part-I session topics (https://taiwan.etherpad.mozilla.org/NeckoStudyGroup)&lt;br /&gt;
#* Rehearsal for &#039;&#039;Overview of HTTP&#039;&#039; (Good job, Jonathan! Thanks to Henry and Jessica! \^o^/)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
# Review: {{Bug|1144513}} - [gonk-lmr1] Adapt RTSPSource.cpp&lt;br /&gt;
# Provide suggestion: {{Bug|1142383}} - [RTSP] More RTSP testcases&lt;br /&gt;
# Feedback to remove blocker flag&lt;br /&gt;
#* {{Bug|1122400}} - [Flame][RTSP]RTSP error appears in browser app, and then there is an unwanted alert page if we play video in video app&lt;br /&gt;
# Feedback to triage&lt;br /&gt;
#* {{Bug|1083680}} - [Usage][Cost Control] (Follow up to fix root cause) Noticeable difference between by application breakdown totals and the total displayed in chart and widget&lt;br /&gt;
#* {{Bug|1102812}} - [NetworkStats] Improve the accuracy of network statistics&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
# Documentation: Design draft of Necko idle state&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|992772}} - [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.&lt;br /&gt;
#* r+&#039;d&lt;br /&gt;
# {{Bug|1053650}} - [B2G][MMS] Host Resolving with specified DNS in XMLHttpRequest&lt;br /&gt;
#* r+&#039;d&lt;br /&gt;
# {{Bug|1130962}} - Remove http proxy pref from NetworkService&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1118272}} - Alarms API does not fire at the right time with mozPower.cpuSleepAllowed on&lt;br /&gt;
#* Found the root cause and attached a patch for review.&lt;br /&gt;
# {{Bug|1146248}} - Avoid concurrent dhcp_do_request execution&lt;br /&gt;
# {{Bug|1146208}} - &amp;quot;Error: wifiListStart mark not found&amp;quot; while opening settings app&lt;br /&gt;
# {{Bug|1141391}} - [Wifi Direct] Create Wifi Direct testing app&lt;br /&gt;
&lt;br /&gt;
# Multi-window&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|1146270}} - Move HCI Event Origin into NfcOptions.webidl. &#039;&#039;&#039;ongoing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
** {{Bug|884594}} - Support NFC Access Control for Secure Element Access&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Howie (EPM for Networking) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-03-17&amp;diff=1062317</id>
		<title>TPE CONNECTIVITY GROUP/2015-03-17</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=TPE_CONNECTIVITY_GROUP/2015-03-17&amp;diff=1062317"/>
		<updated>2015-03-17T01:38:09Z</updated>

		<summary type="html">&lt;p&gt;Hchang: /* Henry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion Topics =&lt;br /&gt;
== Dimi == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Ethan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Henry == &lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|992772}} - [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.&lt;br /&gt;
#* r+&#039;d&lt;br /&gt;
# {{Bug|1053650}} - [B2G][MMS] Host Resolving with specified DNS in XMLHttpRequest&lt;br /&gt;
#* Under review&lt;br /&gt;
# {{Bug|1130962}} - Remove http proxy pref from NetworkService&lt;br /&gt;
# {{Bug|1131632}} - [Wifi Direct][meta] Wifi Direct V3 refinement&lt;br /&gt;
# {{Bug|1118272}} - Alarms API does not fire at the right time with mozPower.cpuSleepAllowed on&lt;br /&gt;
#* Found the root cause and attached a patch for review.&lt;br /&gt;
# Multi-window&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
# {{Bug|1140261 }} - gecko/ipc/keystore/KeyStore.cpp:142:27: error: comparison of unsigned expression &amp;gt;= 0 is always true [-Werror=type-limits]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Jonathan ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Yoshi ==&lt;br /&gt;
* &#039;&#039;&#039; Done &amp;amp; Working in Progress &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Review &amp;amp; Feedbacks &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Pending &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Others &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wesley(EPM) ==&lt;br /&gt;
&lt;br /&gt;
== Howie (EPM for Networking) ==&lt;/div&gt;</summary>
		<author><name>Hchang</name></author>
	</entry>
</feed>