}
class PortForwardingTest: public InProcessBrowserTest {
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
+ void SetUpCommandLine(CommandLine* command_line) override {
InProcessBrowserTest::SetUpCommandLine(command_line);
command_line->AppendSwitchASCII(switches::kRemoteDebuggingPort,
base::IntToString(kDefaultDebuggingPort));
AddPortForwardingListener(this);
}
- virtual ~Listener() {
+ ~Listener() override {
DevToolsAndroidBridge::Factory::GetForProfile(profile_)->
RemovePortForwardingListener(this);
}
- virtual void PortStatusChanged(const DevicesStatus& status) OVERRIDE {
+ void PortStatusChanged(const ForwardingStatus& status) override {
if (status.empty() && skip_empty_devices_)
return;
base::MessageLoop::current()->PostTask(
prefs->SetBoolean(prefs::kDevToolsPortForwardingEnabled, false);
content::RunMessageLoop();
}
+
+IN_PROC_BROWSER_TEST_F(PortForwardingTest, DisconnectOnRelease) {
+ Profile* profile = browser()->profile();
+
+ AndroidDeviceManager::DeviceProviders device_providers;
+
+ scoped_refptr<SelfAsDeviceProvider> self_provider(
+ new SelfAsDeviceProvider(kDefaultDebuggingPort));
+ device_providers.push_back(self_provider);
+
+ DevToolsAndroidBridge::Factory::GetForProfile(profile)->
+ set_device_providers_for_test(device_providers);
+
+ ASSERT_TRUE(test_server()->Start());
+ GURL original_url = test_server()->GetURL(kPortForwardingTestPage);
+
+ std::string forwarding_port("8000");
+ GURL forwarding_url(original_url.scheme() + "://" +
+ original_url.host() + ":" + forwarding_port + original_url.path());
+
+ PrefService* prefs = profile->GetPrefs();
+ prefs->SetBoolean(prefs::kDevToolsPortForwardingEnabled, true);
+
+ base::DictionaryValue config;
+ config.SetString(
+ forwarding_port, original_url.host() + ":" + original_url.port());
+ prefs->Set(prefs::kDevToolsPortForwardingConfig, config);
+
+ scoped_ptr<Listener> wait_for_port_forwarding(new Listener(profile));
+ content::RunMessageLoop();
+
+ self_provider->set_release_callback_for_test(
+ base::Bind(&base::MessageLoop::PostTask,
+ base::Unretained(base::MessageLoop::current()),
+ FROM_HERE,
+ base::MessageLoop::QuitClosure()));
+ wait_for_port_forwarding.reset();
+ content::RunMessageLoop();
+}