blob: 8d347c587820d8c6c78eeb4652990dc278e0b7d3 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/rappor/test_rappor_service.h"
#include "components/rappor/byte_vector_utils.h"
#include "components/rappor/proto/rappor_metric.pb.h"
#include "components/rappor/rappor_parameters.h"
#include "components/rappor/rappor_prefs.h"
#include "components/rappor/test_log_uploader.h"
namespace rappor {
namespace {
bool MockIsIncognito(bool* is_incognito) {
return *is_incognito;
}
} // namespace
TestRapporService::TestRapporService()
: RapporService(&test_prefs_, base::Bind(&MockIsIncognito, &is_incognito_)),
next_rotation_(base::TimeDelta()),
is_incognito_(false) {
RegisterPrefs(test_prefs_.registry());
test_uploader_ = new TestLogUploader();
InitializeInternal(make_scoped_ptr(test_uploader_),
0,
HmacByteVectorGenerator::GenerateEntropyInput());
Update(UMA_RAPPOR_GROUP | SAFEBROWSING_RAPPOR_GROUP, true);
}
TestRapporService::~TestRapporService() {}
void TestRapporService::RecordSample(const std::string& metric_name,
RapporType type,
const std::string& sample) {
// Save the recorded sample to the local structure.
RapporSample rappor_sample;
rappor_sample.type = type;
rappor_sample.value = sample;
samples_[metric_name] = rappor_sample;
// Original version is still called.
RapporService::RecordSample(metric_name, type, sample);
}
int TestRapporService::GetReportsCount() {
RapporReports reports;
ExportMetrics(&reports);
return reports.report_size();
}
void TestRapporService::GetReports(RapporReports* reports) {
ExportMetrics(reports);
}
bool TestRapporService::GetRecordedSampleForMetric(
const std::string& metric_name,
std::string* sample,
RapporType* type) {
SamplesMap::iterator it = samples_.find(metric_name);
if (it == samples_.end())
return false;
*sample = it->second.value;
*type = it->second.type;
return true;
}
// Cancel the next call to OnLogInterval.
void TestRapporService::CancelNextLogRotation() {
next_rotation_ = base::TimeDelta();
}
// Schedule the next call to OnLogInterval.
void TestRapporService::ScheduleNextLogRotation(base::TimeDelta interval) {
next_rotation_ = interval;
}
} // namespace rappor