| Index: chrome/browser/media/media_device_id_salt.cc
|
| diff --git a/chrome/browser/media/media_device_id_salt.cc b/chrome/browser/media/media_device_id_salt.cc
|
| index f8fcfcf4e294fde8338ae4809d946a449becdcaf..2220418e031c0f21a713d886d5eacaaa2903f2f9 100644
|
| --- a/chrome/browser/media/media_device_id_salt.cc
|
| +++ b/chrome/browser/media/media_device_id_salt.cc
|
| @@ -9,18 +9,35 @@
|
| #include "chrome/common/pref_names.h"
|
| #include "components/prefs/pref_service.h"
|
| #include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/resource_context.h"
|
|
|
| using content::BrowserThread;
|
|
|
| -MediaDeviceIDSalt::MediaDeviceIDSalt(PrefService* pref_service) {
|
| +namespace {
|
| +
|
| +std::string CreateSalt() {
|
| + std::string salt;
|
| + base::Base64Encode(base::RandBytesAsString(16), &salt);
|
| + DCHECK(!salt.empty());
|
| + return salt;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +MediaDeviceIDSalt::MediaDeviceIDSalt(PrefService* pref_service,
|
| + bool incognito) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
|
|
| + if (incognito) {
|
| + incognito_salt_ = CreateSalt();
|
| + return;
|
| + }
|
| +
|
| media_device_id_salt_.Init(prefs::kMediaDeviceIdSalt, pref_service);
|
| - if (media_device_id_salt_.GetValue().empty()) {
|
| - media_device_id_salt_.SetValue(
|
| - content::ResourceContext::CreateRandomMediaDeviceIDSalt());
|
| - }
|
| + if (media_device_id_salt_.GetValue().empty())
|
| + media_device_id_salt_.SetValue(CreateSalt());
|
| +
|
| + media_device_id_salt_.MoveToThread(
|
| + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO));
|
| }
|
|
|
| MediaDeviceIDSalt::~MediaDeviceIDSalt() {
|
| @@ -28,11 +45,14 @@
|
|
|
| void MediaDeviceIDSalt::ShutdownOnUIThread() {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - media_device_id_salt_.Destroy();
|
| + if (incognito_salt_.empty())
|
| + media_device_id_salt_.Destroy();
|
| }
|
|
|
| std::string MediaDeviceIDSalt::GetSalt() const {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + if (incognito_salt_.size())
|
| + return incognito_salt_;
|
| return media_device_id_salt_.GetValue();
|
| }
|
|
|
| @@ -42,7 +62,6 @@
|
| }
|
|
|
| void MediaDeviceIDSalt::Reset(PrefService* pref_service) {
|
| - pref_service->SetString(
|
| - prefs::kMediaDeviceIdSalt,
|
| - content::ResourceContext::CreateRandomMediaDeviceIDSalt());
|
| + pref_service->SetString(prefs::kMediaDeviceIdSalt,
|
| + CreateSalt());
|
| }
|
|
|