blob: 3fb9ed90f18e0f46bf20adcab8aa895f95968677 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "mojo/public/cpp/bindings/features.h"
namespace mojo {
namespace features {
// Enables a task to be scheduled for each individual message dispatched to a
// Mojo binding endpoint (or reply to an InterfacePtr).
//
// When disabled, dispatch happens eagerly in batch, so when a binding is
// scheduled to dispatch messages, it fully flushes and dispatches all queued
// messages within the extent of a single scheduler task.
//
// Enabling this feature allows for more fine-grained performance control
// through the scheduler, but may initially cause some important edge cases to
// regress in performance due to high-priority messages seeing increased
// latency. Ideally we'd address these cases by giving the affected bindings
// higher-priority TaskRunners.
BASE_FEATURE(kTaskPerMessage,
"MojoTaskPerMessage",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables measurement of MessageChannel unread message counts. When enabled, a
// small random selection of Connectors enable the unread message count quota
// on their associated message pipe, and record the highest unread message count
// seen during the Connector's lifetime.
BASE_FEATURE(kMojoRecordUnreadMessageCount,
"MojoRecordUnreadMessageCount",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables predictive allocation for Mojo serialization.
BASE_FEATURE(kMojoPredictiveAllocation,
"MojoPredictiveAllocation",
#if BUILDFLAG(IS_CHROMEOS)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
#endif
);
// Enables a bugfix for https://crbug.com/331636067. This is a very old bug, and
// this flag will be used to understand the stability and performance impact of
// the fix, if any.
BASE_FEATURE(kMojoFixAssociatedHandleLeak,
"MojoFixAssociatedHandleLeak",
base::FEATURE_ENABLED_BY_DEFAULT);
} // namespace features
} // namespace mojo