diff options
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.h | 82 |
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_ |