Merge "[WebView Tracing API] documentation fixes." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4800d9a9e7
@@ -54,37 +54,37 @@ public class TracingConfig {
|
||||
|
||||
/**
|
||||
* Predefined set of categories typically useful for analyzing WebViews.
|
||||
* Typically includes android_webview and Java.
|
||||
* Typically includes "android_webview" and "Java" categories.
|
||||
*/
|
||||
public static final int CATEGORIES_ANDROID_WEBVIEW = 1 << 1;
|
||||
|
||||
/**
|
||||
* Predefined set of categories typically useful for web developers.
|
||||
* Typically includes blink, compositor, renderer.scheduler and v8 categories.
|
||||
* Typically includes "blink", "compositor", "renderer.scheduler" and "v8" categories.
|
||||
*/
|
||||
public static final int CATEGORIES_WEB_DEVELOPER = 1 << 2;
|
||||
|
||||
/**
|
||||
* Predefined set of categories for analyzing input latency issues.
|
||||
* Typically includes input, renderer.scheduler categories.
|
||||
* Typically includes "input", "renderer.scheduler" categories.
|
||||
*/
|
||||
public static final int CATEGORIES_INPUT_LATENCY = 1 << 3;
|
||||
|
||||
/**
|
||||
* Predefined set of categories for analyzing rendering issues.
|
||||
* Typically includes blink, compositor and gpu categories.
|
||||
* Typically includes "blink", "compositor" and "gpu" categories.
|
||||
*/
|
||||
public static final int CATEGORIES_RENDERING = 1 << 4;
|
||||
|
||||
/**
|
||||
* Predefined set of categories for analyzing javascript and rendering issues.
|
||||
* Typically includes blink, compositor, gpu, renderer.scheduler and v8 categories.
|
||||
* Typically includes "blink", "compositor", "gpu", "renderer.scheduler" and "v8" categories.
|
||||
*/
|
||||
public static final int CATEGORIES_JAVASCRIPT_AND_RENDERING = 1 << 5;
|
||||
|
||||
/**
|
||||
* Predefined set of categories for studying difficult rendering performance problems.
|
||||
* Typically includes blink, compositor, gpu, renderer.scheduler, v8 and
|
||||
* Typically includes "blink", "compositor", "gpu", "renderer.scheduler", "v8" and
|
||||
* some other compositor categories which are disabled by default.
|
||||
*/
|
||||
public static final int CATEGORIES_FRAME_VIEWER = 1 << 6;
|
||||
@@ -123,7 +123,9 @@ public class TracingConfig {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a bitmask of the predefined categories values of this configuration.
|
||||
* Returns a bitmask of the predefined category sets of this configuration.
|
||||
*
|
||||
* @return Bitmask of predefined category sets.
|
||||
*/
|
||||
@PredefinedCategories
|
||||
public int getPredefinedCategories() {
|
||||
@@ -133,7 +135,7 @@ public class TracingConfig {
|
||||
/**
|
||||
* Returns the list of included custom category patterns for this configuration.
|
||||
*
|
||||
* @return empty list if no custom category patterns are specified.
|
||||
* @return Empty list if no custom category patterns are specified.
|
||||
*/
|
||||
@NonNull
|
||||
public List<String> getCustomIncludedCategories() {
|
||||
@@ -142,6 +144,8 @@ public class TracingConfig {
|
||||
|
||||
/**
|
||||
* Returns the tracing mode of this configuration.
|
||||
*
|
||||
* @return The tracing mode of this configuration.
|
||||
*/
|
||||
@TracingMode
|
||||
public int getTracingMode() {
|
||||
@@ -150,28 +154,37 @@ public class TracingConfig {
|
||||
|
||||
/**
|
||||
* Builder used to create {@link TracingConfig} objects.
|
||||
*
|
||||
* <p>
|
||||
* Examples:
|
||||
* new TracingConfig.Builder().build()
|
||||
* -- creates a configuration with default options: {@link #CATEGORIES_NONE},
|
||||
* {@link #RECORD_UNTIL_FULL}.
|
||||
* new TracingConfig.Builder().addCategories(CATEGORIES_WEB_DEVELOPER).build()
|
||||
* -- records trace events from the "web developer" predefined category sets.
|
||||
* new TracingConfig.Builder().addCategories(CATEGORIES_RENDERING,
|
||||
* CATEGORIES_INPUT_LATENCY).build()
|
||||
* -- records trace events from the "rendering" and "input latency" predefined
|
||||
* category sets.
|
||||
* new TracingConfig.Builder().addCategories("browser").build()
|
||||
* -- records only the trace events from the "browser" category.
|
||||
* new TracingConfig.Builder().addCategories("blink*","renderer*").build()
|
||||
* -- records only the trace events matching the "blink*" and "renderer*" patterns
|
||||
* (e.g. "blink.animations", "renderer_host" and "renderer.scheduler" categories).
|
||||
* new TracingConfig.Builder().addCategories(CATEGORIES_WEB_DEVELOPER)
|
||||
* <pre class="prettyprint">
|
||||
* // Create a configuration with default options: {@link #CATEGORIES_NONE},
|
||||
* // {@link #RECORD_CONTINUOUSLY}.
|
||||
* <code>new TracingConfig.Builder().build()</code>
|
||||
*
|
||||
* // Record trace events from the "web developer" predefined category sets.
|
||||
* // Uses a ring buffer (the default {@link #RECORD_CONTINUOUSLY} mode) for
|
||||
* // internal storage during tracing.
|
||||
* <code>new TracingConfig.Builder().addCategories(CATEGORIES_WEB_DEVELOPER).build()</code>
|
||||
*
|
||||
* // Record trace events from the "rendering" and "input latency" predefined
|
||||
* // category sets.
|
||||
* <code>new TracingConfig.Builder().addCategories(CATEGORIES_RENDERING,
|
||||
* CATEGORIES_INPUT_LATENCY).build()</code>
|
||||
*
|
||||
* // Record only the trace events from the "browser" category.
|
||||
* <code>new TracingConfig.Builder().addCategories("browser").build()</code>
|
||||
*
|
||||
* // Record only the trace events matching the "blink*" and "renderer*" patterns
|
||||
* // (e.g. "blink.animations", "renderer_host" and "renderer.scheduler" categories).
|
||||
* <code>new TracingConfig.Builder().addCategories("blink*","renderer*").build()</code>
|
||||
*
|
||||
* // Record events from the "web developer" predefined category set and events from
|
||||
* // the "disabled-by-default-v8.gc" category to understand where garbage collection
|
||||
* // is being triggered. Uses a limited size buffer for internal storage during tracing.
|
||||
* <code>new TracingConfig.Builder().addCategories(CATEGORIES_WEB_DEVELOPER)
|
||||
* .addCategories("disabled-by-default-v8.gc")
|
||||
* .setTracingMode(RECORD_CONTINUOUSLY).build()
|
||||
* -- records events from the "web developer" predefined category set and events from
|
||||
* the "disabled-by-default-v8.gc" category to understand where garbage collection
|
||||
* is being triggered. Uses a ring buffer for internal storage during tracing.
|
||||
* .setTracingMode(RECORD_UNTIL_FULL).build()</code>
|
||||
* </pre>
|
||||
*/
|
||||
public static class Builder {
|
||||
private @PredefinedCategories int mPredefinedCategories = CATEGORIES_NONE;
|
||||
@@ -185,6 +198,8 @@ public class TracingConfig {
|
||||
|
||||
/**
|
||||
* Build {@link TracingConfig} using the current settings.
|
||||
*
|
||||
* @return The {@link TracingConfig} with the current settings.
|
||||
*/
|
||||
public TracingConfig build() {
|
||||
return new TracingConfig(mPredefinedCategories, mCustomIncludedCategories,
|
||||
@@ -192,16 +207,15 @@ public class TracingConfig {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds categories from a predefined set of categories to be included in the trace output.
|
||||
* Adds predefined sets of categories to be included in the trace output.
|
||||
*
|
||||
* @param predefinedCategories list or bitmask of predefined category sets to use:
|
||||
* {@link #CATEGORIES_NONE}, {@link #CATEGORIES_ALL},
|
||||
* {@link #CATEGORIES_ANDROID_WEBVIEW},
|
||||
* {@link #CATEGORIES_WEB_DEVELOPER},
|
||||
* {@link #CATEGORIES_INPUT_LATENCY},
|
||||
* {@link #CATEGORIES_RENDERING},
|
||||
* {@link #CATEGORIES_JAVASCRIPT_AND_RENDERING} or
|
||||
* {@link #CATEGORIES_FRAME_VIEWER}.
|
||||
* A predefined category set can be one of {@link #CATEGORIES_NONE},
|
||||
* {@link #CATEGORIES_ALL}, {@link #CATEGORIES_ANDROID_WEBVIEW},
|
||||
* {@link #CATEGORIES_WEB_DEVELOPER}, {@link #CATEGORIES_INPUT_LATENCY},
|
||||
* {@link #CATEGORIES_RENDERING}, {@link #CATEGORIES_JAVASCRIPT_AND_RENDERING} or
|
||||
* {@link #CATEGORIES_FRAME_VIEWER}.
|
||||
*
|
||||
* @param predefinedCategories A list or bitmask of predefined category sets.
|
||||
* @return The builder to facilitate chaining.
|
||||
*/
|
||||
public Builder addCategories(@PredefinedCategories int... predefinedCategories) {
|
||||
@@ -215,11 +229,11 @@ public class TracingConfig {
|
||||
* Adds custom categories to be included in trace output.
|
||||
*
|
||||
* Note that the categories are defined by the currently-in-use version of WebView. They
|
||||
* live in chromium code and are not part of the Android API. See
|
||||
* live in chromium code and are not part of the Android API.
|
||||
* See <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">
|
||||
* chromium documentation on tracing</a> for more details.
|
||||
*
|
||||
* @param categories a list of category patterns. A category pattern can contain wilcards,
|
||||
* @param categories A list of category patterns. A category pattern can contain wildcards,
|
||||
* e.g. "blink*" or full category name e.g. "renderer.scheduler".
|
||||
* @return The builder to facilitate chaining.
|
||||
*/
|
||||
@@ -235,7 +249,7 @@ public class TracingConfig {
|
||||
*
|
||||
* Same as {@link #addCategories(String...)} but allows to pass a Collection as a parameter.
|
||||
*
|
||||
* @param categories a list of category patters.
|
||||
* @param categories A list of category patterns.
|
||||
* @return The builder to facilitate chaining.
|
||||
*/
|
||||
public Builder addCategories(Collection<String> categories) {
|
||||
@@ -245,8 +259,9 @@ public class TracingConfig {
|
||||
|
||||
/**
|
||||
* Sets the tracing mode for this configuration.
|
||||
* When tracingMode is not set explicitly, the default is {@link #RECORD_CONTINUOUSLY}.
|
||||
*
|
||||
* @param tracingMode tracing mode to use, one of {@link #RECORD_UNTIL_FULL} or
|
||||
* @param tracingMode The tracing mode to use, one of {@link #RECORD_UNTIL_FULL} or
|
||||
* {@link #RECORD_CONTINUOUSLY}.
|
||||
* @return The builder to facilitate chaining.
|
||||
*/
|
||||
|
||||
@@ -35,9 +35,9 @@ import java.util.concurrent.Executor;
|
||||
* Example usage:
|
||||
* <pre class="prettyprint">
|
||||
* TracingController tracingController = TracingController.getInstance();
|
||||
* tracingController.start(new TraceConfig.Builder()
|
||||
* tracingController.start(new TracingConfig.Builder()
|
||||
* .addCategories(CATEGORIES_WEB_DEVELOPER).build());
|
||||
* [..]
|
||||
* ...
|
||||
* tracingController.stop(new FileOutputStream("trace.json"),
|
||||
* Executors.newSingleThreadExecutor());
|
||||
* </pre></p>
|
||||
@@ -49,7 +49,7 @@ public abstract class TracingController {
|
||||
* only one TracingController instance for all WebView instances,
|
||||
* however this restriction may be relaxed in a future Android release.
|
||||
*
|
||||
* @return the default TracingController instance
|
||||
* @return The default TracingController instance.
|
||||
*/
|
||||
@NonNull
|
||||
public static TracingController getInstance() {
|
||||
@@ -65,8 +65,10 @@ public abstract class TracingController {
|
||||
* using an internal buffer and flushed to the outputStream when
|
||||
* {@link #stop(OutputStream, Executor)} is called.
|
||||
*
|
||||
* @param tracingConfig configuration options to use for tracing
|
||||
* @throws IllegalStateException if the system is already tracing.
|
||||
* @param tracingConfig Configuration options to use for tracing.
|
||||
* @throws IllegalStateException If the system is already tracing.
|
||||
* @throws IllegalArgumentException If the configuration is invalid (e.g.
|
||||
* invalid category pattern or invalid tracing mode).
|
||||
*/
|
||||
public abstract void start(@NonNull TracingConfig tracingConfig);
|
||||
|
||||
@@ -77,17 +79,22 @@ public abstract class TracingController {
|
||||
* in chunks by invoking {@link java.io.OutputStream#write(byte[])}. On completion
|
||||
* the {@link java.io.OutputStream#close()} method is called.
|
||||
*
|
||||
* @param outputStream the output steam the tracing data will be sent to. If null
|
||||
* @param outputStream The output stream the tracing data will be sent to. If null
|
||||
* the tracing data will be discarded.
|
||||
* @param executor the {@link java.util.concurrent.Executor} on which the
|
||||
* outputStream #write and #close methods will be invoked.
|
||||
* @return false if the system was not tracing at the time of the call, true
|
||||
* otherwise.
|
||||
* @param executor The {@link java.util.concurrent.Executor} on which the
|
||||
* outputStream {@link java.io.OutputStream#write(byte[])} and
|
||||
* {@link java.io.OutputStream#close()} methods will be invoked.
|
||||
* @return False if the WebView framework was not tracing at the time of the call,
|
||||
* true otherwise.
|
||||
*/
|
||||
public abstract boolean stop(@Nullable OutputStream outputStream,
|
||||
@NonNull @CallbackExecutor Executor executor);
|
||||
|
||||
/** True if the system is tracing */
|
||||
/**
|
||||
* Returns whether the WebView framework is tracing.
|
||||
*
|
||||
* @return True if tracing is enabled.
|
||||
*/
|
||||
public abstract boolean isTracing();
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user