summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest_helpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest_helpers.h')
-rw-r--r--chromium/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest_helpers.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/chromium/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest_helpers.h b/chromium/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest_helpers.h
new file mode 100644
index 00000000000..0fe270ef634
--- /dev/null
+++ b/chromium/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest_helpers.h
@@ -0,0 +1,82 @@
+// Copyright (c) 2018 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.
+
+#ifndef CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_EVENT_LOG_MANAGER_UNITTEST_HELPERS_H_
+#define CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_EVENT_LOG_MANAGER_UNITTEST_HELPERS_H_
+
+#include <memory>
+#include <string>
+
+#include "base/files/file_path.h"
+#include "build/build_config.h"
+#include "chrome/browser/media/webrtc/webrtc_event_log_manager_common.h"
+
+namespace webrtc_event_logging {
+
+// Which type of compression, if any, LogFileWriterTest should use.
+enum class WebRtcEventLogCompression {
+ NONE,
+ GZIP_NULL_ESTIMATION,
+ GZIP_PERFECT_ESTIMATION
+};
+
+// Produce a LogFileWriter::Factory object.
+std::unique_ptr<LogFileWriter::Factory> CreateLogFileWriterFactory(
+ WebRtcEventLogCompression compression);
+
+#if defined(OS_POSIX)
+void RemoveWritePermissions(const base::FilePath& path);
+#endif // defined(OS_POSIX)
+
+// Always estimates strings to be compressed to zero bytes.
+class NullEstimator : public CompressedSizeEstimator {
+ public:
+ class Factory : public CompressedSizeEstimator::Factory {
+ public:
+ ~Factory() override = default;
+
+ std::unique_ptr<CompressedSizeEstimator> Create() const override;
+ };
+
+ ~NullEstimator() override = default;
+
+ size_t EstimateCompressedSize(const std::string& input) const override;
+};
+
+// Provides a perfect estimation of the compressed size by cheating - performing
+// actual compression, then reporting the resulting size.
+// This class is stateful; the number, nature and order of calls to
+// EstimateCompressedSize() is important.
+class PerfectGzipEstimator : public CompressedSizeEstimator {
+ public:
+ class Factory : public CompressedSizeEstimator::Factory {
+ public:
+ ~Factory() override = default;
+
+ std::unique_ptr<CompressedSizeEstimator> Create() const override;
+ };
+
+ PerfectGzipEstimator();
+
+ ~PerfectGzipEstimator() override;
+
+ size_t EstimateCompressedSize(const std::string& input) const override;
+
+ private:
+ // This compressor allows EstimateCompressedSize to return an exact estimate.
+ // EstimateCompressedSize is normally const, but here we fake it, so we set
+ // it as mutable.
+ mutable std::unique_ptr<LogCompressor> compressor_;
+};
+
+// Check the gzipped size of |uncompressed|, including header and footer,
+// assuming it were gzipped on its own.
+size_t GzippedSize(const std::string& uncompressed);
+
+// Same as other version, but with elements compressed in sequence.
+size_t GzippedSize(const std::vector<std::string>& uncompressed);
+
+} // namespace webrtc_event_logging
+
+#endif // CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_EVENT_LOG_MANAGER_UNITTEST_HELPERS_H_