зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1318768 - Part 3: Make nsIURIClassifier::ClassifyLocalWithTables() usable in the content process; r=gcp,baku
This commit is contained in:
Родитель
7009c0e03a
Коммит
e8ea6c8ccf
|
@ -4859,3 +4859,24 @@ ContentParent::DeallocPURLClassifierParent(PURLClassifierParent* aActor)
|
|||
dont_AddRef(static_cast<URLClassifierParent*>(aActor));
|
||||
return true;
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult
|
||||
ContentParent::RecvClassifyLocal(const URIParams& aURI, const nsCString& aTables,
|
||||
nsCString* aResults)
|
||||
{
|
||||
MOZ_ASSERT(aResults);
|
||||
nsCOMPtr<nsIURI> uri = DeserializeURI(aURI);
|
||||
if (!uri) {
|
||||
return IPC_FAIL_NO_REASON(this);
|
||||
}
|
||||
nsCOMPtr<nsIURIClassifier> uriClassifier =
|
||||
do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID);
|
||||
if (!uriClassifier) {
|
||||
return IPC_FAIL_NO_REASON(this);
|
||||
}
|
||||
nsresult rv = uriClassifier->ClassifyLocalWithTables(uri, aTables, *aResults);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return IPC_FAIL(this, "ClassifyLocalWithTables error");
|
||||
}
|
||||
return IPC_OK();
|
||||
}
|
||||
|
|
|
@ -534,6 +534,11 @@ public:
|
|||
virtual bool
|
||||
DeallocPURLClassifierParent(PURLClassifierParent* aActor) override;
|
||||
|
||||
virtual mozilla::ipc::IPCResult
|
||||
RecvClassifyLocal(const URIParams& aURI,
|
||||
const nsCString& aTables,
|
||||
nsCString* aResults) override;
|
||||
|
||||
// Use the PHangMonitor channel to ask the child to repaint a tab.
|
||||
void ForceTabPaint(TabParent* aTabParent, uint64_t aLayerObserverEpoch);
|
||||
|
||||
|
|
|
@ -830,6 +830,8 @@ parent:
|
|||
|
||||
sync PURLClassifier(Principal principal, bool useTrackingProtection)
|
||||
returns (bool success);
|
||||
sync ClassifyLocal(URIParams uri, nsCString tables)
|
||||
returns (nsCString results);
|
||||
|
||||
// Services remoting
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include "mozilla/dom/ContentChild.h"
|
||||
#include "mozilla/dom/PermissionMessageUtils.h"
|
||||
#include "mozilla/dom/URLClassifierChild.h"
|
||||
#include "mozilla/ipc/URIUtils.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace safebrowsing {
|
||||
|
@ -1466,9 +1467,26 @@ nsUrlClassifierDBService::ClassifyLocalWithTables(nsIURI *aURI,
|
|||
const nsACString & aTables,
|
||||
nsACString & aTableResults)
|
||||
{
|
||||
PROFILER_LABEL_FUNC(js::ProfileEntry::Category::OTHER);
|
||||
MOZ_ASSERT(NS_IsMainThread(), "ClassifyLocalWithTables must be on main thread");
|
||||
|
||||
if (XRE_IsContentProcess()) {
|
||||
using namespace mozilla::dom;
|
||||
using namespace mozilla::ipc;
|
||||
URIParams uri;
|
||||
SerializeURI(aURI, uri);
|
||||
nsAutoCString tables(aTables);
|
||||
nsAutoCString results;
|
||||
bool result = ContentChild::GetSingleton()->SendClassifyLocal(uri, tables,
|
||||
&results);
|
||||
if (result) {
|
||||
aTableResults = results;
|
||||
return NS_OK;
|
||||
}
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
PROFILER_LABEL_FUNC(js::ProfileEntry::Category::OTHER);
|
||||
|
||||
nsCOMPtr<nsIURI> uri = NS_GetInnermostURI(aURI);
|
||||
NS_ENSURE_TRUE(uri, NS_ERROR_FAILURE);
|
||||
|
||||
|
|
|
@ -43,50 +43,62 @@ const Cr = SpecialPowers.Cr;
|
|||
var testURLs = [
|
||||
{ url: "http://example.com",
|
||||
trackingProtection: false,
|
||||
table: "",
|
||||
result: Cr.NS_OK
|
||||
},
|
||||
{ url: "http://example.com",
|
||||
trackingProtection: true,
|
||||
table: "",
|
||||
result: Cr.NS_OK
|
||||
},
|
||||
{ url: "http://malware.example.com",
|
||||
trackingProtection: false,
|
||||
table: "test-malware-simple",
|
||||
result: Cr.NS_ERROR_MALWARE_URI,
|
||||
},
|
||||
{ url: "http://malware.example.com",
|
||||
trackingProtection: true,
|
||||
table: "test-malware-simple",
|
||||
result: Cr.NS_ERROR_MALWARE_URI,
|
||||
},
|
||||
{ url: "http://unwanted.example.com",
|
||||
trackingProtection: false,
|
||||
table: "test-unwanted-simple",
|
||||
result: Cr.NS_ERROR_UNWANTED_URI
|
||||
},
|
||||
{ url: "http://unwanted.example.com",
|
||||
trackingProtection: true,
|
||||
table: "test-unwanted-simple",
|
||||
result: Cr.NS_ERROR_UNWANTED_URI
|
||||
},
|
||||
{ url: "http://itisatrap.org/firefox/its-a-trap.html",
|
||||
trackingProtection: false,
|
||||
table: "test-phish-simple",
|
||||
result: Cr.NS_ERROR_PHISHING_URI
|
||||
},
|
||||
{ url: "http://itisatrap.org/firefox/its-a-trap.html",
|
||||
trackingProtection: true,
|
||||
table: "test-phish-simple",
|
||||
result: Cr.NS_ERROR_PHISHING_URI
|
||||
},
|
||||
{ url: "http://tracking.example.com",
|
||||
trackingProtection: false,
|
||||
table: "test-track-simple",
|
||||
result: Cr.NS_OK
|
||||
},
|
||||
{ url: "http://tracking.example.com",
|
||||
trackingProtection: true,
|
||||
table: "test-track-simple",
|
||||
result: Cr.NS_ERROR_TRACKING_URI
|
||||
},
|
||||
{ url: "http://blocked.example.com",
|
||||
trackingProtection: false,
|
||||
table: "test-block-simple",
|
||||
result: Cr.NS_ERROR_BLOCKED_URI
|
||||
},
|
||||
{ url: "http://blocked.example.com",
|
||||
trackingProtection: true,
|
||||
table: "test-block-simple",
|
||||
result: Cr.NS_ERROR_BLOCKED_URI
|
||||
}
|
||||
];
|
||||
|
@ -123,9 +135,14 @@ function testService() {
|
|||
return;
|
||||
}
|
||||
let test = testURLs.shift();
|
||||
let prin = ssm.createCodebasePrincipal(ios.newURI(test.url, null, null), {});
|
||||
let tables = "test-malware-simple,test-unwanted-simple,test-phish-simple,test-track-simple,test-block-simple";
|
||||
let uri = ios.newURI(test.url, null, null);
|
||||
let prin = ssm.createCodebasePrincipal(uri, {});
|
||||
is(service.classifyLocalWithTables(uri, tables), test.table,
|
||||
`Successful synchronous classification of ${test.url} with TP=${test.trackingProtection}`);
|
||||
let result = service.classify(prin, test.trackingProtection, function(errorCode) {
|
||||
is(errorCode, test.result, `Successful classification of ${test.url} with TP=${test.trackingProtection}`);
|
||||
is(errorCode, test.result,
|
||||
`Successful asynchronous classification of ${test.url} with TP=${test.trackingProtection}`);
|
||||
runNextTest();
|
||||
});
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче