mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
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*`
This commit is contained in:
committed by
Marshall Greenblatt
parent
a931d49f3e
commit
81e892d19e
44
tests/shared/common/binary_value_utils.cc
Normal file
44
tests/shared/common/binary_value_utils.cc
Normal file
@ -0,0 +1,44 @@
|
||||
// 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
|
Reference in New Issue
Block a user