Extract SharingHandlerRegistry from SharingService.

To allow other communication channels to ingest messages into the
sharing architecture, this CL extracts the handlers into a new class.
This class can then be called when a new message is received, to look
up the handler that should handle the message.

Bug: 1021980
Change-Id: I1f8c9af0e08a9bd6fd1a99954d28ff22fd902d09
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1906152
Commit-Queue: Richard Knoll <[email protected]>
Reviewed-by: Alex Chau <[email protected]>
Cr-Commit-Position: refs/heads/master@{#715330}
diff --git a/chrome/browser/sharing/sharing_message_sender.h b/chrome/browser/sharing/sharing_message_sender.h
index b44a4e6..d864837 100644
--- a/chrome/browser/sharing/sharing_message_sender.h
+++ b/chrome/browser/sharing/sharing_message_sender.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_SHARING_SHARING_MESSAGE_SENDER_H_
 
 #include <map>
+#include <memory>
 #include <string>
 
 #include "base/callback.h"
@@ -35,7 +36,7 @@
       std::unique_ptr<chrome_browser_sharing::ResponseMessage>)>;
 
   SharingMessageSender(
-      SharingFCMSender* sharing_fcm_sender,
+      std::unique_ptr<SharingFCMSender> sharing_fcm_sender,
       SharingSyncPreference* sync_prefs,
       syncer::LocalDeviceInfoProvider* local_device_info_provider);
   virtual ~SharingMessageSender();
@@ -64,7 +65,7 @@
       SharingSendMessageResult result,
       std::unique_ptr<chrome_browser_sharing::ResponseMessage> response);
 
-  SharingFCMSender* fcm_sender_;
+  std::unique_ptr<SharingFCMSender> fcm_sender_;
   SharingSyncPreference* sync_prefs_;
   syncer::LocalDeviceInfoProvider* local_device_info_provider_;