Title: [91963] trunk/Source/WebCore
- Revision
- 91963
- Author
- jsc...@chromium.org
- Date
- 2011-07-28 17:24:20 -0700 (Thu, 28 Jul 2011)
Log Message
Simplify createCanonicalUUIDString implementation.
https://bugs.webkit.org/show_bug.cgi?id=65157
All ports support OS_RANDOMNESS, so better to have one implementation.
Reviewed by Adam Barth.
Change covered by existing tests.
* platform/UUID.cpp:
(WebCore::createCanonicalUUIDString):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (91962 => 91963)
--- trunk/Source/WebCore/ChangeLog 2011-07-29 00:10:23 UTC (rev 91962)
+++ trunk/Source/WebCore/ChangeLog 2011-07-29 00:24:20 UTC (rev 91963)
@@ -1,3 +1,17 @@
+2011-07-28 Justin Schuh <jsc...@chromium.org>
+
+ Simplify createCanonicalUUIDString implementation.
+ https://bugs.webkit.org/show_bug.cgi?id=65157
+
+ All ports support OS_RANDOMNESS, so better to have one implementation.
+
+ Reviewed by Adam Barth.
+
+ Change covered by existing tests.
+
+ * platform/UUID.cpp:
+ (WebCore::createCanonicalUUIDString):
+
2011-07-28 Devdatta Deshpande <pwj...@motorola.com>
Fixed gif animation dependency on system time
Modified: trunk/Source/WebCore/platform/UUID.cpp (91962 => 91963)
--- trunk/Source/WebCore/platform/UUID.cpp 2011-07-29 00:10:23 UTC (rev 91962)
+++ trunk/Source/WebCore/platform/UUID.cpp 2011-07-29 00:24:20 UTC (rev 91963)
@@ -32,75 +32,21 @@
#include "UUID.h"
#include "NotImplemented.h"
-
-#if PLATFORM(QT)
-#include <QUuid>
-#endif
-
-#if OS(WINDOWS)
-#include <objbase.h>
-#elif OS(DARWIN) && USE(CF)
-#include <CoreFoundation/CoreFoundation.h>
-#elif OS(LINUX) && !PLATFORM(CHROMIUM)
-#include <stdio.h>
-#elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && !USE(CF))
+#include <wtf/CryptographicallyRandomNumber.h>
#include <wtf/HexNumber.h>
-#include <wtf/RandomNumber.h>
#include <wtf/text/StringBuilder.h>
-#endif
namespace WebCore {
-static const char uuidVersionRequired = '4';
-static const int uuidVersionIdentifierIndex = 14;
-
String createCanonicalUUIDString()
{
-#if PLATFORM(QT) && !defined(QT_NO_QUUID_STRING)
- QUuid uuid = QUuid::createUuid();
- String canonicalUuidStr = uuid.toString().mid(1, 36).toLower(); // remove opening and closing bracket and make it lower.
- ASSERT(canonicalUuidStr[uuidVersionIdentifierIndex] == uuidVersionRequired);
- return canonicalUuidStr;
-#elif OS(WINDOWS)
- GUID uuid = { 0 };
- HRESULT hr = CoCreateGuid(&uuid);
- if (FAILED(hr))
- return String();
- wchar_t uuidStr[40];
- int num = StringFromGUID2(uuid, reinterpret_cast<LPOLESTR>(uuidStr), WTF_ARRAY_LENGTH(uuidStr));
- ASSERT(num == 39);
- String canonicalUuidStr = String(uuidStr + 1, num - 3).lower(); // remove opening and closing bracket and make it lower.
- ASSERT(canonicalUuidStr[uuidVersionIdentifierIndex] == uuidVersionRequired);
- return canonicalUuidStr;
-#elif OS(DARWIN) && USE(CF)
- CFUUIDRef uuid = CFUUIDCreate(0);
- CFStringRef uuidStrRef = CFUUIDCreateString(0, uuid);
- String uuidStr(uuidStrRef);
- CFRelease(uuidStrRef);
- CFRelease(uuid);
- String canonicalUuidStr = uuidStr.lower(); // make it lower.
- ASSERT(canonicalUuidStr[uuidVersionIdentifierIndex] == uuidVersionRequired);
- return canonicalUuidStr;
-#elif OS(LINUX) && !PLATFORM(CHROMIUM)
- // This does not work for the linux system that turns on sandbox.
- FILE* fptr = fopen("/proc/sys/kernel/random/uuid", "r");
- if (!fptr)
- return String();
- char uuidStr[37];
- char* result = fgets(uuidStr, sizeof(uuidStr), fptr);
- fclose(fptr);
- if (!result)
- return String();
- String canonicalUuidStr = String(uuidStr).lower(); // make it lower.
- ASSERT(canonicalUuidStr[uuidVersionIdentifierIndex] == uuidVersionRequired);
- return canonicalUuidStr;
-#elif (OS(LINUX) && PLATFORM(CHROMIUM)) || (OS(DARWIN) && !USE(CF))
+#if USE(OS_RANDOMNESS)
unsigned randomData[4];
- for (size_t i = 0; i < WTF_ARRAY_LENGTH(randomData); ++i)
- randomData[i] = static_cast<unsigned>(randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0));
+ cryptographicallyRandomValues(reinterpret_cast<unsigned char*>(randomData), sizeof(randomData));
// Format as Version 4 UUID.
StringBuilder builder;
+ builder.reserveCapacity(36);
appendUnsignedAsHexFixedSize(randomData[0], builder, 8, Lowercase);
builder.append("-");
appendUnsignedAsHexFixedSize(randomData[1] >> 16, builder, 4, Lowercase);
@@ -112,7 +58,6 @@
builder.append("-");
appendUnsignedAsHexFixedSize(randomData[2] & 0x0000ffff, builder, 4, Lowercase);
appendUnsignedAsHexFixedSize(randomData[3], builder, 8, Lowercase);
- builder.append("\n");
return builder.toString();
#else
notImplemented();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes