// 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. #ifndef CONTENT_BROWSER_SCHEDULER_RESPONSIVENESS_METRIC_SOURCE_H_ #define CONTENT_BROWSER_SCHEDULER_RESPONSIVENESS_METRIC_SOURCE_H_ #include <memory> #include "base/functional/callback.h" #include "base/functional/callback_helpers.h" #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "content/common/content_export.h" namespace base { struct PendingTask; } // namespace base namespace content { namespace responsiveness { class MessageLoopObserver; class NativeEventObserver; // This class represents the source of browser responsiveness metrics. // This class watches events and tasks processed on the UI and IO threads of the // browser process. It notifies the registered Delegate implementer about // event and task execution through the WillRun* and DidRun* methods. // // This class must only be constructed/destroyed on the UI thread. It has some // private members that are affine to the IO thread. It takes care of deleting // them appropriately. // // TODO(erikchen): Once the browser scheduler is implemented, this entire class // should become simpler, as either BrowserUIThreadScheduler or // BrowserIOThreadScheduler should implement much of the same functionality. class CONTENT_EXPORT MetricSource { … }; } // namespace responsiveness } // namespace content #endif // CONTENT_BROWSER_SCHEDULER_RESPONSIVENESS_METRIC_SOURCE_H_