Display Java method and class names in chrome dev tools.
Chrome dev tools support renaming of functions in compiled
JavaScript by adding a property called displayName to the function.
Throughout dev tools this name will be used instead of the JavaScript
function name, improving the expierence in the debugger, profiler and
timeline.
Change-Id: Ic5d29b7b15772ac996bd6cb310d1370bc28c4d70
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
index c8c1bf7..96ad98a 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
@@ -20,6 +20,7 @@
import com.google.gwt.dev.cfg.Properties;
import com.google.gwt.dev.jjs.JsOutputOption;
import com.google.gwt.dev.js.JsNamespaceOption;
+import com.google.gwt.dev.util.arg.DisplayNameMode;
import com.google.gwt.dev.util.arg.JsInteropMode;
import com.google.gwt.dev.util.arg.OptionOptimize;
import com.google.gwt.dev.util.arg.SourceLevel;
@@ -43,6 +44,7 @@
private final boolean strictPublicResources;
private final boolean strictSourceResources;
private final JsInteropMode jsInteropMode;
+ private final DisplayNameMode displayNameMode;
CompilerOptionsImpl(CompileDir compileDir, String moduleName, Options options) {
this.compileDir = compileDir;
@@ -54,6 +56,7 @@
this.strictPublicResources = options.enforceStrictResources();
this.logLevel = options.getLogLevel();
this.jsInteropMode = options.getJsInteropMode();
+ this.displayNameMode = options.getDisplayNameMode();
}
@Override
@@ -325,4 +328,9 @@
public boolean warnMissingDeps() {
return false;
}
+
+ @Override
+ public DisplayNameMode getDisplayNameMode() {
+ return displayNameMode;
+ }
}
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
index 882c179..1b1d3e4 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
@@ -23,7 +23,9 @@
import com.google.gwt.dev.util.arg.ArgHandlerJsInteropMode;
import com.google.gwt.dev.util.arg.ArgHandlerLogLevel;
import com.google.gwt.dev.util.arg.ArgHandlerSourceLevel;
+import com.google.gwt.dev.util.arg.DisplayNameMode;
import com.google.gwt.dev.util.arg.JsInteropMode;
+import com.google.gwt.dev.util.arg.OptionDisplayNameLevel;
import com.google.gwt.dev.util.arg.OptionIncrementalCompile;
import com.google.gwt.dev.util.arg.OptionJsInteropMode;
import com.google.gwt.dev.util.arg.OptionLogLevel;
@@ -78,6 +80,7 @@
private boolean strictResources = false;
private int compileTestRecompiles = 0;
private JsInteropMode jsInteropMode = JsInteropMode.NONE;
+ private DisplayNameMode displayNameMode = DisplayNameMode.ABBREVIATED;
/**
* Sets each option to the appropriate value, based on command-line arguments.
@@ -303,6 +306,7 @@
registerHandler(new BindAddressFlag());
registerHandler(new CompileTestFlag());
registerHandler(new CompileTestRecompilesFlag());
+ registerHandler(new DisplayNameLevel());
registerHandler(new FailOnErrorFlag());
registerHandler(new ModuleNameArgument());
registerHandler(new NoPrecompileFlag());
@@ -700,4 +704,52 @@
return true;
}
}
+
+ private class DisplayNameLevel extends ArgHandlerString {
+
+ public DisplayNameLevel() {
+ }
+
+ @Override
+ public String getPurpose() {
+ return "Emit extra information allow chrome dev tools to display Java identifiers in many" +
+ " places instead of JavaScript functions.";
+ }
+
+ @Override
+ public String getTag() {
+ return "-XdisplayNameMode";
+ }
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean setString(String str) {
+ String value = str.toUpperCase();
+ if ("NONE".equals(value)) {
+ displayNameMode = DisplayNameMode.NONE;
+ } else if ("ONLY_METHOD_NAME".equals(value)) {
+ displayNameMode = DisplayNameMode.ONLY_METHOD_NAME;
+ } else if ("ABBREVIATED".equals(value)) {
+ displayNameMode = DisplayNameMode.ABBREVIATED;
+ } else if ("FULL".equals(value)) {
+ displayNameMode = DisplayNameMode.FULL;
+ } else {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String[] getTagArgs() {
+ return new String[] {"NONE | ONLY_METHOD_NAME | ABBREVIATED | FULL"};
+ }
+ }
+
+ public DisplayNameMode getDisplayNameMode() {
+ return displayNameMode;
+ }
}
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
index 38dd1c4..49f3510 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
@@ -82,7 +82,7 @@
new AtomicReference<ResourceLoader>();
private final CompilerContext.Builder compilerContextBuilder = new CompilerContext.Builder();
private CompilerContext compilerContext;
- private Options options;
+ private final Options options;
Recompiler(OutboxDir outboxDir, LauncherDir launcherDir, String inputModuleName, Options options) {
this.outboxDir = outboxDir;
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
index 7820658..c3c30f2 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
@@ -21,6 +21,7 @@
import com.google.gwt.dev.cfg.Properties;
import com.google.gwt.dev.jjs.JsOutputOption;
import com.google.gwt.dev.js.JsNamespaceOption;
+import com.google.gwt.dev.util.arg.DisplayNameMode;
import com.google.gwt.dev.util.arg.JsInteropMode;
import com.google.gwt.dev.util.arg.SourceLevel;
@@ -299,4 +300,9 @@
public final void setWorkDir(File dir) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public void setDisplayNameMode(DisplayNameMode displayNameMode) {
+ throw new UnsupportedOperationException();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/Compiler.java b/dev/core/src/com/google/gwt/dev/Compiler.java
index 11e59a1..77eec76 100644
--- a/dev/core/src/com/google/gwt/dev/Compiler.java
+++ b/dev/core/src/com/google/gwt/dev/Compiler.java
@@ -32,6 +32,7 @@
import com.google.gwt.dev.util.PersistenceBackedObject;
import com.google.gwt.dev.util.Util;
import com.google.gwt.dev.util.arg.ArgHandlerDeployDir;
+import com.google.gwt.dev.util.arg.ArgHandlerDisplayNameLevel;
import com.google.gwt.dev.util.arg.ArgHandlerExtraDir;
import com.google.gwt.dev.util.arg.ArgHandlerIncrementalCompile;
import com.google.gwt.dev.util.arg.ArgHandlerLocalWorkers;
@@ -69,6 +70,7 @@
registerHandler(new ArgHandlerDeployDir(options));
registerHandler(new ArgHandlerExtraDir(options));
registerHandler(new ArgHandlerSaveSourceOutput(options));
+ registerHandler(new ArgHandlerDisplayNameLevel(options));
}
@Override
diff --git a/dev/core/src/com/google/gwt/dev/DevMode.java b/dev/core/src/com/google/gwt/dev/DevMode.java
index 439507a..d8003af 100644
--- a/dev/core/src/com/google/gwt/dev/DevMode.java
+++ b/dev/core/src/com/google/gwt/dev/DevMode.java
@@ -34,6 +34,7 @@
import com.google.gwt.dev.util.Util;
import com.google.gwt.dev.util.arg.ArgHandlerDeployDir;
import com.google.gwt.dev.util.arg.ArgHandlerDisableUpdateCheck;
+import com.google.gwt.dev.util.arg.ArgHandlerDisplayNameLevel;
import com.google.gwt.dev.util.arg.ArgHandlerExtraDir;
import com.google.gwt.dev.util.arg.ArgHandlerIncrementalCompile;
import com.google.gwt.dev.util.arg.ArgHandlerJsInteropMode;
@@ -242,6 +243,7 @@
registerHandler(new ArgHandlerModulePathPrefix(options));
registerHandler(new ArgHandlerWorkDirOptional(options));
registerHandler(new ArgHandlerDisableUpdateCheck(options));
+ registerHandler(new ArgHandlerDisplayNameLevel(options));
registerHandler(new ArgHandlerSourceLevel(options));
registerHandler(new ArgHandlerJsInteropMode(options));
registerHandler(new ArgHandlerIncrementalCompile(options));
diff --git a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
index 68f6105..68c0fc4 100644
--- a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
@@ -20,6 +20,7 @@
import com.google.gwt.dev.jjs.JJSOptionsImpl;
import com.google.gwt.dev.jjs.JsOutputOption;
import com.google.gwt.dev.js.JsNamespaceOption;
+import com.google.gwt.dev.util.arg.DisplayNameMode;
import com.google.gwt.dev.util.arg.JsInteropMode;
import com.google.gwt.dev.util.arg.SourceLevel;
@@ -41,6 +42,7 @@
private boolean validateOnly;
private boolean warnOverlappingSource;
private boolean warnMissingDeps;
+ private DisplayNameMode displayNameMode;
public PrecompileTaskOptionsImpl() {
}
@@ -76,6 +78,7 @@
setMissingDepsFile(other.getMissingDepsFile());
setValidateOnly(other.isValidateOnly());
setEnabledGeneratingOnShards(other.isEnabledGeneratingOnShards());
+ setDisplayNameMode(other.getDisplayNameMode());
}
@Override
@@ -486,4 +489,14 @@
@Override public void setJsInteropMode(JsInteropMode mode) {
jjsOptions.setJsInteropMode(mode);
}
+
+ @Override
+ public DisplayNameMode getDisplayNameMode() {
+ return displayNameMode;
+ }
+
+ @Override
+ public void setDisplayNameMode(DisplayNameMode displayNameMode) {
+ this.displayNameMode = displayNameMode;
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
index 3c66a3f..67055dd 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
@@ -21,6 +21,7 @@
import com.google.gwt.dev.util.arg.OptionClusterSimilarFunctions;
import com.google.gwt.dev.util.arg.OptionDisableCastChecking;
import com.google.gwt.dev.util.arg.OptionDisableClassMetadata;
+import com.google.gwt.dev.util.arg.OptionDisplayNameLevel;
import com.google.gwt.dev.util.arg.OptionEnableAssertions;
import com.google.gwt.dev.util.arg.OptionEnableClosureCompiler;
import com.google.gwt.dev.util.arg.OptionFragmentCount;
@@ -58,5 +59,5 @@
OptionStrictPublicResources, OptionSoycHtmlDisabled, OptionEnableClosureCompiler,
OptionFragmentsMerge, OptionFragmentCount, OptionSourceLevel, OptionNamespace,
OptionCheckedMode, OptionJsInteropMode, OptionUseDetailedTypeIds,
- OptionAllowJDTConstantInlining {
+ OptionAllowJDTConstantInlining, OptionDisplayNameLevel {
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
index a0a9ebd..a3d2183 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
@@ -16,6 +16,7 @@
package com.google.gwt.dev.jjs;
import com.google.gwt.dev.js.JsNamespaceOption;
+import com.google.gwt.dev.util.arg.DisplayNameMode;
import com.google.gwt.dev.util.arg.JsInteropMode;
import com.google.gwt.dev.util.arg.OptionOptimize;
import com.google.gwt.dev.util.arg.SourceLevel;
@@ -57,6 +58,7 @@
private boolean strictPublicResources = false;
private JsInteropMode jsInteropMode = JsInteropMode.NONE;
private boolean useDetailedTypeIds = false;
+ private DisplayNameMode displayNameMode = DisplayNameMode.NONE;
public JJSOptionsImpl() {
}
@@ -95,6 +97,7 @@
setNamespace(other.getNamespace());
setJsInteropMode(other.getJsInteropMode());
setUseDetailedTypeIds(other.useDetailedTypeIds());
+ setDisplayNameMode(other.getDisplayNameMode());
}
@Override
@@ -408,4 +411,13 @@
return useDetailedTypeIds;
}
+ @Override
+ public DisplayNameMode getDisplayNameMode() {
+ return displayNameMode;
+ }
+
+ @Override
+ public void setDisplayNameMode(DisplayNameMode displayNameMode) {
+ this.displayNameMode = displayNameMode;
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
index e76548f..4a882ae 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
@@ -164,6 +164,7 @@
import com.google.gwt.dev.util.Name.SourceName;
import com.google.gwt.dev.util.Pair;
import com.google.gwt.dev.util.StringInterner;
+import com.google.gwt.dev.util.arg.DisplayNameMode;
import com.google.gwt.dev.util.arg.JsInteropMode;
import com.google.gwt.dev.util.arg.OptionOptimize;
import com.google.gwt.dev.util.collect.Stack;
@@ -903,6 +904,14 @@
// don't add polymorphic JsFuncs, inline decl into vtable assignment
if (func != null && !polymorphicJsFunctions.contains(func)) {
globalStmts.add(func.makeStmt());
+
+ if (shouldEmitDisplayNames()) {
+ // get the original method for this function
+ JMethod originalMethod = javaMethodForJSFunction.get(func);
+ JsExprStmt displayNameAssignment =
+ outputDisplayName(func.getName().makeRef(func.getSourceInfo()), originalMethod);
+ globalStmts.add(displayNameAssignment);
+ }
}
}
@@ -1214,6 +1223,8 @@
JsFunction jsFunc = pop(); // body
+ javaMethodForJSFunction.put(jsFunc, x);
+
if (!program.isInliningAllowed(x)) {
jsProgram.disallowInlining(jsFunc);
}
@@ -2605,6 +2616,37 @@
JsExprStmt polyAssignment = createAssignment(lhs, rhs).makeStmt();
globalStmts.add(polyAssignment);
vtableInitForMethodMap.put(polyAssignment, method);
+
+ if (shouldEmitDisplayNames()) {
+ JsExprStmt displayNameAssignment = outputDisplayName(lhs, method);
+ globalStmts.add(displayNameAssignment);
+ vtableInitForMethodMap.put(displayNameAssignment, method);
+ }
+ }
+
+ private JsExprStmt outputDisplayName(JsNameRef function, JMethod method) {
+ JsNameRef displayName = new JsNameRef(function.getSourceInfo(), "displayName");
+ displayName.setQualifier(function);
+ String displayStringName = getDisplayName(method);
+ JsStringLiteral displayMethodName = new JsStringLiteral(function.getSourceInfo(), displayStringName);
+ return createAssignment(displayName, displayMethodName).makeStmt();
+ }
+
+ private boolean shouldEmitDisplayNames() {
+ return displayNames != DisplayNameMode.NONE;
+ }
+
+ private String getDisplayName(JMethod method) {
+ switch (displayNames) {
+ case ONLY_METHOD_NAME:
+ return method.getName();
+ case ABBREVIATED:
+ return method.getEnclosingType().getShortName() + "." + method.getName();
+ case FULL:
+ return method.getEnclosingType().getName() + "." + method.getName();
+ default:
+ throw new RuntimeException("Invalid value for displayNames: " + displayNames);
+ }
}
/**
@@ -3248,6 +3290,7 @@
private final Map<JAbstractMethodBody, JsFunction> methodBodyMap = Maps.newIdentityHashMap();
private final Map<HasName, JsName> names = Maps.newIdentityHashMap();
+ private final Map<JsFunction, JMethod> javaMethodForJSFunction = Maps.newIdentityHashMap();
/**
* Contains JsNames for the Object instance methods, such as equals, hashCode,
@@ -3315,6 +3358,8 @@
private final PermProps props;
+ private DisplayNameMode displayNames;
+
private GenerateJavaScriptAST(TreeLogger logger, JProgram program, JsProgram jsProgram,
CompilerContext compilerContext, TypeMapper<?> typeMapper,
Map<StandardSymbolData, JsName> symbolTable, PermProps props) {
@@ -3329,6 +3374,7 @@
this.output = compilerContext.getOptions().getOutput();
this.optimize =
compilerContext.getOptions().getOptimizationLevel() > OptionOptimize.OPTIMIZE_LEVEL_DRAFT;
+ this.displayNames = compilerContext.getOptions().getDisplayNameMode();
this.hasWholeWorldKnowledge = compilerContext.shouldCompileMonolithic()
&& !compilerContext.getOptions().isIncrementalCompileEnabled();
this.compilePerFile = compilerContext.getOptions().isIncrementalCompileEnabled();
diff --git a/dev/core/src/com/google/gwt/dev/shell/SuperDevListener.java b/dev/core/src/com/google/gwt/dev/shell/SuperDevListener.java
index ffac0fd..a31a3b6 100644
--- a/dev/core/src/com/google/gwt/dev/shell/SuperDevListener.java
+++ b/dev/core/src/com/google/gwt/dev/shell/SuperDevListener.java
@@ -22,6 +22,7 @@
import com.google.gwt.core.ext.linker.impl.StandardLinkerContext;
import com.google.gwt.dev.DevMode.HostedModeOptions;
import com.google.gwt.dev.cfg.ModuleDef;
+import com.google.gwt.dev.util.arg.DisplayNameMode;
import com.google.gwt.dev.util.arg.JsInteropMode;
import java.io.File;
@@ -181,6 +182,11 @@
for (String mod : options.getModuleNames()) {
args.add(mod);
}
+
+ if (options.getDisplayNameMode() != DisplayNameMode.ABBREVIATED) {
+ args.add("-XdisplayNameMode");
+ args.add(options.getDisplayNameMode().toString());
+ }
return args;
}
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisplayNameLevel.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisplayNameLevel.java
new file mode 100644
index 0000000..571fa6e
--- /dev/null
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisplayNameLevel.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.dev.util.arg;
+
+import com.google.gwt.util.tools.ArgHandlerString;
+
+/**
+ * Argument handler set setting the display name setting in the compiler.
+ */
+public class ArgHandlerDisplayNameLevel extends ArgHandlerString {
+
+ private final OptionDisplayNameLevel option;
+
+ public ArgHandlerDisplayNameLevel(OptionDisplayNameLevel option) {
+ this.option = option;
+ }
+
+ @Override
+ public String getPurpose() {
+ return "Emit extra information allow chrome dev tools to display Java identifiers in many" +
+ " places instead of JavaScript functions.";
+ }
+
+ @Override
+ public String getTag() {
+ return "-XdisplayNameMode";
+ }
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean setString(String str) {
+ String value = str.toUpperCase();
+ if ("NONE".equals(value)) {
+ option.setDisplayNameMode(DisplayNameMode.NONE);
+ } else if ("ONLY_METHOD_NAME".equals(value)) {
+ option.setDisplayNameMode(DisplayNameMode.ONLY_METHOD_NAME);
+ } else if ("ABBREVIATED".equals(value)) {
+ option.setDisplayNameMode(DisplayNameMode.ABBREVIATED);
+ } else if ("FULL".equals(value)) {
+ option.setDisplayNameMode(DisplayNameMode.FULL);
+ } else {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String[] getTagArgs() {
+ return new String[] {"NONE | ONLY_METHOD_NAME | ABBREVIATED | FULL"};
+ }
+}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/DisplayNameMode.java b/dev/core/src/com/google/gwt/dev/util/arg/DisplayNameMode.java
new file mode 100644
index 0000000..6ab5023
--- /dev/null
+++ b/dev/core/src/com/google/gwt/dev/util/arg/DisplayNameMode.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.dev.util.arg;
+
+/**
+ * Specifies which level of displayNames the GWT compiler outputs for chrome dev tools.
+ */
+public enum DisplayNameMode {
+ /**
+ * Emit no extra information.
+ */
+ NONE,
+ /**
+ * Use the method name as displayName.
+ */
+ ONLY_METHOD_NAME,
+ /**
+ * Use the class and method name as displayName.
+ */
+ ABBREVIATED,
+ /**
+ * Use the full qualified class and method name as displayName.
+ */
+ FULL
+}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionDisplayNameLevel.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionDisplayNameLevel.java
new file mode 100644
index 0000000..f9e62fe
--- /dev/null
+++ b/dev/core/src/com/google/gwt/dev/util/arg/OptionDisplayNameLevel.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.dev.util.arg;
+
+/**
+ * Option to set the level of mapping function names in chrome dev tools.
+ */
+public interface OptionDisplayNameLevel {
+ DisplayNameMode getDisplayNameMode();
+
+ void setDisplayNameMode(DisplayNameMode displayNameMode);
+}