Skip to content

Commit

Permalink
Migrate CanExecuteContentScriptSync to Mojo
Browse files Browse the repository at this point in the history
Based on crrev.com/c/2807461

Bug: 1183880
Change-Id: I53eb1e2cbea4f567c7226894e1f5728dff5f196c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3108452
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Sean Topping <seantopping@chromium.org>
Auto-Submit: Carlos IL <carlosil@chromium.org>
Commit-Queue: Carlos IL <carlosil@chromium.org>
Cr-Commit-Position: refs/heads/main@{#915317}
  • Loading branch information
carlosjoan91 authored and Chromium LUCI CQ committed Aug 25, 2021
1 parent b47addf commit 4320c50
Show file tree
Hide file tree
Showing 26 changed files with 74 additions and 165 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "chrome/renderer/extensions/extension_process_policy.h"
#include "chrome/renderer/extensions/renderer_permissions_policy_delegate.h"
#include "chrome/renderer/extensions/resource_request_policy.h"
#include "components/guest_view/renderer/guest_view_container_dispatcher.h"
#include "content/public/common/content_constants.h"
#include "content/public/common/content_switches.h"
#include "content/public/renderer/render_frame.h"
Expand All @@ -36,7 +37,6 @@
#include "extensions/renderer/extension_frame_helper.h"
#include "extensions/renderer/extensions_render_frame_observer.h"
#include "extensions/renderer/extensions_renderer_client.h"
#include "extensions/renderer/guest_view/extensions_guest_view_container_dispatcher.h"
#include "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container_manager.h"
#include "extensions/renderer/renderer_extension_registry.h"
#include "extensions/renderer/script_context.h"
Expand Down Expand Up @@ -149,7 +149,7 @@ void ChromeExtensionsRendererClient::RenderThreadStarted() {
std::make_unique<extensions::ResourceRequestPolicy>(
extension_dispatcher_.get());
guest_view_container_dispatcher_ =
std::make_unique<extensions::ExtensionsGuestViewContainerDispatcher>();
std::make_unique<guest_view::GuestViewContainerDispatcher>();

thread->AddObserver(extension_dispatcher_.get());
thread->AddObserver(guest_view_container_dispatcher_.get());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,14 @@ struct WebPluginInfo;

namespace extensions {
class Dispatcher;
class ExtensionsGuestViewContainerDispatcher;
class RendererPermissionsPolicyDelegate;
class ResourceRequestPolicy;
}

namespace guest_view {
class GuestViewContainerDispatcher;
}

namespace net {
class SiteForCookies;
}
Expand Down Expand Up @@ -120,7 +123,7 @@ class ChromeExtensionsRendererClient
std::unique_ptr<extensions::Dispatcher> extension_dispatcher_;
std::unique_ptr<extensions::RendererPermissionsPolicyDelegate>
permissions_policy_delegate_;
std::unique_ptr<extensions::ExtensionsGuestViewContainerDispatcher>
std::unique_ptr<guest_view::GuestViewContainerDispatcher>
guest_view_container_dispatcher_;
std::unique_ptr<extensions::ResourceRequestPolicy> resource_request_policy_;

Expand Down
1 change: 1 addition & 0 deletions chromecast/renderer/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ cast_source_set("renderer_base") {
"//chromecast/common",
"//chromecast/common/extensions_api:api",
"//chromecast/renderer:extensions_resources",
"//components/guest_view/renderer",
"//components/version_info:version_info",
"//extensions/common",
"//extensions/common:mojom",
Expand Down
1 change: 1 addition & 0 deletions chromecast/renderer/DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ include_rules = [
"+chromecast/crash",
"+chromecast/media",
"+components/cdm/renderer",
"+components/guest_view/renderer",
"+components/media_control/renderer",
"+components/media_control/mojom",
"+components/network_hints/renderer",
Expand Down
4 changes: 2 additions & 2 deletions chromecast/renderer/cast_content_renderer_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@
#if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS)
#include "chromecast/common/cast_extensions_client.h"
#include "chromecast/renderer/cast_extensions_renderer_client.h"
#include "components/guest_view/renderer/guest_view_container_dispatcher.h"
#include "content/public/common/content_constants.h"
#include "extensions/common/common_manifest_handlers.h" // nogncheck
#include "extensions/common/extension_urls.h" // nogncheck
#include "extensions/renderer/dispatcher.h" // nogncheck
#include "extensions/renderer/extension_frame_helper.h" // nogncheck
#include "extensions/renderer/guest_view/extensions_guest_view_container_dispatcher.h" // nogncheck
#endif

namespace chromecast {
Expand Down Expand Up @@ -158,7 +158,7 @@ void CastContentRendererClient::RenderThreadStarted() {
thread->AddObserver(extensions_renderer_client_->GetDispatcher());

guest_view_container_dispatcher_ =
std::make_unique<extensions::ExtensionsGuestViewContainerDispatcher>();
std::make_unique<guest_view::GuestViewContainerDispatcher>();
thread->AddObserver(guest_view_container_dispatcher_.get());
#endif
}
Expand Down
9 changes: 7 additions & 2 deletions chromecast/renderer/cast_content_renderer_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,15 @@

namespace extensions {
class ExtensionsClient;
class ExtensionsGuestViewContainerDispatcher;
class CastExtensionsRendererClient;
} // namespace extensions

#if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS)
namespace guest_view {
class GuestViewContainerDispatcher;
}
#endif

namespace chromecast {
class IdentificationSettingsManager;
class MemoryPressureObserverImpl;
Expand Down Expand Up @@ -127,7 +132,7 @@ class CastContentRendererClient
std::unique_ptr<extensions::ExtensionsClient> extensions_client_;
std::unique_ptr<extensions::CastExtensionsRendererClient>
extensions_renderer_client_;
std::unique_ptr<extensions::ExtensionsGuestViewContainerDispatcher>
std::unique_ptr<guest_view::GuestViewContainerDispatcher>
guest_view_container_dispatcher_;
#endif

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,9 @@
#include "extensions/browser/guest_view/web_view/web_view_content_script_manager.h"
#include "extensions/browser/guest_view/web_view/web_view_guest.h"
#include "extensions/browser/guest_view/web_view/web_view_renderer_state.h"
#include "extensions/common/guest_view/extensions_guest_view_messages.h"
#include "extensions/common/manifest_handlers/mime_types_handler.h"
#include "ipc/ipc_message.h"
#include "ipc/ipc_message_macros.h"
#include "ipc/ipc_message_start.h"
#include "url/gurl.h"

using content::BrowserContext;
Expand All @@ -44,7 +43,7 @@ using guest_view::GuestViewMessageFilter;
namespace extensions {

const uint32_t ExtensionsGuestViewMessageFilter::kFilteredMessageClasses[] = {
GuestViewMsgStart, ExtensionsGuestViewMsgStart};
GuestViewMsgStart};

ExtensionsGuestViewMessageFilter::ExtensionsGuestViewMessageFilter(
int render_process_id,
Expand All @@ -55,18 +54,6 @@ ExtensionsGuestViewMessageFilter::ExtensionsGuestViewMessageFilter(
context),
content::BrowserAssociatedInterface<mojom::GuestView>(this) {}

bool ExtensionsGuestViewMessageFilter::OnMessageReceived(
const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(ExtensionsGuestViewMessageFilter, message)
IPC_MESSAGE_HANDLER(ExtensionsGuestViewHostMsg_CanExecuteContentScriptSync,
OnCanExecuteContentScript)
IPC_MESSAGE_UNHANDLED(
handled = GuestViewMessageFilter::OnMessageReceived(message))
IPC_END_MESSAGE_MAP()
return handled;
}

GuestViewManager* ExtensionsGuestViewMessageFilter::
GetOrCreateGuestViewManager() {
DCHECK(browser_context_);
Expand All @@ -80,18 +67,6 @@ GuestViewManager* ExtensionsGuestViewMessageFilter::
return manager;
}

void ExtensionsGuestViewMessageFilter::OnCanExecuteContentScript(
int render_view_id,
const std::string& script_id,
bool* allowed) {
WebViewRendererState::WebViewInfo info;
WebViewRendererState::GetInstance()->GetInfo(render_process_id_,
render_view_id, &info);

*allowed =
info.content_script_ids.find(script_id) != info.content_script_ids.end();
}

void ExtensionsGuestViewMessageFilter::ReadyToCreateMimeHandlerView(
int32_t render_frame_id,
bool success) {
Expand All @@ -111,4 +86,21 @@ void ExtensionsGuestViewMessageFilter::ReadyToCreateMimeHandlerView(
mhve->ReadyToCreateMimeHandlerView(success);
}

void ExtensionsGuestViewMessageFilter::CanExecuteContentScript(
int routing_id,
const std::string& script_id,
CanExecuteContentScriptCallback callback) {
WebViewRendererState::WebViewInfo info;
bool success = WebViewRendererState::GetInstance()->GetInfo(
render_process_id_, routing_id, &info);
// GetInfo can fail if the process id does not correspond to a WebView. Those
// cases are just defaulted to false.
if (!success) {
std::move(callback).Run(false);
return;
}
bool can_execute = base::Contains(info.content_script_ids, script_id);
std::move(callback).Run(can_execute);
}

} // namespace extensions
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ namespace content {
class BrowserContext;
}

namespace gfx {
class Size;
}

namespace guest_view {
class GuestViewManager;
}
Expand All @@ -50,21 +46,15 @@ class ExtensionsGuestViewMessageFilter
~ExtensionsGuestViewMessageFilter() override = default;

// GuestViewMessageFilter implementation.
bool OnMessageReceived(const IPC::Message& message) override;
guest_view::GuestViewManager* GetOrCreateGuestViewManager() override;

// Message handlers on the UI thread.
void OnCanExecuteContentScript(int render_view_id,
const std::string& script_id,
bool* allowed);
void OnCreateMimeHandlerViewGuest(int render_frame_id,
const std::string& view_id,
int element_instance_id,
const gfx::Size& element_size);

// mojom::GuestView implementation.
void ReadyToCreateMimeHandlerView(int32_t render_frame_id,
bool success) override;
void CanExecuteContentScript(
int routing_id,
const std::string& script_id,
CanExecuteContentScriptCallback callback) override;

static const uint32_t kFilteredMessageClasses[];
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
#include "content/public/common/webplugininfo.h"
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_embedder.h"
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
#include "extensions/common/guest_view/extensions_guest_view_messages.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
#include "ppapi/buildflags/buildflags.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
#include "extensions/browser/guest_view/mime_handler_view/test_mime_handler_view_guest.h"
#include "extensions/browser/process_manager.h"
#include "extensions/common/constants.h"
#include "extensions/common/guest_view/extensions_guest_view_messages.h"
#include "extensions/common/mojom/guest_view.mojom.h"
#include "extensions/test/result_catcher.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#include "extensions/browser/view_type_utils.h"
#include "extensions/common/api/mime_handler_private.h"
#include "extensions/common/constants.h"
#include "extensions/common/guest_view/extensions_guest_view_messages.h"
#include "extensions/common/mojom/guest_view.mojom.h"
#include "extensions/strings/grit/extensions_strings.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
Expand Down
1 change: 0 additions & 1 deletion extensions/common/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,6 @@ if (enable_extensions) {
"features/simple_feature.h",
"file_util.cc",
"file_util.h",
"guest_view/extensions_guest_view_messages.h",
"hashed_extension_id.cc",
"hashed_extension_id.h",
"identifiability_metrics.cc",
Expand Down
5 changes: 0 additions & 5 deletions extensions/common/extension_message_generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,3 @@
#ifndef EXTENSIONS_COMMON_EXTENSION_MESSAGES_H_
#error "Failed to include header extensions/common/extension_messages.h"
#endif
#undef EXTENSIONS_COMMON_GUEST_VIEW_EXTENSIONS_GUEST_VIEW_MESSAGES_H_
#include "extensions/common/guest_view/extensions_guest_view_messages.h"
#ifndef EXTENSIONS_COMMON_GUEST_VIEW_EXTENSIONS_GUEST_VIEW_MESSAGES_H_
#error "Failed to include header extensions_guest_view_messages.h"
#endif
3 changes: 0 additions & 3 deletions extensions/common/guest_view/DIR_METADATA

This file was deleted.

4 changes: 0 additions & 4 deletions extensions/common/guest_view/OWNERS

This file was deleted.

28 changes: 0 additions & 28 deletions extensions/common/guest_view/extensions_guest_view_messages.h

This file was deleted.

5 changes: 5 additions & 0 deletions extensions/common/mojom/guest_view.mojom
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ interface GuestView {
// |success| is true the MimeHandlerViewEmbedder should proceed with attaching
// the GuestView.
ReadyToCreateMimeHandlerView(int32 routing_id, bool success);

// Queries whether the frame identified by `routing_id` is allowed to inject
// the script with the provided `script_id`.
[Sync]
CanExecuteContentScript(int32 routing_id, string script_id) => (bool allowed);
};

// An interface implemented by the renderer which is used for creating a
Expand Down
2 changes: 0 additions & 2 deletions extensions/renderer/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,6 @@ source_set("renderer") {
"get_script_context.h",
"gin_port.cc",
"gin_port.h",
"guest_view/extensions_guest_view_container_dispatcher.cc",
"guest_view/extensions_guest_view_container_dispatcher.h",
"guest_view/guest_view_internal_custom_bindings.cc",
"guest_view/guest_view_internal_custom_bindings.h",
"guest_view/mime_handler_view/mime_handler_view_container_manager.cc",
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
#include "content/public/renderer/v8_value_converter.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_messages.h"
#include "extensions/common/guest_view/extensions_guest_view_messages.h"
#include "extensions/renderer/script_context.h"
#include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom.h"
#include "third_party/blink/public/web/web_custom_element.h"
Expand Down
Loading

0 comments on commit 4320c50

Please sign in to comment.