Commit Graph

322 Commits

Author SHA1 Message Date
dimi
b19db734bc Bug 1311933 - P1. Use integer as the key of safebrowsing cache. r=francois
In Bug 1323953, we always send 4-bytes prefix for completion and the prefix is also
used as the key to store cache result from gethash request.
Since it is always 4-bytes, we could convert it to integer for simplicity.

MozReview-Commit-ID: Lkvrg0wvX5Z
2017-04-11 16:07:26 +08:00
DimiL
fc56bf5630 Bug 1311935 - P4. GTest for safebrowsing v4 caching. r=francois
MozReview-Commit-ID: ExR5NJUvzNg
2017-04-07 14:31:04 +08:00
dimi
bb15dc150d Bug 1311935 - P3. Implement safebrowsing v4 caching logic. r=francois
LookupCacheV4::Has implements safebrowsing v4 caching logic.
1. Check if fullhash match any prefix in local database:
  - If not, the URL is safe.
2. Check if prefix is in the cache(prefix is always the first 4-byte of
   the fullhash, Bug 1323953):
  - If not, send fullhash request
3. Check if fullhash is in the positive cache:
  - If fullhash is found and it is not expired, the URL is not safe.
  - If fullhash is found and it is expired, send fullhash request.
4. If fullhash is not found, check negative cache expired time:
  - If negative cache time is not expired, the URL is safe.
  - If negative cache time is expired, send fullhash request.

MozReview-Commit-ID: GRX7CP8ig49
2017-04-10 14:21:08 +08:00
dimi
5b1a0ff5b5 Bug 1311935 - P2. Process fullHashes.find response. r=francois
This patch includes following changes:

1. nsUrlClassifierHashCompleter.js
   nsUrlClassifierHashCompleter.idl
   - Add completionV4 interface for hashCompleter to pass response data to
     DB service.
   - Process response data includes negative cache duration, matched full
     hashes and cache duration for each match. Full matches are passed through
     nsIFullHashMatch interface.
   - Change _requests.responses from array contains matched fullhashes to
     dictionary so that it can store additional information likes negative cache
     duration.
2. nsUrlClassifierDBService.cpp
   - Implement CompletionV4 interface, store response data to CacheResultV4
     object. Expired duration to expired time is handled here.
   - Add CacheResultToTableUpdate function to convert V2 & V4 cache result
     to TableUpdate object.
3. LookupCache.h
   - Extend CacheResult to CacheResultV2 and CacheResultV4 so we can store
     response data in CompletionV2 and CompletionV4.
4. HashStore.h
   - Add API and member variable in TableUpdateV4 to store response data.
     TableUpdate object is used by DB service to pass update data or gethash
     response to Classifier, so we need to extend TableUpdateV4 to be able
     to store fullHashes.find response.
6. Entry.h
   - Define the structure about how we cache fullHashes.find response.

MozReview-Commit-ID: FV4yAl2SAc6
2017-04-11 11:50:48 +08:00
Iris Hsiao
cd018fd494 Backed out 4 changesets (bug 1311935) for causing assertion crash by developer's request
Backed out changeset 27e624cd9479 (bug 1311935)
Backed out changeset 4c0381ab0990 (bug 1311935)
Backed out changeset 73587838ef16 (bug 1311935)
Backed out changeset a5a6c0f79733 (bug 1311935)
2017-04-11 11:04:54 +08:00
DimiL
6e67fcdbfd Bug 1311935 - P4. GTest for safebrowsing v4 caching. r=francois
MozReview-Commit-ID: ExR5NJUvzNg
2017-04-07 14:31:04 +08:00
dimi
3a7526678a Bug 1311935 - P3. Implement safebrowsing v4 caching logic. r=francois
LookupCacheV4::Has implements safebrowsing v4 caching logic.
1. Check if fullhash match any prefix in local database:
  - If not, the URL is safe.
2. Check if prefix is in the cache(prefix is always the first 4-byte of
   the fullhash, Bug 1323953):
  - If not, send fullhash request
