blob: 53c2889678aac64eca8d0f5a05504378ca14a705 [file] [log] [blame]
// Copyright 2013 The Flutter 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 io.flutter.util;
import androidx.annotation.NonNull;
import androidx.tracing.Trace;
public final class TraceSection {
private static String cropSectionName(@NonNull String sectionName) {
return sectionName.length() < 124 ? sectionName : sectionName.substring(0, 124) + "...";
}
/**
* Wraps Trace.beginSection to ensure that the line length stays below 127 code units.
*
* @param sectionName The string to display as the section name in the trace.
*/
public static void begin(@NonNull String sectionName) {
Trace.beginSection(cropSectionName(sectionName));
}
/** Wraps Trace.endSection. */
public static void end() throws RuntimeException {
Trace.endSection();
}
/**
* Wraps Trace.beginAsyncSection to ensure that the line length stays below 127 code units.
*
* @param sectionName The string to display as the section name in the trace.
* @param cookie Unique integer defining the section.
*/
public static void beginAsyncSection(String sectionName, int cookie) {
Trace.beginAsyncSection(cropSectionName(sectionName), cookie);
}
/** Wraps Trace.endAsyncSection to ensure that the line length stays below 127 code units. */
public static void endAsyncSection(String sectionName, int cookie) {
Trace.endAsyncSection(cropSectionName(sectionName), cookie);
}
}