Heads merge
authorEugene Ostroukhov <eugeneo@symbian.org>
Wed, 09 Jun 2010 11:21:51 -0700
changeset 362 f8c2079946be
parent 361 08e920dda3d9 (diff)
parent 358 dd7d3426144c (current diff)
child 363 abe05ecbcd0c
Heads merge
org.symbian.tools.wrttools.product/launch/WRT IDE Product (Mac OS X).launch
--- a/chrome-dev-tools-patches/doc	Tue Jun 08 16:12:51 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-hg import [OPTION]... PATCH...
-
-aliases: patch
-
-import an ordered set of patches
-
-    Import a list of patches and commit them individually (unless --no-commit
-    is specified).
-
-    If there are outstanding changes in the working directory, import will
-    abort unless given the -f/--force flag.
-
-    You can import a patch straight from a mail message. Even patches as
-    attachments work (to use the body part, it must have type text/plain or
-    text/x-patch). From and Subject headers of email message are used as
-    default committer and commit message. All text/plain body parts before
-    first diff are added to commit message.
-
-    If the imported patch was generated by hg export, user and description
-    from patch override values from message headers and body. Values given on
-    command line with -m/--message and -u/--user override these.
-
-    If --exact is specified, import will set the working directory to the
-    parent of each patch before applying it, and will abort if the resulting
-    changeset has a different ID than the one recorded in the patch. This may
-    happen due to character set problems or other deficiencies in the text
-    patch format.
-
-    With -s/--similarity, hg will attempt to discover renames and copies in
-    the patch in the same way as 'addremove'.
-
-    To read a patch from standard input, use "-" as the patch name. If a URL
-    is specified, the patch will be downloaded from it. See 'hg help dates'
-    for a list of formats valid for -d/--date.
-
-options:
-
- -p --strip           directory strip option for patch. This has the same
-                      meaning as the corresponding patch option (default: 1)
- -b --base            base path
- -f --force           skip check for outstanding uncommitted changes
-    --no-commit       don't commit, just update the working directory
-    --exact           apply patch to the nodes from which it was generated
-    --import-branch   use any branch information in patch (implied by --exact)
- -m --message         use <text> as commit message
- -l --logfile         read commit message from <file>
- -d --date            record datecode as commit date
- -u --user            record the specified user as committer
- -s --similarity      guess renamed files by similarity (0<=s<=100)
-
-global options:
- -R --repository      repository root directory or name of overlay bundle file
-    --cwd             change working directory
- -y --noninteractive  do not prompt, assume 'yes' for any required answers
- -q --quiet           suppress output
- -v --verbose         enable additional output
-    --config          set/override config option
-    --debug           enable debugging output
-    --debugger        start debugger
-    --encoding        set the charset encoding (default: cp1251)
-    --encodingmode    set the charset encoding mode (default: strict)
-    --traceback       always print a traceback on exception
-    --time            time how long the command takes
-    --profile         print command execution profile
-    --version         output version information and exit
- -h --help            display help and exit
--- a/chrome-dev-tools-patches/stack-line-numbers-patch.txt	Tue Jun 08 16:12:51 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-Index: src/org/chromium/debug/core/model/DebugTargetImpl.java
-===================================================================
---- src/org/chromium/debug/core/model/DebugTargetImpl.java	(revision 307)
-+++ src/org/chromium/debug/core/model/DebugTargetImpl.java	(working copy)
-@@ -474,6 +474,10 @@
-   public WorkspaceBridge.JsLabelProvider getLabelProvider() {
-     return workspaceBridgeFactory.getLabelProvider();
-   }
-+  
-+  public int getLineNumber(CallFrame stackFrame) {
-+    return workspaceRelations.getLineNumber(stackFrame);
-+  }
- 
-   private static class ListenerBlock {
-     private volatile boolean isBlocked = true;
-Index: src/org/chromium/debug/core/model/StackFrame.java
-===================================================================
---- src/org/chromium/debug/core/model/StackFrame.java	(revision 307)
-+++ src/org/chromium/debug/core/model/StackFrame.java	(working copy)
-@@ -194,8 +194,7 @@
-   }
- 
-   public int getLineNumber() throws DebugException {
--    // convert 0-based to 1-based
--    return stackFrame.getLineNumber() + 1;
-+    return getDebugTarget().getLineNumber(stackFrame);
-   }
- 
-   public int getCharStart() throws DebugException {
-Index: src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java
-===================================================================
---- src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java	(revision 307)
-+++ src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java	(working copy)
-@@ -230,6 +230,11 @@
-     }
-   };
- 
-+  public int getLineNumber(CallFrame stackFrame) {
-+    // convert 0-based to 1-based
-+    return stackFrame.getLineNumber() + 1;
-+  }
-+  
-   /**
-    * This very simple source locator works because we provide our own source files.
-    * We'll have to try harder, once we link with resource js files.
-@@ -282,4 +287,5 @@
-       return name;
-     }
-   };
-+
- }
-Index: src/org/chromium/debug/core/model/WorkspaceBridge.java
-===================================================================
---- src/org/chromium/debug/core/model/WorkspaceBridge.java	(revision 307)
-+++ src/org/chromium/debug/core/model/WorkspaceBridge.java	(working copy)
-@@ -7,6 +7,7 @@
- import java.util.Collection;
- 
- import org.chromium.sdk.Breakpoint;
-+import org.chromium.sdk.CallFrame;
- import org.chromium.sdk.JavascriptVm;
- import org.chromium.sdk.Script;
- import org.eclipse.core.resources.IFile;
-@@ -86,6 +87,12 @@
-   BreakpointHandler getBreakpointHandler();
- 
-   /**
-+   * Returns editor line number for the provided call stack frame applying all required 
-+   * editor-specific translations.
-+   */
-+  int getLineNumber(CallFrame stackFrame);
-+
-+  /**
-    * Breakpoint-related aspect of {@link WorkspaceBridge} interface.
-    */
-   interface BreakpointHandler extends IBreakpointListener {
--- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/DebugUtil.java	Tue Jun 08 16:12:51 2010 -0700
+++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/DebugUtil.java	Wed Jun 09 11:21:51 2010 -0700
@@ -36,7 +36,28 @@
         return new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, message, exeption));
     }
 
+    public static IProject getProject(ILaunch configuration) {
+        try {
+            if (WidgetLaunchDelegate.ID.equals(configuration.getLaunchConfiguration().getType().getIdentifier())) {
+                String projectName = configuration.getLaunchConfiguration().getAttribute(IConstants.PROP_PROJECT_NAME,
+                        (String) null);
+                if (projectName != null) {
+                    IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+                    if (project.isAccessible()) {
+                        return project;
+                    }
+                }
+            }
+        } catch (CoreException e) {
+            Activator.log(e);
+        }
+        return null;
+    }
+
     public static IProject getProject(ILaunchConfiguration configuration) throws CoreException {
+        if (!WidgetLaunchDelegate.ID.equals(configuration.getType().getIdentifier())) {
+            return null;
+        }
         String projectName = configuration.getAttribute(IConstants.PROP_PROJECT_NAME, (String) null);
         if (projectName == null) {
             throw createCoreException("Project is not selected", null);
--- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ResourcesChangeListener.java	Tue Jun 08 16:12:51 2010 -0700
+++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ResourcesChangeListener.java	Wed Jun 09 11:21:51 2010 -0700
@@ -85,4 +85,150 @@
         return false;
     }
 
+    //    // TODO Progress indicator - ... files updated of ...
+    //
+    //    public void resourceChanged(IResourceChangeEvent event) {
+    //        try {
+    //            if (event.getDelta() != null) {
+    //
+    //                processDelta(event.getDelta());
+    //            } else {
+    //                // TODO Can't refresh
+    //            }
+    //        } catch (CoreException e) {
+    //            Activator.log(e);
+    //        }
+    //
+    //    }
+    //
+    //    private static final class DeltaProcessor implements IResourceDeltaVisitor {
+    //        private final Map<IProject, DebugTargetImpl> targets;
+    //        private final Map<IFile, Script> updateList = new HashMap<IFile, Script>();
+    //        private boolean hasUnupdatables = false;
+    //
+    //        public DeltaProcessor(Map<IProject, DebugTargetImpl> targets) {
+    //            this.targets = targets;
+    //        }
+    //
+    //        public boolean visit(IResourceDelta delta) throws CoreException {
+    //            final IResource resource = delta.getResource();
+    //            switch (resource.getType()) {
+    //            case IResource.PROJECT:
+    //                return targets.containsKey(resource);
+    //            case IResource.FILE:
+    //                processFile((IFile) resource, targets.get(resource.getProject()));
+    //                return false;
+    //            default:
+    //                return true;
+    //            }
+    //        }
+    //
+    //        private void processFile(final IFile resource, final DebugTargetImpl debugTargetImpl) throws CoreException {
+    //            if (!ProjectUtils.isExcluded(resource)) {
+    //                final VmResource vmResource = debugTargetImpl.getVmResource(resource);
+    //                if (vmResource != null) {
+    //                    updateList.put(resource, vmResource.getScript());
+    //                } else {
+    //                    if (!JavaScriptCore.isJavaScriptLikeFileName(resource.getName())) {
+    //                        hasUnupdatables = true;
+    //                    }
+    //                }
+    //            }
+    //        }
+    //
+    //        public Map<IFile, Script> getUpdateList() {
+    //            return updateList;
+    //        }
+    //
+    //        public boolean hasUnupdatables() {
+    //            return hasUnupdatables;
+    //        }
+    //    }
+    //
+    //    private void processDelta(final IResourceDelta delta) throws CoreException {
+    //        final ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches();
+    //        final Map<IProject, DebugTargetImpl> targets = new HashMap<IProject, DebugTargetImpl>();
+    //        for (ILaunch launch : launches) {
+    //            final IDebugTarget target = launch.getDebugTarget();
+    //            if (!launch.isTerminated() && target instanceof DebugTargetImpl) {
+    //                IProject project = DebugUtil.getProject(launch);
+    //                if (project != null) {
+    //                    targets.put(project, (DebugTargetImpl) target);
+    //                }
+    //            }
+    //        }
+    //
+    //        DeltaProcessor processor = new DeltaProcessor(targets);
+    //        delta.accept(processor);
+    //
+    //        if (processor.getUpdateList().size() > 0) {
+    //            final Collection<IStatus> statuses = new LinkedList<IStatus>();
+    //            for (Entry<IFile, Script> entry : processor.getUpdateList().entrySet()) {
+    //                statuses.add(updateScript(entry.getValue(), entry.getKey()));
+    //            }
+    //        } else if (processor.hasUnupdatables()) {
+    //
+    //        }
+    //    }
+    //
+    //    private IStatus updateScript(Script script, final IFile file) {
+    //        UpdatableScript updatableScript = LiveEditExtension.castToUpdatableScript(script);
+    //
+    //        if (updatableScript == null) {
+    //            throw new RuntimeException();
+    //        }
+    //
+    //        byte[] fileData;
+    //        try {
+    //            fileData = readFileContents(file);
+    //        } catch (IOException e) {
+    //            throw new RuntimeException(e);
+    //        } catch (CoreException e) {
+    //            throw new RuntimeException(e);
+    //        }
+    //        final IStatus[] res = new IStatus[1];
+    //        // We are using default charset here like usually.
+    //        String newSource = new String(fileData);
+    //
+    //        UpdatableScript.UpdateCallback callback = new UpdatableScript.UpdateCallback() {
+    //            public void success(Object report) {
+    //                res[0] = new Status(
+    //                        IStatus.OK,
+    //                        ChromiumDebugPlugin.PLUGIN_ID,
+    //                        String.format(
+    //                                "Script %s was successfully updated on remote: %s", file.getProjectRelativePath().toString(), report)); //$NON-NLS-1$
+    //            }
+    //
+    //            public void failure(String message) {
+    //                res[0] = new Status(IStatus.ERROR, ChromiumDebugPlugin.PLUGIN_ID, String.format(
+    //                        "Script %s cannot be updated: %s", file.getProjectRelativePath().toString(), message)); //$NON-NLS-1$
+    //            }
+    //        };
+    //
+    //        updatableScript.setSourceOnRemote(newSource, callback, null);
+    //        return res[0];
+    //    }
+    //
+    //    private static byte[] readFileContents(IFile file) throws IOException, CoreException {
+    //        InputStream inputStream = file.getContents();
+    //        try {
+    //            return readBytes(inputStream);
+    //        } finally {
+    //            inputStream.close();
+    //        }
+    //    }
+    //
+    //    private static byte[] readBytes(InputStream inputStream) throws IOException {
+    //        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+    //        byte[] array = new byte[1024];
+    //        while (true) {
+    //            int len = inputStream.read(array);
+    //            if (len == -1) {
+    //                break;
+    //            }
+    //            buffer.write(array, 0, len);
+    //        }
+    //        return buffer.toByteArray();
+    //    }
+
 }
--- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/WRTProjectWorkspaceBridge.java	Tue Jun 08 16:12:51 2010 -0700
+++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/WRTProjectWorkspaceBridge.java	Wed Jun 09 11:21:51 2010 -0700
@@ -1,6 +1,5 @@
 package org.symbian.tools.wrttools.debug.internal.launch;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
 
@@ -8,14 +7,13 @@
 import org.chromium.debug.core.model.BreakpointSynchronizer.Direction;
 import org.chromium.debug.core.model.ChromiumLineBreakpoint;
 import org.chromium.debug.core.model.DebugTargetImpl;
-import org.chromium.debug.core.model.StackFrame;
 import org.chromium.debug.core.model.VmResource;
+import org.chromium.debug.core.model.VmResourceId;
 import org.chromium.debug.core.model.WorkspaceBridge;
 import org.chromium.sdk.CallFrame;
 import org.chromium.sdk.JavascriptVm;
 import org.chromium.sdk.JavascriptVm.ScriptsCallback;
 import org.chromium.sdk.Script;
-import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
@@ -23,158 +21,153 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.model.ISourceLocator;
-import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.sourcelookup.ISourceContainer;
+import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
+import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer;
 import org.symbian.tools.wrttools.debug.internal.Activator;
 import org.symbian.tools.wrttools.debug.internal.model.ResourceManager;
 import org.symbian.tools.wrttools.debug.internal.model.WorkspaceBreakpointHandler;
