// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_ #define CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_ #include #include "base/prefs/pref_change_registrar.h" #include "chrome/browser/devtools/device/devtools_android_bridge.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h" #include "components/keyed_service/core/keyed_service.h" class PrefService; class Profile; class PortForwardingController { public: typedef DevToolsAndroidBridge::PortStatus PortStatus; typedef DevToolsAndroidBridge::PortStatusMap PortStatusMap; typedef DevToolsAndroidBridge::DevicesStatus DevicesStatus; explicit PortForwardingController(Profile* profile); virtual ~PortForwardingController(); DevicesStatus DeviceListChanged( const DevToolsAndroidBridge::RemoteDevices& devices); private: class Connection; typedef std::map Registry; void OnPrefsChange(); void UpdateConnections(); void ShutdownConnections(); Profile* profile_; PrefService* pref_service_; PrefChangeRegistrar pref_change_registrar_; Registry registry_; typedef std::map ForwardingMap; ForwardingMap forwarding_map_; DISALLOW_COPY_AND_ASSIGN(PortForwardingController); }; #endif // CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_