зеркало из https://github.com/mozilla/gecko-dev.git
Bug 667075 - Use nsIRandomGenerator instead of querying SQLite. r=dcamp
This commit is contained in:
Родитель
ca25e86cbb
Коммит
4501f646c7
|
@ -62,6 +62,7 @@
|
|||
#include "nsIProxyObjectManager.h"
|
||||
#include "nsToolkitCompsCID.h"
|
||||
#include "nsIUrlClassifierUtils.h"
|
||||
#include "nsIRandomGenerator.h"
|
||||
#include "nsUrlClassifierDBService.h"
|
||||
#include "nsUrlClassifierUtils.h"
|
||||
#include "nsURILoader.h"
|
||||
|
@ -480,10 +481,6 @@ public:
|
|||
PRBool before,
|
||||
nsTArray<nsUrlClassifierEntry> &entries);
|
||||
|
||||
// Ask the db for a random number. This is temporary, and should be
|
||||
// replaced with nsIRandomGenerator when 419739 is fixed.
|
||||
nsresult RandomNumber(PRInt64 *randomNum);
|
||||
|
||||
protected:
|
||||
nsresult ReadEntries(mozIStorageStatement *statement,
|
||||
nsTArray<nsUrlClassifierEntry>& entries);
|
||||
|
@ -501,8 +498,6 @@ protected:
|
|||
nsCOMPtr<mozIStorageStatement> mPartialEntriesAfterStatement;
|
||||
nsCOMPtr<mozIStorageStatement> mLastPartialEntriesStatement;
|
||||
nsCOMPtr<mozIStorageStatement> mPartialEntriesBeforeStatement;
|
||||
|
||||
nsCOMPtr<mozIStorageStatement> mRandomStatement;
|
||||
};
|
||||
|
||||
nsresult
|
||||
|
@ -559,11 +554,6 @@ nsUrlClassifierStore::Init(nsUrlClassifierDBServiceWorker *worker,
|
|||
getter_AddRefs(mPartialEntriesBeforeStatement));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = mConnection->CreateStatement
|
||||
(NS_LITERAL_CSTRING("SELECT abs(random())"),
|
||||
getter_AddRefs(mRandomStatement));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -581,7 +571,6 @@ nsUrlClassifierStore::Close()
|
|||
mPartialEntriesAfterStatement = nsnull;
|
||||
mPartialEntriesBeforeStatement = nsnull;
|
||||
mLastPartialEntriesStatement = nsnull;
|
||||
mRandomStatement = nsnull;
|
||||
|
||||
mConnection = nsnull;
|
||||
}
|
||||
|
@ -764,21 +753,6 @@ nsUrlClassifierStore::ReadNoiseEntries(PRInt64 rowID,
|
|||
return ReadEntries(wraparoundStatement, entries);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsUrlClassifierStore::RandomNumber(PRInt64 *randomNum)
|
||||
{
|
||||
mozStorageStatementScoper randScoper(mRandomStatement);
|
||||
PRBool exists;
|
||||
nsresult rv = mRandomStatement->ExecuteStep(&exists);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!exists)
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
|
||||
*randomNum = mRandomStatement->AsInt64(0);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// nsUrlClassifierAddStore class implementation
|
||||
|
||||
|
@ -1752,9 +1726,16 @@ nsUrlClassifierDBServiceWorker::AddNoise(PRInt64 nearID,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
PRInt64 randomNum;
|
||||
nsresult rv = mMainStore.RandomNumber(&randomNum);
|
||||
nsCOMPtr<nsIRandomGenerator> rg =
|
||||
do_GetService("@mozilla.org/security/random-generator;1");
|
||||
NS_ENSURE_STATE(rg);
|
||||
|
||||
PRInt32 randomNum;
|
||||
PRUint8 *temp;
|
||||
nsresult rv = rg->GenerateRandomBytes(sizeof(randomNum), &temp);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
memcpy(&randomNum, temp, sizeof(randomNum));
|
||||
NS_Free(temp);
|
||||
|
||||
PRInt32 numBefore = randomNum % count;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче