Commit Graph

1085 Commits

Author SHA1 Message Date
Andrew McCreight
02c72333dc Bug 1368170 - Remove unused Function.prototype.inherits methods. r=francois
These methods do not appear to be used.

When JSM global sharing is enabled, these methods contaminate the
global Function.prototype, which breaks Marionette object
serialization.

MozReview-Commit-ID: CAfJ2FCkhlK
2017-05-26 13:46:10 -07:00
Andrew McCreight
600ec52527 Bug 1367521 - Fix misspellings of "delegate". r=dholbert
MozReview-Commit-ID: KqOnp8rpCZD
2017-05-24 10:43:11 -07:00
Ryan VanderMeulen
c121499332 Backed out changeset c0b940487708 (bug 1359299) for causing intermittent Windows safebrowsing crashes. 2017-05-24 09:11:04 -04:00
DimiL
ecf67ffc51 Bug 1359299 - Copy fullhash cache when update. r=hchang
After adopting the new thread model for safebrowsing, we will create a new
lookup cache for update so we can still check lookup cache at the same time.

Prefix set, completions will be generated when we open the new lookup cache
but it won't include cache, so we will loss cache after that.

This patch will copy cache data from old lookup cache to new lookup
cache while update.

MozReview-Commit-ID: L0WpiHOGIGm
2017-05-23 09:19:06 +08:00
Wes Kocher
007098e921 Merge inbound to central, a=merge
MozReview-Commit-ID: 7NiWtCjPk84
2017-05-22 16:26:12 -07:00
Kershaw Chang
4f65916b2b Bug 1312515 - Part 3: Test case. r=baku
This test aims to test the priority of the http channels created from XHR and Fetch inside a tracking script is lowest.
2017-05-22 03:40:00 -04:00
DimiL
c8f160ac4e Bug 1360480 - about:url-classifier: Cache information. r=francois
MozReview-Commit-ID: 4YXtb2KPgwL
2017-05-17 10:32:33 +08:00
Francois Marier
e4dd8ef38f Bug 1366394 - Bump the Safe Browsing update timeout to 15s. r=hchang
Based on the telemetry that landed as part of bug 1336904, Safe Browsing
updates are failing too often: https://mzl.la/2qGkOPS

This should enable browsers on slower networks to reach the update
servers while still putting a reasonable bound on how long the update
thread can be blocked.

MozReview-Commit-ID: 6puVtpMT87K
2017-05-19 14:25:11 -07:00
DimiL
da8ff508ef Bug 1365877 - resetDatabase in SafeBrowsing test case should also reset cache. r=francois
resetDatabase() is used to clear out the Safe Browsing database and cache in tests.
Since bug 1333328 however we can no longer rely on updates clearing the cache.

There are two solutions to address this issue:
1. resetDatabase() calls another test-only function: reloadDatabase(). Since the cache
   is in memory, reloading the URL classifier will automatically clear the cache.
2. During an update, remove cache entries which are not in the database.

I prefer taking the first one because if we implement the second
approach, an update will take longer since we need to check if each prefix
in the cache can also be found in the database. I think this is not necessary
because prefixes not in the database will eventually be removed when they
are expired.

MozReview-Commit-ID: BjsDKDMr205
2017-05-18 17:21:00 +08:00
Sebastian Hengst
09a5305d26 Backed out changeset 44635c073692 (bug 1345058) on suspicion of causing intermittent xpcshell failures in toolkit/components/url-classifier/tests/unit/test_bug1274685_unowned_list.js on OS X. r=backout 2017-05-19 13:13:18 +02:00
Thomas Nguyen
379b129513 Bug 1363879 - Sort gethash prefixes to hide noise entries r=francois
In V2 we shuffled the hash entries before sending the request to obscure the real
entry from noises. We should also hide the real entry in V4. Using sort() is
enough for both V2 and V4 because the array contains exactly 5 entries in almost
all cases.

MozReview-Commit-ID: 4uOXIF83KQL
2017-05-17 16:11:36 +08:00
Henry Chang
53df2ddfd9 Bug 1345058 - Asynchronously decide if a flash document should be blocked. r=baku,bytesized
Technically speaking, we use the new async API 'nsIURIClassifier.asyncClassifyLocalWithTables'
to replace the old sync API. However, since we cannot guarantee the async call will be done when
we neet its result, we need a sync call as a fallback in this case. This is a sub-optimal
solution and we will be investigating if there's a better solution if the sync call
is used too frequently.

MozReview-Commit-ID: L1uQ2eaYr1e
2017-05-10 15:32:34 +08:00
Carsten "Tomcat" Book
1e4626e120 merge mozilla-inbound to mozilla-central a=merge 2017-05-18 14:19:18 +02:00
Thomas Nguyen
f0e7c590a6 Bug 1365466 - Remove enablePrivilege calls in SafeBrowsing test case. r=hchang
MozReview-Commit-ID: CedxaTfXFx0
2017-05-16 19:20:00 -04:00
DimiL
87adc6c3b3 Bug 1364607 - Add a test for empty Safe Browsing updates. r=francois
This patch includes two test cases:
1. Apply an empty update through Classifier interface, which is the normal use case.
2. Apply an empty update through LookupCacheV4::ApplyUpdate, this ensure update algorithm is
   correct when applying an empty update. This scenario actually shouldn't happen in
   normal use case because it will be skipped by Classifier::CheckValidUpdate.

MozReview-Commit-ID: 9khsuVatX0u
2017-05-17 16:04:23 +08:00
Felipe Gomes
d42fc1500d Bug 1317856 - Ensure that flashblock tests are not affected by nosrc fallback rule. r=bytesized
With the activation of Ask-to-Activate mode by default, we'll also activate the fallback rule that favors fallback content when the object has not provided a src, so we need to prepare this test for that

MozReview-Commit-ID: JmmxJEiziHW
2017-05-16 22:56:23 -03:00
Chung-Sheng Fu
c1c4081a34 Bug 1342900 - Remove usage of nsTArray<nsAutoPtr<>> in Classifier. r=dimi
MozReview-Commit-ID: 2SGPEuEg0lz
2017-05-05 14:33:18 +08:00
Nathan Froyd
3b526b2200 Bug 1359490 - add an event loop spinning abstraction function; r=gerald
This function is arguably nicer than calling NS_ProcessNextEvent
manually, is slightly more efficient, and will enable better auditing
for NS_ProcessNextEvent when we do Quantum DOM scheduling changes.
2017-05-15 09:34:19 -04:00
DimiL
769f299a32 Bug 1333328 - Remove mTableFreshness and gFreshnessGuarantee. r=francois
Functions and Preference related to mTableFreshness and gFreshnessGuarantee
could be removed since we will no longer require them.

MozReview-Commit-ID: IAa0UHLSQ56
2017-05-04 11:13:21 +08:00
DimiL
a0b8501692 Bug 1333328 - Refactor cache miss handling mechanism for V2. r=francois
In this patch, we will make Safebrowsing V2 caching use the same algorithm as V4.
So we remove "mMissCache" for negative caching and TableFresness check for
positive caching.

But Safebrowsing V2 doesn't contain negative/positive cache duration information in
gethash response. So we hard-code a fixed value, 15 minutes, as cache duration.
In this way, we can sync the mechanism we handle caching for V2 and V4.

An extra effort for V2 here is that we need to manually record prefixes misses
because we won't get any response for those prefixes(implemented in
nsUrlClassifierLookupCallback::CacheMisses).
2017-05-04 09:38:14 +08:00
Thomas Nguyen
1cf911e408 Bug 1322523 - Add telemetry to capture the length of long Safe Browsing V4 prefixes r=francois
MozReview-Commit-ID: HhWhyJvyG85
2017-05-14 14:09:10 +08:00
Florian Quèze
15feaa278a Bug 1362882 - script-generated patch to switch from Promise.defer() to new Promise() where it's straightforward, rs=Mossop. 2017-05-12 14:55:27 +02:00
Florian Quèze
ff53eb9a63 Bug 1353542 - massive script-generated patch converting Task.async and Task.spawn calls, and generators clearly identifiable as tasks, rs=Mossop. 2017-05-12 14:42:39 +02:00
Henry Chang
53feae184d Bug 1363266 - Post an event to main thread to set |done| to true. r=froydnj
This is in preparation for being able to be replaced with SpinEventLoopUntil(),
which is going to be shipped in bug 1359490.

MozReview-Commit-ID: AChVqh4kfVb
2017-05-09 11:42:52 +08:00
Francois Marier
566f4c2a55 Bug 1362501 - Use LINUX_PLATFORM for Safe Browsing on non-Windows and non-OSX platforms. r=gcp
MozReview-Commit-ID: 58059M8IhL
2017-05-05 11:38:38 -07:00
dimi
f2f94674a1 Bug 1362112 - Add missing string in aboutUrlClassifier.properties. r=francois
MozReview-Commit-ID: HXptt8ElxSX
2017-05-05 12:42:31 +08:00
Thomas Nguyen
9ca7549a71 Bug 1351472 - Skip AddNoise if the table is unknown or disallowed to getHash r=francois
MozReview-Commit-ID: GMWs2UpiyiP
2017-04-28 15:26:54 +08:00
Jeff Walden
dbb2e63c8c Give a local anonymous struct a name, in order to work around a toolchain compiler deficiency of the browser rooting-hazard-analysis setup. No bug, r=sfink over IRC 2017-05-01 19:40:16 -07:00
Thomas Nguyen
1f65cb8c7a Bug 1336904 - Add timeouts for Safe Browsing updates r=francois
These timeouts will ensure that we don't block the Safe Browsing update thread
for too long when we encounter slow or bad network conditions.

MozReview-Commit-ID: AJfR193cTf8
2017-04-24 17:51:06 +08:00
DimiL
141d7020a5 Bug 1358324 - The URLCLASSIFIER_MATCH_THREAT_TYPE_RESULT probe doesn't seem to be working correctly. r=francois
mResults is lookupResultArray which is created when we find matched prefix in the database.
mCacheResults stores response of gethash request.

We record threat type match telemetry only when completion is found in both V2 and V4,
that is we got one confirmed result for V2 and one for V4. And then we could record threat
types by iterating through mCacheResultsArray.

But if one of lookupResult is from cache, for example, completion is found in 'goog-malware-proto',
then we won't trigger a gethash request for it because it is in the cache.
In this scenario, mCacheResults will not have results from V4 so when we try to record
threat types we won't find V4 ones.

In this patch we only record telemetry when gethash is sent for both V2 and V4. This may limit
the usefulness of that probe a little bit, but we shouldn't make the code less efficient just
to be able to measure telemetry better.

MozReview-Commit-ID: Ib8SGUaxb4c
2017-04-21 15:09:44 +08:00
Thomas Nguyen
2b54b47e7a Bug 1336915 - Disable updates and fullhash requests when the Google API key is missing r=francois
We only register google table if we have a valid google api keys

MozReview-Commit-ID: CJmJErxSOqa
2017-04-25 15:20:44 +08:00
Michael Layzell
9e9bb6861f Bug 1339537 - Part 6: Pass std::function values tree by const reference instead of by value, r=ehsan
MozReview-Commit-ID: PVAqU2DPs2
2017-04-27 12:44:57 -04:00
Thomas Nguyen
87c03bcdea Bug 1353853 - Cache preferences when doing channel classify r=francois
We will cache all preferences which will be read during classifing channel
- Store them into static variables nsUrlClassifierDBService
- Use a singleton class to manage/update preferrences in nsChannelClassifier

MozReview-Commit-ID: GvyBI3rVpYh
2017-04-18 17:00:27 +08:00
Dimi Lee
e1cfb289f1 Bug 1348253 - about:url-classifier: Providers information and update button. r=francois
The about:url-classifier supports following functions:
1. Provider section
  - Show update status for each provider, update status include
    last update time, next update time and last update status
  - Update button to manually trigger an update for the provider.

2. Debug section
  - Set MOZ_LOG Modules
  - Set MOZ_LOG_FILE

MozReview-Commit-ID: AHiveKEHSNC
2017-04-19 00:33:08 +08:00
DimiL
11fae5a35a Bug 1357207 - Caching duration recorded to telemetry should be milli-second . r=francois
In Bug 1311935, We change positive/negative cache duration from milli-second to second.
But the value doesn't covert back to milli-second when store to telemetry(telemetry use
milli-second).

