mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 15:58:39 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,88 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "LookupCacheV4.h"
|
||||
#include "Common.h"
|
||||
|
||||
#define GTEST_SAFEBROWSING_DIR NS_LITERAL_CSTRING("safebrowsing")
|
||||
#define GTEST_TABLE NS_LITERAL_CSTRING("gtest-malware-proto")
|
||||
|
||||
typedef nsCString _Fragment;
|
||||
typedef nsTArray<nsCString> _PrefixArray;
|
||||
|
||||
// Generate a hash prefix from string
|
||||
static const nsCString
|
||||
GeneratePrefix(const _Fragment& aFragment, uint8_t aLength)
|
||||
{
|
||||
Completion complete;
|
||||
nsCOMPtr<nsICryptoHash> cryptoHash = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID);
|
||||
complete.FromPlaintext(aFragment, cryptoHash);
|
||||
|
||||
nsCString hash;
|
||||
hash.Assign((const char *)complete.buf, aLength);
|
||||
return hash;
|
||||
}
|
||||
|
||||
static UniquePtr<LookupCacheV4>
|
||||
SetupLookupCacheV4(const _PrefixArray& prefixArray)
|
||||
{
|
||||
nsCOMPtr<nsIFile> file;
|
||||
NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, getter_AddRefs(file));
|
||||
|
||||
file->AppendNative(GTEST_SAFEBROWSING_DIR);
|
||||
|
||||
UniquePtr<LookupCacheV4> cache = MakeUnique<LookupCacheV4>(GTEST_TABLE, EmptyCString(), file);
|
||||
nsresult rv = cache->Init();
|
||||
EXPECT_EQ(rv, NS_OK);
|
||||
|
||||
PrefixStringMap map;
|
||||
PrefixArrayToPrefixStringMap(prefixArray, map);
|
||||
rv = cache->Build(map);
|
||||
EXPECT_EQ(rv, NS_OK);
|
||||
|
||||
return Move(cache);
|
||||
}
|
||||
|
||||
void
|
||||
TestHasPrefix(const _Fragment& aFragment, bool aExpectedHas, bool aExpectedComplete)
|
||||
{
|
||||
_PrefixArray array = { GeneratePrefix(_Fragment("bravo.com/"), 32),
|
||||
GeneratePrefix(_Fragment("browsing.com/"), 8),
|
||||
GeneratePrefix(_Fragment("gound.com/"), 5),
|
||||
GeneratePrefix(_Fragment("small.com/"), 4)
|
||||
};
|
||||
|
||||
RunTestInNewThread([&] () -> void {
|
||||
UniquePtr<LookupCache> cache = SetupLookupCacheV4(array);
|
||||
|
||||
Completion lookupHash;
|
||||
nsCOMPtr<nsICryptoHash> cryptoHash = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID);
|
||||
lookupHash.FromPlaintext(aFragment, cryptoHash);
|
||||
|
||||
bool has, complete;
|
||||
nsresult rv = cache->Has(lookupHash, &has, &complete);
|
||||
|
||||
EXPECT_EQ(rv, NS_OK);
|
||||
EXPECT_EQ(has, aExpectedHas);
|
||||
EXPECT_EQ(complete, aExpectedComplete);
|
||||
|
||||
cache->ClearAll();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
TEST(LookupCacheV4, HasComplete)
|
||||
{
|
||||
TestHasPrefix(_Fragment("bravo.com/"), true, true);
|
||||
}
|
||||
|
||||
TEST(LookupCacheV4, HasPrefix)
|
||||
{
|
||||
TestHasPrefix(_Fragment("browsing.com/"), true, false);
|
||||
}
|
||||
|
||||
TEST(LookupCacheV4, Nomatch)
|
||||
{
|
||||
TestHasPrefix(_Fragment("nomatch.com/"), false, false);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue