chromium/base/trace_event/application_state_proto_android.h

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

#ifndef BASE_TRACE_EVENT_APPLICATION_STATE_PROTO_ANDROID_H_
#define BASE_TRACE_EVENT_APPLICATION_STATE_PROTO_ANDROID_H_

#include "base/android/application_status_listener.h"
#include "base/base_export.h"
#include "third_party/perfetto/protos/perfetto/trace/track_event/chrome_application_state_info.pbzero.h"

#define TRACE_APPLICATION_STATE(state)                                  \
  TRACE_EVENT_INSTANT(                                                  \
      "Java", "ApplicationState", perfetto::Track::Global(0),           \
      [state](perfetto::EventContext ctx) {                             \
        ctx.event()                                                     \
            ->set_chrome_application_state_info()                       \
            ->set_application_state(                                    \
                base::trace_event::ApplicationStateToTraceEnum(state)); \
      });

namespace base {
namespace trace_event {

BASE_EXPORT
perfetto::protos::pbzero::ChromeApplicationStateInfo::ChromeApplicationState
ApplicationStateToTraceEnum(base::android::ApplicationState state);

}  // namespace trace_event
}  // namespace base

#endif  // BASE_TRACE_EVENT_APPLICATION_STATE_PROTO_ANDROID_H_