Home | History | Annotate | Download | only in device
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_
      6 #define CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_
      7 
      8 #include <map>
      9 
     10 #include "base/prefs/pref_change_registrar.h"
     11 #include "chrome/browser/devtools/device/devtools_android_bridge.h"
     12 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
     13 #include "components/keyed_service/core/keyed_service.h"
     14 
     15 class PrefService;
     16 class Profile;
     17 
     18 class PortForwardingController {
     19  public:
     20   typedef DevToolsAndroidBridge::PortStatus PortStatus;
     21   typedef DevToolsAndroidBridge::PortStatusMap PortStatusMap;
     22   typedef DevToolsAndroidBridge::DevicesStatus DevicesStatus;
     23 
     24   explicit PortForwardingController(Profile* profile);
     25 
     26   virtual ~PortForwardingController();
     27 
     28   DevicesStatus DeviceListChanged(
     29       const DevToolsAndroidBridge::RemoteDevices& devices);
     30 
     31  private:
     32   class Connection;
     33   typedef std::map<std::string, Connection*> Registry;
     34 
     35   void OnPrefsChange();
     36 
     37   void UpdateConnections();
     38 
     39   Profile* profile_;
     40   PrefService* pref_service_;
     41   PrefChangeRegistrar pref_change_registrar_;
     42   Registry registry_;
     43 
     44   typedef std::map<int, std::string> ForwardingMap;
     45   ForwardingMap forwarding_map_;
     46 
     47   DISALLOW_COPY_AND_ASSIGN(PortForwardingController);
     48 };
     49 
     50 #endif  // CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_
     51