diff --git a/metrics/uploader/system_profile_setter.h b/metrics/uploader/system_profile_setter.h
index 1e2baab..c535664 100644
--- a/metrics/uploader/system_profile_setter.h
+++ b/metrics/uploader/system_profile_setter.h
@@ -13,6 +13,7 @@
 // information to simplify testing.
 class SystemProfileSetter {
  public:
+  virtual ~SystemProfileSetter() {}
   // Populates the protobuf with system informations.
   virtual void Populate(metrics::ChromeUserMetricsExtension* profile_proto) = 0;
 };
diff --git a/metrics/uploader/upload_service.cc b/metrics/uploader/upload_service.cc
index 62f5d92..8b8e351 100644
--- a/metrics/uploader/upload_service.cc
+++ b/metrics/uploader/upload_service.cc
@@ -53,7 +53,7 @@
   CHECK(!staged_log_) << "the staged log should be discarded before starting "
                          "a new metrics log";
   MetricsLog* log = new MetricsLog();
-  log->PopulateSystemProfile(system_profile_setter_);
+  log->PopulateSystemProfile(system_profile_setter_.get());
   current_log_.reset(log);
 }
 
diff --git a/metrics/uploader/upload_service.h b/metrics/uploader/upload_service.h
index 80b1bf3..d677424 100644
--- a/metrics/uploader/upload_service.h
+++ b/metrics/uploader/upload_service.h
@@ -12,6 +12,7 @@
 #include "base/metrics/histogram_snapshot_manager.h"
 #include "uploader/metrics_log.h"
 #include "uploader/sender.h"
+#include "uploader/system_profile_cache.h"
 
 namespace metrics {
 class ChromeUserMetricsExtension;
@@ -126,7 +127,7 @@
   // Returns the current log. If there is no current log, creates it first.
   MetricsLog* GetOrCreateCurrentLog();
 
-  SystemProfileSetter* system_profile_setter_;
+  scoped_ptr<SystemProfileSetter> system_profile_setter_;
   base::HistogramSnapshotManager histogram_snapshot_manager_;
   scoped_ptr<Sender> sender_;
   int failed_upload_count_;
diff --git a/metrics/uploader/upload_service_test.cc b/metrics/uploader/upload_service_test.cc
index 7a82624..5076e61 100644
--- a/metrics/uploader/upload_service_test.cc
+++ b/metrics/uploader/upload_service_test.cc
@@ -25,7 +25,7 @@
       : upload_service_(), exit_manager_(new base::AtExitManager()) {
     sender_ = new SenderMock;
     upload_service_.sender_.reset(sender_);
-    upload_service_.system_profile_setter_ = new MockSystemProfileSetter();
+    upload_service_.system_profile_setter_.reset(new MockSystemProfileSetter());
     upload_service_.Init();
   }
 
@@ -46,7 +46,7 @@
   }
 
   base::ScopedTempDir dir_;
-  SenderMock *sender_;
+  SenderMock* sender_;
   SystemProfileCache cache_;
   UploadService upload_service_;
 
@@ -191,8 +191,12 @@
   base::SysInfo::SetChromeOSVersionInfoForTest(content, base::Time());
   scoped_ptr<metrics::MetricSample> histogram =
       metrics::MetricSample::SparseHistogramSample("myhistogram", 1);
+  SystemProfileCache* local_cache_ = new SystemProfileCache;
+  local_cache_->is_testing_ = true;
+  local_cache_->session_id_.reset(new chromeos_metrics::PersistentInteger(
+        dir_.path().Append("session_id").value()));
 
-  upload_service_.system_profile_setter_ = &cache_;
+  upload_service_.system_profile_setter_.reset(local_cache_);
   // Reset to create the new log with the profile setter.
   upload_service_.Reset();
   upload_service_.AddSample(*histogram.get());
