| Index: chrome/browser/metrics/metrics_service.cc
|
| ===================================================================
|
| --- chrome/browser/metrics/metrics_service.cc (revision 20172)
|
| +++ chrome/browser/metrics/metrics_service.cc (working copy)
|
| @@ -166,6 +166,7 @@
|
| #include "base/histogram.h"
|
| #include "base/path_service.h"
|
| #include "base/platform_thread.h"
|
| +#include "base/rand_util.h"
|
| #include "base/string_util.h"
|
| #include "base/task.h"
|
| #include "chrome/browser/bookmarks/bookmark_model.h"
|
| @@ -762,16 +763,29 @@
|
| DCHECK(result == kGUIDSize);
|
|
|
| return WideToUTF8(guid_string.substr(1, guid_string.length() - 2));
|
| +#elif defined(LINUX2)
|
| + uint64 sixteen_bytes[2] = { base::RandUint64(), base::RandUint64() };
|
| + return RandomBytesToGUIDString(sixteen_bytes);
|
| #else
|
| - // TODO(port): Implement for Mac and linux.
|
| - // Rather than actually implementing a random source, might this be a good
|
| - // time to implement http://code.google.com/p/chromium/issues/detail?id=2278
|
| - // ? I think so!
|
| + // TODO(cmasone): enable the above for all OS_POSIX platforms once the
|
| + // first-run dialog text is all up to date.
|
| NOTIMPLEMENTED();
|
| return std::string();
|
| #endif
|
| }
|
|
|
| +#if defined(OS_POSIX)
|
| +// TODO(cmasone): Once we're comfortable this works, migrate Windows code to
|
| +// use this as well.
|
| +std::string MetricsService::RandomBytesToGUIDString(const uint64 bytes[2]) {
|
| + return StringPrintf("%08llX-%04llX-%04llX-%04llX-%012llX",
|
| + bytes[0] >> 32,
|
| + (bytes[0] >> 16) & 0x0000ffff,
|
| + bytes[0] & 0x0000ffff,
|
| + bytes[1] >> 48,
|
| + bytes[1] & 0x0000ffffffffffffULL);
|
| +}
|
| +#endif
|
|
|
| //------------------------------------------------------------------------------
|
| // State save methods
|
|
|