[Media Router] Reconnect MediaRouteControllers after extension suspension

- Make MediaRouteController use EventPageRequestManager to queue calls to the extension MediaController when the extension is suspended
- Don't destroy MRController when it's disconnected from the extension controller
- Make MediaRouterDesktop reconnect MRControllers to extension controllers when the extension wakes up

Extension-side change: http://cl/163893310

Bug: 751269
Change-Id: I6acf38afe54df0389b024c9caee10cc3b34a8e16
Reviewed-on: https://chromium-review.googlesource.com/602709
Commit-Queue: Takumi Fujimoto <[email protected]>
Reviewed-by: Derek Cheng <[email protected]>
Cr-Commit-Position: refs/heads/master@{#494699}
diff --git a/chrome/browser/media/router/media_router_base.h b/chrome/browser/media/router/media_router_base.h
index 807ac26..ecbecf5 100644
--- a/chrome/browser/media/router/media_router_base.h
+++ b/chrome/browser/media/router/media_router_base.h
@@ -12,6 +12,7 @@
 #include "base/callback_list.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
+#include "build/build_config.h"
 #include "chrome/browser/media/router/media_router.h"
 #include "chrome/browser/media/router/media_routes_observer.h"
 #include "chrome/common/media_router/media_route.h"
@@ -34,8 +35,10 @@
 
   std::vector<MediaRoute> GetCurrentRoutes() const override;
 
+#if !defined(OS_ANDROID)
   scoped_refptr<MediaRouteController> GetRouteController(
       const MediaRoute::Id& route_id) override;
+#endif  // !defined(OS_ANDROID)
 
   void RegisterRemotingSource(int32_t tab_id,
                               CastRemotingConnector* remoting_source) override;
@@ -100,9 +103,11 @@
   // KeyedService
   void Shutdown() override;
 
+#if !defined(OS_ANDROID)
   // MediaRouter
   void DetachRouteController(const MediaRoute::Id& route_id,
                              MediaRouteController* controller) override;
+#endif  // !defined(OS_ANDROID)
 
   std::unique_ptr<InternalMediaRoutesObserver> internal_routes_observer_;
   bool initialized_;