1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38

content / common / main_frame_counter.h [blame]

// Copyright 2022 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_COMMON_MAIN_FRAME_COUNTER_H_
#define CONTENT_COMMON_MAIN_FRAME_COUNTER_H_

#include <stddef.h>

#include "base/component_export.h"

namespace content {

// This should only be used from the Renderer process, but is placed in common
// so the Browser process can access it for testing only.
//
// This keeps track of how many main frames exist in the current Renderer
// process.
//
// This is for an ongoing experiment to reduce memory usage in Renderers that
// only contain subframes; it should be removed if the experiment does not
// end up shipping. See: crbug.com/1331368 for tracking.
class COMPONENT_EXPORT(MAIN_FRAME_COUNTER) MainFrameCounter final {
 public:
  static bool has_main_frame();

 private:
  friend class RenderFrameImpl;

  static void IncrementCount();
  static void DecrementCount();

  static size_t main_frame_count_;
};

}  // namespace content

#endif  // CONTENT_COMMON_MAIN_FRAME_COUNTER_H_