web_contents.patch 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
  2. From: Anonymous <[email protected]>
  3. Date: Thu, 20 Sep 2018 17:46:53 -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 484e2325a618ea2e665544a625dfbb60ef6124da..5b4f85cfadac54fa81a357ebece6f9b274066a29 100644
  10. --- a/content/browser/web_contents/web_contents_impl.cc
  11. +++ b/content/browser/web_contents/web_contents_impl.cc
  12. @@ -2069,6 +2069,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
  13. std::string unique_name;
  14. frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name);
  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. WebContentsViewDelegate* delegate =
  22. GetContentClient()->browser()->GetWebContentsViewDelegate(this);
  23. @@ -2079,6 +2085,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
  24. view_.reset(CreateWebContentsView(this, delegate,
  25. &render_view_host_delegate_view_));
  26. }
  27. + } // !view_
  28. CHECK(render_view_host_delegate_view_);
  29. CHECK(view_.get());
  30. diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
  31. index b471bd1f78c610e56219962084ae66d5e2450738..ab498adcf576641c79f16fd1bf5376b7acaf9636 100644
  32. --- a/content/public/browser/web_contents.h
  33. +++ b/content/public/browser/web_contents.h
  34. @@ -84,9 +84,12 @@ class BrowserPluginGuestDelegate;
  35. class InterstitialPage;
  36. class RenderFrameHost;
  37. class RenderViewHost;
  38. +class RenderViewHostDelegateView;
  39. class RenderWidgetHost;
  40. class RenderWidgetHostView;
  41. +class RenderWidgetHostViewBase;
  42. class WebContentsDelegate;
  43. +class WebContentsView;
  44. class WebUI;
  45. struct CustomContextMenuContext;
  46. struct DropData;
  47. @@ -211,6 +214,10 @@ class WebContents : public PageNavigator,
  48. kInitializeAndWarmupRendererProcess,
  49. } desired_renderer_state;
  50. + // Optionally specify the view and delegate view.
  51. + content::WebContentsView* view = nullptr;
  52. + content::RenderViewHostDelegateView* delegate_view = nullptr;
  53. +
  54. // Sandboxing flags set on the new WebContents.
  55. blink::mojom::WebSandboxFlags starting_sandbox_flags;