10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_ 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <map> 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/prefs/pref_change_registrar.h" 110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/devtools/device/devtools_android_bridge.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h" 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/core/keyed_service.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class PrefService; 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass Profile; 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass PortForwardingController { 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef DevToolsAndroidBridge::PortStatus PortStatus; 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef DevToolsAndroidBridge::PortStatusMap PortStatusMap; 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef DevToolsAndroidBridge::DevicesStatus DevicesStatus; 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch explicit PortForwardingController(Profile* profile); 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 26d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual ~PortForwardingController(); 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DevicesStatus DeviceListChanged( 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const DevToolsAndroidBridge::RemoteDevices& devices); 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) class Connection; 33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch typedef std::map<std::string, Connection*> Registry; 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnPrefsChange(); 36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void UpdateConnections(); 38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Profile* profile_; 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) PrefService* pref_service_; 41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PrefChangeRegistrar pref_change_registrar_; 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Registry registry_; 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch typedef std::map<int, std::string> ForwardingMap; 45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ForwardingMap forwarding_map_; 46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PortForwardingController); 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif // CHROME_BROWSER_DEVTOOLS_DEVICE_PORT_FORWARDING_CONTROLLER_H_ 51