| Index: chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.h
|
| diff --git a/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.h b/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.h
|
| index 87d2db3c2b018bd042aeacf1ff766adb320af04b..130050d0069195789fe05ce01724819a6e2f446c 100644
|
| --- a/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.h
|
| +++ b/chrome/browser/media/router/discovery/dial/safe_dial_device_description_parser.h
|
| @@ -10,6 +10,7 @@
|
|
|
| #include "base/callback.h"
|
| #include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| #include "base/optional.h"
|
| #include "base/threading/thread_checker.h"
|
| #include "chrome/common/media_router/dial_device_description_parser.mojom.h"
|
| @@ -19,7 +20,8 @@ namespace media_router {
|
|
|
| // SafeDialDeviceDescriptionParser parses the given device description XML file
|
| // safely via a utility process. This class runs on IO thread.
|
| -class SafeDialDeviceDescriptionParser {
|
| +class SafeDialDeviceDescriptionParser
|
| + : public base::RefCounted<SafeDialDeviceDescriptionParser> {
|
| public:
|
| // Callback function to be invoked when utility process finishes parsing
|
| // device description XML.
|
| @@ -34,16 +36,22 @@ class SafeDialDeviceDescriptionParser {
|
| void Start(const std::string& xml_text,
|
| const DeviceDescriptionCallback& callback);
|
|
|
| + int32_t GetPendingParsingRequests() { return pending_parsing_requests_; }
|
| +
|
| private:
|
| + friend class base::RefCounted<SafeDialDeviceDescriptionParser>;
|
| +
|
| ~SafeDialDeviceDescriptionParser();
|
|
|
| // See SafeDialDeviceDescriptionParser::DeviceDescriptionCallback
|
| void OnParseDeviceDescriptionComplete(
|
| + const DeviceDescriptionCallback& callback,
|
| chrome::mojom::DialDeviceDescriptionPtr device_description);
|
|
|
| // TODO(crbug.com/702766): Add an enum type describing why utility process
|
| // fails to parse device description xml.
|
| - void OnParseDeviceDescriptionFailed();
|
| + void OnParseDeviceDescriptionFailed(
|
| + const DeviceDescriptionCallback& callback);
|
|
|
| // Utility client used to send device description parsing task to the utility
|
| // process.
|
| @@ -51,8 +59,8 @@ class SafeDialDeviceDescriptionParser {
|
| chrome::mojom::DialDeviceDescriptionParser>>
|
| utility_process_mojo_client_;
|
|
|
| - // Only accessed on the IO thread.
|
| - DeviceDescriptionCallback device_description_callback_;
|
| + // How many parsing requests are pending.
|
| + int32_t pending_parsing_requests_;
|
|
|
| base::ThreadChecker thread_checker_;
|
|
|
|
|