-import org.symbian.tools.wrttools.previewer.PreviewerPlugin;
 
 public class WRTProjectWorkspaceBridge implements WorkspaceBridge {
-	public static final class Factory implements WorkspaceBridge.Factory {
-		private final IProject project;
+    public static final class Factory implements WorkspaceBridge.Factory {
+        private final IProject project;
 
-		public Factory(IProject project) {
-			this.project = project;
-		}
+        public Factory(IProject project) {
+            this.project = project;
+        }
 
-		public WorkspaceBridge attachedToVm(DebugTargetImpl debugTargetImpl,
-				JavascriptVm javascriptVm) {
-			return new WRTProjectWorkspaceBridge(debugTargetImpl, javascriptVm,
-					project);
-		}
+        public WorkspaceBridge attachedToVm(DebugTargetImpl debugTargetImpl, JavascriptVm javascriptVm) {
+            return new WRTProjectWorkspaceBridge(debugTargetImpl, javascriptVm, project);
+        }
 
-		public String getDebugModelIdentifier() {
-			return DEBUG_MODEL_ID;
-		}
+        public String getDebugModelIdentifier() {
+            return DEBUG_MODEL_ID;
+        }
 
-		public JsLabelProvider getLabelProvider() {
-			return new WrtLabelProvider();
-		}
+        public JsLabelProvider getLabelProvider() {
+            return new WrtLabelProvider();
+        }
+    }
 
-	}
-
-	public final static String DEBUG_MODEL_ID = "org.symbian.debug";
+    public final static String DEBUG_MODEL_ID = "org.symbian.debug";
 
-	private final BreakpointHandler breakpointHandler;
-	private final JavascriptVm javascriptVm;
-	private final IProject project;
-	private final ResourceManager resourceManager;
+    private final BreakpointHandler breakpointHandler;
+    private final JavascriptVm javascriptVm;
+    private final IProject project;
+    private final ResourceManager resourceManager;
 
-	public WRTProjectWorkspaceBridge(DebugTargetImpl debugTargetImpl,
-			JavascriptVm javascriptVm, IProject project) {
-		this.javascriptVm = javascriptVm;
-		this.project = project;
+    public WRTProjectWorkspaceBridge(DebugTargetImpl debugTargetImpl, JavascriptVm javascriptVm, IProject project) {
+        this.javascriptVm = javascriptVm;
+        this.project = project;
         this.resourceManager = new ResourceManager();
+        this.sourceLocator = new WebApplicationSourceLocator(resourceManager);
         breakpointHandler = new WorkspaceBreakpointHandler(debugTargetImpl, resourceManager);
-		ILaunch launch = debugTargetImpl.getLaunch();
-		launch.setSourceLocator(sourceLocator);
-	}
+        ILaunch launch = debugTargetImpl.getLaunch();
+        try {
+            sourceLocator.initializeDefaults(launch.getLaunchConfiguration());
+            sourceLocator.setSourceContainers(new ISourceContainer[] { new ProjectSourceContainer(project, false) });
+        } catch (CoreException e) {
+            throw new RuntimeException(e);
+        }
+        launch.setSourceLocator(sourceLocator);
+    }
 
-	public void beforeDetach() {
-		// Do nothing
-	}
-
-	public BreakpointHandler getBreakpointHandler() {
-		return breakpointHandler;
-	}
-
-	public void handleVmResetEvent() {
-		resourceManager.clear();
-	}
+    public void beforeDetach() {
+        // Do nothing
+    }
 
-	public void launchRemoved() {
-		// Do nothing
-	}
+    public BreakpointHandler getBreakpointHandler() {
+        return breakpointHandler;
+    }
+
+    public void handleVmResetEvent() {
+        resourceManager.clear();
+    }
 
-	public void reloadScriptsAtStart() {
-		javascriptVm.getScripts(new ScriptsCallback() {
-			public void failure(String errorMessage) {
-				Activator.log(errorMessage);
-			}
+    public void launchRemoved() {
+        // Do nothing
+    }
 
-			public void success(Collection<Script> scripts) {
-				if (!javascriptVm.isAttached()) {
-					return;
-				}
-				for (Script script : scripts) {
-					resourceManager.addScript(script);
-				}
+    public void reloadScriptsAtStart() {
+        javascriptVm.getScripts(new ScriptsCallback() {
+            public void failure(String errorMessage) {
+                Activator.log(errorMessage);
+            }
 
-				IMarker[] markers;
-				try {
-					markers = project.findMarkers(
-							ChromiumLineBreakpoint.BREAKPOINT_MARKER, true,
-							IResource.DEPTH_INFINITE);
-					Collection<ChromiumLineBreakpoint> breakpoints = new ArrayList<ChromiumLineBreakpoint>(
-							markers.length);
-					for (IMarker marker : markers) {
-						// If it is not ChromiumLineBreakpoint -
-						// something's gone horribly wrong. Better get
-						// ClassCastException
-						ChromiumLineBreakpoint breakpoint = (ChromiumLineBreakpoint) DebugPlugin
-								.getDefault().getBreakpointManager()
-								.getBreakpoint(marker);
-						breakpointHandler.breakpointAdded(breakpoint);
-						breakpoints.add(breakpoint);
-					}
-				} catch (CoreException e) {
-					Activator.log(e);
-				}
+            public void success(Collection<Script> scripts) {
+                if (!javascriptVm.isAttached()) {
+                    return;
+                }
+                for (Script script : scripts) {
+                    resourceManager.addScript(script);
+                }
 
-			}
-		});
-	}
+                IMarker[] markers;
+                try {
+                    markers = project.findMarkers(ChromiumLineBreakpoint.BREAKPOINT_MARKER, true,
+                            IResource.DEPTH_INFINITE);
+                    Collection<ChromiumLineBreakpoint> breakpoints = new ArrayList<ChromiumLineBreakpoint>(
+                            markers.length);
+                    for (IMarker marker : markers) {
+                        // If it is not ChromiumLineBreakpoint -
+                        // something's gone horribly wrong. Better get
+                        // ClassCastException
+                        ChromiumLineBreakpoint breakpoint = (ChromiumLineBreakpoint) DebugPlugin.getDefault()
+                                .getBreakpointManager().getBreakpoint(marker);
+                        breakpointHandler.breakpointAdded(breakpoint);
+                        breakpoints.add(breakpoint);
+                    }
+                } catch (CoreException e) {
+                    Activator.log(e);
+                }
 
-	public void scriptLoaded(Script newScript) {
-		resourceManager.addScript(newScript);
-	}
+            }
+        });
+    }
+
+    public void scriptLoaded(Script newScript) {
+        resourceManager.addScript(newScript);
+    }
 
-	public int getLineNumber(CallFrame stackFrame) {
-		int offset = 0;
-		Script script = stackFrame.getScript();
-		if (script != null) {
-			offset = script.getStartLine();
-		}
-		return offset + stackFrame.getLineNumber() + 1;
-	}
+    public int getLineNumber(CallFrame stackFrame) {
+        int offset = 0;
+        Script script = stackFrame.getScript();
+        if (script != null) {
+            offset = script.getStartLine();
+        }
+        return offset + stackFrame.getLineNumber() + 1;
+    }
 
-	/**
-	 * This very simple source locator works because we provide our own source
-	 * files. We'll have to try harder, once we link with resource js files.
-	 */
-	private final ISourceLocator sourceLocator = new ISourceLocator() {
-		public Object getSourceElement(IStackFrame stackFrame) {
-			if (stackFrame instanceof StackFrame == false) {
-				return null;
-			}
-			StackFrame jsStackFrame = (StackFrame) stackFrame;
+    private final ISourceLookupDirector sourceLocator;
+
+    public VmResource findVmResourceFromWorkspaceFile(IFile file) throws CoreException {
+        return new VmResourceImpl(resourceManager.findVmResource(file), resourceManager.getScript(file), file.getName());
+    }
+
+    private static final class VmResourceImpl implements VmResource {
+        private final String name;
+        private final Script script;
+        private final VmResourceId id;
 
-			Script script = jsStackFrame.getCallFrame().getScript();
-			if (script == null) {
-				return null;
-			}
+        public VmResourceImpl(VmResourceId id, Script script, String name) {
+            super();
+            this.id = id;
+            this.script = script;
+            this.name = name;
+        }
 
-			IFile resource = resourceManager.getResource(script);
-			if (resource != null) {
-				return resource;
-			} else {
-				File file = PreviewerPlugin.getDefault().getHttpPreviewer().getLocalFile(script.getName());
-				if (file != null) {
-					try {
-						return EFS.getStore(file.toURI());
-					} catch (CoreException e) {
-						Activator.log(e);
-					}
-				}
-			}
-			return null;
-		}
-	};
+        public VmResourceId getId() {
+            return id;
+        }
 
-    public VmResource findVmResourceFromWorkspaceFile(IFile resource) throws CoreException {
-        System.out.println(resource);
-        return null;
+        public Script getScript() {
+            return script;
+        }
+
+        public String getFileName() {
+            return name;
+        }
+
     }
 
     public void reloadScript(Script script) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/WebApplicationSourceLocator.java	Wed Jun 09 11:21:51 2010 -0700
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.debug.internal.launch;
+
+import java.io.File;
+
+import org.chromium.debug.core.model.StackFrame;
+import org.chromium.sdk.Script;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.model.ISourceLocator;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
+import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupParticipant;
+import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
+import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant;
+import org.symbian.tools.wrttools.debug.internal.Activator;
+import org.symbian.tools.wrttools.debug.internal.model.ResourceManager;
+import org.symbian.tools.wrttools.previewer.PreviewerPlugin;
+
+public final class WebApplicationSourceLocator extends AbstractSourceLookupDirector implements ISourceLocator,
+        ISourceLookupDirector {
+    public static final class WebApplicationSourceLookupParticipant extends AbstractSourceLookupParticipant {
+        private final ResourceManager resourceManager;
+
+        public WebApplicationSourceLookupParticipant(ResourceManager resourceManager) {
+            this.resourceManager = resourceManager;
+        }
+
+        public String getSourceName(Object object) throws CoreException {
+            Script script = null;
+            if (object instanceof StackFrame) {
+                script = ((StackFrame) object).getCallFrame().getScript();
+            } else if (object instanceof Script) {
+                script = (Script) object;
+            } else {
+                System.out.println("Source lookup request for " + object.getClass());
+            }
+            if (script != null) {
+                IFile resource = resourceManager.getResource(script);
+                if (resource != null) {
+                    return resource.getProjectRelativePath().toString();
+                }
+            }
+            return null;
+        }
+    }
+
+    private final ResourceManager resourceManager;
+
+    public WebApplicationSourceLocator(ResourceManager resourceManager) {
+        this.resourceManager = resourceManager;
+    }
+
+    public Object getSourceElement(IStackFrame stackFrame) {
+		if (stackFrame instanceof StackFrame == false) {
+			return null;
+		}
+		StackFrame jsStackFrame = (StackFrame) stackFrame;
+
+		Script script = jsStackFrame.getCallFrame().getScript();
+		if (script == null) {
+			return null;
+		}
+
+		IFile resource = resourceManager.getResource(script);
+		if (resource != null) {
+			return resource;
+		} else {
+			File file = PreviewerPlugin.getDefault().getHttpPreviewer().getLocalFile(script.getName());
+			if (file != null) {
+				try {
+					return EFS.getStore(file.toURI());
+				} catch (CoreException e) {
+					Activator.log(e);
+				}
+			}
+		}
+		return null;
+	}
+
+    public void initializeParticipants() {
+        addParticipants(new ISourceLookupParticipant[] { new WebApplicationSourceLookupParticipant(resourceManager) });
+    }
+}
\ No newline at end of file
--- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/model/ResourceManager.java	Tue Jun 08 16:12:51 2010 -0700
+++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/model/ResourceManager.java	Wed Jun 09 11:21:51 2010 -0700
@@ -65,4 +65,8 @@
         Script script = resourceToScript.get(resource);
         return script != null ? VmResourceId.forScript(script) : null;
     }
+
+    public Script getScript(IFile file) {
+        return resourceToScript.get(file);
+    }
 }