MozReview-Commit-ID: KR6xn9pwhUd
2017-04-18 12:01:09 +08:00
DimiL
9b23cf48bb Bug 1296406 - Fix ReloadDatabase API fail in safebrowsing testcase. r=francois
Recent change of safebrowsing thread model may cause nsUrlClassifierDBService::ReloadDatabase
API fail if there is an ongoing update at the same.

Fix this issue by adding retry in testcase.

MozReview-Commit-ID: CZGMpQvuzum
2017-04-17 09:13:41 +08:00
Kirk Steuber
1372e8dd6e Bug 1356156 - Increase test timeout for Flash block tests r=francois
The Flash block tests sometimes timeout in debug runs. So far it has always happened the same way. All assertions in the test run (and pass), but the test times out during cleanup. Bumping up the timeout for these tests should fix this problem.

MozReview-Commit-ID: F04nSzSyLtr
2017-04-14 09:38:39 -07:00
Florian Queze
ddf0cda8da Bug 1355161 - script-generated patch to replace .{currentThread,mainThread}.dispatch(..., Ci.nsIThread.DISPATCH_NORMAL) with .dispatchToMainThread(...), r=froydnj. 2017-04-14 18:29:12 +02:00
Florian Queze
08b934cecd Bug 1356569 - Remove some more newURI null trailing parameters, r=jaws. 2017-04-14 21:51:40 +02:00
Florian Queze
451928e614 Bug 1356569 - Remove notifyObservers' last parameter when it is falsy, r=jaws. 2017-04-14 21:51:39 +02:00
Florian Queze
aca1103c68 Bug 1356569 - Remove appendElement's last parameter when it is false, r=jaws. 2017-04-14 21:51:39 +02:00
Florian Queze
d3c36892fa Bug 1356569 - Remove addObserver's last parameter when it is false, r=jaws. 2017-04-14 21:51:38 +02:00
dimi
af40c9d725 Bug 1356067 - Fix memory leak in nsUrlClassifierLookupCallback::CompletionV4. r=francois
MozReview-Commit-ID: 67ANYHWIRX0
2017-04-13 15:39:30 +08:00
Henry Chang
259a763c10 Bug 1338638 - Fix race condition for DBService APIs to avoid long delayed initial download. r=francois
When starting up, SafeBrowsing.jsm will try to use DBService to add testing entries. Meanwhile,
listmanager will request StreamUpdater to download lists with a random initial delay.

The requests that listmanager issue to StreamUpdater will be queued up
if DBserve is busy and will be retried when StreamUpdater is notified that
the previous update is complete. However, in some edge cases,
the queued requests may not be processed until the next update request from listmanager.
For example, SafeBrowsing.jsm calls DBService.beginUpdate at t0 and the update is
complete at t1. If listmanager sends all requests via StreamUpdate between t0 and t1,
they will all be queued up and no further request can trigger the queued ones.

So in this patch I add a timer to re-trigger FetchNextRequest() in case StreamUpdater is not
notified the previous update is complete.

MozReview-Commit-ID: 3hHsS5N7WRI
2017-04-11 17:13:01 +08:00
Henry Chang
a629121fce Bug 1354968 - Avoid concurrent access of mTableRefreshness. r=francois
mTableRefreshness, a non-thread-safe object, might be accessed on worker thread
and update thread cocurrently. To solve this issue, on update thread we only
insert data to mNewTableRefreshness and merge to mTableRefreshness on
the worker thread later.

MozReview-Commit-ID: 9WgoeYfWVfK
2017-04-11 01:02:42 +08:00
dimi
80b83c117c Bug 1311933 - P2. Add telemetry to measure if completion match type is the same for v2 and v4. r=francois
When full match is found in both v2 and v4, the threat types returned should also be the same.
If threat types are different, the telemetry record this by setting a bit flags which indicates
what threat types are being returned.

If threat types are the same, this telemetry will record 0.

MozReview-Commit-ID: Laz77yoCg00
2017-04-12 09:11:18 +08:00
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