| Index: chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.cc
|
| diff --git a/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.cc b/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.cc
|
| index 81ea2910fd4cad04b75a37f7c94864699a6d2c1e..bb2cccce1de02a5df207238e1a23702a2b3c0a02 100644
|
| --- a/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.cc
|
| +++ b/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.cc
|
| @@ -19,51 +19,30 @@ SafeDialDeviceDescriptionParser::~SafeDialDeviceDescriptionParser() {}
|
| void SafeDialDeviceDescriptionParser::Start(
|
| const std::string& xml_text,
|
| const DeviceDescriptionCallback& callback) {
|
| + DVLOG(2) << "Start parsing device description...";
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - DCHECK(!utility_process_mojo_client_);
|
| - DCHECK(callback);
|
|
|
| - device_description_callback_ = callback;
|
| + DCHECK(callback);
|
|
|
| - utility_process_mojo_client_ =
|
| - base::MakeUnique<content::UtilityProcessMojoClient<
|
| - chrome::mojom::DialDeviceDescriptionParser>>(
|
| - l10n_util::GetStringUTF16(
|
| - IDS_UTILITY_PROCESS_DIAL_DEVICE_DESCRIPTION_PARSER_NAME));
|
| + if (!utility_process_mojo_client_) {
|
| + DVLOG(2) << "Start utility process in background...";
|
| + utility_process_mojo_client_ =
|
| + base::MakeUnique<content::UtilityProcessMojoClient<
|
| + chrome::mojom::DialDeviceDescriptionParser>>(
|
| + l10n_util::GetStringUTF16(
|
| + IDS_UTILITY_PROCESS_DIAL_DEVICE_DESCRIPTION_PARSER_NAME));
|
|
|
| - utility_process_mojo_client_->set_error_callback(base::Bind(
|
| - &SafeDialDeviceDescriptionParser::OnParseDeviceDescriptionFailed,
|
| - base::Unretained(this)));
|
| + utility_process_mojo_client_->set_error_callback(
|
| + base::Bind(callback, nullptr));
|
|
|
| - // This starts utility process in the background.
|
| - utility_process_mojo_client_->Start();
|
| + // This starts utility process in the background.
|
| + utility_process_mojo_client_->Start();
|
| + }
|
|
|
| // This call is queued up until the Mojo message pipe has been established to
|
| // the service running in the utility process.
|
| - utility_process_mojo_client_->service()->ParseDialDeviceDescription(
|
| - xml_text,
|
| - base::Bind(
|
| - &SafeDialDeviceDescriptionParser::OnParseDeviceDescriptionComplete,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void SafeDialDeviceDescriptionParser::OnParseDeviceDescriptionComplete(
|
| - chrome::mojom::DialDeviceDescriptionPtr device_description) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| -
|
| - utility_process_mojo_client_.reset(); // Terminate the utility process.
|
| -
|
| - DCHECK(device_description_callback_);
|
| - device_description_callback_.Run(std::move(device_description));
|
| -}
|
| -
|
| -void SafeDialDeviceDescriptionParser::OnParseDeviceDescriptionFailed() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| -
|
| - utility_process_mojo_client_.reset(); // Terminate the utility process.
|
| -
|
| - DCHECK(device_description_callback_);
|
| - device_description_callback_.Run(nullptr);
|
| + utility_process_mojo_client_->service()->ParseDialDeviceDescription(xml_text,
|
| + callback);
|
| }
|
|
|
| } // namespace media_router
|
|
|