3. Check if fullhash is in the positive cache:
  - If fullhash is found and it is not expired, the URL is not safe.
  - If fullhash is found and it is expired, send fullhash request.
4. If fullhash is not found, check negative cache expired time:
  - If negative cache time is not expired, the URL is safe.
  - If negative cache time is expired, send fullhash request.

MozReview-Commit-ID: GRX7CP8ig49
2017-04-10 14:21:08 +08:00
dimi
5856f89d1f Bug 1311935 - P2. Process fullHashes.find response. r=francois
This patch includes following changes:

1. nsUrlClassifierHashCompleter.js
   nsUrlClassifierHashCompleter.idl
   - Add completionV4 interface for hashCompleter to pass response data to
     DB service.
   - Process response data includes negative cache duration, matched full
     hashes and cache duration for each match. Full matches are passed through
     nsIFullHashMatch interface.
   - Change _requests.responses from array contains matched fullhashes to
     dictionary so that it can store additional information likes negative cache
     duration.
2. nsUrlClassifierDBService.cpp
   - Implement CompletionV4 interface, store response data to CacheResultV4
     object. Expired duration to expired time is handled here.
   - Add CacheResultToTableUpdate function to convert V2 & V4 cache result
     to TableUpdate object.
3. LookupCache.h
   - Extend CacheResult to CacheResultV2 and CacheResultV4 so we can store
     response data in CompletionV2 and CompletionV4.
4. HashStore.h
   - Add API and member variable in TableUpdateV4 to store response data.
     TableUpdate object is used by DB service to pass update data or gethash
     response to Classifier, so we need to extend TableUpdateV4 to be able
     to store fullHashes.find response.
6. Entry.h
   - Define the structure about how we cache fullHashes.find response.

MozReview-Commit-ID: KgR1NASl7GC
2017-04-10 16:20:09 +08:00
Sebastian Hengst
ac6f4701fe Backed out changeset fc8099c8f98a (bug 1311935) 2017-04-07 19:05:42 +02:00
Sebastian Hengst
95f06a1763 Backed out changeset a4e571cb610a (bug 1311935) 2017-04-07 19:05:38 +02:00
Sebastian Hengst
1274e1391e Backed out changeset 18a286ccf1be (bug 1311935) 2017-04-07 19:05:33 +02:00
DimiL
6b0a7aba9b Bug 1311935 - P4. GTest for safebrowsing v4 caching. r=francois
MozReview-Commit-ID: ExR5NJUvzNg
2017-04-07 14:31:04 +08:00
"unknown@unknown.com"
33c89e1ef8 Bug 1311935 - P3. Implement safebrowsing v4 caching logic. r=francois
LookupCacheV4::Has implements safebrowsing v4 caching logic.
1. Check if fullhash match any prefix in local database:
  - If not, the URL is safe.
2. Check if prefix is in the cache(prefix is always the first 4-byte of
   the fullhash, Bug 1323953):
  - If not, send fullhash request
3. Check if fullhash is in the positive cache:
  - If fullhash is found and it is not expired, the URL is not safe.
  - If fullhash is found and it is expired, send fullhash request.
4. If fullhash is not found, check negative cache expired time:
  - If negative cache time is not expired, the URL is safe.
  - If negative cache time is expired, send fullhash request.

MozReview-Commit-ID: HFpqaOGOtUa
2017-04-07 14:30:28 +08:00
dimi
b3df2a0280 Bug 1311935 - P2. Process fullHashes.find response. r=francois
This patch includes following changes:

1. nsUrlClassifierHashCompleter.js
   nsUrlClassifierHashCompleter.idl
   - Add completionV4 interface for hashCompleter to pass response data to
     DB service.
   - Process response data includes negative cache duration, matched full
     hashes and cache duration for each match. Full matches are passed through
     nsIFullHashMatch interface.
   - Change _requests.responses from array contains matched fullhashes to
     dictionary so that it can store additional information likes negative cache
     duration.
2. nsUrlClassifierDBService.cpp
   - Implement CompletionV4 interface, store response data to CacheResultV4
     object. Expired duration to expired time is handled here.
   - Add CacheResultToTableUpdate function to convert V2 & V4 cache result
     to TableUpdate object.
3. LookupCache.h
   - Extend CacheResult to CacheResultV2 and CacheResultV4 so we can store
     response data in CompletionV2 and CompletionV4.
4. HashStore.h
   - Add API and member variable in TableUpdateV4 to store response data.
     TableUpdate object is used by DB service to pass update data or gethash
     response to Classifier, so we need to extend TableUpdateV4 to be able
     to store fullHashes.find response.
6. Entry.h
   - Define the structure about how we cache fullHashes.find response.

MozReview-Commit-ID: 8pUJITn8c1n
2017-04-07 16:56:08 +08:00
Henry Chang
7141f6bb42 Bug 1343425 - Supports nsIURIClassifier.asyncClassifyLocalWithTables. r=baku
We add a new "on-off" protocol PURLClassifierLocal which calls
nsIURIClassifier.asyncClassifyLocalWithTables on construction and
calls back on destruction. Pretty much the same design as PURLClassifier.

In order to avoid code duplication, the actor implementation is templatized
and |MaybeInfo| in PURLClassifier.ipdl is moved around.

Test case is included and the custom event target is not in place for labelling.
The custom event target will be done in Bug 1353701.

MozReview-Commit-ID: IdHYgdnBV7S
2017-04-07 14:15:16 +08:00
Henry Chang
4543c61a48 Bug 1339050 - Asynchronously apply safebrowsing DB update. r=francois,gcp
A new function Classifier::AsyncApplyUpdates() is implemented for async update.
Besides, all public Classifier interfaces become "worker thread only" and
we remove DBServiceWorker::ApplyUpdatesBackground/Foreground.

In DBServiceWorker::FinishUpdate, instead of calling Classifier::ApplyUpdates,
we call Classifier::AsyncApplyUpdates and install a callback for notifying
the update observer when update is finished. The callback will occur on the
caller thread (i.e. worker thread.)

As for the shutdown issue, when the main thread is notified to shut down,
we at first *synchronously* dispatch an event to the worker thread to
shut down the update thread. After getting synchronized with all other
threads, we send last two events "CancelUpdate" and "CloseDb" to notify
dangling update (i.e. BeginUpdate is called but FinishUpdate isn't)
and do cleanup work.

MozReview-Commit-ID: DXZvA2eFKlc
2017-04-06 07:07:56 +08:00
Kirk Steuber
fada0072b5 Bug 1350381 - Change Flash blocking to allow the setting "Ask to Activate" to control CTA of unknown documents. r=qdot
Previously, we operated under the understanding that with Flash blocking activated, non-whitelisted documents would be set to CTA. We are changing that such that now, documents will only be CTA'ed if Flash is set to "Ask to Activate".

Flash blocking will now behave according to the following chart:

User Setting   Flash block   Whitelisted sites   Blacklisted sites    Unlisted sites
"Never ..."    Off           Deny                Deny                 Deny
"Ask ..."      Off           Ask                 Ask                  Ask
"Always ..."   Off           Allow               Allow                Allow
"Never ..."    On            Deny                Deny                 Deny
"Ask ..."      On            Allow               Deny                 Ask
"Always ..."   On            Allow               Deny                 Allow

This patch also completely reworks the flash blocking testing. Test data and most code remains consolidated, but will be run in multiple different tests. This avoids having to extend the timeout for Flash block testing to an extremely long length. The new Flash block testing additionally tests each of the six cases (rows) in the table above.

MozReview-Commit-ID: 5aPGUEiUiCv
2017-03-24 14:15:02 -07:00
Sébastien Blin
aa1cd88356 Bug 1298321 - Refactor tests related to getHash. r=francois 2017-01-17 07:03:00 -05:00
Mark Banner
ec9074e132 Bug 1347712 - Change the testing configurations into ESLint configurations within eslint-plugin-mozilla - automatically update .eslintrc.js test config files for new config locations. r=jaws
MozReview-Commit-ID: LH0CQOPfoe6
2017-03-20 12:36:37 +01:00
Henry Chang
7f0e427cd5 Bug 1348626 - Retry when isPinged() failed to avoid false alarm. r=francois
MozReview-Commit-ID: BOdJZReICxZ
2017-03-19 15:52:25 +08:00
Henry Chang
6d4717a54c Bug 1345922 - Avoid concurrent update and take the failed beginUpdate into account. r=francois
MozReview-Commit-ID: IfRIazBvAyl
2017-03-10 00:47:26 +08:00
Kirk Steuber
82f36355d4 Bug 1345611 - Change behavior of subdocument Flash blocking to be Third-Party Flash blocking r=bsmedberg,qdot
The previous implementation regarding to the Flash Blocking Subdocument list blocked all subdocuments that matched the list. This patch changes that so that subdocuments are only blocked if they are on the Subdocument Block List and also are loaded in a Third-Party context.

The changes to cert8.db and key3.db add the https certificate for subdocument.example.com so that testing can verify that a scheme mismatch between the document and its parent results in a third-party classification.

MozReview-Commit-ID: IXnA4iPzB4y
2017-03-10 10:50:21 -08:00
Henry Chang
b1b06f3fe9 Bug 1346757 - Change the downloadError callback timing. r=francois
MozReview-Commit-ID: JleLPltEBOw
2017-03-13 21:16:07 +08:00
Thomas Nguyen
72ec8b5761 Bug 1339006 - Specify event target if we run nsIURIClassifier.clasify() from content process.r=ehsan, r=gcp
MozReview-Commit-ID: BztjVMlQngi
2017-03-08 11:06:36 +08:00
Carsten "Tomcat" Book
dc21916166 merge mozilla-inbound to mozilla-central a=merge 2017-03-02 14:02:48 +01:00
Thomas Nguyen
c68b0c13e5 Bug 1341514 - Using the valid update url provider in test. r=gcp
MozReview-Commit-ID: 50NcRd2e9hB
2017-03-02 00:07:53 +08:00
Thomas Nguyen
6eea6d2df4 Bug 1341514 - Disable test_reporturl.html due to intermittent failure. a=testonly
MozReview-Commit-ID: Ff7koH8xIwJ
* * *
[mq]: TEST-INFO

MozReview-Commit-ID: 9TUQqlj7h3M
2017-02-27 16:57:05 +08:00
Thomas Nguyen
2b6e2edd11 Bug 1297962 - Add noise data when sending v4 gethash request r=francois
MozReview-Commit-ID: GbyvX7wcg8c
* * *
[mq]: 1297962_review

MozReview-Commit-ID: 1U2T0wq778R
2017-02-24 10:22:12 +08:00
Henry Chang
40c00b3543 Bug 1341506 - Part 1: Implement and use nsIURIClassifier.asyncClassifyLocalWithTables. r=Ehsan,francois
MozReview-Commit-ID: 8dvYM4o2Xxw
2017-03-01 11:27:51 +08:00
Kirk Steuber
b36b9ba335 Bug 1340448 - Fix intermittent timeout of browser_flash_block_lists.js r=Felipe
MozReview-Commit-ID: InSc42mWEJN
2017-02-17 09:34:34 -08:00
Thomas Nguyen
f1bf9d77e5 Bug 1288633 - Add SafeBrowsing report false positive URL test.r=francois
MozReview-Commit-ID: JEMLug9M85Q
2017-02-21 11:25:04 +08:00
Henry Chang
48936c9334 Bug 1313711 - Fix track element CORS bug. r=dveditz
MozReview-Commit-ID: SRWbiIuUdt
2017-02-14 11:47:14 +08:00
Kirk Steuber
bdcea14c4d Bug 1338287 - Make nsIDocument::DocumentFlashClassification accessible from privileged JS r=bz
MozReview-Commit-ID: 1II2puZMub5
2017-02-13 13:39:40 -08:00
Thomas Nguyen
96756deadd Bug 1329558 - Implement Minimum wait duration for V4 gethash r=francois
MozReview-Commit-ID: 7i9Wz7pq0yJ
2017-02-09 16:56:44 +08:00
Kirk Steuber
e94851032c Bug 1323064 - Remove Flash from navigator.plugins when Flash is blacklisted in the document r=bsmedberg
MozReview-Commit-ID: LKjCORgaecI
2017-02-02 10:03:51 -08:00
Kirk Steuber
5c396352c6 Bug 1307604 - Add allow and deny lists for Flash Blocking r=bsmedberg,bz,francois
MozReview-Commit-ID: H2dgJX6Hsz7
2016-11-22 15:01:04 -08:00
DimiL
845ddf7f2d Bug 1331881 - Minimum wait duration and negative cache duration should be passed even if there is no match. r=francois,henry
MozReview-Commit-ID: K5RcpmiXFYR
2017-01-18 17:34:03 +08:00
Florian Quèze
0696633dc9 Bug 1334261 - script-generated patch to remove more newURI null parameters, r=jaws. 2017-01-27 10:51:02 +01:00
Florian Quèze
0a4ee94a29 Bug 1334199 - script-generated patch to omit getComputedStyle's second argument when it's falsy, r=jaws. 2017-01-27 10:51:02 +01:00
Florian Quèze
91f7a2ef3a Bug 1331599 - script-generated patch to replace removeEventListener calls with the once option when possible, r=jaws. 2017-01-25 07:01:52 +01:00
Henry
2fabeb988d Bug 1332213 - Store the update stream duplicately in v2 protocol parser. r=francois.
MozReview-Commit-ID: dPbvro5xIa
2017-01-19 17:16:13 +08:00
dimi
9cac186808 Bug 1328821 - hash completion request for v4 should not depend on table freshness. r=francois,henry
MozReview-Commit-ID: EIjDrnj1I4S
2017-01-17 08:33:08 +08:00
Mark Banner
55868dde7c Bug 503613 - Remove old 'tail =' lines from xpcshell.ini files; r=gps
MozReview-Commit-ID: 62Hp5ISxowJ
2017-01-18 10:30:39 +00:00
Florian Quèze
63de711857 Bug 1331081 - script generated patch to omit addEventListener/removeEventListener's third parameter when it's false, r=jaws. 2017-01-17 11:50:25 +01:00
Mark Banner
f7889a82eb Bug 527444 - use do_register_cleanup calls instead of tail_*.js files in xpcshell, in Core and Toolkit. r=Paolo.
Patch originally by Rahid Hasan. Updated by Akshendra Pratap Singh, jdm and Standard8.

MozReview-Commit-ID: F0edTCSsXzy
2017-01-12 16:09:58 +00:00
Florian Quèze
13cfe1d3f3 Bug 1329182 - remove trailing newURI null parameters in toolkit/, r=jaws. 2017-01-09 20:27:25 +01:00
Markus Stange
a24593a89f Bug 1323100 - Assign names to all remaining threads that are created through NS_NewThread and create them using NS_NewNamedThread instead. r=froydnj
MozReview-Commit-ID: 7W1dt2BBKJZ
2016-12-21 11:43:50 +01:00
Ehsan Akhgari
4bedef6264 Bug 1321874 - Part 2: Use the passive tracking protection API to determine whether a script is tracking; r=bkelly 2016-12-23 15:38:43 -05:00
Ehsan Akhgari
cb0ab50626 Bug 1312514 - Part 3: Add a test to ensure that timeouts from tracking scripts end up in the tracking bucket; r=bkelly
For simplicity, this test is being added to test_classifier.html which
already has all of the infrastructure necessary for setting up a test
domain as a tracking domain.
2016-12-20 12:40:30 -05:00
Henry Chang
b9d5f5080f Bug 1312339 - LookupResult to support variable length partial hash. r=francois
MozReview-Commit-ID: DKwNCNKJAW
2016-12-16 14:34:32 +08:00