chromium/android_webview/glue/java/src/com/android/webview/chromium/TracingControllerAdapter.java

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package com.android.webview.chromium;

import android.os.Build;
import android.webkit.TracingConfig;
import android.webkit.TracingController;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;

import java.io.OutputStream;
import java.util.concurrent.Executor;

/**
 * Chromium implementation of TracingController -- forwards calls to
 * the shared internal implementation.
 */
@RequiresApi(Build.VERSION_CODES.P)
public class TracingControllerAdapter extends TracingController {
    private final SharedTracingControllerAdapter mTracingController;

    public TracingControllerAdapter(SharedTracingControllerAdapter tracingController) {
        mTracingController = tracingController;
    }

    @Override
    public void start(@NonNull TracingConfig tracingConfig) {
        if (tracingConfig == null) {
            throw new IllegalArgumentException("tracingConfig cannot be null");
        }

        mTracingController.start(
                tracingConfig.getPredefinedCategories(),
                tracingConfig.getCustomIncludedCategories(),
                tracingConfig.getTracingMode());
    }

    @Override
    public boolean stop(@Nullable OutputStream outputStream, @NonNull Executor executor) {
        return mTracingController.stop(outputStream, executor);
    }

    @Override
    public boolean isTracing() {
        return mTracingController.isTracing();
    }
}