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_; |