Bug 1284204 - Parse SafeBrowsing V4 updates to TableUpdateV4. r=francois.

MozReview-Commit-ID: 88AEIbosxKl
This commit is contained in:
Henry Chang
2016-08-12 11:55:48 +08:00
parent 9bb9ad0cdc
commit a677ac7afb
6 changed files with 312 additions and 108 deletions

View File

@@ -460,8 +460,8 @@ nsUrlClassifierDBServiceWorker::BeginStream(const nsACString &table)
}
}
mProtocolParser = (useProtobuf ? new ProtocolParserProtobuf()
: new ProtocolParser());
mProtocolParser = (useProtobuf ? static_cast<ProtocolParser*>(new ProtocolParserProtobuf())
: static_cast<ProtocolParser*>(new ProtocolParserV2()));
if (!mProtocolParser)
return NS_ERROR_OUT_OF_MEMORY;
@@ -719,7 +719,7 @@ nsUrlClassifierDBServiceWorker::CacheCompletions(CacheResultArray *results)
return NS_OK;
}
nsAutoPtr<ProtocolParser> pParse(new ProtocolParser());
nsAutoPtr<ProtocolParserV2> pParse(new ProtocolParserV2());
nsTArray<TableUpdate*> updates;
// Only cache results for tables that we have, don't take
@@ -738,21 +738,25 @@ nsUrlClassifierDBServiceWorker::CacheCompletions(CacheResultArray *results)
}
}
if (activeTable) {
TableUpdate * tu = pParse->GetTableUpdate(resultsPtr->ElementAt(i).table);
TableUpdateV2* tuV2 = TableUpdate::Cast<TableUpdateV2>(
pParse->GetTableUpdate(resultsPtr->ElementAt(i).table));
NS_ENSURE_TRUE(tuV2, NS_ERROR_FAILURE);
LOG(("CacheCompletion Addchunk %d hash %X", resultsPtr->ElementAt(i).entry.addChunk,
resultsPtr->ElementAt(i).entry.ToUint32()));
rv = tu->NewAddComplete(resultsPtr->ElementAt(i).entry.addChunk,
resultsPtr->ElementAt(i).entry.complete);
rv = tuV2->NewAddComplete(resultsPtr->ElementAt(i).entry.addChunk,
resultsPtr->ElementAt(i).entry.complete);
if (NS_FAILED(rv)) {
// We can bail without leaking here because ForgetTableUpdates
// hasn't been called yet.
return rv;
}
rv = tu->NewAddChunk(resultsPtr->ElementAt(i).entry.addChunk);
rv = tuV2->NewAddChunk(resultsPtr->ElementAt(i).entry.addChunk);
if (NS_FAILED(rv)) {
return rv;
}
updates.AppendElement(tu);
updates.AppendElement(tuV2);
pParse->ForgetTableUpdates();
} else {
LOG(("Completion received, but table is not active, so not caching."));