cef/tests/shared/common/binary_value_utils.cc
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

45 lines
1.4 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.
#include "tests/shared/common/binary_value_utils.h"
namespace bv_utils {
const char kTestSendProcessMessage[] = "testSendProcessMessage";
const char kTestSendSMRProcessMessage[] = "testSendSMRProcessMessage";
TimePoint Now() {
return std::chrono::high_resolution_clock::now();
}
CefRefPtr<CefBinaryValue> CreateCefBinaryValue(
const std::vector<uint8_t>& data) {
return CefBinaryValue::Create(data.data(), data.size());
}
RendererMessage GetRendererMsgFromBinary(
const CefRefPtr<CefBinaryValue>& value) {
DCHECK_GE(value->GetSize(), sizeof(RendererMessage));
std::vector<uint8_t> data(value->GetSize());
value->GetData(data.data(), data.size(), 0);
return *reinterpret_cast<const RendererMessage*>(data.data());
}
BrowserMessage GetBrowserMsgFromBinary(const CefRefPtr<CefBinaryValue>& value) {
DCHECK_GE(value->GetSize(), sizeof(BrowserMessage));
std::vector<uint8_t> data(value->GetSize());
value->GetData(data.data(), data.size(), 0);
return *reinterpret_cast<const BrowserMessage*>(data.data());
}
std::string ToMilliString(const Duration& duration) {
const auto ms =
std::chrono::duration_cast<std::chrono::duration<double, std::milli>>(
duration);
return std::to_string(ms.count());
}
} // namespace bv_utils