Commit 8b59897b authored by Ken Rockot's avatar Ken Rockot Committed by Commit Bot

Allow multiple DataDecoderService receivers

DataDecoderService is currently set up to allow only a single client
pipe. This is reasonable for the out-of-process case in most production
environments. For the in-process case (in tests and on iOS) however, it
is possible and reasonable for a single instance to have multiple
DataDecoderService pipes connected to it.

This upgrades the lone Receiver to a ReceiverSet, allowing for multiple
clients.

Fixed: 1022313
Change-Id: Iaeea6e1b1316351da0b6f57ae4a432eed62b5575
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1903748Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Commit-Queue: Ken Rockot <rockot@google.com>
Cr-Commit-Position: refs/heads/master@{#713566}
parent 4fd6c99e
...@@ -32,14 +32,14 @@ DataDecoderService::DataDecoderService() = default; ...@@ -32,14 +32,14 @@ DataDecoderService::DataDecoderService() = default;
DataDecoderService::DataDecoderService( DataDecoderService::DataDecoderService(
mojo::PendingReceiver<mojom::DataDecoderService> receiver) { mojo::PendingReceiver<mojom::DataDecoderService> receiver) {
receiver_.Bind(std::move(receiver)); receivers_.Add(this, std::move(receiver));
} }
DataDecoderService::~DataDecoderService() = default; DataDecoderService::~DataDecoderService() = default;
void DataDecoderService::BindReceiver( void DataDecoderService::BindReceiver(
mojo::PendingReceiver<mojom::DataDecoderService> receiver) { mojo::PendingReceiver<mojom::DataDecoderService> receiver) {
receiver_.Bind(std::move(receiver)); receivers_.Add(this, std::move(receiver));
} }
void DataDecoderService::BindImageDecoder( void DataDecoderService::BindImageDecoder(
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver_set.h"
#include "services/data_decoder/public/mojom/bundled_exchanges_parser.mojom.h" #include "services/data_decoder/public/mojom/bundled_exchanges_parser.mojom.h"
#include "services/data_decoder/public/mojom/data_decoder_service.mojom.h" #include "services/data_decoder/public/mojom/data_decoder_service.mojom.h"
#include "services/data_decoder/public/mojom/image_decoder.mojom.h" #include "services/data_decoder/public/mojom/image_decoder.mojom.h"
...@@ -61,7 +61,9 @@ class DataDecoderService : public mojom::DataDecoderService { ...@@ -61,7 +61,9 @@ class DataDecoderService : public mojom::DataDecoderService {
mojo::PendingReceiver<mojom::BleScanParser> receiver) override; mojo::PendingReceiver<mojom::BleScanParser> receiver) override;
#endif // OS_CHROMEOS #endif // OS_CHROMEOS
mojo::Receiver<mojom::DataDecoderService> receiver_{this}; // In-process instances (e.g. on iOS or in tests) may have multiple concurrent
// remote DataDecoderService clients.
mojo::ReceiverSet<mojom::DataDecoderService> receivers_;
bool drop_image_decoders_ = false; bool drop_image_decoders_ = false;
bool drop_json_parsers_ = false; bool drop_json_parsers_ = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment