shill: Installs progressive scan in shill.

BUG=chromium:222088
TEST=unittest and manual.  The manual tests consist of:
  - Enable progressive scan.  On target, in a crosh window, do:
      o progressive_scan on
  - Start shill with log=-10/wifi.  On the target, in a shell window,
    do the following:
      o stop shill
      o shill --log-level=-10 --log-scopes=wifi
  - Wait five seconds (the code will do everything it needs to at
    startup).
  - Look in /var/log/net.log and verify the existence of the following:
      o Doing progressive scan

      o ProgressiveScanTask - scan requested for XXXX
        Initiating a scan -- returning

      o ProgressiveScanTask - scan requested for XXXX
        Ignoring scan request wile connecting to an AP

Change-Id: Ie577869aedc03230e1fab62fc8cb9f0b3850c7fb
Reviewed-on: https://gerrit.chromium.org/gerrit/50377
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Queue: Wade Guthrie <wdg@chromium.org>
Reviewed-by: Wade Guthrie <wdg@chromium.org>
Tested-by: Wade Guthrie <wdg@chromium.org>
diff --git a/mock_netlink_manager.h b/mock_netlink_manager.h
index 1e2cf7a..6717e68 100644
--- a/mock_netlink_manager.h
+++ b/mock_netlink_manager.h
@@ -5,19 +5,39 @@
 #ifndef SHILL_MOCK_NETLINK_MANAGER_H_
 #define SHILL_MOCK_NETLINK_MANAGER_H_
 
-#include <gmock/gmock.h>
-
 #include "shill/netlink_manager.h"
 
+#include <map>
+
+#include <gmock/gmock.h>
+
 namespace shill {
 
+class NetlinkMessage;
+
 class MockNetlinkManager : public NetlinkManager {
  public:
-  MockNetlinkManager() {}
-  ~MockNetlinkManager() {}
+  MockNetlinkManager();
+  virtual ~MockNetlinkManager();
+  MOCK_METHOD1(RemoveBroadcastHandler,
+               bool(const NetlinkMessageHandler &message_handler));
+  MOCK_METHOD1(AddBroadcastHandler,
+               bool(const NetlinkMessageHandler &messge_handler));
+  MOCK_METHOD2(SendMessage,
+               bool(NetlinkMessage *message,
+                    const NetlinkMessageHandler &message_handler));
+  MOCK_METHOD2(SubscribeToEvents,
+               bool(const std::string &family, const std::string &group));
+  MOCK_CONST_METHOD1(GetMessageType, uint16_t(const std::string &name));
 
-  MOCK_METHOD2(SendMessage, bool(NetlinkMessage *message,
-                                 const NetlinkMessageHandler &message_handler));
+  void SetMessageType(std::string name, uint16_t type);
+
+ private:
+  uint16_t DoGetMessageType(std::string name);
+
+  std::map<std::string, uint16_t> message_types_;
+
+  DISALLOW_COPY_AND_ASSIGN(MockNetlinkManager);
 };
 
 }  // namespace shill