// 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. #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_FRAME_STATUS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_FRAME_STATUS_H_ #include "third_party/blink/renderer/platform/platform_export.h" namespace blink { class FrameScheduler; namespace scheduler { // This enum is used for histogram and should not be renumbered. // This enum should be kept in sync with FrameSchedulingLifecycleState and // FrameOriginState. // // There are three main states: // VISIBLE describes frames which are visible to the user (both page and frame // are visible). // Without this service frame would have had kBackgrounded state. // HIDDEN describes frames which are out of viewport but the page is visible // to the user. // BACKGROUND describes frames in background pages. // // There are four auxillary states: // VISIBLE_SERVICE describes frames which are treated as visible to the user // but it is a service (e.g. audio) which forces the page to be foregrounded. // HIDDEN_SERVICE describes offscreen frames in pages which are treated as // foregrounded due to a presence of a service (e.g. audio playing). // BACKGROUND_EXEMPT_SELF describes background frames which are // exempted from background throttling due to a special conditions being met // for this frame. // BACKGROUND_EXEMPT_kOther describes background frames which are exempted from // background throttling due to other frames granting an exemption for // the whole page. // // Note that all these seven states are disjoint, e.g, when calculating // a metric for background BACKGROUND, BACKGROUND_EXEMPT_SELF and // BACKGROUND_EXEMPT_kOther should be added together. enum class FrameStatus { … }; PLATFORM_EXPORT FrameStatus GetFrameStatus(FrameScheduler* frame_scheduler); } // namespace scheduler } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_FRAME_STATUS_H_