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 74e6928041145fd6f37ec4ce7acc6be0649b944d..3eaf29f3ab74de6159bba1578ba0810bd9467922 100644
  10. --- a/content/browser/web_contents/web_contents_impl.cc
  11. +++ b/content/browser/web_contents/web_contents_impl.cc
  12. @@ -2983,6 +2983,13 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params,
  13. site_instance.get(), params.renderer_initiated_creation,
  14. params.main_frame_name, GetOriginalOpener(), primary_main_frame_policy);
  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. WebContentsViewDelegate* delegate =
  23. GetContentClient()->browser()->GetWebContentsViewDelegate(this);
  24. @@ -2993,6 +3000,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params,
  25. view_.reset(CreateWebContentsView(this, 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 1b21d5241ea671e4ead260f170e6a0512efea89a..ac9bce453ff812679d8c77d661729ea681977061 100644
  33. --- a/content/public/browser/web_contents.h
  34. +++ b/content/public/browser/web_contents.h
  35. @@ -93,10 +93,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. @@ -234,6 +237,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. + content::WebContentsView* view = nullptr;
  54. + 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