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 |