chromium/components/pdf/browser/pdf_frame_util.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_PDF_BROWSER_PDF_FRAME_UTIL_H_
#define COMPONENTS_PDF_BROWSER_PDF_FRAME_UTIL_H_

namespace content {
class RenderFrameHost;
class WebContents;
}  // namespace content

namespace pdf_frame_util {

// For full-page OOPIF PDF viewer only. Searches the children of the primary
// main frame of `contents` to find a `RenderFrameHost` that hosts the PDF
// extension. Full-page PDF viewers must have only one PDF extension host.
content::RenderFrameHost* FindFullPagePdfExtensionHost(
    content::WebContents* contents);

// Searches the children of the given `extension_host` to find a
// `RenderFrameHost` that hosts PDF content.
content::RenderFrameHost* FindPdfChildFrame(
    content::RenderFrameHost* extension_host);

// For OOPIF PDF viewer only. Gets the embedder `RenderFrameHost` given the PDF
// content host. Returns nullptr if `content_host` is an invalid PDF content
// host.
content::RenderFrameHost* GetEmbedderHost(
    content::RenderFrameHost* content_host);

}  // namespace pdf_frame_util

#endif  // COMPONENTS_PDF_BROWSER_PDF_FRAME_UTIL_H_