Source code
Revision control
Copy as Markdown
Other Tools
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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
#include "gtest/gtest.h"
#include "mozilla/Preferences.h"
#include "mozilla/PartitioningExceptionList.h"
using namespace mozilla;
static const char kPrefPartitioningExceptionList[] =
"privacy.restrict3rdpartystorage.skip_list";
static const char kPrefEnableWebcompat[] =
"privacy.antitracking.enableWebcompat";
TEST(TestPartitioningExceptionList, TestPrefBasic)
{
nsAutoCString oldPartitioningExceptionList;
Preferences::GetCString(kPrefEnableWebcompat, oldPartitioningExceptionList);
bool oldEnableWebcompat = Preferences::GetBool(kPrefEnableWebcompat);
for (uint32_t populateList = 0; populateList <= 1; populateList++) {
for (uint32_t enableWebcompat = 0; enableWebcompat <= 1;
enableWebcompat++) {
if (populateList) {
Preferences::SetCString(kPrefPartitioningExceptionList,
} else {
Preferences::SetCString(kPrefPartitioningExceptionList, "");
}
Preferences::SetBool(kPrefEnableWebcompat, enableWebcompat);
EXPECT_FALSE(
EXPECT_FALSE(
EXPECT_FALSE(PartitioningExceptionList::Check(""_ns, ""_ns));
EXPECT_TRUE(result == (populateList && enableWebcompat));
}
}
Preferences::SetCString(kPrefPartitioningExceptionList,
oldPartitioningExceptionList);
Preferences::SetBool(kPrefEnableWebcompat, oldEnableWebcompat);
}
TEST(TestPartitioningExceptionList, TestPrefWildcard)
{
nsAutoCString oldPartitioningExceptionList;
Preferences::GetCString(kPrefEnableWebcompat, oldPartitioningExceptionList);
bool oldEnableWebcompat = Preferences::GetBool(kPrefEnableWebcompat);
Preferences::SetCString(kPrefPartitioningExceptionList,
Preferences::SetBool(kPrefEnableWebcompat, true);
EXPECT_TRUE(PartitioningExceptionList::Check(
EXPECT_FALSE(PartitioningExceptionList::Check(
Preferences::SetCString(kPrefPartitioningExceptionList,
oldPartitioningExceptionList);
Preferences::SetBool(kPrefEnableWebcompat, oldEnableWebcompat);
}
TEST(TestPartitioningExceptionList, TestInvalidEntries)
{
nsAutoCString oldPartitioningExceptionList;
Preferences::GetCString(kPrefEnableWebcompat, oldPartitioningExceptionList);
bool oldEnableWebcompat = Preferences::GetBool(kPrefEnableWebcompat);
Preferences::SetBool(kPrefEnableWebcompat, true);
// Empty entries.
Preferences::SetCString(kPrefPartitioningExceptionList, ";;;,;");
// Schemeless entries.
Preferences::SetCString(kPrefPartitioningExceptionList,
"example.com,example.net");
// Invalid entry should be skipped and not break other entries.
Preferences::SetCString(kPrefPartitioningExceptionList,
"*,*;"
// Unsupported schemes should not be accepted.
Preferences::SetCString(kPrefPartitioningExceptionList,
// Test invalid origins with trailing '/'.
Preferences::SetCString(kPrefPartitioningExceptionList,
Preferences::SetCString(kPrefPartitioningExceptionList,
oldPartitioningExceptionList);
Preferences::SetBool(kPrefEnableWebcompat, oldEnableWebcompat);
}