cef/tests/shared/common/binary_value_utils.h
Nik Pavlov 81e892d19e Add a shared memory variant of CefProcessMessage (fixes issue #3126)
CefSharedProcessMessageBuilder supports creation of a CefProcessMessage
backed by a CefSharedMemoryRegion.

Performance tests comparing the existing ArgumentList approach and the new
SharedMemoryRegion approach have been added to cefclient at
http://tests/ipc_performance.

CefMessageRouter has been updated to use SharedMemoryRegion as transport
for larger message payloads. The threshold is configurable via
|CefMessageRouterConfig.message_size_threshold|.

To test:
run `ceftests --gtest_filter=SendSharedProcessMessageTest.*:SharedProcessMessageTest.*:MessageRouterTest.Threshold*`
2022-07-04 09:49:15 +00:00

48 lines
1.2 KiB
C++

// Copyright (c) 2022 The Chromium Embedded Framework 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 CEF_TESTS_SHARED_COMMON_BINARY_VALUE_UTILS
#define CEF_TESTS_SHARED_COMMON_BINARY_VALUE_UTILS
#pragma once
#include <chrono>
#include <cstdint>
#include <vector>
#include "include/cef_values.h"
namespace bv_utils {
extern const char kTestSendProcessMessage[];
extern const char kTestSendSMRProcessMessage[];
using TimePoint = std::chrono::high_resolution_clock::time_point;
using Duration = std::chrono::high_resolution_clock::duration;
struct RendererMessage {
int test_id;
TimePoint start_time;
};
struct BrowserMessage {
int test_id;
Duration duration;
TimePoint start_time;
};
TimePoint Now();
CefRefPtr<CefBinaryValue> CreateCefBinaryValue(
const std::vector<uint8_t>& data);
RendererMessage GetRendererMsgFromBinary(
const CefRefPtr<CefBinaryValue>& value);
BrowserMessage GetBrowserMsgFromBinary(const CefRefPtr<CefBinaryValue>& value);
std::string ToMilliString(const Duration& duration);
} // namespace bv_utils
#endif // CEF_TESTS_SHARED_COMMON_BINARY_VALUE_UTILS