NS_IMETHODIMP nsUrlClassifierDBServiceWorker::BeginStream(const nsACString &table, const nsACString &serverMAC) { LOG(("nsUrlClassifierDBServiceWorker::BeginStream")); if (gShuttingDownThread) return NS_ERROR_NOT_INITIALIZED; NS_ENSURE_STATE(mUpdateObserver); NS_ENSURE_STATE(!mInStream); mInStream = true; NS_ASSERTION(!mProtocolParser, "Should not have a protocol parser."); mProtocolParser = new ProtocolParser(mHashKey); if (!mProtocolParser) return NS_ERROR_OUT_OF_MEMORY; mProtocolParser->Init(mCryptoHash); nsresult rv; // If we're expecting a MAC, create the nsICryptoHMAC component now. if (!mUpdateClientKey.IsEmpty()) { LOG(("Expecting MAC in this stream")); rv = mProtocolParser->InitHMAC(mUpdateClientKey, serverMAC); NS_ENSURE_SUCCESS(rv, rv); } else { LOG(("No MAC in this stream")); } if (!table.IsEmpty()) { mProtocolParser->SetCurrentTable(table); } return NS_OK; }