// 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. module metrics.mojom; import "mojo/public/mojom/base/byte_string.mojom"; import "mojo/public/mojom/base/shared_memory.mojom"; // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. If you add any entries to this enum, // you must also update the corresponding enum UmaChildPingStatus at // tools/metrics/histograms/enums.xml. enum UmaChildPingStatus { BROWSER_SENT_IPC = 0, CHILD_RECEIVED_IPC = 1, BROWSER_REPLY_CALLBACK = 2, }; enum UmaPingCallSource { PERIODIC, SHARED_MEMORY_SET_UP, }; // Used to 1) pass a shared memory segment where the child process will store // histograms, and 2) create a ChildHistogramFetcher so that the child process // can report to the browser process the histograms that could not be stored on // the shared memory (e.g. they were emitted before it was set up). interface ChildHistogramFetcherFactory { // Creates a ChildHistogram interface that uses shared memory buffer to // store histograms that are to be reported by the browser process to UMA. CreateFetcher( mojo_base.mojom.UnsafeSharedMemoryRegion? shared_memory, pending_receiver child_histogram_fetcher); }; // Used by the browser process to request non-persistent histograms (i.e., not // on the shared memory) from a child process. interface ChildHistogramFetcher { // Send to all the child processes to send back histogram data. GetChildNonPersistentHistogramData() => (array deltas); // Ping-pong mechanism to quantify child process histogram losses. See // implementation and call site for details. Ping(UmaPingCallSource call_source) => (); };