| OLD | NEW | 
|   1 // Copyright 2013 The Chromium Authors. All rights reserved. |   1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
|   2 // Use of this source code is governed by a BSD-style license that can be |   2 // Use of this source code is governed by a BSD-style license that can be | 
|   3 // found in the LICENSE file. |   3 // found in the LICENSE file. | 
|   4 #include "chrome/browser/media/media_device_id_salt.h" |   4 #include "chrome/browser/media/media_device_id_salt.h" | 
|   5  |   5  | 
|   6 #include "base/base64.h" |   6 #include "base/base64.h" | 
|   7 #include "base/rand_util.h" |   7 #include "base/rand_util.h" | 
|   8 #include "chrome/browser/profiles/profile_io_data.h" |   8 #include "chrome/browser/profiles/profile_io_data.h" | 
|   9 #include "chrome/common/pref_names.h" |   9 #include "chrome/common/pref_names.h" | 
|  10 #include "components/prefs/pref_service.h" |  10 #include "components/prefs/pref_service.h" | 
|  11 #include "content/public/browser/browser_thread.h" |  11 #include "content/public/browser/browser_thread.h" | 
 |  12 #include "content/public/browser/resource_context.h" | 
|  12  |  13  | 
|  13 using content::BrowserThread; |  14 using content::BrowserThread; | 
|  14  |  15  | 
|  15 namespace { |  16 MediaDeviceIDSalt::MediaDeviceIDSalt(PrefService* pref_service) { | 
|  16  |  | 
|  17 std::string CreateSalt() { |  | 
|  18   std::string salt; |  | 
|  19   base::Base64Encode(base::RandBytesAsString(16), &salt); |  | 
|  20   DCHECK(!salt.empty()); |  | 
|  21   return salt; |  | 
|  22 } |  | 
|  23  |  | 
|  24 }  // namespace |  | 
|  25  |  | 
|  26 MediaDeviceIDSalt::MediaDeviceIDSalt(PrefService* pref_service, |  | 
|  27                                      bool incognito) { |  | 
|  28   DCHECK_CURRENTLY_ON(BrowserThread::UI); |  17   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 
|  29  |  18  | 
|  30   if (incognito) { |  19   media_device_id_salt_.Init(prefs::kMediaDeviceIdSalt, pref_service); | 
|  31     incognito_salt_ = CreateSalt(); |  20   if (media_device_id_salt_.GetValue().empty()) { | 
|  32     return; |  21     media_device_id_salt_.SetValue( | 
 |  22         content::ResourceContext::CreateRandomMediaDeviceIDSalt()); | 
|  33   } |  23   } | 
|  34  |  | 
|  35   media_device_id_salt_.Init(prefs::kMediaDeviceIdSalt, pref_service); |  | 
|  36   if (media_device_id_salt_.GetValue().empty()) |  | 
|  37     media_device_id_salt_.SetValue(CreateSalt()); |  | 
|  38  |  | 
|  39   media_device_id_salt_.MoveToThread( |  | 
|  40       BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); |  | 
|  41 } |  24 } | 
|  42  |  25  | 
|  43 MediaDeviceIDSalt::~MediaDeviceIDSalt() { |  26 MediaDeviceIDSalt::~MediaDeviceIDSalt() { | 
|  44 } |  27 } | 
|  45  |  28  | 
|  46 void MediaDeviceIDSalt::ShutdownOnUIThread() { |  29 void MediaDeviceIDSalt::ShutdownOnUIThread() { | 
|  47   DCHECK_CURRENTLY_ON(BrowserThread::UI); |  30   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 
|  48   if (incognito_salt_.empty()) |  31   media_device_id_salt_.Destroy(); | 
|  49     media_device_id_salt_.Destroy(); |  | 
|  50 } |  32 } | 
|  51  |  33  | 
|  52 std::string MediaDeviceIDSalt::GetSalt() const { |  34 std::string MediaDeviceIDSalt::GetSalt() const { | 
|  53   DCHECK_CURRENTLY_ON(BrowserThread::IO); |  35   DCHECK_CURRENTLY_ON(BrowserThread::UI); | 
|  54   if (incognito_salt_.size()) |  | 
|  55     return incognito_salt_; |  | 
|  56   return media_device_id_salt_.GetValue(); |  36   return media_device_id_salt_.GetValue(); | 
|  57 } |  37 } | 
|  58  |  38  | 
|  59 void MediaDeviceIDSalt::RegisterProfilePrefs( |  39 void MediaDeviceIDSalt::RegisterProfilePrefs( | 
|  60     user_prefs::PrefRegistrySyncable* registry) { |  40     user_prefs::PrefRegistrySyncable* registry) { | 
|  61   registry->RegisterStringPref(prefs::kMediaDeviceIdSalt, std::string()); |  41   registry->RegisterStringPref(prefs::kMediaDeviceIdSalt, std::string()); | 
|  62 } |  42 } | 
|  63  |  43  | 
|  64 void MediaDeviceIDSalt::Reset(PrefService* pref_service) { |  44 void MediaDeviceIDSalt::Reset(PrefService* pref_service) { | 
|  65   pref_service->SetString(prefs::kMediaDeviceIdSalt, |  45   pref_service->SetString( | 
|  66                           CreateSalt()); |  46       prefs::kMediaDeviceIdSalt, | 
 |  47       content::ResourceContext::CreateRandomMediaDeviceIDSalt()); | 
|  67 } |  48 } | 
| OLD | NEW |