--- a/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Mac OS X).launch	Tue Jun 08 16:12:51 2010 -0700
+++ b/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Mac OS X).launch	Wed Jun 09 11:21:51 2010 -0700
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
 <booleanAttribute key="append.args" value="true"/>
 <booleanAttribute key="askclear" value="true"/>
@@ -21,8 +21,8 @@
 <stringAttribute key="product" value="org.symbian.tools.wrttools.product.product"/>
 <stringAttribute key="productFile" value="\org.symbian.tools.wrttools.product\wrt-ide.product"/>
 <booleanAttribute key="restart" value="false"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.wst.jsdt.support.firefox@default:default,org.eclipse.wst.common.snippets@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.security.macosx@default:false,org.eclipse.swt.cocoa.macosx@default:false,org.apache.commons.logging@default:default,org.eclipse.update.ui@default:default,org.eclipse.wst.xml.xpath.ui@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.core.runtime.compatibility.auth@default:default,org.mozilla.xpcom@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.jsch.core@default:default,org.eclipse.wst.jsdt.manipulation@default:default,org.apache.lucene@default:default,org.eclipse.wst.css.core@default:default,org.apache.lucene.analysis@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.wst.jsdt.doc@default:default,org.eclipse.wst.xml.core@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.rcp@default:default,org.eclipse.wst.common.emf@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.ui.forms@default:default,org.mortbay.jetty.server@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.navigator@default:default,org.apache.xerces@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.wst.common.uriresolver@default:default,org.eclipse.team.cvs.core@default:default,org.eclipse.wst.common.frameworks.ui@default:default,org.eclipse.wst.common.environment@default:default,org.eclipse.core.net@default:default,org.eclipse.emf.ecore.edit@default:default,java_cup.runtime@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.sat4j.pb@default:default,org.eclipse.core.filebuffers@default:default,org.apache.commons.el@default:default,org.eclipse.team.ui@default:default,org.eclipse.debug.core@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.cvs@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.platform.doc.user@default:default,org.eclipse.equinox.app@default:default,org.mozilla.xulrunner.carbon.macosx@default:false,org.eclipse.wst.sse.core@default:default,org.mortbay.jetty.util@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.wst.validation.infopop@default:default,org.eclipse.wst.xmleditor.doc.user@default:default,org.apache.xalan@default:default,org.eclipse.ui.workbench.compatibility@default:false,org.apache.commons.codec@default:default,org.eclipse.wst.common.ui@default:default,org.eclipse.text@default:default,org.eclipse.emf.edit.ui@default:default,org.mozilla.xulrunner@default:default,org.eclipse.wst.jsdt.core@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.help.ui@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.core.boot@default:default,org.eclipse.core.runtime@default:true,org.eclipse.draw2d@default:default,org.eclipse.gef@default:default,org.eclipse.ui.browser@default:default,org.eclipse.wst.jsdt.support.ie@default:default,org.eclipse.equinox.launcher.cocoa.macosx@default:false,org.eclipse.wst.xml.ui.infopop@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.core.expressions@default:default,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.common@2:true,org.eclipse.wst.html.core@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.update.configurator@3:true,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.wst.sse.ui.infopop@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.wst.jsdt.web.core@default:default,org.eclipse.compare@default:default,org.eclipse.equinox.launcher@default:default,org.eclipse.update.core@default:default,javax.servlet@default:default,org.eclipse.wst.internet.cache@default:default,org.eclipse.equinox.p2.director@default:default,org.apache.commons.lang@default:default,org.eclipse.core.variables@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding@default:default,org.eclipse.equinox.p2.metadata@default:default,org.apache.xml.resolver@default:default,org.eclipse.help.appserver@default:default,org.apache.commons.httpclient@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.filesystem.macosx@default:false,org.apache.velocity@default:default,org.eclipse.wst.html.ui.infopop@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.wst.dtd.core@default:default,org.eclipse.wst.xml.ui@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.wst.sse.ui@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.help@default:default,org.eclipse.core.commands@default:default,org.eclipse.emf.edit@default:default,javax.xml@default:default,org.sat4j.core@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.wst.jsdt.web.ui@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.jface@default:default,org.eclipse.emf.common@default:default,org.eclipse.osgi.util@default:default,org.eclipse.wst.doc.user@default:default,org.eclipse.compare.core@default:default,org.apache.log4j@default:default,org.apache.xml.serializer@default:default,org.apache.bcel@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.wst.common.infopop@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.jface.text@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.ui.editors@default:default,org.eclipse.wst.xml.xpath2.processor@default:default,org.eclipse.help.webapp@default:default,org.eclipse.ui.views@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.wst.jsdt.ui@default:default,org.eclipse.ui.console@default:default,com.jcraft.jsch@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.wst.standard.schemas@default:default,org.eclipse.wst.css.ui@default:default,org.eclipse.wst.common.modulecore@default:default,org.eclipse.wst.sse.doc.user@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.wst.common.frameworks@default:default,org.eclipse.help.base@default:default,org.eclipse.wst.html.ui@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.wst.validation.ui@default:default,org.eclipse.search@default:default,org.apache.commons.collections@default:default,org.eclipse.debug.ui@default:default,org.eclipse.ui.cocoa@default:false,org.eclipse.core.jobs@default:default,org.eclipse.ui@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.wst.validation@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.wst.internet.monitor.ui@default:default,org.eclipse.ecf@default:default,org.eclipse.swt@default:default,com.ibm.icu@default:default,org.eclipse.wst.internet.monitor.core@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.wst.common.project.facet.core@default:default,org.eclipse.jem.util@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.net@default:default,org.eclipse.equinox.util@default:default,org.eclipse.wst.xml.xpath.core@default:default,org.eclipse.osgi.services@default:default,org.apache.jasper@default:default,org.eclipse.equinox.security@default:default,javax.servlet.jsp@default:default,org.eclipse.wst.common.core@default:default,org.eclipse.ui.intro@default:default,org.eclipse.osgi@-1:true,org.eclipse.wst.common.emfworkbench.integration@default:default,org.eclipse.jsch.ui@default:default,org.jdom@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.platform@default:default,org.eclipse.emf.ecore.change@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.symbian.tools.wrttools@default:default,org.symbian.tools.wrttools.debug.core@default:default,org.symbian.tools.wrttools.previewer@default:default,org.symbian.tools.wrttools.product@default:default,org.chromium.sdk@default:default,org.symbian.tools.wrttools.doc.WebDeveloper@default:default,org.chromium.debug.ui@default:default,org.w3c.css@default:default,org.chromium.debug.core@default:default"/>
