/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * 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.
 */

#include "src/tracing/test/tracing_module.h"

// This file checks that the deprecated track event namespacing mechanism
// (PERFETTO_TRACK_EVENT_NAMESPACE) keeps working.

#define PERFETTO_TRACK_EVENT_NAMESPACE deprecated_ns
#include "perfetto/tracing.h"

PERFETTO_DEFINE_CATEGORIES(PERFETTO_CATEGORY(cat1));
PERFETTO_TRACK_EVENT_STATIC_STORAGE();

void TestDeprecatedNamespacing() {
  deprecated_ns::TrackEvent::Register();
  TRACE_EVENT_BEGIN("cat1", "DeprecatedNamespaceEvent");
}
