#include "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container_manager.h"
#include <utility>
#include "base/containers/contains.h"
#include "base/containers/flat_map.h"
#include "base/metrics/histogram_functions.h"
#include "base/no_destructor.h"
#include "base/ranges/algorithm.h"
#include "base/strings/string_util.h"
#include "content/public/common/webplugininfo.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h"
#include "extensions/common/mojom/guest_view.mojom.h"
#include "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_frame_container.h"
#include "ipc/ipc_sync_channel.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
#include "third_party/blink/public/web/web_document.h"
#include "third_party/blink/public/web/web_frame.h"
#include "third_party/blink/public/web/web_local_frame.h"
#include "url/url_constants.h"
namespace extensions {
namespace {
RenderFrameMap;
RenderFrameMap* GetRenderFrameMap() { … }
}
void MimeHandlerViewContainerManager::BindReceiver(
content::RenderFrame* render_frame,
mojo::PendingAssociatedReceiver<mojom::MimeHandlerViewContainerManager>
receiver) { … }
MimeHandlerViewContainerManager* MimeHandlerViewContainerManager::Get(
content::RenderFrame* render_frame,
bool create_if_does_not_exist) { … }
bool MimeHandlerViewContainerManager::CreateFrameContainer(
const blink::WebElement& plugin_element,
const GURL& resource_url,
const std::string& mime_type,
const content::WebPluginInfo& plugin_info) { … }
void MimeHandlerViewContainerManager::
DidBlockMimeHandlerViewForDisallowedPlugin(
const blink::WebElement& plugin_element) { … }
v8::Local<v8::Object> MimeHandlerViewContainerManager::GetScriptableObject(
const blink::WebElement& plugin_element,
v8::Isolate* isolate) { … }
MimeHandlerViewContainerManager::MimeHandlerViewContainerManager(
content::RenderFrame* render_frame)
: … { … }
MimeHandlerViewContainerManager::~MimeHandlerViewContainerManager() = default;
void MimeHandlerViewContainerManager::ReadyToCommitNavigation(
blink::WebDocumentLoader* document_loader) { … }
void MimeHandlerViewContainerManager::OnDestruct() { … }
void MimeHandlerViewContainerManager::SetInternalId(
const std::string& token_id) { … }
void MimeHandlerViewContainerManager::CreateBeforeUnloadControl(
CreateBeforeUnloadControlCallback callback) { … }
void MimeHandlerViewContainerManager::SelfDeleteIfNecessary() { … }
void MimeHandlerViewContainerManager::DestroyFrameContainer(
int32_t element_instance_id) { … }
void MimeHandlerViewContainerManager::DidLoad(int32_t element_instance_id,
const GURL& resource_url) { … }
MimeHandlerViewFrameContainer*
MimeHandlerViewContainerManager::GetFrameContainer(
int32_t mime_handler_view_instance_id) { … }
MimeHandlerViewFrameContainer*
MimeHandlerViewContainerManager::GetFrameContainer(
const blink::WebElement& plugin_element) { … }
void MimeHandlerViewContainerManager::RemoveFrameContainer(
MimeHandlerViewFrameContainer* frame_container,
bool retain_manager) { … }
void MimeHandlerViewContainerManager::SetShowBeforeUnloadDialog(
bool show_dialog,
SetShowBeforeUnloadDialogCallback callback) { … }
PostMessageSupport* MimeHandlerViewContainerManager::GetPostMessageSupport() { … }
blink::WebLocalFrame* MimeHandlerViewContainerManager::GetSourceFrame() { … }
blink::WebFrame* MimeHandlerViewContainerManager::GetTargetFrame() { … }
bool MimeHandlerViewContainerManager::IsEmbedded() const { … }
bool MimeHandlerViewContainerManager::IsResourceAccessibleBySource() const { … }
bool MimeHandlerViewContainerManager::IsManagedByContainerManager(
const blink::WebElement& plugin_element) { … }
}