+<stringAttribute key="selected_target_plugins" value="org.eclipse.ui.workbench.compatibility@default:false,org.eclipse.equinox.p2.repository@default:default,org.mortbay.jetty.util@default:default,org.eclipse.search@default:default,org.eclipse.rcp@default:default,org.eclipse.wst.html.ui@default:default,org.eclipse.ui@default:default,org.eclipse.core.boot@default:default,org.sat4j.pb@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.wst.xml.core@default:default,org.apache.lucene.analysis@default:default,org.eclipse.wst.sse.ui@default:default,org.apache.log4j@default:default,org.eclipse.wst.common.ui@default:default,org.eclipse.team.ui@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.wst.validation.infopop@default:default,org.apache.xml.serializer@default:default,org.apache.commons.codec@default:default,org.eclipse.equinox.security@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,com.ibm.icu@default:default,org.eclipse.swt.cocoa.macosx@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.wst.standard.schemas@default:default,javax.servlet@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.jface.text@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.wst.common.infopop@default:default,org.eclipse.gef@default:default,org.eclipse.jface@default:default,org.eclipse.wst.common.frameworks@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding@default:default,org.jdom@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.ui.console@default:default,org.eclipse.wst.common.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.wst.jsdt.support.firefox@default:default,org.eclipse.help.appserver@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.apache.lucene@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.help.ui@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.wst.internet.monitor.ui@default:default,org.apache.xml.resolver@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.mozilla.xpcom@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.core.net@default:default,org.eclipse.osgi.util@default:default,javax.xml@default:default,org.eclipse.update.configurator@3:true,org.eclipse.ui.presentations.r21@default:default,org.eclipse.wst.dtd.core@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.wst.xml.ui@default:default,org.eclipse.draw2d@default:default,com.jcraft.jsch@default:default,org.eclipse.wst.common.project.facet.core@default:default,org.eclipse.ui.intro.universal@default:default,javax.servlet.jsp@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jsch.core@default:default,org.sat4j.core@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.wst.common.emfworkbench.integration@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.platform@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.equinox.util@default:default,org.eclipse.wst.sse.core@default:default,org.eclipse.help.webapp@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.wst.xml.xpath.core@default:default,org.eclipse.equinox.common@2:true,org.eclipse.ecf@default:default,org.mozilla.xulrunner.carbon.macosx@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.ui.net@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.ui.cocoa@default:false,org.eclipse.swt@default:default,org.eclipse.help@default:default,org.mozilla.xulrunner@default:default,org.eclipse.wst.validation@default:default,org.eclipse.compare@default:default,org.apache.bcel@default:default,org.eclipse.wst.doc.user@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.update.ui@default:default,org.eclipse.wst.jsdt.manipulation@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.wst.jsdt.web.ui@default:default,org.eclipse.wst.html.core@default:default,org.eclipse.wst.validation.ui@default:default,org.eclipse.wst.jsdt.doc@default:default,org.eclipse.ui.views@default:default,org.apache.commons.httpclient@default:default,org.eclipse.wst.xmleditor.doc.user@default:default,org.eclipse.wst.common.emf@default:default,org.eclipse.update.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.wst.sse.doc.user@default:default,org.eclipse.debug.core@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.security.ui@default:default,org.apache.commons.collections@default:default,org.eclipse.wst.sse.ui.infopop@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.wst.css.core@default:default,java_cup.runtime@default:default,org.eclipse.equinox.ds@1:true,org.apache.velocity@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.core.variables@default:default,org.eclipse.core.commands@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.wst.common.snippets@default:default,org.apache.commons.logging@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.wst.common.modulecore@default:default,org.eclipse.wst.jsdt.web.core@default:default,org.eclipse.wst.jsdt.core@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.apache.commons.el@default:default,org.apache.commons.lang@default:default,org.eclipse.ui.browser@default:default,org.mortbay.jetty.server@default:default,org.eclipse.ui.intro@default:default,org.eclipse.debug.ui@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.registry@default:default,org.apache.jasper@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.apache.xalan@default:default,org.eclipse.wst.xml.ui.infopop@default:default,org.eclipse.wst.jsdt.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.wst.css.ui@default:default,org.eclipse.equinox.launcher.cocoa.macosx@default:false,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.core.filesystem.macosx@default:false,org.eclipse.equinox.http.registry@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.wst.common.frameworks.ui@default:default,org.eclipse.wst.common.environment@default:default,org.eclipse.jem.util@default:default,org.eclipse.wst.common.uriresolver@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.wst.jsdt.support.ie@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.wst.internet.cache@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.wst.internet.monitor.core@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.cvs@default:default,org.eclipse.osgi@-1:true,org.eclipse.team.cvs.core@default:default,org.eclipse.core.expressions@default:default,org.apache.xerces@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.team.core@default:default,org.eclipse.help.base@default:default,org.eclipse.wst.xml.xpath.ui@default:default,org.eclipse.equinox.security.macosx@default:false,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.resources@default:default,org.eclipse.wst.xml.xpath2.processor@default:default,org.eclipse.wst.html.ui.infopop@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.osgi.services@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.symbian.tools.wrttools.previewer@default:default,org.symbian.tools.wrttools.debug.core@default:default,org.symbian.tools.wrttools.product@default:default,org.chromium.debug.ui@default:default,org.symbian.tools.wrttools@default:default,org.symbian.tools.wrttools.doc.WebDeveloper@default:default,org.chromium.sdk@default:default,org.w3c.css@default:default,org.chromium.debug.core@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>