web_contents.patch 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
  2. From: deepak1556 <[email protected]>
  3. Date: Sat, 24 Apr 2021 18:07:09 -0700
  4. Subject: web_contents.patch
  5. This allows overriding the RenderViewHostDelegateView of a WebContents, which
  6. is needed for OSR.
  7. Originally landed in https://github.com/electron/libchromiumcontent/pull/226.
  8. diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
  9. index c7c515bf753a4a9851b1d68c206b9c7487f02578..3fef597d18025bd35b4f7af105c6907602958223 100644
  10. --- a/content/browser/web_contents/web_contents_impl.cc
  11. +++ b/content/browser/web_contents/web_contents_impl.cc
  12. @@ -3323,6 +3323,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params,
  13. params.main_frame_name, GetOpener(), primary_main_frame_policy,
  14. base::UnguessableToken::Create());
  15. + if (params.view && params.delegate_view) {
  16. + view_.reset(params.view);
  17. + render_view_host_delegate_view_ = params.delegate_view;
  18. + }
  19. +
  20. + if (!view_) {
  21. +
  22. std::unique_ptr<WebContentsViewDelegate> delegate =
  23. GetContentClient()->browser()->GetWebContentsViewDelegate(this);
  24. @@ -3333,6 +3340,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params,
  25. view_ = CreateWebContentsView(this, std::move(delegate),
  26. &render_view_host_delegate_view_);
  27. }
  28. + } // !view_
  29. CHECK(render_view_host_delegate_view_);
  30. CHECK(view_.get());
  31. diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
  32. index f80a1a82e14a0c9f6c43897e649b60a87f5f5aa6..a58eb20fdd278fac7f89862a4817cbf57c6a0381 100644
  33. --- a/content/public/browser/web_contents.h
  34. +++ b/content/public/browser/web_contents.h
  35. @@ -98,10 +98,13 @@ class BrowserContext;
  36. class BrowserPluginGuestDelegate;
  37. class RenderFrameHost;
  38. class RenderViewHost;
  39. +class RenderViewHostDelegateView;
  40. class RenderWidgetHostView;
  41. +class RenderWidgetHostViewBase;
  42. class ScreenOrientationDelegate;
  43. class SiteInstance;
  44. class WebContentsDelegate;
  45. +class WebContentsView;
  46. class WebUI;
  47. struct DropData;
  48. struct MHTMLGenerationParams;
  49. @@ -244,6 +247,10 @@ class WebContents : public PageNavigator,
  50. network::mojom::WebSandboxFlags starting_sandbox_flags =
  51. network::mojom::WebSandboxFlags::kNone;
  52. + // Optionally specify the view and delegate view.
  53. + raw_ptr<content::WebContentsView> view = nullptr;
  54. + raw_ptr<content::RenderViewHostDelegateView> delegate_view = nullptr;
  55. +
  56. // Value used to set the last time the WebContents was made active, this is
  57. // the value that'll be returned by GetLastActiveTime(). If this is left
  58. // default initialized then the value is not passed on to the WebContents