зеркало из 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 "nsIProxyObjectManager.h"
|
||||||
#include "nsToolkitCompsCID.h"
|
#include "nsToolkitCompsCID.h"
|
||||||
#include "nsIUrlClassifierUtils.h"
|
#include "nsIUrlClassifierUtils.h"
|
||||||
|
#include "nsIRandomGenerator.h"
|
||||||
#include "nsUrlClassifierDBService.h"
|
#include "nsUrlClassifierDBService.h"
|
||||||
#include "nsUrlClassifierUtils.h"
|
#include "nsUrlClassifierUtils.h"
|
||||||
#include "nsURILoader.h"
|
#include "nsURILoader.h"
|
||||||
|
@ -480,10 +481,6 @@ public:
|
||||||
PRBool before,
|
PRBool before,
|
||||||
nsTArray<nsUrlClassifierEntry> &entries);
|
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:
|
protected:
|
||||||
nsresult ReadEntries(mozIStorageStatement *statement,
|
nsresult ReadEntries(mozIStorageStatement *statement,
|
||||||
nsTArray<nsUrlClassifierEntry>& entries);
|
nsTArray<nsUrlClassifierEntry>& entries);
|
||||||
|
@ -501,8 +498,6 @@ protected:
|
||||||
nsCOMPtr<mozIStorageStatement> mPartialEntriesAfterStatement;
|
nsCOMPtr<mozIStorageStatement> mPartialEntriesAfterStatement;
|
||||||
nsCOMPtr<mozIStorageStatement> mLastPartialEntriesStatement;
|
nsCOMPtr<mozIStorageStatement> mLastPartialEntriesStatement;
|
||||||
nsCOMPtr<mozIStorageStatement> mPartialEntriesBeforeStatement;
|
nsCOMPtr<mozIStorageStatement> mPartialEntriesBeforeStatement;
|
||||||
|
|
||||||
nsCOMPtr<mozIStorageStatement> mRandomStatement;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
|
@ -559,11 +554,6 @@ nsUrlClassifierStore::Init(nsUrlClassifierDBServiceWorker *worker,
|
||||||
getter_AddRefs(mPartialEntriesBeforeStatement));
|
getter_AddRefs(mPartialEntriesBeforeStatement));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
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;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -581,7 +571,6 @@ nsUrlClassifierStore::Close()
|
||||||
mPartialEntriesAfterStatement = nsnull;
|
mPartialEntriesAfterStatement = nsnull;
|
||||||
mPartialEntriesBeforeStatement = nsnull;
|
mPartialEntriesBeforeStatement = nsnull;
|
||||||
mLastPartialEntriesStatement = nsnull;
|
mLastPartialEntriesStatement = nsnull;
|
||||||
mRandomStatement = nsnull;
|
|
||||||
|
|
||||||
mConnection = nsnull;
|
mConnection = nsnull;
|
||||||
}
|
}
|
||||||
|
@ -764,21 +753,6 @@ nsUrlClassifierStore::ReadNoiseEntries(PRInt64 rowID,
|
||||||
return ReadEntries(wraparoundStatement, entries);
|
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
|
// nsUrlClassifierAddStore class implementation
|
||||||
|
|
||||||
|
@ -1752,9 +1726,16 @@ nsUrlClassifierDBServiceWorker::AddNoise(PRInt64 nearID,
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
PRInt64 randomNum;
|
nsCOMPtr<nsIRandomGenerator> rg =
|
||||||
nsresult rv = mMainStore.RandomNumber(&randomNum);
|
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);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
memcpy(&randomNum, temp, sizeof(randomNum));
|
||||||
|
NS_Free(temp);
|
||||||
|
|
||||||
PRInt32 numBefore = randomNum % count;
|
PRInt32 numBefore = randomNum % count;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче