blob: 107971f0e21625db14a2f674b457bf1fb431d3bc [file] [log] [blame]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/renderer_host/render_frame_host_delegate.h"
#include <stddef.h>
#include <memory>
#include <string>
#include <utility>
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "build/build_config.h"
#include "content/public/browser/cookie_access_details.h"
#include "content/public/browser/trust_token_access_details.h"
#include "ipc/ipc_message.h"
#include "services/network/public/cpp/permissions_policy/permissions_policy_declaration.h"
#include "third_party/blink/public/mojom/frame/fullscreen.mojom.h"
#include "third_party/blink/public/mojom/frame/text_autosizer_page_info.mojom.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom-shared.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
#include "ui/base/clipboard/clipboard_metadata.h"
#include "ui/gfx/native_widget_types.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace content {
blink::mojom::PartitionedPopinParamsPtr
PartitionedPopinOpenerProperties::AsMojom() const {
return blink::mojom::PartitionedPopinParams::New(top_frame_origin,
site_for_cookies);
}
bool RenderFrameHostDelegate::OnMessageReceived(
RenderFrameHostImpl* render_frame_host,
const IPC::Message& message) {
return false;
}
bool RenderFrameHostDelegate::DidAddMessageToConsole(
RenderFrameHostImpl* source_frame,
blink::mojom::ConsoleMessageLevel log_level,
const std::u16string& message,
int32_t line_no,
const std::u16string& source_id,
const std::optional<std::u16string>& untrusted_stack_trace) {
return false;
}
void RenderFrameHostDelegate::RequestMediaAccessPermission(
RenderFrameHostImpl* render_frame_host,
const MediaStreamRequest& request,
MediaResponseCallback callback) {
LOG(ERROR) << "RenderFrameHostDelegate::RequestMediaAccessPermission: "
<< "Not supported.";
std::move(callback).Run(blink::mojom::StreamDevicesSet(),
blink::mojom::MediaStreamRequestResult::NOT_SUPPORTED,
std::unique_ptr<MediaStreamUI>());
}
void RenderFrameHostDelegate::ProcessSelectAudioOutput(
const SelectAudioOutputRequest& request,
SelectAudioOutputCallback callback) {
LOG(ERROR) << "RenderFrameHostDelegate::ProcessSelectAudioOutput: "
<< "Not supported.";
std::move(callback).Run(
base::unexpected(content::SelectAudioOutputError::kNotSupported));
}
bool RenderFrameHostDelegate::CheckMediaAccessPermission(
RenderFrameHostImpl* render_frame_host,
const url::Origin& security_origin,
blink::mojom::MediaStreamType type) {
LOG(ERROR) << "RenderFrameHostDelegate::CheckMediaAccessPermission: "
<< "Not supported.";
return false;
}
ui::AXMode RenderFrameHostDelegate::GetAccessibilityMode() {
return ui::AXMode();
}
device::mojom::GeolocationContext*
RenderFrameHostDelegate::GetGeolocationContext() {
return nullptr;
}
#if BUILDFLAG(IS_ANDROID) || (BUILDFLAG(IS_IOS) && !BUILDFLAG(IS_IOS_TVOS))
void RenderFrameHostDelegate::GetNFC(
RenderFrameHostImpl* render_frame_host,
mojo::PendingReceiver<device::mojom::NFC> receiver) {}
#endif
bool RenderFrameHostDelegate::CanEnterFullscreenMode(
RenderFrameHostImpl* requesting_frame) {
return true;
}
void RenderFrameHostDelegate::FullscreenStateChanged(
RenderFrameHostImpl* rfh,
bool is_fullscreen,
blink::mojom::FullscreenOptionsPtr options) {}
bool RenderFrameHostDelegate::CanUseWindowingControls(RenderFrameHostImpl*) {
return false;
}
bool RenderFrameHostDelegate::IsInnerWebContentsForGuest() {
return false;
}
RenderFrameHostImpl* RenderFrameHostDelegate::GetFocusedFrame() {
return nullptr;
}
FrameTree* RenderFrameHostDelegate::CreateNewWindow(
RenderFrameHostImpl* opener,
const mojom::CreateNewWindowParams& params,
bool is_new_browsing_instance,
bool has_user_gesture,
SessionStorageNamespace* session_storage_namespace) {
return nullptr;
}
WebContents* RenderFrameHostDelegate::ShowCreatedWindow(
RenderFrameHostImpl* opener,
int main_frame_widget_route_id,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& window_features,
bool user_gesture) {
return nullptr;
}
bool RenderFrameHostDelegate::ShouldAllowRunningInsecureContent(
bool allowed_per_prefs,
const url::Origin& origin,
const GURL& resource_url) {
return false;
}
#if BUILDFLAG(IS_ANDROID)
base::android::ScopedJavaLocalRef<jobject>
RenderFrameHostDelegate::GetJavaRenderFrameHostDelegate() {
return nullptr;
}
#endif
Visibility RenderFrameHostDelegate::GetVisibility() {
return Visibility::HIDDEN;
}
std::vector<FrameTreeNode*> RenderFrameHostDelegate::GetUnattachedOwnedNodes(
RenderFrameHostImpl* owner) {
return {};
}
void RenderFrameHostDelegate::IsClipboardPasteAllowedByPolicy(
const ClipboardEndpoint& source,
const ClipboardEndpoint& destination,
const ui::ClipboardMetadata& metadata,
ClipboardPasteData clipboard_paste_data,
IsClipboardPasteAllowedCallback callback) {
std::move(callback).Run(std::move(clipboard_paste_data));
}
std::optional<std::vector<std::u16string>>
RenderFrameHostDelegate::GetClipboardTypesIfPolicyApplied(
const ui::ClipboardSequenceNumberToken& seqno) {
return std::nullopt;
}
bool RenderFrameHostDelegate::IsTransientActivationRequiredForHtmlFullscreen() {
return true;
}
bool RenderFrameHostDelegate::IsBackForwardCacheSupported() {
return false;
}
RenderWidgetHostImpl* RenderFrameHostDelegate::CreateNewPopupWidget(
base::SafeRef<SiteInstanceGroup> site_instance_group,
int32_t route_id,
mojo::PendingAssociatedReceiver<blink::mojom::PopupWidgetHost>
blink_popup_widget_host,
mojo::PendingAssociatedReceiver<blink::mojom::WidgetHost> blink_widget_host,
mojo::PendingAssociatedRemote<blink::mojom::Widget> blink_widget) {
return nullptr;
}
std::vector<RenderFrameHostImpl*>
RenderFrameHostDelegate::GetActiveTopLevelDocumentsInBrowsingContextGroup(
RenderFrameHostImpl* render_frame_host) {
return std::vector<RenderFrameHostImpl*>();
}
PrerenderHostRegistry* RenderFrameHostDelegate::GetPrerenderHostRegistry() {
return nullptr;
}
bool RenderFrameHostDelegate::IsAllowedToGoToEntryAtOffset(int32_t offset) {
return true;
}
bool RenderFrameHostDelegate::IsJavaScriptDialogShowing() const {
return false;
}
bool RenderFrameHostDelegate::ShouldIgnoreUnresponsiveRenderer() {
return false;
}
std::optional<network::ParsedPermissionsPolicy>
RenderFrameHostDelegate::GetPermissionsPolicyForIsolatedWebApp(
RenderFrameHostImpl* source) {
return network::ParsedPermissionsPolicy();
}
bool RenderFrameHostDelegate::IsPopup() const {
return false;
}
bool RenderFrameHostDelegate::IsPartitionedPopin() const {
return false;
}
const PartitionedPopinOpenerProperties&
RenderFrameHostDelegate::GetPartitionedPopinOpenerProperties() const {
NOTREACHED();
}
WebContents* RenderFrameHostDelegate::GetOpenedPartitionedPopin() const {
return nullptr;
}
gfx::NativeWindow RenderFrameHostDelegate::GetOwnerNativeWindow() {
return gfx::NativeWindow();
}
media::PictureInPictureEventsInfo::AutoPipInfo
RenderFrameHostDelegate::GetAutoPipInfo() const {
return media::PictureInPictureEventsInfo::AutoPipInfo();
}
} // namespace content