forked from mirrors/gecko-dev
Storing it in the style value doesn't make much sense, specially since we store drawing-dependent stuff there like the svg viewport size, which clearly depends on the size of the frame. This cache may not be very useful anymore, see the linked bug, but this unblocks me with other style system cleanups and seems safer. Differential Revision: https://phabricator.services.mozilla.com/D62162 --HG-- extra : moz-landing-system : lando
39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsCOMPtr.h"
|
|
#include "nsIRandomGenerator.h"
|
|
#include "nsServiceManagerUtils.h"
|
|
|
|
#include "RelativeTimeline.h"
|
|
|
|
namespace mozilla {
|
|
|
|
int64_t RelativeTimeline::GetRandomTimelineSeed() {
|
|
if (mRandomTimelineSeed == 0) {
|
|
nsresult rv;
|
|
nsCOMPtr<nsIRandomGenerator> randomGenerator =
|
|
do_GetService("@mozilla.org/security/random-generator;1", &rv);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
mRandomTimelineSeed = rand();
|
|
return mRandomTimelineSeed;
|
|
}
|
|
|
|
uint8_t* buffer = nullptr;
|
|
rv = randomGenerator->GenerateRandomBytes(sizeof(mRandomTimelineSeed),
|
|
&buffer);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
mRandomTimelineSeed = rand();
|
|
return mRandomTimelineSeed;
|
|
}
|
|
|
|
memcpy(&mRandomTimelineSeed, buffer, sizeof(mRandomTimelineSeed));
|
|
MOZ_ASSERT(buffer);
|
|
free(buffer);
|
|
}
|
|
return mRandomTimelineSeed;
|
|
}
|
|
|
|
} // namespace mozilla
|