// Copyright (c) 2011 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. package org.chromium.debug.ui.launcher; import org.chromium.debug.core.model.JavascriptVmEmbedder.ConnectionToRemote; import org.chromium.debug.core.model.BreakpointSynchronizer; import org.chromium.debug.core.model.JavascriptVmEmbedderFactory; import org.chromium.debug.core.model.LaunchParams; import org.chromium.debug.core.model.NamedConnectionLoggerFactory; import org.chromium.debug.ui.DialogBasedTabSelector; import org.chromium.sdk.ConnectionLogger; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.chromium.sdk.wip.WipBackend; import org.chromium.sdk.wip.eclipse.BackendRegistry; public class WipLaunchType extends LaunchTypeBase { @Override protected ConnectionToRemote createConnectionToRemote(String host, int port, final ILaunch launch, boolean addConsoleLogger) throws CoreException { ILaunchConfiguration config = launch.getLaunchConfiguration(); String wipBackendId = config.getAttribute(LaunchParams.WIP_BACKEND_ID, (String) null); if (wipBackendId == null) { throw new RuntimeException("Missing 'wip backend' parameter in launch config"); } WipBackend backend; findWipBackend: { for (WipBackend nextBackend : BackendRegistry.INSTANCE.getBackends()) { if (nextBackend.getId().equals(wipBackendId)) { backend = nextBackend; break findWipBackend; } } // Nothing found. throw new RuntimeException("Cannot find required wip backend in Eclipse: " + wipBackendId); } NamedConnectionLoggerFactory consoleFactory; if (addConsoleLogger) { consoleFactory = new NamedConnectionLoggerFactory() { public ConnectionLogger createLogger(String title) { return LaunchTypeBase.createConsoleAndLogger(launch, false, title); } }; } else { consoleFactory = NO_CONNECTION_LOGGER_FACTORY; } return JavascriptVmEmbedderFactory.connectToWipBrowser(host, port, backend, consoleFactory, consoleFactory, DialogBasedTabSelector.WIP_INSTANCE); } @Override protected BreakpointSynchronizer.Direction getPresetSyncDirection() { return BreakpointSynchronizer.Direction.RESET_REMOTE; } }