mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	Update to Chromium version 76.0.3809.0 (#665002)
OSR tests will be fixed by a follow-up merge of Viz support (see issue #2575).
This commit is contained in:
		
				
					committed by
					
						 Marshall Greenblatt
						Marshall Greenblatt
					
				
			
			
				
	
			
			
			
						parent
						
							5892ffc382
						
					
				
				
					commit
					cc0db5f166
				
			| @@ -1,8 +1,8 @@ | ||||
| diff --git content/browser/renderer_host/render_widget_host_view_child_frame.cc content/browser/renderer_host/render_widget_host_view_child_frame.cc | ||||
| index e098a5261725..001670b0a7aa 100644 | ||||
| index a04ca1926622..705cc77ccee0 100644 | ||||
| --- content/browser/renderer_host/render_widget_host_view_child_frame.cc | ||||
| +++ content/browser/renderer_host/render_widget_host_view_child_frame.cc | ||||
| @@ -649,6 +649,7 @@ void RenderWidgetHostViewChildFrame::SubmitCompositorFrame( | ||||
| @@ -614,6 +614,7 @@ void RenderWidgetHostViewChildFrame::SubmitCompositorFrame( | ||||
|                 "RenderWidgetHostViewChildFrame::OnSwapCompositorFrame"); | ||||
|    support_->SubmitCompositorFrame(local_surface_id, std::move(frame), | ||||
|                                    std::move(hit_test_region_list)); | ||||
| @@ -10,7 +10,7 @@ index e098a5261725..001670b0a7aa 100644 | ||||
|  } | ||||
|   | ||||
|  void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame( | ||||
| @@ -657,6 +658,15 @@ void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame( | ||||
| @@ -622,6 +623,15 @@ void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame( | ||||
|    support_->DidNotProduceFrame(ack); | ||||
|  } | ||||
|   | ||||
| @@ -26,7 +26,7 @@ index e098a5261725..001670b0a7aa 100644 | ||||
|  void RenderWidgetHostViewChildFrame::TransformPointToRootSurface( | ||||
|      gfx::PointF* point) { | ||||
|    // This function is called by RenderWidgetHostInputEventRouter only for | ||||
| @@ -841,6 +851,11 @@ void RenderWidgetHostViewChildFrame::ShowDefinitionForSelection() { | ||||
| @@ -806,6 +816,11 @@ void RenderWidgetHostViewChildFrame::ShowDefinitionForSelection() { | ||||
|  void RenderWidgetHostViewChildFrame::SpeakSelection() {} | ||||
|  #endif  // defined(OS_MACOSX) | ||||
|   | ||||
|   | ||||
| @@ -12,10 +12,10 @@ index de89d291e5cb..9ce7bf4cb250 100644 | ||||
|    // Force a new surface id to be allocated. Returns true if the | ||||
|    // RenderWidgetHostImpl sent the resulting surface id to the renderer. | ||||
| diff --git content/browser/renderer_host/browser_compositor_view_mac.mm content/browser/renderer_host/browser_compositor_view_mac.mm | ||||
| index 625566d5ad25..64e2732caf24 100644 | ||||
| index 4b3f3c7e97e7..0ce693402b99 100644 | ||||
| --- content/browser/renderer_host/browser_compositor_view_mac.mm | ||||
| +++ content/browser/renderer_host/browser_compositor_view_mac.mm | ||||
| @@ -84,6 +84,12 @@ DelegatedFrameHost* BrowserCompositorMac::GetDelegatedFrameHost() { | ||||
| @@ -85,6 +85,12 @@ DelegatedFrameHost* BrowserCompositorMac::GetDelegatedFrameHost() { | ||||
|    return delegated_frame_host_.get(); | ||||
|  } | ||||
|   | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git content/browser/browser_plugin/browser_plugin_guest.cc content/browser/browser_plugin/browser_plugin_guest.cc | ||||
| index 5ec2e8461380..4ba494dad4ba 100644 | ||||
| index dfd38d5252a5..6c178ff2a8f4 100644 | ||||
| --- content/browser/browser_plugin/browser_plugin_guest.cc | ||||
| +++ content/browser/browser_plugin/browser_plugin_guest.cc | ||||
| @@ -348,8 +348,11 @@ void BrowserPluginGuest::InitInternal( | ||||
| @@ -308,8 +308,11 @@ void BrowserPluginGuest::InitInternal( | ||||
|            static_cast<WebContentsViewGuest*>(GetWebContents()->GetView()); | ||||
|      } | ||||
|   | ||||
| @@ -15,7 +15,7 @@ index 5ec2e8461380..4ba494dad4ba 100644 | ||||
|   | ||||
|      // Once a BrowserPluginGuest has an embedder WebContents, it's considered to | ||||
|      // be attached. | ||||
| @@ -862,10 +865,19 @@ void BrowserPluginGuest::OnWillAttachComplete( | ||||
| @@ -822,10 +825,19 @@ void BrowserPluginGuest::OnWillAttachComplete( | ||||
|          static_cast<WebContentsViewGuest*>(GetWebContents()->GetView()); | ||||
|      if (!web_contents()->GetRenderViewHost()->GetWidget()->GetView()) { | ||||
|        web_contents_view->CreateViewForWidget( | ||||
| @@ -37,7 +37,7 @@ index 5ec2e8461380..4ba494dad4ba 100644 | ||||
|   | ||||
|    attached_ = true; | ||||
| diff --git content/browser/frame_host/interstitial_page_impl.cc content/browser/frame_host/interstitial_page_impl.cc | ||||
| index dbc6281ef737..e413bf418b25 100644 | ||||
| index 106239c65d0e..b3b3121dec54 100644 | ||||
| --- content/browser/frame_host/interstitial_page_impl.cc | ||||
| +++ content/browser/frame_host/interstitial_page_impl.cc | ||||
| @@ -632,7 +632,7 @@ WebContentsView* InterstitialPageImpl::CreateWebContentsView() { | ||||
| @@ -79,10 +79,10 @@ index bfb918a2cba3..a193b5a0fed8 100644 | ||||
|    // Creates a new View that holds a non-top-level widget and receives messages | ||||
|    // for it. | ||||
| diff --git content/browser/web_contents/web_contents_view_aura.cc content/browser/web_contents/web_contents_view_aura.cc | ||||
| index 74f537d11618..85110e2e6ecf 100644 | ||||
| index ee5760ecbe0f..73521279a506 100644 | ||||
| --- content/browser/web_contents/web_contents_view_aura.cc | ||||
| +++ content/browser/web_contents/web_contents_view_aura.cc | ||||
| @@ -818,7 +818,8 @@ void WebContentsViewAura::CreateView(const gfx::Size& initial_size, | ||||
| @@ -946,7 +946,8 @@ void WebContentsViewAura::CreateView(const gfx::Size& initial_size, | ||||
|  } | ||||
|   | ||||
|  RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( | ||||
| @@ -92,7 +92,7 @@ index 74f537d11618..85110e2e6ecf 100644 | ||||
|    if (render_widget_host->GetView()) { | ||||
|      // During testing, the view will already be set up in most cases to the | ||||
|      // test view, so we don't want to clobber it with a real one. To verify that | ||||
| @@ -830,6 +831,7 @@ RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( | ||||
| @@ -958,6 +959,7 @@ RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( | ||||
|          render_widget_host->GetView()); | ||||
|    } | ||||
|   | ||||
| @@ -101,10 +101,10 @@ index 74f537d11618..85110e2e6ecf 100644 | ||||
|        g_create_render_widget_host_view | ||||
|            ? g_create_render_widget_host_view(render_widget_host, | ||||
| diff --git content/browser/web_contents/web_contents_view_aura.h content/browser/web_contents/web_contents_view_aura.h | ||||
| index a1395dab81d4..b8c33779fef4 100644 | ||||
| index 46ca496af77b..cd6ad38ab5ae 100644 | ||||
| --- content/browser/web_contents/web_contents_view_aura.h | ||||
| +++ content/browser/web_contents/web_contents_view_aura.h | ||||
| @@ -109,7 +109,7 @@ class CONTENT_EXPORT WebContentsViewAura | ||||
| @@ -121,7 +121,7 @@ class CONTENT_EXPORT WebContentsViewAura | ||||
|                    gfx::NativeView context) override; | ||||
|    RenderWidgetHostViewBase* CreateViewForWidget( | ||||
|        RenderWidgetHost* render_widget_host, | ||||
| @@ -140,10 +140,10 @@ index 8aaa80183dd1..b9df8a87be07 100644 | ||||
|        RenderWidgetHost* render_widget_host) override; | ||||
|    void SetPageTitle(const base::string16& title) override; | ||||
| diff --git content/browser/web_contents/web_contents_view_guest.cc content/browser/web_contents/web_contents_view_guest.cc | ||||
| index 9d91d225fd9f..381b5a1743ae 100644 | ||||
| index ecaf30bcb7b9..7c65a61fe158 100644 | ||||
| --- content/browser/web_contents/web_contents_view_guest.cc | ||||
| +++ content/browser/web_contents/web_contents_view_guest.cc | ||||
| @@ -69,6 +69,8 @@ gfx::NativeWindow WebContentsViewGuest::GetTopLevelNativeWindow() const { | ||||
| @@ -68,6 +68,8 @@ gfx::NativeWindow WebContentsViewGuest::GetTopLevelNativeWindow() const { | ||||
|   | ||||
|  void WebContentsViewGuest::OnGuestAttached(WebContentsView* parent_view) { | ||||
|  #if defined(USE_AURA) | ||||
| @@ -152,16 +152,16 @@ index 9d91d225fd9f..381b5a1743ae 100644 | ||||
|    // In aura, ScreenPositionClient doesn't work properly if we do | ||||
|    // not have the native view associated with this WebContentsViewGuest in the | ||||
|    // view hierarchy. We add this view as embedder's child here. | ||||
| @@ -80,6 +82,8 @@ void WebContentsViewGuest::OnGuestAttached(WebContentsView* parent_view) { | ||||
| @@ -78,6 +80,8 @@ void WebContentsViewGuest::OnGuestAttached(WebContentsView* parent_view) { | ||||
|  } | ||||
|   | ||||
|  void WebContentsViewGuest::OnGuestDetached(WebContentsView* old_parent_view) { | ||||
| +  if (!platform_view_->GetNativeView()) | ||||
| +    return; | ||||
|  #if defined(USE_AURA) | ||||
|    if (!features::IsMultiProcessMash()) { | ||||
|      old_parent_view->GetNativeView()->RemoveChild( | ||||
| @@ -124,7 +128,8 @@ void WebContentsViewGuest::CreateView(const gfx::Size& initial_size, | ||||
|    old_parent_view->GetNativeView()->RemoveChild( | ||||
|        platform_view_->GetNativeView()); | ||||
| @@ -120,7 +124,8 @@ void WebContentsViewGuest::CreateView(const gfx::Size& initial_size, | ||||
|  } | ||||
|   | ||||
|  RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForWidget( | ||||
| @@ -171,7 +171,7 @@ index 9d91d225fd9f..381b5a1743ae 100644 | ||||
|    if (render_widget_host->GetView()) { | ||||
|      // During testing, the view will already be set up in most cases to the | ||||
|      // test view, so we don't want to clobber it with a real one. To verify that | ||||
| @@ -136,11 +141,19 @@ RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForWidget( | ||||
| @@ -132,11 +137,19 @@ RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForWidget( | ||||
|          render_widget_host->GetView()); | ||||
|    } | ||||
|   | ||||
| @@ -208,7 +208,7 @@ index 913fbc4bb00e..731a81c72803 100644 | ||||
|        RenderWidgetHost* render_widget_host) override; | ||||
|    void SetPageTitle(const base::string16& title) override; | ||||
| diff --git content/browser/web_contents/web_contents_view_mac.h content/browser/web_contents/web_contents_view_mac.h | ||||
| index 4266d4c817d4..7bcede99bca1 100644 | ||||
| index 1b577eacbcc2..f614825b14a6 100644 | ||||
| --- content/browser/web_contents/web_contents_view_mac.h | ||||
| +++ content/browser/web_contents/web_contents_view_mac.h | ||||
| @@ -74,7 +74,7 @@ class WebContentsViewMac : public WebContentsView, | ||||
| @@ -221,10 +221,10 @@ index 4266d4c817d4..7bcede99bca1 100644 | ||||
|        RenderWidgetHost* render_widget_host) override; | ||||
|    void SetPageTitle(const base::string16& title) override; | ||||
| diff --git content/browser/web_contents/web_contents_view_mac.mm content/browser/web_contents/web_contents_view_mac.mm | ||||
| index 2d24491812f5..bbba45c502e5 100644 | ||||
| index c6adcdd2b33e..a77289b96036 100644 | ||||
| --- content/browser/web_contents/web_contents_view_mac.mm | ||||
| +++ content/browser/web_contents/web_contents_view_mac.mm | ||||
| @@ -319,7 +319,8 @@ void WebContentsViewMac::CreateView( | ||||
| @@ -323,7 +323,8 @@ void WebContentsViewMac::CreateView( | ||||
|  } | ||||
|   | ||||
|  RenderWidgetHostViewBase* WebContentsViewMac::CreateViewForWidget( | ||||
| @@ -234,7 +234,7 @@ index 2d24491812f5..bbba45c502e5 100644 | ||||
|    if (render_widget_host->GetView()) { | ||||
|      // During testing, the view will already be set up in most cases to the | ||||
|      // test view, so we don't want to clobber it with a real one. To verify that | ||||
| @@ -331,6 +332,7 @@ RenderWidgetHostViewBase* WebContentsViewMac::CreateViewForWidget( | ||||
| @@ -335,6 +336,7 @@ RenderWidgetHostViewBase* WebContentsViewMac::CreateViewForWidget( | ||||
|          render_widget_host->GetView()); | ||||
|    } | ||||
|   | ||||
| @@ -243,18 +243,18 @@ index 2d24491812f5..bbba45c502e5 100644 | ||||
|        g_create_render_widget_host_view | ||||
|            ? g_create_render_widget_host_view(render_widget_host, | ||||
| diff --git content/public/browser/browser_plugin_guest_delegate.h content/public/browser/browser_plugin_guest_delegate.h | ||||
| index bf2226b53dd7..782a320ab788 100644 | ||||
| index b7db83c24fc5..edf379709ec0 100644 | ||||
| --- content/public/browser/browser_plugin_guest_delegate.h | ||||
| +++ content/public/browser/browser_plugin_guest_delegate.h | ||||
| @@ -19,6 +19,7 @@ namespace content { | ||||
|  class GuestHost; | ||||
| @@ -20,6 +20,7 @@ class GuestHost; | ||||
|  class RenderFrameHost; | ||||
|  class RenderWidgetHost; | ||||
|  class SiteInstance; | ||||
| +class WebContentsView; | ||||
|   | ||||
|  // Objects implement this interface to get notified about changes in the guest | ||||
|  // WebContents and to provide necessary functionality. | ||||
| @@ -67,6 +68,10 @@ class CONTENT_EXPORT BrowserPluginGuestDelegate { | ||||
| @@ -68,6 +69,10 @@ class CONTENT_EXPORT BrowserPluginGuestDelegate { | ||||
|    // content module. | ||||
|    virtual void SetGuestHost(GuestHost* guest_host) {} | ||||
|   | ||||
| @@ -266,10 +266,10 @@ index bf2226b53dd7..782a320ab788 100644 | ||||
|    // a BrowserPlugin even when we are using cross process frames for guests. It | ||||
|    // should be removed after resolving https://crbug.com/642826). | ||||
| diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc | ||||
| index 5bc11895ea38..656fa0f62114 100644 | ||||
| index cf367d30422b..619c14dc05a1 100644 | ||||
| --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc | ||||
| +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc | ||||
| @@ -211,6 +211,8 @@ void MimeHandlerViewGuest::CreateWebContents( | ||||
| @@ -233,6 +233,8 @@ void MimeHandlerViewGuest::CreateWebContents( | ||||
|    WebContents::CreateParams params(browser_context(), | ||||
|                                     guest_site_instance.get()); | ||||
|    params.guest_delegate = this; | ||||
| @@ -278,7 +278,7 @@ index 5bc11895ea38..656fa0f62114 100644 | ||||
|    // TODO(erikchen): Fix ownership semantics for guest views. | ||||
|    // https://crbug.com/832879. | ||||
|    std::move(callback).Run( | ||||
| @@ -255,6 +257,18 @@ bool MimeHandlerViewGuest::ShouldDestroyOnDetach() const { | ||||
| @@ -277,6 +279,18 @@ bool MimeHandlerViewGuest::ShouldDestroyOnDetach() const { | ||||
|    return true; | ||||
|  } | ||||
|   | ||||
| @@ -298,10 +298,10 @@ index 5bc11895ea38..656fa0f62114 100644 | ||||
|      WebContents* source, | ||||
|      const content::OpenURLParams& params) { | ||||
| diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h | ||||
| index a0e702bdfd0c..a389ca9b948a 100644 | ||||
| index 7cdbfafb8b38..be080396eaae 100644 | ||||
| --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h | ||||
| +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h | ||||
| @@ -119,6 +119,10 @@ class MimeHandlerViewGuest | ||||
| @@ -131,6 +131,10 @@ class MimeHandlerViewGuest | ||||
|    bool ZoomPropagatesFromEmbedderToGuest() const final; | ||||
|    bool ShouldDestroyOnDetach() const final; | ||||
|   | ||||
| @@ -313,11 +313,11 @@ index a0e702bdfd0c..a389ca9b948a 100644 | ||||
|    content::WebContents* OpenURLFromTab( | ||||
|        content::WebContents* source, | ||||
| diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h | ||||
| index 0928bf2f44da..e9542785ec8a 100644 | ||||
| index 98689e261460..c501568b6f70 100644 | ||||
| --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h | ||||
| +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h | ||||
| @@ -6,9 +6,9 @@ | ||||
|  #define EXTENSIONS_BROWSER_GUEST_VIEW_MIME_HANDLER_VIEW_MIME_HANDLER_VIEW_GUEST_DELEGATE_H_ | ||||
| @@ -8,9 +8,9 @@ | ||||
|  #include <string> | ||||
|   | ||||
|  #include "base/macros.h" | ||||
| +#include "content/public/browser/web_contents.h" | ||||
| @@ -327,7 +327,7 @@ index 0928bf2f44da..e9542785ec8a 100644 | ||||
|  struct ContextMenuParams; | ||||
|  }  // namespace content | ||||
|   | ||||
| @@ -20,6 +20,14 @@ class MimeHandlerViewGuestDelegate { | ||||
| @@ -22,6 +22,14 @@ class MimeHandlerViewGuestDelegate { | ||||
|    MimeHandlerViewGuestDelegate() {} | ||||
|    virtual ~MimeHandlerViewGuestDelegate() {} | ||||
|   | ||||
|   | ||||
							
								
								
									
										18
									
								
								patch/patches/browser_scheduler.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								patch/patches/browser_scheduler.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| diff --git content/browser/scheduler/browser_task_executor.cc content/browser/scheduler/browser_task_executor.cc | ||||
| index d8739b1f3110..987472561468 100644 | ||||
| --- content/browser/scheduler/browser_task_executor.cc | ||||
| +++ content/browser/scheduler/browser_task_executor.cc | ||||
| @@ -133,10 +133,11 @@ void BrowserTaskExecutor::PostFeatureListSetup() { | ||||
|   | ||||
|  // static | ||||
|  void BrowserTaskExecutor::Shutdown() { | ||||
| -  if (!g_browser_task_executor) | ||||
| +  if (!g_browser_task_executor || | ||||
| +      !g_browser_task_executor->browser_ui_thread_scheduler_) { | ||||
|      return; | ||||
| +  } | ||||
|   | ||||
| -  DCHECK(g_browser_task_executor->browser_ui_thread_scheduler_); | ||||
|    // We don't delete |g_browser_task_executor| because other threads may | ||||
|    // PostTask or call BrowserTaskExecutor::GetTaskRunner while we're tearing | ||||
|    // things down. We don't want to add locks so we just leak instead of dealing | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn | ||||
| index 4b24c762b6e9..d2fd1fc5d414 100644 | ||||
| index a3f21b7ef850..882b4a38d14c 100644 | ||||
| --- build/config/compiler/BUILD.gn | ||||
| +++ build/config/compiler/BUILD.gn | ||||
| @@ -157,7 +157,7 @@ declare_args() { | ||||
| @@ -11,7 +11,7 @@ index 4b24c762b6e9..d2fd1fc5d414 100644 | ||||
|                 !(current_cpu == "x86" || current_cpu == "x64")))) | ||||
|  } | ||||
|   | ||||
| @@ -1701,8 +1701,6 @@ config("thin_archive") { | ||||
| @@ -1703,8 +1703,6 @@ config("thin_archive") { | ||||
|    # archive names to 16 characters, which is not what we want). | ||||
|    if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) { | ||||
|      arflags = [ "-T" ] | ||||
|   | ||||
| @@ -1,24 +1,24 @@ | ||||
| diff --git chrome/browser/BUILD.gn chrome/browser/BUILD.gn | ||||
| index 987b36217aad..832eab3ee56a 100644 | ||||
| index 04aff03b621d..7e887b89a6d8 100644 | ||||
| --- chrome/browser/BUILD.gn | ||||
| +++ chrome/browser/BUILD.gn | ||||
| @@ -8,6 +8,7 @@ import("//build/config/features.gni") | ||||
|  import("//build/config/jumbo.gni") | ||||
| @@ -9,6 +9,7 @@ import("//build/config/jumbo.gni") | ||||
|  import("//build/config/linux/gtk/gtk.gni") | ||||
|  import("//build/config/ui.gni") | ||||
|  import("//build/split_static_library.gni") | ||||
| +import("//cef/libcef/features/features.gni") | ||||
|  import("//chrome/common/features.gni") | ||||
|  import("//components/feature_engagement/features.gni") | ||||
|  import("//components/feed/features.gni") | ||||
| @@ -1811,6 +1812,7 @@ jumbo_split_static_library("browser") { | ||||
|      "//base:i18n", | ||||
| @@ -1849,6 +1850,7 @@ jumbo_split_static_library("browser") { | ||||
|      "//base/allocator:buildflags", | ||||
|      "//base/util/values:values_util", | ||||
|      "//cc", | ||||
| +    "//cef/libcef/features", | ||||
|      "//chrome:extra_resources", | ||||
|      "//chrome:resources", | ||||
|      "//chrome:strings", | ||||
| @@ -2111,6 +2113,10 @@ jumbo_split_static_library("browser") { | ||||
| @@ -2154,6 +2156,10 @@ jumbo_split_static_library("browser") { | ||||
|      ] | ||||
|    } | ||||
|   | ||||
| @@ -29,12 +29,3 @@ index 987b36217aad..832eab3ee56a 100644 | ||||
|    if (is_android) { | ||||
|      sources += [ | ||||
|        "after_startup_task_utils_android.cc", | ||||
| @@ -3916,7 +3922,7 @@ jumbo_split_static_library("browser") { | ||||
|      ] | ||||
|    } | ||||
|   | ||||
| -  if (use_aura && !use_ozone && is_desktop_linux) { | ||||
| +  if (use_aura && !use_ozone && is_desktop_linux && use_gtk) { | ||||
|      deps += [ "//chrome/browser/ui/libgtkui" ] | ||||
|    } | ||||
|   | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git chrome/browser/content_settings/host_content_settings_map_factory.cc chrome/browser/content_settings/host_content_settings_map_factory.cc | ||||
| index 8d55c77443cd..a8314498c93f 100644 | ||||
| index bcc5cfe3b483..7798026b7a3a 100644 | ||||
| --- chrome/browser/content_settings/host_content_settings_map_factory.cc | ||||
| +++ chrome/browser/content_settings/host_content_settings_map_factory.cc | ||||
| @@ -7,6 +7,7 @@ | ||||
| @@ -36,7 +36,7 @@ index 8d55c77443cd..a8314498c93f 100644 | ||||
|  #endif | ||||
|  } | ||||
|   | ||||
| @@ -90,10 +101,16 @@ scoped_refptr<RefcountedKeyedService> | ||||
| @@ -89,10 +100,16 @@ scoped_refptr<RefcountedKeyedService> | ||||
|        base::FeatureList::IsEnabled(features::kPermissionDelegation))); | ||||
|   | ||||
|  #if BUILDFLAG(ENABLE_EXTENSIONS) | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| diff --git chrome/browser/browser_process.h chrome/browser/browser_process.h | ||||
| index cac72c6a2fd1..2ed83a4af1b3 100644 | ||||
| index 761d300aa06b..f86558dd6efc 100644 | ||||
| --- chrome/browser/browser_process.h | ||||
| +++ chrome/browser/browser_process.h | ||||
| @@ -39,6 +39,10 @@ class SystemNetworkContextManager; | ||||
|  class WatchDogThread; | ||||
| @@ -40,6 +40,10 @@ class WatchDogThread; | ||||
|  class WebRtcLogUploader; | ||||
|  class StartupData; | ||||
|   | ||||
| +namespace net_log { | ||||
| +class NetExportFileWriter; | ||||
| @@ -13,7 +13,7 @@ index cac72c6a2fd1..2ed83a4af1b3 100644 | ||||
|  namespace network { | ||||
|  class NetworkQualityTracker; | ||||
|  class SharedURLLoaderFactory; | ||||
| @@ -183,6 +187,9 @@ class BrowserProcess { | ||||
| @@ -184,6 +188,9 @@ class BrowserProcess { | ||||
|    // backed by the IOThread's URLRequestContext. | ||||
|    virtual SystemNetworkContextManager* system_network_context_manager() = 0; | ||||
|   | ||||
| @@ -24,10 +24,10 @@ index cac72c6a2fd1..2ed83a4af1b3 100644 | ||||
|    // network quality change events. | ||||
|    virtual network::NetworkQualityTracker* network_quality_tracker() = 0; | ||||
| diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc | ||||
| index 0b15890653cb..175eb09c6dc7 100644 | ||||
| index c2e0b9172eb2..57c22ff16f4b 100644 | ||||
| --- chrome/browser/browser_process_impl.cc | ||||
| +++ chrome/browser/browser_process_impl.cc | ||||
| @@ -681,6 +681,10 @@ BrowserProcessImpl::system_network_context_manager() { | ||||
| @@ -683,6 +683,10 @@ BrowserProcessImpl::system_network_context_manager() { | ||||
|    return SystemNetworkContextManager::GetInstance(); | ||||
|  } | ||||
|   | ||||
| @@ -39,10 +39,10 @@ index 0b15890653cb..175eb09c6dc7 100644 | ||||
|  BrowserProcessImpl::shared_url_loader_factory() { | ||||
|    return system_network_context_manager()->GetSharedURLLoaderFactory(); | ||||
| diff --git chrome/browser/browser_process_impl.h chrome/browser/browser_process_impl.h | ||||
| index 6c8e21f6f5fe..4496c5579265 100644 | ||||
| index 95a7bd8e8b58..af7685f86848 100644 | ||||
| --- chrome/browser/browser_process_impl.h | ||||
| +++ chrome/browser/browser_process_impl.h | ||||
| @@ -141,6 +141,7 @@ class BrowserProcessImpl : public BrowserProcess, | ||||
| @@ -142,6 +142,7 @@ class BrowserProcessImpl : public BrowserProcess, | ||||
|    // TODO(qinmin): Remove this method as callers can retrieve the global | ||||
|    // instance from SystemNetworkContextManager directly. | ||||
|    SystemNetworkContextManager* system_network_context_manager() override; | ||||
| @@ -51,18 +51,18 @@ index 6c8e21f6f5fe..4496c5579265 100644 | ||||
|        override; | ||||
|    network::NetworkQualityTracker* network_quality_tracker() override; | ||||
| diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn | ||||
| index 535c4f04c0f3..8cd8768022ae 100644 | ||||
| index 6bd5bea7ddb0..076306275b5b 100644 | ||||
| --- chrome/browser/ui/BUILD.gn | ||||
| +++ chrome/browser/ui/BUILD.gn | ||||
| @@ -9,6 +9,7 @@ import("//build/config/features.gni") | ||||
|  import("//build/config/jumbo.gni") | ||||
| @@ -10,6 +10,7 @@ import("//build/config/jumbo.gni") | ||||
|  import("//build/config/linux/gtk/gtk.gni") | ||||
|  import("//build/config/ui.gni") | ||||
|  import("//build/split_static_library.gni") | ||||
| +import("//cef/libcef/features/features.gni") | ||||
|  import("//chrome/common/features.gni") | ||||
|  import("//chromeos/assistant/assistant.gni") | ||||
|  import("//components/feature_engagement/features.gni") | ||||
| @@ -351,6 +352,10 @@ jumbo_split_static_library("ui") { | ||||
| @@ -357,6 +358,10 @@ jumbo_split_static_library("ui") { | ||||
|      "//build/config/compiler:wexit_time_destructors", | ||||
|    ] | ||||
|   | ||||
| @@ -73,7 +73,7 @@ index 535c4f04c0f3..8cd8768022ae 100644 | ||||
|    # Since browser and browser_ui actually depend on each other, | ||||
|    # we must omit the dependency from browser_ui to browser. | ||||
|    # However, this means browser_ui and browser should more or less | ||||
| @@ -368,6 +373,7 @@ jumbo_split_static_library("ui") { | ||||
| @@ -374,6 +379,7 @@ jumbo_split_static_library("ui") { | ||||
|      "//base:i18n", | ||||
|      "//base/allocator:buildflags", | ||||
|      "//cc/paint", | ||||
| @@ -81,17 +81,8 @@ index 535c4f04c0f3..8cd8768022ae 100644 | ||||
|      "//chrome:extra_resources", | ||||
|      "//chrome:resources", | ||||
|      "//chrome:strings", | ||||
| @@ -2347,7 +2353,7 @@ jumbo_split_static_library("ui") { | ||||
|          "views/frame/native_browser_frame_factory_ozone.cc", | ||||
|        ] | ||||
|      } else { | ||||
| -      if (use_aura) { | ||||
| +      if (use_aura && use_gtk) { | ||||
|          # This is the only component that can interact with gtk. | ||||
|          deps += [ "//chrome/browser/ui/libgtkui" ] | ||||
|        } | ||||
| diff --git chrome/browser/ui/webui/net_export_ui.cc chrome/browser/ui/webui/net_export_ui.cc | ||||
| index 6357cea3ca36..9ac953d5a885 100644 | ||||
| index 1b9b3d857f47..84b875f0e01d 100644 | ||||
| --- chrome/browser/ui/webui/net_export_ui.cc | ||||
| +++ chrome/browser/ui/webui/net_export_ui.cc | ||||
| @@ -20,14 +20,13 @@ | ||||
| @@ -125,7 +116,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|  #if defined(OS_ANDROID) | ||||
|  #include "chrome/browser/android/intent_helper.h" | ||||
| @@ -69,6 +75,7 @@ content::WebUIDataSource* CreateNetExportHTMLSource() { | ||||
| @@ -68,6 +74,7 @@ content::WebUIDataSource* CreateNetExportHTMLSource() { | ||||
|    return source; | ||||
|  } | ||||
|   | ||||
| @@ -133,7 +124,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|  void SetIfNotNull(base::DictionaryValue* dict, | ||||
|                    const base::StringPiece& path, | ||||
|                    std::unique_ptr<base::Value> in_value) { | ||||
| @@ -76,6 +83,7 @@ void SetIfNotNull(base::DictionaryValue* dict, | ||||
| @@ -75,6 +82,7 @@ void SetIfNotNull(base::DictionaryValue* dict, | ||||
|      dict->Set(path, std::move(in_value)); | ||||
|    } | ||||
|  } | ||||
| @@ -141,7 +132,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|  // This class receives javascript messages from the renderer. | ||||
|  // Note that the WebUI infrastructure runs on the UI thread, therefore all of | ||||
| @@ -83,7 +91,9 @@ void SetIfNotNull(base::DictionaryValue* dict, | ||||
| @@ -82,7 +90,9 @@ void SetIfNotNull(base::DictionaryValue* dict, | ||||
|  class NetExportMessageHandler | ||||
|      : public WebUIMessageHandler, | ||||
|        public base::SupportsWeakPtr<NetExportMessageHandler>, | ||||
| @@ -151,7 +142,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|        public net_log::NetExportFileWriter::StateObserver { | ||||
|   public: | ||||
|    NetExportMessageHandler(); | ||||
| @@ -99,11 +109,13 @@ class NetExportMessageHandler | ||||
| @@ -98,11 +108,13 @@ class NetExportMessageHandler | ||||
|    void OnSendNetLog(const base::ListValue* list); | ||||
|    void OnShowFile(const base::ListValue* list); | ||||
|   | ||||
| @@ -165,7 +156,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|    // net_log::NetExportFileWriter::StateObserver implementation. | ||||
|    void OnNewState(const base::DictionaryValue& state) override; | ||||
| @@ -133,9 +145,16 @@ class NetExportMessageHandler | ||||
| @@ -132,9 +144,16 @@ class NetExportMessageHandler | ||||
|    // renderer. | ||||
|    void NotifyUIWithState(std::unique_ptr<base::DictionaryValue> state); | ||||
|   | ||||
| @@ -182,7 +173,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|    // Cached pointer to SystemNetworkContextManager's NetExportFileWriter. | ||||
|    net_log::NetExportFileWriter* file_writer_; | ||||
| @@ -151,7 +170,9 @@ class NetExportMessageHandler | ||||
| @@ -150,7 +169,9 @@ class NetExportMessageHandler | ||||
|    net::NetLogCaptureMode capture_mode_; | ||||
|    uint64_t max_log_file_size_; | ||||
|   | ||||
| @@ -192,7 +183,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|    base::WeakPtrFactory<NetExportMessageHandler> weak_ptr_factory_; | ||||
|   | ||||
| @@ -159,8 +180,7 @@ class NetExportMessageHandler | ||||
| @@ -158,8 +179,7 @@ class NetExportMessageHandler | ||||
|  }; | ||||
|   | ||||
|  NetExportMessageHandler::NetExportMessageHandler() | ||||
| @@ -202,7 +193,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|        state_observer_manager_(this), | ||||
|        weak_ptr_factory_(this) { | ||||
|    file_writer_->Initialize(); | ||||
| @@ -169,8 +189,10 @@ NetExportMessageHandler::NetExportMessageHandler() | ||||
| @@ -168,8 +188,10 @@ NetExportMessageHandler::NetExportMessageHandler() | ||||
|  NetExportMessageHandler::~NetExportMessageHandler() { | ||||
|    // There may be a pending file dialog, it needs to be told that the user | ||||
|    // has gone away so that it doesn't try to call back. | ||||
| @@ -213,7 +204,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|    file_writer_->StopNetLog(nullptr); | ||||
|  } | ||||
| @@ -233,6 +255,7 @@ void NetExportMessageHandler::OnStartNetLog(const base::ListValue* list) { | ||||
| @@ -232,6 +254,7 @@ void NetExportMessageHandler::OnStartNetLog(const base::ListValue* list) { | ||||
|    if (UsingMobileUI()) { | ||||
|      StartNetLog(base::FilePath()); | ||||
|    } else { | ||||
| @@ -221,7 +212,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|      base::FilePath initial_dir = last_save_dir.Pointer()->empty() ? | ||||
|          DownloadPrefs::FromBrowserContext( | ||||
|              web_ui()->GetWebContents()->GetBrowserContext())->DownloadPath() : | ||||
| @@ -240,6 +263,9 @@ void NetExportMessageHandler::OnStartNetLog(const base::ListValue* list) { | ||||
| @@ -239,6 +262,9 @@ void NetExportMessageHandler::OnStartNetLog(const base::ListValue* list) { | ||||
|      base::FilePath initial_path = | ||||
|          initial_dir.Append(FILE_PATH_LITERAL("chrome-net-export-log.json")); | ||||
|      ShowSelectFileDialog(initial_path); | ||||
| @@ -231,7 +222,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|    } | ||||
|  } | ||||
|   | ||||
| @@ -249,6 +275,7 @@ void NetExportMessageHandler::OnStopNetLog(const base::ListValue* list) { | ||||
| @@ -248,6 +274,7 @@ void NetExportMessageHandler::OnStopNetLog(const base::ListValue* list) { | ||||
|    std::unique_ptr<base::DictionaryValue> ui_thread_polled_data( | ||||
|        new base::DictionaryValue()); | ||||
|   | ||||
| @@ -239,7 +230,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|    Profile* profile = Profile::FromWebUI(web_ui()); | ||||
|    SetIfNotNull(ui_thread_polled_data.get(), "prerenderInfo", | ||||
|                 chrome_browser_net::GetPrerenderInfo(profile)); | ||||
| @@ -258,6 +285,7 @@ void NetExportMessageHandler::OnStopNetLog(const base::ListValue* list) { | ||||
| @@ -257,6 +284,7 @@ void NetExportMessageHandler::OnStopNetLog(const base::ListValue* list) { | ||||
|    SetIfNotNull(ui_thread_polled_data.get(), "serviceProviders", | ||||
|                 chrome_browser_net::GetWindowsServiceProviders()); | ||||
|  #endif | ||||
| @@ -247,7 +238,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|    file_writer_->StopNetLog(std::move(ui_thread_polled_data)); | ||||
|  } | ||||
| @@ -274,6 +302,7 @@ void NetExportMessageHandler::OnShowFile(const base::ListValue* list) { | ||||
| @@ -273,6 +301,7 @@ void NetExportMessageHandler::OnShowFile(const base::ListValue* list) { | ||||
|        base::Bind(&NetExportMessageHandler::ShowFileInShell, AsWeakPtr())); | ||||
|  } | ||||
|   | ||||
| @@ -255,7 +246,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|  void NetExportMessageHandler::FileSelected(const base::FilePath& path, | ||||
|                                             int index, | ||||
|                                             void* params) { | ||||
| @@ -292,6 +321,7 @@ void NetExportMessageHandler::FileSelectionCanceled(void* params) { | ||||
| @@ -291,6 +320,7 @@ void NetExportMessageHandler::FileSelectionCanceled(void* params) { | ||||
|    DCHECK(select_file_dialog_); | ||||
|    select_file_dialog_ = nullptr; | ||||
|  } | ||||
| @@ -263,7 +254,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|   | ||||
|  void NetExportMessageHandler::OnNewState(const base::DictionaryValue& state) { | ||||
|    NotifyUIWithState(state.CreateDeepCopy()); | ||||
| @@ -356,6 +386,7 @@ void NetExportMessageHandler::NotifyUIWithState( | ||||
| @@ -355,6 +385,7 @@ void NetExportMessageHandler::NotifyUIWithState( | ||||
|                                           *state); | ||||
|  } | ||||
|   | ||||
| @@ -271,7 +262,7 @@ index 6357cea3ca36..9ac953d5a885 100644 | ||||
|  void NetExportMessageHandler::ShowSelectFileDialog( | ||||
|      const base::FilePath& default_path) { | ||||
|    // User may have clicked more than once before the save dialog appears. | ||||
| @@ -374,6 +405,43 @@ void NetExportMessageHandler::ShowSelectFileDialog( | ||||
| @@ -373,6 +404,43 @@ void NetExportMessageHandler::ShowSelectFileDialog( | ||||
|        ui::SelectFileDialog::SELECT_SAVEAS_FILE, base::string16(), default_path, | ||||
|        &file_type_info, 0, base::FilePath::StringType(), owning_window, nullptr); | ||||
|  } | ||||
|   | ||||
| @@ -1,31 +1,38 @@ | ||||
| diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc | ||||
| index cf4250c7ba26..b8a05db7cced 100644 | ||||
| index b5c53b099bb2..56aa2e75b114 100644 | ||||
| --- chrome/browser/chrome_content_browser_client.cc | ||||
| +++ chrome/browser/chrome_content_browser_client.cc | ||||
| @@ -1049,12 +1049,16 @@ void LaunchURL( | ||||
| @@ -1079,10 +1079,6 @@ void LaunchURL( | ||||
|    } | ||||
|  } | ||||
|   | ||||
| +}  // namespace | ||||
| + | ||||
|  std::string GetProduct() { | ||||
| -std::string GetProduct() { | ||||
| -  return version_info::GetProductNameAndVersionForUserAgent(); | ||||
| -} | ||||
| - | ||||
|  void MaybeAppendSecureOriginsAllowlistSwitch(base::CommandLine* cmdline) { | ||||
|    // |allowlist| combines pref/policy + cmdline switch in the browser process. | ||||
|    // For renderer and utility (e.g. NetworkService) processes the switch is the | ||||
| @@ -1100,6 +1096,14 @@ void MaybeAppendSecureOriginsAllowlistSwitch(base::CommandLine* cmdline) { | ||||
|   | ||||
|  }  // namespace | ||||
|   | ||||
| +std::string GetProduct() { | ||||
| +  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | ||||
| +  if (command_line->HasSwitch(switches::kProductVersion)) | ||||
| +    return command_line->GetSwitchValueASCII(switches::kProductVersion); | ||||
| + | ||||
|    return version_info::GetProductNameAndVersionForUserAgent(); | ||||
|  } | ||||
|   | ||||
| -}  // namespace | ||||
| - | ||||
| +  return version_info::GetProductNameAndVersionForUserAgent(); | ||||
| +} | ||||
| + | ||||
|  std::string GetUserAgent() { | ||||
|    base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | ||||
|    if (command_line->HasSwitch(switches::kUserAgent)) { | ||||
| diff --git chrome/browser/chrome_content_browser_client.h chrome/browser/chrome_content_browser_client.h | ||||
| index 07e0e051ff1d..41337a1719a1 100644 | ||||
| index 499af0b670a1..dc6247946b8a 100644 | ||||
| --- chrome/browser/chrome_content_browser_client.h | ||||
| +++ chrome/browser/chrome_content_browser_client.h | ||||
| @@ -77,7 +77,8 @@ class Origin; | ||||
| @@ -79,7 +79,8 @@ class Origin; | ||||
|   | ||||
|  class ChromeSerialDelegate; | ||||
|   | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git chrome/browser/profiles/profile_manager.cc chrome/browser/profiles/profile_manager.cc | ||||
| index 376d23b7ca93..87b6418e8782 100644 | ||||
| index 4cce9ca9fbf1..b1d578c0f8c2 100644 | ||||
| --- chrome/browser/profiles/profile_manager.cc | ||||
| +++ chrome/browser/profiles/profile_manager.cc | ||||
| @@ -385,7 +385,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) | ||||
| @@ -388,7 +388,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) | ||||
|        chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, | ||||
|        content::NotificationService::AllSources()); | ||||
|   | ||||
| @@ -12,7 +12,7 @@ index 376d23b7ca93..87b6418e8782 100644 | ||||
|  } | ||||
|   | ||||
| diff --git chrome/browser/profiles/profile_manager.h chrome/browser/profiles/profile_manager.h | ||||
| index 49a5dc4bca1e..a256899483d3 100644 | ||||
| index 257e27caed9f..4d0c4fe116c6 100644 | ||||
| --- chrome/browser/profiles/profile_manager.h | ||||
| +++ chrome/browser/profiles/profile_manager.h | ||||
| @@ -92,7 +92,7 @@ class ProfileManager : public content::NotificationObserver, | ||||
|   | ||||
| @@ -182,10 +182,10 @@ index 01ea0ba7f0cb..2828896bbcad 100644 | ||||
|      } | ||||
|   | ||||
| diff --git chrome/renderer/chrome_content_renderer_client.cc chrome/renderer/chrome_content_renderer_client.cc | ||||
| index 202376e2548e..15a7bd34cf48 100644 | ||||
| index 4f04b84e4899..e4f6ee474393 100644 | ||||
| --- chrome/renderer/chrome_content_renderer_client.cc | ||||
| +++ chrome/renderer/chrome_content_renderer_client.cc | ||||
| @@ -758,6 +758,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
| @@ -775,6 +775,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
|   | ||||
|      if ((status == chrome::mojom::PluginStatus::kUnauthorized || | ||||
|           status == chrome::mojom::PluginStatus::kBlocked) && | ||||
| @@ -193,7 +193,7 @@ index 202376e2548e..15a7bd34cf48 100644 | ||||
|          observer->IsPluginTemporarilyAllowed(identifier)) { | ||||
|        status = chrome::mojom::PluginStatus::kAllowed; | ||||
|      } | ||||
| @@ -942,7 +943,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
| @@ -967,7 +968,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
|          render_frame->GetRemoteAssociatedInterfaces()->GetInterface( | ||||
|              &plugin_auth_host); | ||||
|          plugin_auth_host->BlockedUnauthorizedPlugin(group_name, identifier); | ||||
| @@ -203,7 +203,7 @@ index 202376e2548e..15a7bd34cf48 100644 | ||||
|          break; | ||||
|        } | ||||
|        case chrome::mojom::PluginStatus::kBlocked: { | ||||
| @@ -951,7 +953,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
| @@ -976,7 +978,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
|              l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name)); | ||||
|          placeholder->AllowLoading(); | ||||
|          RenderThread::Get()->RecordAction(UserMetricsAction("Plugin_Blocked")); | ||||
| @@ -213,7 +213,7 @@ index 202376e2548e..15a7bd34cf48 100644 | ||||
|          break; | ||||
|        } | ||||
|        case chrome::mojom::PluginStatus::kBlockedByPolicy: { | ||||
| @@ -961,7 +964,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
| @@ -986,7 +989,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
|                                         group_name)); | ||||
|          RenderThread::Get()->RecordAction( | ||||
|              UserMetricsAction("Plugin_BlockedByPolicy")); | ||||
| @@ -223,7 +223,7 @@ index 202376e2548e..15a7bd34cf48 100644 | ||||
|          break; | ||||
|        } | ||||
|        case chrome::mojom::PluginStatus::kBlockedNoLoading: { | ||||
| @@ -969,7 +973,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
| @@ -994,7 +998,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( | ||||
|              IDR_BLOCKED_PLUGIN_HTML, | ||||
|              l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED_NO_LOADING, | ||||
|                                         group_name)); | ||||
|   | ||||
							
								
								
									
										16
									
								
								patch/patches/chrome_pref_watcher.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								patch/patches/chrome_pref_watcher.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| diff --git chrome/browser/ui/prefs/pref_watcher.h chrome/browser/ui/prefs/pref_watcher.h | ||||
| index b5ccdc521a36..716117c141cc 100644 | ||||
| --- chrome/browser/ui/prefs/pref_watcher.h | ||||
| +++ chrome/browser/ui/prefs/pref_watcher.h | ||||
| @@ -29,10 +29,10 @@ class PrefWatcher : public KeyedService { | ||||
|    void RegisterRendererPreferenceWatcher( | ||||
|        blink::mojom::RendererPreferenceWatcherPtr watcher); | ||||
|   | ||||
| - private: | ||||
|    // KeyedService overrides: | ||||
|    void Shutdown() override; | ||||
|   | ||||
| + private: | ||||
|    void UpdateRendererPreferences(); | ||||
|    void OnWebPrefChanged(const std::string& pref_name); | ||||
|  | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git chrome/renderer/BUILD.gn chrome/renderer/BUILD.gn | ||||
| index 44798c35c1e7..88a7639a96d9 100644 | ||||
| index e5f98be28775..a1d2697affc8 100644 | ||||
| --- chrome/renderer/BUILD.gn | ||||
| +++ chrome/renderer/BUILD.gn | ||||
| @@ -4,6 +4,7 @@ | ||||
| @@ -10,7 +10,7 @@ index 44798c35c1e7..88a7639a96d9 100644 | ||||
|  import("//chrome/common/features.gni") | ||||
|  import("//components/nacl/features.gni") | ||||
|  import("//components/offline_pages/buildflags/features.gni") | ||||
| @@ -121,6 +122,7 @@ jumbo_static_library("renderer") { | ||||
| @@ -127,6 +128,7 @@ jumbo_static_library("renderer") { | ||||
|    defines = [] | ||||
|   | ||||
|    deps = [ | ||||
| @@ -18,7 +18,7 @@ index 44798c35c1e7..88a7639a96d9 100644 | ||||
|      "//chrome:resources", | ||||
|      "//chrome:strings", | ||||
|      "//chrome/common", | ||||
| @@ -187,6 +189,10 @@ jumbo_static_library("renderer") { | ||||
| @@ -193,6 +195,10 @@ jumbo_static_library("renderer") { | ||||
|   | ||||
|    configs += [ "//build/config/compiler:wexit_time_destructors" ] | ||||
|   | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git chrome/common/chrome_content_client.cc chrome/common/chrome_content_client.cc | ||||
| index 406683776819..d8bf3372dd60 100644 | ||||
| index 1db1b55b6da0..41187edcf3e1 100644 | ||||
| --- chrome/common/chrome_content_client.cc | ||||
| +++ chrome/common/chrome_content_client.cc | ||||
| @@ -97,7 +97,8 @@ | ||||
|   | ||||
| @@ -13,7 +13,7 @@ index 864f2a5a315a..78b71d523e86 100644 | ||||
|    explicit ContentServiceManagerMainDelegate(const ContentMainParams& params); | ||||
|    ~ContentServiceManagerMainDelegate() override; | ||||
| diff --git content/browser/devtools/devtools_instrumentation.h content/browser/devtools/devtools_instrumentation.h | ||||
| index 605e388043ac..4566dd95f0b8 100644 | ||||
| index 0ef3544d94bd..b27ea95697fb 100644 | ||||
| --- content/browser/devtools/devtools_instrumentation.h | ||||
| +++ content/browser/devtools/devtools_instrumentation.h | ||||
| @@ -12,6 +12,7 @@ | ||||
| @@ -69,7 +69,7 @@ index 886bdf0edf8f..1d714000cce5 100644 | ||||
|  blink::mojom::V8CacheOptions GetV8CacheOptions(); | ||||
|   | ||||
| diff --git third_party/blink/renderer/controller/BUILD.gn third_party/blink/renderer/controller/BUILD.gn | ||||
| index c62ad20e5ef9..6e43db6a2fda 100644 | ||||
| index 1abc6a3a8e11..e885e78c4d54 100644 | ||||
| --- third_party/blink/renderer/controller/BUILD.gn | ||||
| +++ third_party/blink/renderer/controller/BUILD.gn | ||||
| @@ -26,6 +26,7 @@ jumbo_component("controller") { | ||||
|   | ||||
| @@ -1,15 +0,0 @@ | ||||
| diff --git cc/scheduler/compositor_frame_reporting_controller.cc cc/scheduler/compositor_frame_reporting_controller.cc | ||||
| index f1587ed158d4..1b17021fd229 100644 | ||||
| --- cc/scheduler/compositor_frame_reporting_controller.cc | ||||
| +++ cc/scheduler/compositor_frame_reporting_controller.cc | ||||
| @@ -31,8 +31,8 @@ void CompositorFrameReportingController::WillBeginImplFrame() { | ||||
|   | ||||
|  void CompositorFrameReportingController::WillBeginMainFrame() { | ||||
|    DCHECK(reporters_[PipelineStage::kBeginImplFrame]); | ||||
| -  DCHECK_NE(reporters_[PipelineStage::kBeginMainFrame], | ||||
| -            reporters_[PipelineStage::kBeginImplFrame]); | ||||
| +  DCHECK(reporters_[PipelineStage::kBeginMainFrame] != | ||||
| +         reporters_[PipelineStage::kBeginImplFrame]); | ||||
|    reporters_[PipelineStage::kBeginImplFrame]->StartStage( | ||||
|        "SendBeginMainFrameToCommit"); | ||||
|    AdvanceReporterStage(PipelineStage::kBeginImplFrame, | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git chrome/browser/download/download_target_determiner.cc chrome/browser/download/download_target_determiner.cc | ||||
| index 010f9511741c..a777f2d7a106 100644 | ||||
| index 3947d9d92ab4..00b5b3edf84a 100644 | ||||
| --- chrome/browser/download/download_target_determiner.cc | ||||
| +++ chrome/browser/download/download_target_determiner.cc | ||||
| @@ -602,8 +602,8 @@ void IsHandledBySafePlugin(content::ResourceContext* resource_context, | ||||
| @@ -634,8 +634,8 @@ void IsHandledBySafePlugin(content::ResourceContext* resource_context, | ||||
|    content::PluginService* plugin_service = | ||||
|        content::PluginService::GetInstance(); | ||||
|    bool plugin_found = plugin_service->GetPluginInfo( | ||||
| @@ -53,7 +53,7 @@ index 2eb7f21919fd..4218d3352d70 100644 | ||||
|  } | ||||
|  #endif | ||||
| diff --git chrome/browser/ui/views/frame/browser_root_view.cc chrome/browser/ui/views/frame/browser_root_view.cc | ||||
| index be77d0e074e9..949873b9bb22 100644 | ||||
| index 39f6dcaf9fce..faf7bd250c3c 100644 | ||||
| --- chrome/browser/ui/views/frame/browser_root_view.cc | ||||
| +++ chrome/browser/ui/views/frame/browser_root_view.cc | ||||
| @@ -70,7 +70,7 @@ void OnFindURLMimeType(const GURL& url, | ||||
| @@ -66,7 +66,7 @@ index be77d0e074e9..949873b9bb22 100644 | ||||
|  } | ||||
|   | ||||
| diff --git content/browser/devtools/devtools_http_handler.cc content/browser/devtools/devtools_http_handler.cc | ||||
| index 94892dd57d36..1d4036fdedf8 100644 | ||||
| index 30b2a43959da..7dbe5aad8bd2 100644 | ||||
| --- content/browser/devtools/devtools_http_handler.cc | ||||
| +++ content/browser/devtools/devtools_http_handler.cc | ||||
| @@ -572,7 +572,7 @@ void DevToolsHttpHandler::OnJsonRequest( | ||||
| @@ -79,10 +79,10 @@ index 94892dd57d36..1d4036fdedf8 100644 | ||||
|                        GetContentClient()->browser()->GetUserAgent()); | ||||
|      version.SetString("V8-Version", V8_VERSION_STRING); | ||||
| diff --git content/browser/frame_host/render_frame_message_filter.cc content/browser/frame_host/render_frame_message_filter.cc | ||||
| index 5cadc6afb658..f30c0b60285b 100644 | ||||
| index 3bdd59c38012..9df67bd208b9 100644 | ||||
| --- content/browser/frame_host/render_frame_message_filter.cc | ||||
| +++ content/browser/frame_host/render_frame_message_filter.cc | ||||
| @@ -705,6 +705,7 @@ void RenderFrameMessageFilter::GetCookies(int render_frame_id, | ||||
| @@ -809,6 +809,7 @@ void RenderFrameMessageFilter::GetCookies(int render_frame_id, | ||||
|  void RenderFrameMessageFilter::OnGetPluginInfo( | ||||
|      int render_frame_id, | ||||
|      const GURL& url, | ||||
| @@ -90,7 +90,7 @@ index 5cadc6afb658..f30c0b60285b 100644 | ||||
|      const url::Origin& main_frame_origin, | ||||
|      const std::string& mime_type, | ||||
|      bool* found, | ||||
| @@ -716,8 +717,8 @@ void RenderFrameMessageFilter::OnGetPluginInfo( | ||||
| @@ -820,8 +821,8 @@ void RenderFrameMessageFilter::OnGetPluginInfo( | ||||
|    bool allow_wildcard = true; | ||||
|    *found = plugin_service_->GetPluginInfo( | ||||
|        render_process_id_, render_frame_id, resource_context_, url, | ||||
| @@ -129,12 +129,12 @@ index 7b73b2a8a838..da5aacc31910 100644 | ||||
|    if (stale) { | ||||
|      // Refresh the plugins asynchronously. | ||||
| diff --git content/browser/loader/navigation_url_loader_impl.cc content/browser/loader/navigation_url_loader_impl.cc | ||||
| index 0010982ecf26..b32f3b14e0c0 100644 | ||||
| index 052c66044997..9501b0c242cb 100644 | ||||
| --- content/browser/loader/navigation_url_loader_impl.cc | ||||
| +++ content/browser/loader/navigation_url_loader_impl.cc | ||||
| @@ -896,6 +896,12 @@ class NavigationURLLoaderImpl::URLLoaderRequestController | ||||
|              resource_request_->has_user_gesture, resource_request_->method, | ||||
|              resource_request_->headers, &proxied_factory_request_, | ||||
| @@ -905,6 +905,12 @@ class NavigationURLLoaderImpl::URLLoaderRequestController | ||||
|              static_cast<ui::PageTransition>(resource_request_->transition_type), | ||||
|              resource_request_->has_user_gesture, &proxied_factory_request_, | ||||
|              external_protocol_factory); | ||||
| +        if (!handled) { | ||||
| +          handled = GetContentClient()->browser()->HandleExternalProtocol( | ||||
| @@ -145,7 +145,7 @@ index 0010982ecf26..b32f3b14e0c0 100644 | ||||
|   | ||||
|          if (external_protocol_factory) { | ||||
|            factory = | ||||
| @@ -1137,7 +1143,7 @@ class NavigationURLLoaderImpl::URLLoaderRequestController | ||||
| @@ -1146,7 +1152,7 @@ class NavigationURLLoaderImpl::URLLoaderRequestController | ||||
|      // path does as well for navigations. | ||||
|      bool has_plugin = PluginService::GetInstance()->GetPluginInfo( | ||||
|          -1 /* render_process_id */, -1 /* render_frame_id */, resource_context_, | ||||
| @@ -189,7 +189,7 @@ index cb19abcd26b8..12d66dd7db6e 100644 | ||||
|                       const std::string& mime_type, | ||||
|                       bool allow_wildcard, | ||||
| diff --git content/browser/renderer_host/plugin_registry_impl.cc content/browser/renderer_host/plugin_registry_impl.cc | ||||
| index 427e1cb8946c..2f00734e9dfc 100644 | ||||
| index 8dd463f4165f..e0d0e951ec8b 100644 | ||||
| --- content/browser/renderer_host/plugin_registry_impl.cc | ||||
| +++ content/browser/renderer_host/plugin_registry_impl.cc | ||||
| @@ -27,6 +27,7 @@ void PluginRegistryImpl::Bind(blink::mojom::PluginRegistryRequest request) { | ||||
| @@ -214,7 +214,7 @@ index 427e1cb8946c..2f00734e9dfc 100644 | ||||
|      GetPluginsCallback callback, | ||||
|      const std::vector<WebPluginInfo>& all_plugins) { | ||||
| @@ -61,7 +63,7 @@ void PluginRegistryImpl::GetPluginsComplete( | ||||
|        GetContentClient()->browser()->GetMimeHandlerViewMimeTypes( | ||||
|        GetContentClient()->browser()->GetPluginMimeTypesWithExternalHandlers( | ||||
|            resource_context_); | ||||
|   | ||||
| -  const int child_process_id = -1; | ||||
| @@ -262,10 +262,10 @@ index 3009401dac6b..b4c5a9e2db50 100644 | ||||
|  }; | ||||
|   | ||||
| diff --git content/common/frame_messages.h content/common/frame_messages.h | ||||
| index 8673d65844ea..7d13c72dca9b 100644 | ||||
| index c81c9fb4251c..3f266302f4e0 100644 | ||||
| --- content/common/frame_messages.h | ||||
| +++ content/common/frame_messages.h | ||||
| @@ -1286,9 +1286,10 @@ IPC_MESSAGE_ROUTED1(FrameHostMsg_PepperStopsPlayback, | ||||
| @@ -1266,9 +1266,10 @@ IPC_MESSAGE_ROUTED1(FrameHostMsg_PepperStopsPlayback, | ||||
|  // type. If there is no matching plugin, |found| is false. | ||||
|  // |actual_mime_type| is the actual mime type supported by the | ||||
|  // found plugin. | ||||
| @@ -278,10 +278,10 @@ index 8673d65844ea..7d13c72dca9b 100644 | ||||
|                              std::string /* mime_type */, | ||||
|                              bool /* found */, | ||||
| diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h | ||||
| index 0a1bf5d0b4d1..6dea4f0f4a44 100644 | ||||
| index 1a16897afa44..12439a93b151 100644 | ||||
| --- content/public/browser/content_browser_client.h | ||||
| +++ content/public/browser/content_browser_client.h | ||||
| @@ -1460,6 +1460,15 @@ class CONTENT_EXPORT ContentBrowserClient { | ||||
| @@ -1437,6 +1437,15 @@ class CONTENT_EXPORT ContentBrowserClient { | ||||
|        network::mojom::URLLoaderFactoryRequest* factory_request, | ||||
|        network::mojom::URLLoaderFactory*& out_factory); | ||||
|   | ||||
| @@ -297,7 +297,7 @@ index 0a1bf5d0b4d1..6dea4f0f4a44 100644 | ||||
|    // Creates an OverlayWindow to be used for Picture-in-Picture. This window | ||||
|    // will house the content shown when in Picture-in-Picture mode. This will | ||||
|    // return a new OverlayWindow. | ||||
| @@ -1527,6 +1536,10 @@ class CONTENT_EXPORT ContentBrowserClient { | ||||
| @@ -1504,6 +1513,10 @@ class CONTENT_EXPORT ContentBrowserClient { | ||||
|    // Used as part of the user agent string. | ||||
|    virtual std::string GetProduct() const; | ||||
|   | ||||
| @@ -333,10 +333,10 @@ index 3b610b1f554e..7c439e060779 100644 | ||||
|                                   WebPluginInfo* plugin) = 0; | ||||
|   | ||||
| diff --git content/public/renderer/content_renderer_client.h content/public/renderer/content_renderer_client.h | ||||
| index fad5f104f011..fd7ecbcd48b8 100644 | ||||
| index 31fcd7d89bf8..9421e8a5db77 100644 | ||||
| --- content/public/renderer/content_renderer_client.h | ||||
| +++ content/public/renderer/content_renderer_client.h | ||||
| @@ -73,6 +73,9 @@ class CONTENT_EXPORT ContentRendererClient { | ||||
| @@ -74,6 +74,9 @@ class CONTENT_EXPORT ContentRendererClient { | ||||
|    // Notifies us that the RenderThread has been created. | ||||
|    virtual void RenderThreadStarted() {} | ||||
|   | ||||
| @@ -346,7 +346,7 @@ index fad5f104f011..fd7ecbcd48b8 100644 | ||||
|    // Notifies that a new RenderFrame has been created. | ||||
|    virtual void RenderFrameCreated(RenderFrame* render_frame) {} | ||||
|   | ||||
| @@ -332,6 +335,10 @@ class CONTENT_EXPORT ContentRendererClient { | ||||
| @@ -333,6 +336,10 @@ class CONTENT_EXPORT ContentRendererClient { | ||||
|    // This method may invalidate the frame. | ||||
|    virtual void RunScriptsAtDocumentIdle(RenderFrame* render_frame) {} | ||||
|   | ||||
| @@ -358,24 +358,24 @@ index fad5f104f011..fd7ecbcd48b8 100644 | ||||
|    // started. | ||||
|    virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} | ||||
| diff --git content/public/renderer/render_frame_observer.h content/public/renderer/render_frame_observer.h | ||||
| index 8935697155f5..179b6ebf1360 100644 | ||||
| index 14f7e7a34e2b..573bd466effe 100644 | ||||
| --- content/public/renderer/render_frame_observer.h | ||||
| +++ content/public/renderer/render_frame_observer.h | ||||
| @@ -202,6 +202,9 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, | ||||
| @@ -201,6 +201,9 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, | ||||
|    virtual void DidReceiveTransferSizeUpdate(int resource_id, | ||||
|                                              int received_data_length) {} | ||||
|   | ||||
| +  // Called when this frame gains focus. | ||||
| +  virtual void FrameFocused() {} | ||||
| + | ||||
|    // Called when the focused node has changed to |node|. | ||||
|    virtual void FocusedNodeChanged(const blink::WebNode& node) {} | ||||
|    // Called when the focused element has changed to |element|. | ||||
|    virtual void FocusedElementChanged(const blink::WebElement& element) {} | ||||
|   | ||||
| diff --git content/renderer/render_frame_impl.cc content/renderer/render_frame_impl.cc | ||||
| index c75b6177f066..860bbe9e1c14 100644 | ||||
| index 2ab1163b56da..329e435a479d 100644 | ||||
| --- content/renderer/render_frame_impl.cc | ||||
| +++ content/renderer/render_frame_impl.cc | ||||
| @@ -3996,7 +3996,8 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( | ||||
| @@ -4031,7 +4031,8 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( | ||||
|    std::string mime_type; | ||||
|    bool found = false; | ||||
|    Send(new FrameHostMsg_GetPluginInfo( | ||||
| @@ -385,7 +385,7 @@ index c75b6177f066..860bbe9e1c14 100644 | ||||
|        params.mime_type.Utf8(), &found, &info, &mime_type)); | ||||
|    if (!found) | ||||
|      return nullptr; | ||||
| @@ -4422,6 +4423,8 @@ void RenderFrameImpl::FrameDetached(DetachType type) { | ||||
| @@ -4464,6 +4465,8 @@ void RenderFrameImpl::FrameDetached(DetachType type) { | ||||
|   | ||||
|  void RenderFrameImpl::FrameFocused() { | ||||
|    Send(new FrameHostMsg_FrameFocused(routing_id_)); | ||||
| @@ -395,23 +395,23 @@ index c75b6177f066..860bbe9e1c14 100644 | ||||
|   | ||||
|  void RenderFrameImpl::DidChangeName(const blink::WebString& name) { | ||||
| diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc | ||||
| index e47b89dbbe1c..8cd96c860595 100644 | ||||
| index a908f83034f5..6a61c2ec8e63 100644 | ||||
| --- content/renderer/render_thread_impl.cc | ||||
| +++ content/renderer/render_thread_impl.cc | ||||
| @@ -806,6 +806,8 @@ void RenderThreadImpl::Init() { | ||||
| @@ -796,6 +796,8 @@ void RenderThreadImpl::Init() { | ||||
|   | ||||
|    StartServiceManagerConnection(); | ||||
|   | ||||
| +  GetContentClient()->renderer()->RenderThreadConnected(); | ||||
| + | ||||
|    GetAssociatedInterfaceRegistry()->AddInterface( | ||||
|        base::Bind(&RenderThreadImpl::OnRendererInterfaceRequest, | ||||
|                   base::Unretained(this))); | ||||
|    GetAssociatedInterfaceRegistry()->AddInterface(base::BindRepeating( | ||||
|        &RenderThreadImpl::OnRendererInterfaceRequest, base::Unretained(this))); | ||||
|   | ||||
| diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc | ||||
| index 30273211857b..8d4a7295d62c 100644 | ||||
| index 32f5e253cee8..aaa73a259771 100644 | ||||
| --- content/renderer/renderer_blink_platform_impl.cc | ||||
| +++ content/renderer/renderer_blink_platform_impl.cc | ||||
| @@ -1113,6 +1113,14 @@ void RendererBlinkPlatformImpl::RecordMetricsForBackgroundedRendererPurge() { | ||||
| @@ -1069,6 +1069,14 @@ void RendererBlinkPlatformImpl::RecordMetricsForBackgroundedRendererPurge() { | ||||
|   | ||||
|  //------------------------------------------------------------------------------ | ||||
|   | ||||
| @@ -427,12 +427,12 @@ index 30273211857b..8d4a7295d62c 100644 | ||||
|    if (!web_database_host_) { | ||||
|      web_database_host_ = blink::mojom::ThreadSafeWebDatabaseHostPtr::Create( | ||||
| diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h | ||||
| index 629362d2f990..9db27c88d9e5 100644 | ||||
| index ba77a976729d..8c4153718c0b 100644 | ||||
| --- content/renderer/renderer_blink_platform_impl.h | ||||
| +++ content/renderer/renderer_blink_platform_impl.h | ||||
| @@ -241,6 +241,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { | ||||
|    std::unique_ptr<blink::WebDataConsumerHandle> CreateDataConsumerHandle( | ||||
|        mojo::ScopedDataPipeConsumerHandle handle) override; | ||||
| @@ -226,6 +226,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { | ||||
|    std::unique_ptr<blink::WebURLLoaderFactory> WrapSharedURLLoaderFactory( | ||||
|        scoped_refptr<network::SharedURLLoaderFactory> factory) override; | ||||
|   | ||||
| +  void DevToolsAgentAttached() override; | ||||
| +  void DevToolsAgentDetached() override; | ||||
|   | ||||
| @@ -1,3 +1,85 @@ | ||||
| diff --git chrome/chrome_elf/BUILD.gn chrome/chrome_elf/BUILD.gn | ||||
| index 9c59c4b5e7a6..e470635e88d2 100644 | ||||
| --- chrome/chrome_elf/BUILD.gn | ||||
| +++ chrome/chrome_elf/BUILD.gn | ||||
| @@ -7,6 +7,7 @@ | ||||
|   | ||||
|  import("//build/config/compiler/compiler.gni") | ||||
|  import("//build/config/win/manifest.gni") | ||||
| +import("//cef/libcef/features/features.gni") | ||||
|  import("//chrome/process_version_rc_template.gni") | ||||
|  import("//testing/test.gni") | ||||
|   | ||||
| @@ -132,9 +133,6 @@ source_set("constants") { | ||||
|   | ||||
|  static_library("crash") { | ||||
|    sources = [ | ||||
| -    "../app/chrome_crash_reporter_client_win.cc", | ||||
| -    "../app/chrome_crash_reporter_client_win.h", | ||||
| -    "../common/chrome_result_codes.h", | ||||
|      "crash/crash_helper.cc", | ||||
|      "crash/crash_helper.h", | ||||
|    ] | ||||
| @@ -142,6 +140,7 @@ static_library("crash") { | ||||
|      ":hook_util", | ||||
|      "//base",  # This needs to go.  DEP of app, crash_keys, client. | ||||
|      "//base:base_static",  # pe_image | ||||
| +    "//cef/libcef/features", | ||||
|      "//chrome/install_static:install_static_util", | ||||
|      "//components/crash/content/app", | ||||
|      "//components/crash/core/common",  # crash_keys | ||||
| @@ -149,6 +148,17 @@ static_library("crash") { | ||||
|      "//content/public/common:result_codes", | ||||
|      "//third_party/crashpad/crashpad/client",  # DumpWithoutCrash | ||||
|    ] | ||||
| + | ||||
| +  if (enable_cef) { | ||||
| +    deps += [ "//cef:chrome_elf_set" ] | ||||
| +    include_dirs = [ "//cef" ] | ||||
| +  } else { | ||||
| +    sources += [ | ||||
| +      "//chrome/app/chrome_crash_reporter_client_win.cc", | ||||
| +      "//chrome/app/chrome_crash_reporter_client_win.h", | ||||
| +      "//chrome/common/chrome_result_codes.h", | ||||
| +    ] | ||||
| +  } | ||||
|  } | ||||
|   | ||||
|  source_set("dll_hash") { | ||||
| diff --git chrome/chrome_elf/crash/crash_helper.cc chrome/chrome_elf/crash/crash_helper.cc | ||||
| index 381322aca895..a5622ddfe66d 100644 | ||||
| --- chrome/chrome_elf/crash/crash_helper.cc | ||||
| +++ chrome/chrome_elf/crash/crash_helper.cc | ||||
| @@ -11,12 +11,17 @@ | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| +#include "cef/libcef/features/features.h" | ||||
|  #include "chrome/app/chrome_crash_reporter_client_win.h" | ||||
|  #include "chrome/chrome_elf/hook_util/hook_util.h" | ||||
|  #include "components/crash/content/app/crashpad.h" | ||||
|  #include "components/crash/core/common/crash_keys.h" | ||||
|  #include "third_party/crashpad/crashpad/client/crashpad_client.h" | ||||
|   | ||||
| +#if BUILDFLAG(ENABLE_CEF) | ||||
| +#include "cef/libcef/common/crash_reporter_client.h" | ||||
| +#endif | ||||
| + | ||||
|  namespace { | ||||
|   | ||||
|  // Crash handling from elf is only enabled for the chrome.exe process. | ||||
| @@ -74,7 +79,11 @@ bool InitializeCrashReporting() { | ||||
|    g_crash_reports = new std::vector<crash_reporter::Report>; | ||||
|    g_set_unhandled_exception_filter = new elf_hook::IATHook(); | ||||
|   | ||||
| +#if BUILDFLAG(ENABLE_CEF) | ||||
| +  CefCrashReporterClient::InitializeCrashReportingForProcess(); | ||||
| +#else | ||||
|    ChromeCrashReporterClient::InitializeCrashReportingForProcess(); | ||||
| +#endif | ||||
|   | ||||
|    g_crash_helper_enabled = true; | ||||
|    return true; | ||||
| diff --git chrome/common/crash_keys.cc chrome/common/crash_keys.cc | ||||
| index e0a839813a07..5c0d05bcc78c 100644 | ||||
| --- chrome/common/crash_keys.cc | ||||
| @@ -44,90 +126,8 @@ index bcf172e645a2..f879aa745adf 100644 | ||||
|  // Sets the kNumSwitches key and the set of keys named using kSwitchFormat based | ||||
|  // on the given |command_line|. | ||||
|  void SetCrashKeysFromCommandLine(const base::CommandLine& command_line); | ||||
| diff --git chrome_elf/BUILD.gn chrome_elf/BUILD.gn | ||||
| index 7643f2793a0a..5da3775ac932 100644 | ||||
| --- chrome_elf/BUILD.gn | ||||
| +++ chrome_elf/BUILD.gn | ||||
| @@ -7,6 +7,7 @@ | ||||
|   | ||||
|  import("//build/config/compiler/compiler.gni") | ||||
|  import("//build/config/win/manifest.gni") | ||||
| +import("//cef/libcef/features/features.gni") | ||||
|  import("//chrome/process_version_rc_template.gni") | ||||
|  import("//testing/test.gni") | ||||
|   | ||||
| @@ -126,9 +127,6 @@ source_set("constants") { | ||||
|   | ||||
|  static_library("crash") { | ||||
|    sources = [ | ||||
| -    "../chrome/app/chrome_crash_reporter_client_win.cc", | ||||
| -    "../chrome/app/chrome_crash_reporter_client_win.h", | ||||
| -    "../chrome/common/chrome_result_codes.h", | ||||
|      "crash/crash_helper.cc", | ||||
|      "crash/crash_helper.h", | ||||
|    ] | ||||
| @@ -136,6 +134,7 @@ static_library("crash") { | ||||
|      ":hook_util", | ||||
|      "//base",  # This needs to go.  DEP of app, crash_keys, client. | ||||
|      "//base:base_static",  # pe_image | ||||
| +    "//cef/libcef/features", | ||||
|      "//chrome/install_static:install_static_util", | ||||
|      "//components/crash/content/app", | ||||
|      "//components/crash/core/common",  # crash_keys | ||||
| @@ -143,6 +142,17 @@ static_library("crash") { | ||||
|      "//content/public/common:result_codes", | ||||
|      "//third_party/crashpad/crashpad/client",  # DumpWithoutCrash | ||||
|    ] | ||||
| + | ||||
| +  if (enable_cef) { | ||||
| +    deps += [ "//cef:chrome_elf_set" ] | ||||
| +    include_dirs = [ "//cef" ] | ||||
| +  } else { | ||||
| +    sources += [ | ||||
| +      "//chrome/app/chrome_crash_reporter_client_win.cc", | ||||
| +      "//chrome/app/chrome_crash_reporter_client_win.h", | ||||
| +      "//chrome/common/chrome_result_codes.h", | ||||
| +    ] | ||||
| +  } | ||||
|  } | ||||
|   | ||||
|  source_set("dll_hash") { | ||||
| diff --git chrome_elf/crash/crash_helper.cc chrome_elf/crash/crash_helper.cc | ||||
| index fdc51ab22807..cb0a99dd190c 100644 | ||||
| --- chrome_elf/crash/crash_helper.cc | ||||
| +++ chrome_elf/crash/crash_helper.cc | ||||
| @@ -11,12 +11,17 @@ | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| +#include "cef/libcef/features/features.h" | ||||
|  #include "chrome/app/chrome_crash_reporter_client_win.h" | ||||
|  #include "chrome_elf/hook_util/hook_util.h" | ||||
|  #include "components/crash/content/app/crashpad.h" | ||||
|  #include "components/crash/core/common/crash_keys.h" | ||||
|  #include "third_party/crashpad/crashpad/client/crashpad_client.h" | ||||
|   | ||||
| +#if BUILDFLAG(ENABLE_CEF) | ||||
| +#include "cef/libcef/common/crash_reporter_client.h" | ||||
| +#endif | ||||
| + | ||||
|  namespace { | ||||
|   | ||||
|  // Crash handling from elf is only enabled for the chrome.exe process. | ||||
| @@ -74,7 +79,11 @@ bool InitializeCrashReporting() { | ||||
|    g_crash_reports = new std::vector<crash_reporter::Report>; | ||||
|    g_set_unhandled_exception_filter = new elf_hook::IATHook(); | ||||
|   | ||||
| +#if BUILDFLAG(ENABLE_CEF) | ||||
| +  CefCrashReporterClient::InitializeCrashReportingForProcess(); | ||||
| +#else | ||||
|    ChromeCrashReporterClient::InitializeCrashReportingForProcess(); | ||||
| +#endif | ||||
|   | ||||
|    g_crash_helper_enabled = true; | ||||
|    return true; | ||||
| diff --git components/crash/content/app/breakpad_linux.cc components/crash/content/app/breakpad_linux.cc | ||||
| index ecc7d66acb03..abc4371f429b 100644 | ||||
| index 3ab8ad2c5aad..ba4a353c370b 100644 | ||||
| --- components/crash/content/app/breakpad_linux.cc | ||||
| +++ components/crash/content/app/breakpad_linux.cc | ||||
| @@ -28,6 +28,7 @@ | ||||
| @@ -241,7 +241,7 @@ index 6e95af6ca7f5..061fb189d60f 100644 | ||||
|  extern void InitCrashKeysForTesting(); | ||||
|   | ||||
| diff --git components/crash/content/app/crash_reporter_client.cc components/crash/content/app/crash_reporter_client.cc | ||||
| index c3c3f9db07d4..c532a5a46740 100644 | ||||
| index 4d2b6ad68d80..728ffd9e7b4c 100644 | ||||
| --- components/crash/content/app/crash_reporter_client.cc | ||||
| +++ components/crash/content/app/crash_reporter_client.cc | ||||
| @@ -88,7 +88,7 @@ int CrashReporterClient::GetResultCodeRespawnFailed() { | ||||
| @@ -261,7 +261,7 @@ index c3c3f9db07d4..c532a5a46740 100644 | ||||
|  base::FilePath CrashReporterClient::GetReporterLogFilename() { | ||||
|    return base::FilePath(); | ||||
|  } | ||||
| @@ -105,6 +106,7 @@ bool CrashReporterClient::HandleCrashDump(const char* crashdump_filename) { | ||||
| @@ -106,6 +107,7 @@ bool CrashReporterClient::HandleCrashDump(const char* crashdump_filename, | ||||
|    return false; | ||||
|  } | ||||
|  #endif | ||||
| @@ -269,7 +269,7 @@ index c3c3f9db07d4..c532a5a46740 100644 | ||||
|   | ||||
|  #if defined(OS_WIN) | ||||
|  bool CrashReporterClient::GetCrashDumpLocation(base::string16* crash_dir) { | ||||
| @@ -147,6 +149,32 @@ bool CrashReporterClient::ReportingIsEnforcedByPolicy(bool* breakpad_enabled) { | ||||
| @@ -148,6 +150,32 @@ bool CrashReporterClient::ReportingIsEnforcedByPolicy(bool* breakpad_enabled) { | ||||
|    return false; | ||||
|  } | ||||
|   | ||||
| @@ -302,7 +302,7 @@ index c3c3f9db07d4..c532a5a46740 100644 | ||||
|  #if defined(OS_ANDROID) | ||||
|  unsigned int CrashReporterClient::GetCrashDumpPercentage() { | ||||
|    return 100; | ||||
| @@ -194,9 +222,11 @@ bool CrashReporterClient::ShouldMonitorCrashHandlerExpensively() { | ||||
| @@ -195,9 +223,11 @@ bool CrashReporterClient::ShouldMonitorCrashHandlerExpensively() { | ||||
|    return false; | ||||
|  } | ||||
|   | ||||
| @@ -318,7 +318,7 @@ index c3c3f9db07d4..c532a5a46740 100644 | ||||
|   | ||||
|  }  // namespace crash_reporter | ||||
| diff --git components/crash/content/app/crash_reporter_client.h components/crash/content/app/crash_reporter_client.h | ||||
| index 1d35caa36716..7b96fb687b98 100644 | ||||
| index d46bcc2a39b4..390654dd76fd 100644 | ||||
| --- components/crash/content/app/crash_reporter_client.h | ||||
| +++ components/crash/content/app/crash_reporter_client.h | ||||
| @@ -5,7 +5,9 @@ | ||||
| @@ -348,15 +348,15 @@ index 1d35caa36716..7b96fb687b98 100644 | ||||
|    virtual base::FilePath GetReporterLogFilename(); | ||||
|   | ||||
|    // Custom crash minidump handler after the minidump is generated. | ||||
| @@ -110,6 +113,7 @@ class CrashReporterClient { | ||||
|    // WARNING: this handler runs in a compromised context. It may not call into | ||||
| @@ -111,6 +114,7 @@ class CrashReporterClient { | ||||
|    // libc nor allocate memory normally. | ||||
|    virtual bool HandleCrashDump(const char* crashdump_filename); | ||||
|    virtual bool HandleCrashDump(const char* crashdump_filename, | ||||
|                                 uint64_t crash_pid); | ||||
| +#endif | ||||
|  #endif | ||||
|   | ||||
|    // The location where minidump files should be written. Returns true if | ||||
| @@ -206,6 +210,30 @@ class CrashReporterClient { | ||||
| @@ -207,6 +211,30 @@ class CrashReporterClient { | ||||
|   | ||||
|    // Returns true if breakpad should run in the given process type. | ||||
|    virtual bool EnableBreakpadForProcess(const std::string& process_type); | ||||
| @@ -598,7 +598,7 @@ index 8f55759a6f4a..5d60fc3f84eb 100644 | ||||
|   | ||||
|      if (crash_reporter_client->ShouldMonitorCrashHandlerExpensively()) { | ||||
| diff --git content/browser/frame_host/debug_urls.cc content/browser/frame_host/debug_urls.cc | ||||
| index d47b0305167e..d5941ed0e2af 100644 | ||||
| index 59396b7f26e3..31491e1b5d20 100644 | ||||
| --- content/browser/frame_host/debug_urls.cc | ||||
| +++ content/browser/frame_host/debug_urls.cc | ||||
| @@ -136,7 +136,9 @@ bool HandleDebugURL(const GURL& url, ui::PageTransition transition) { | ||||
|   | ||||
| @@ -248,7 +248,7 @@ index 2ec1147d2620..8ff9a72e0bd7 100644 | ||||
|    //! \brief Calls ProcessPendingReports() in response to ReportPending() having | ||||
|    //!     been called on any thread, as well as periodically on a timer. | ||||
| diff --git third_party/crashpad/crashpad/handler/handler_main.cc third_party/crashpad/crashpad/handler/handler_main.cc | ||||
| index 31686b3eb899..f361f5759976 100644 | ||||
| index 724168ee9657..ae31efb356a1 100644 | ||||
| --- third_party/crashpad/crashpad/handler/handler_main.cc | ||||
| +++ third_party/crashpad/crashpad/handler/handler_main.cc | ||||
| @@ -36,8 +36,10 @@ | ||||
| @@ -273,7 +273,7 @@ index 31686b3eb899..f361f5759976 100644 | ||||
|  namespace crashpad { | ||||
|   | ||||
|  namespace { | ||||
| @@ -179,6 +185,9 @@ struct Options { | ||||
| @@ -185,6 +191,9 @@ struct Options { | ||||
|    bool periodic_tasks; | ||||
|    bool rate_limit; | ||||
|    bool upload_gzip; | ||||
| @@ -283,8 +283,8 @@ index 31686b3eb899..f361f5759976 100644 | ||||
|  }; | ||||
|   | ||||
|  // Splits |key_value| on '=' and inserts the resulting key and value into |map|. | ||||
| @@ -553,6 +562,9 @@ int HandlerMain(int argc, | ||||
|      kOptionSanitizationInformation, | ||||
| @@ -562,6 +571,9 @@ int HandlerMain(int argc, | ||||
|      kOptionTraceParentWithException, | ||||
|  #endif | ||||
|      kOptionURL, | ||||
| +    kOptionMaxUploads, | ||||
| @@ -293,7 +293,7 @@ index 31686b3eb899..f361f5759976 100644 | ||||
|   | ||||
|      // Standard options. | ||||
|      kOptionHelp = -2, | ||||
| @@ -614,6 +626,9 @@ int HandlerMain(int argc, | ||||
| @@ -629,6 +641,9 @@ int HandlerMain(int argc, | ||||
|      {"url", required_argument, nullptr, kOptionURL}, | ||||
|      {"help", no_argument, nullptr, kOptionHelp}, | ||||
|      {"version", no_argument, nullptr, kOptionVersion}, | ||||
| @@ -303,7 +303,7 @@ index 31686b3eb899..f361f5759976 100644 | ||||
|      {nullptr, 0, nullptr, 0}, | ||||
|    }; | ||||
|   | ||||
| @@ -749,6 +764,27 @@ int HandlerMain(int argc, | ||||
| @@ -768,6 +783,27 @@ int HandlerMain(int argc, | ||||
|          options.url = optarg; | ||||
|          break; | ||||
|        } | ||||
| @@ -331,7 +331,7 @@ index 31686b3eb899..f361f5759976 100644 | ||||
|        case kOptionHelp: { | ||||
|          Usage(me); | ||||
|          MetricsRecordExit(Metrics::LifetimeMilestone::kExitedEarly); | ||||
| @@ -863,8 +899,14 @@ int HandlerMain(int argc, | ||||
| @@ -888,8 +924,14 @@ int HandlerMain(int argc, | ||||
|      upload_thread_options.upload_gzip = options.upload_gzip; | ||||
|      upload_thread_options.watch_pending_reports = options.periodic_tasks; | ||||
|   | ||||
| @@ -346,7 +346,7 @@ index 31686b3eb899..f361f5759976 100644 | ||||
|      upload_thread.Get()->Start(); | ||||
|    } | ||||
|   | ||||
| @@ -892,7 +934,8 @@ int HandlerMain(int argc, | ||||
| @@ -917,7 +959,8 @@ int HandlerMain(int argc, | ||||
|    ScopedStoppable prune_thread; | ||||
|    if (options.periodic_tasks) { | ||||
|      prune_thread.Reset(new PruneCrashReportThread( | ||||
|   | ||||
| @@ -132,18 +132,18 @@ index 4027505469b8..de8258562bb2 100644 | ||||
|    // A weak pointer to the current or pending RenderViewHost. We don't access | ||||
|    // this through the host_contents because we want to deal with the pending | ||||
| diff --git extensions/browser/extensions_browser_client.h extensions/browser/extensions_browser_client.h | ||||
| index 93dce1cad08c..1eef00b03063 100644 | ||||
| index 3ed389242f67..4cc4d2a5bed8 100644 | ||||
| --- extensions/browser/extensions_browser_client.h | ||||
| +++ extensions/browser/extensions_browser_client.h | ||||
| @@ -62,6 +62,7 @@ class ComponentExtensionResourceManager; | ||||
| @@ -60,6 +60,7 @@ class ComponentExtensionResourceManager; | ||||
|  class Extension; | ||||
|  class ExtensionCache; | ||||
|  class ExtensionError; | ||||
| +class ExtensionHost; | ||||
|  class ExtensionHostDelegate; | ||||
|  class ExtensionPrefsObserver; | ||||
|  class ExtensionApiFrameIdMap; | ||||
| @@ -216,6 +217,14 @@ class ExtensionsBrowserClient { | ||||
|  class ExtensionApiFrameIdMapHelper; | ||||
| @@ -213,6 +214,14 @@ class ExtensionsBrowserClient { | ||||
|    virtual std::unique_ptr<ExtensionHostDelegate> | ||||
|    CreateExtensionHostDelegate() = 0; | ||||
|   | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git content/browser/compositor/browser_compositor_output_surface.cc content/browser/compositor/browser_compositor_output_surface.cc | ||||
| index 24cfe2fb6d7b..d624bf71d07d 100644 | ||||
| index 79b2ae7b6fef..7c0e65975c14 100644 | ||||
| --- content/browser/compositor/browser_compositor_output_surface.cc | ||||
| +++ content/browser/compositor/browser_compositor_output_surface.cc | ||||
| @@ -53,6 +53,10 @@ void BrowserCompositorOutputSurface::SetReflector(ReflectorImpl* reflector) { | ||||
| @@ -41,6 +41,10 @@ void BrowserCompositorOutputSurface::SetReflector(ReflectorImpl* reflector) { | ||||
|    OnReflectorChanged(); | ||||
|  } | ||||
|   | ||||
| @@ -14,10 +14,10 @@ index 24cfe2fb6d7b..d624bf71d07d 100644 | ||||
|  } | ||||
|   | ||||
| diff --git content/browser/compositor/browser_compositor_output_surface.h content/browser/compositor/browser_compositor_output_surface.h | ||||
| index dda4ac04b913..c82c01bd1354 100644 | ||||
| index c91aedd16481..1a92c5effd11 100644 | ||||
| --- content/browser/compositor/browser_compositor_output_surface.h | ||||
| +++ content/browser/compositor/browser_compositor_output_surface.h | ||||
| @@ -38,6 +38,8 @@ class CONTENT_EXPORT BrowserCompositorOutputSurface | ||||
| @@ -43,6 +43,8 @@ class CONTENT_EXPORT BrowserCompositorOutputSurface | ||||
|   | ||||
|    void SetReflector(ReflectorImpl* reflector); | ||||
|   | ||||
| @@ -27,10 +27,10 @@ index dda4ac04b913..c82c01bd1354 100644 | ||||
|    virtual void OnReflectorChanged(); | ||||
|   | ||||
| diff --git content/browser/compositor/gpu_process_transport_factory.cc content/browser/compositor/gpu_process_transport_factory.cc | ||||
| index 99c703a1ba14..afd6834e44da 100644 | ||||
| index 7e3574cb69fa..df9a00d1ae53 100644 | ||||
| --- content/browser/compositor/gpu_process_transport_factory.cc | ||||
| +++ content/browser/compositor/gpu_process_transport_factory.cc | ||||
| @@ -208,6 +208,18 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() { | ||||
| @@ -216,6 +216,18 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() { | ||||
|    task_graph_runner_->Shutdown(); | ||||
|  } | ||||
|   | ||||
| @@ -49,7 +49,16 @@ index 99c703a1ba14..afd6834e44da 100644 | ||||
|  std::unique_ptr<viz::SoftwareOutputDevice> | ||||
|  GpuProcessTransportFactory::CreateSoftwareOutputDevice( | ||||
|      gfx::AcceleratedWidget widget, | ||||
| @@ -450,11 +462,20 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( | ||||
| @@ -243,7 +255,7 @@ GpuProcessTransportFactory::CreateSoftwareOutputDevice( | ||||
|  #endif | ||||
|  } | ||||
|   | ||||
| -std::unique_ptr<viz::OverlayCandidateValidator> CreateOverlayCandidateValidator( | ||||
| +std::unique_ptr<viz::OverlayCandidateValidator> OverlayCandidateValidator( | ||||
|      gfx::AcceleratedWidget widget) { | ||||
|    std::unique_ptr<viz::OverlayCandidateValidator> validator; | ||||
|  #if defined(USE_OZONE) | ||||
| @@ -419,10 +431,20 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( | ||||
|        // surfaces as they are not following the correct mode. | ||||
|        DisableGpuCompositing(compositor.get()); | ||||
|      } | ||||
| @@ -67,23 +76,35 @@ index 99c703a1ba14..afd6834e44da 100644 | ||||
|      display_output_surface = | ||||
|          std::make_unique<SoftwareBrowserCompositorOutputSurface>( | ||||
| -            CreateSoftwareOutputDevice(compositor->widget(), | ||||
| -                                       compositor->task_runner()), | ||||
| -            std::move(vsync_callback)); | ||||
| +            std::move(output_device), std::move(vsync_callback)); | ||||
| -                                       compositor->task_runner())); | ||||
| +            CreateSoftwareOutputDevice(compositor->widget(), compositor->task_runner())); | ||||
|    } else { | ||||
|      DCHECK(context_provider); | ||||
|      const auto& capabilities = context_provider->ContextCapabilities(); | ||||
| @@ -462,7 +483,8 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( | ||||
| @@ -430,10 +452,11 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( | ||||
|        display_output_surface = | ||||
|            std::make_unique<OffscreenBrowserCompositorOutputSurface>( | ||||
|                context_provider, std::move(vsync_callback), | ||||
| -              std::unique_ptr<viz::CompositorOverlayCandidateValidator>()); | ||||
| +              std::unique_ptr<viz::CompositorOverlayCandidateValidator>(), | ||||
|                context_provider, | ||||
| -              std::unique_ptr<viz::OverlayCandidateValidator>()); | ||||
| +              std::unique_ptr<viz::OverlayCandidateValidator>(), | ||||
| +              compositor->shared_texture_enabled()); | ||||
|      } else if (capabilities.surfaceless) { | ||||
|  #if defined(OS_MACOSX) | ||||
|        const auto& gpu_feature_info = context_provider->GetGpuFeatureInfo(); | ||||
| @@ -914,7 +936,8 @@ GpuProcessTransportFactory::CreatePerCompositorData( | ||||
|        DCHECK(capabilities.texture_format_bgra8888); | ||||
| -      auto validator = CreateOverlayCandidateValidator(compositor->widget()); | ||||
| +      auto validator = OverlayCandidateValidator(compositor->widget()); | ||||
|        overlay_validator = validator.get(); | ||||
|        auto gpu_output_surface = | ||||
|            std::make_unique<GpuSurfacelessBrowserCompositorOutputSurface>( | ||||
| @@ -443,7 +466,7 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( | ||||
|        display_output_surface = std::move(gpu_output_surface); | ||||
|      } else { | ||||
|        std::unique_ptr<viz::OverlayCandidateValidator> validator = | ||||
| -          CreateOverlayCandidateValidator(compositor->widget()); | ||||
| +          OverlayCandidateValidator(compositor->widget()); | ||||
|        overlay_validator = validator.get(); | ||||
|        auto gpu_output_surface = | ||||
|            std::make_unique<GpuBrowserCompositorOutputSurface>( | ||||
| @@ -881,7 +904,8 @@ GpuProcessTransportFactory::CreatePerCompositorData( | ||||
|    gfx::AcceleratedWidget widget = compositor->widget(); | ||||
|   | ||||
|    auto data = std::make_unique<PerCompositorData>(); | ||||
| @@ -94,36 +115,35 @@ index 99c703a1ba14..afd6834e44da 100644 | ||||
|    } else { | ||||
|  #if defined(GPU_SURFACE_HANDLE_IS_ACCELERATED_WINDOW) | ||||
| diff --git content/browser/compositor/gpu_process_transport_factory.h content/browser/compositor/gpu_process_transport_factory.h | ||||
| index 525fa0c06b33..1f95b4f53496 100644 | ||||
| index 4a78bdea7ded..6cfe36fc7e5c 100644 | ||||
| --- content/browser/compositor/gpu_process_transport_factory.h | ||||
| +++ content/browser/compositor/gpu_process_transport_factory.h | ||||
| @@ -101,6 +101,7 @@ class GpuProcessTransportFactory : public ui::ContextFactory, | ||||
| @@ -100,6 +100,7 @@ class GpuProcessTransportFactory : public ui::ContextFactory, | ||||
|    void IssueExternalBeginFrame(ui::Compositor* compositor, | ||||
|                                 const viz::BeginFrameArgs& args) override; | ||||
|    void SetOutputIsSecure(ui::Compositor* compositor, bool secure) override; | ||||
| +  void* GetSharedTexture(ui::Compositor* compositor) override; | ||||
|   | ||||
|    // ImageTransportFactory implementation. | ||||
|    void DisableGpuCompositing() override; | ||||
|    void AddVSyncParameterObserver( | ||||
|        ui::Compositor* compositor, | ||||
|        viz::mojom::VSyncParameterObserverPtr observer) override; | ||||
| diff --git content/browser/compositor/offscreen_browser_compositor_output_surface.cc content/browser/compositor/offscreen_browser_compositor_output_surface.cc | ||||
| index dfedf6a60ebe..882457ebbbaa 100644 | ||||
| index c38198dfe820..d6edf48c14b1 100644 | ||||
| --- content/browser/compositor/offscreen_browser_compositor_output_surface.cc | ||||
| +++ content/browser/compositor/offscreen_browser_compositor_output_surface.cc | ||||
| @@ -35,10 +35,12 @@ OffscreenBrowserCompositorOutputSurface:: | ||||
|          const viz::UpdateVSyncParametersCallback& | ||||
|              update_vsync_parameters_callback, | ||||
|          std::unique_ptr<viz::CompositorOverlayCandidateValidator> | ||||
| @@ -33,9 +33,11 @@ OffscreenBrowserCompositorOutputSurface:: | ||||
|      OffscreenBrowserCompositorOutputSurface( | ||||
|          scoped_refptr<ws::ContextProviderCommandBuffer> context, | ||||
|          std::unique_ptr<viz::OverlayCandidateValidator> | ||||
| -            overlay_candidate_validator) | ||||
| +            overlay_candidate_validator, | ||||
| +        bool shared_texture_enabled) | ||||
| +            bool shared_texture_enabled) | ||||
|      : BrowserCompositorOutputSurface(std::move(context), | ||||
|                                       update_vsync_parameters_callback, | ||||
|                                       std::move(overlay_candidate_validator)), | ||||
| +      shared_texture_enabled_(shared_texture_enabled), | ||||
|        weak_ptr_factory_(this) { | ||||
|    capabilities_.uses_default_gl_framebuffer = false; | ||||
|  } | ||||
| @@ -48,6 +50,10 @@ OffscreenBrowserCompositorOutputSurface:: | ||||
| @@ -45,6 +47,10 @@ OffscreenBrowserCompositorOutputSurface:: | ||||
|    DiscardBackbuffer(); | ||||
|  } | ||||
|   | ||||
| @@ -134,7 +154,7 @@ index dfedf6a60ebe..882457ebbbaa 100644 | ||||
|  void OffscreenBrowserCompositorOutputSurface::BindToClient( | ||||
|      viz::OutputSurfaceClient* client) { | ||||
|    DCHECK(client); | ||||
| @@ -56,42 +62,72 @@ void OffscreenBrowserCompositorOutputSurface::BindToClient( | ||||
| @@ -53,42 +59,72 @@ void OffscreenBrowserCompositorOutputSurface::BindToClient( | ||||
|  } | ||||
|   | ||||
|  void OffscreenBrowserCompositorOutputSurface::EnsureBackbuffer() { | ||||
| @@ -237,7 +257,7 @@ index dfedf6a60ebe..882457ebbbaa 100644 | ||||
|  } | ||||
|   | ||||
|  void OffscreenBrowserCompositorOutputSurface::DiscardBackbuffer() { | ||||
| @@ -103,6 +139,16 @@ void OffscreenBrowserCompositorOutputSurface::DiscardBackbuffer() { | ||||
| @@ -100,6 +136,16 @@ void OffscreenBrowserCompositorOutputSurface::DiscardBackbuffer() { | ||||
|        reflector_->OnSourceTextureMailboxUpdated(nullptr); | ||||
|    } | ||||
|   | ||||
| @@ -254,7 +274,7 @@ index dfedf6a60ebe..882457ebbbaa 100644 | ||||
|    if (fbo_) { | ||||
|      gl->BindFramebuffer(GL_FRAMEBUFFER, fbo_); | ||||
|      gl->DeleteFramebuffers(1, &fbo_); | ||||
| @@ -125,15 +171,20 @@ void OffscreenBrowserCompositorOutputSurface::Reshape( | ||||
| @@ -122,15 +168,20 @@ void OffscreenBrowserCompositorOutputSurface::Reshape( | ||||
|  } | ||||
|   | ||||
|  void OffscreenBrowserCompositorOutputSurface::BindFramebuffer() { | ||||
| @@ -279,7 +299,7 @@ index dfedf6a60ebe..882457ebbbaa 100644 | ||||
|    } | ||||
|  } | ||||
|   | ||||
| @@ -154,6 +205,12 @@ void OffscreenBrowserCompositorOutputSurface::SwapBuffers( | ||||
| @@ -151,6 +202,12 @@ void OffscreenBrowserCompositorOutputSurface::SwapBuffers( | ||||
|    // The original implementation had a flickering issue (crbug.com/515332). | ||||
|    gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); | ||||
|   | ||||
| @@ -292,7 +312,7 @@ index dfedf6a60ebe..882457ebbbaa 100644 | ||||
|    gpu::SyncToken sync_token; | ||||
|    gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData()); | ||||
|    context_provider_->ContextSupport()->SignalSyncToken( | ||||
| @@ -193,7 +250,9 @@ void OffscreenBrowserCompositorOutputSurface::OnSwapBuffersComplete( | ||||
| @@ -190,7 +247,9 @@ void OffscreenBrowserCompositorOutputSurface::OnSwapBuffersComplete( | ||||
|      const std::vector<ui::LatencyInfo>& latency_info) { | ||||
|    latency_tracker_.OnGpuSwapBuffersCompleted(latency_info); | ||||
|    client_->DidReceiveSwapBuffersAck(); | ||||
| @@ -304,20 +324,20 @@ index dfedf6a60ebe..882457ebbbaa 100644 | ||||
|   | ||||
|  unsigned OffscreenBrowserCompositorOutputSurface::UpdateGpuFence() { | ||||
| diff --git content/browser/compositor/offscreen_browser_compositor_output_surface.h content/browser/compositor/offscreen_browser_compositor_output_surface.h | ||||
| index 9751f1e74d82..ca3237a4d995 100644 | ||||
| index 9756ca6f5bc3..c470746b5b93 100644 | ||||
| --- content/browser/compositor/offscreen_browser_compositor_output_surface.h | ||||
| +++ content/browser/compositor/offscreen_browser_compositor_output_surface.h | ||||
| @@ -32,7 +32,8 @@ class OffscreenBrowserCompositorOutputSurface | ||||
|        const viz::UpdateVSyncParametersCallback& | ||||
|            update_vsync_parameters_callback, | ||||
|        std::unique_ptr<viz::CompositorOverlayCandidateValidator> | ||||
| @@ -30,7 +30,8 @@ class OffscreenBrowserCompositorOutputSurface | ||||
|    OffscreenBrowserCompositorOutputSurface( | ||||
|        scoped_refptr<ws::ContextProviderCommandBuffer> context, | ||||
|        std::unique_ptr<viz::OverlayCandidateValidator> | ||||
| -          overlay_candidate_validator); | ||||
| +          overlay_candidate_validator, | ||||
| +      bool shared_texture_enabled); | ||||
|   | ||||
|    ~OffscreenBrowserCompositorOutputSurface() override; | ||||
|   | ||||
| @@ -54,11 +55,15 @@ class OffscreenBrowserCompositorOutputSurface | ||||
| @@ -52,11 +53,15 @@ class OffscreenBrowserCompositorOutputSurface | ||||
|    gfx::BufferFormat GetOverlayBufferFormat() const override; | ||||
|    uint32_t GetFramebufferCopyTextureFormat() override; | ||||
|   | ||||
| @@ -333,7 +353,7 @@ index 9751f1e74d82..ca3237a4d995 100644 | ||||
|    void OnSwapBuffersComplete(const std::vector<ui::LatencyInfo>& latency_info); | ||||
|   | ||||
|    viz::OutputSurfaceClient* client_ = nullptr; | ||||
| @@ -66,6 +71,11 @@ class OffscreenBrowserCompositorOutputSurface | ||||
| @@ -64,6 +69,11 @@ class OffscreenBrowserCompositorOutputSurface | ||||
|    uint32_t fbo_ = 0; | ||||
|    bool reflector_changed_ = false; | ||||
|    std::unique_ptr<ReflectorTexture> reflector_texture_; | ||||
| @@ -361,10 +381,10 @@ index 052b441e020d..9c3044185400 100644 | ||||
|    GLES2_GET_FUN(InvalidateReadbackBufferShadowDataCHROMIUM) | ||||
|  #define glFramebufferTextureMultiviewOVR \ | ||||
| diff --git gpu/command_buffer/build_gles2_cmd_buffer.py gpu/command_buffer/build_gles2_cmd_buffer.py | ||||
| index 255f6eb57f59..725e1475bbad 100755 | ||||
| index e830f36dcb81..9e647f3bbd54 100755 | ||||
| --- gpu/command_buffer/build_gles2_cmd_buffer.py | ||||
| +++ gpu/command_buffer/build_gles2_cmd_buffer.py | ||||
| @@ -4231,6 +4231,35 @@ _FUNCTION_INFO = { | ||||
| @@ -4228,6 +4228,35 @@ _FUNCTION_INFO = { | ||||
|      'extension': 'CHROMIUM_gpu_fence', | ||||
|      'extension_flag': 'chromium_gpu_fence', | ||||
|    }, | ||||
| @@ -496,10 +516,10 @@ index dbe1d6080d28..6902055b7c70 100644 | ||||
|                                                 GLint shm_id, | ||||
|                                                 GLuint shm_offset, | ||||
| diff --git gpu/command_buffer/client/gles2_implementation.cc gpu/command_buffer/client/gles2_implementation.cc | ||||
| index bb4a599a9a37..3159b045d260 100644 | ||||
| index 211bfd81a53c..26f65497638e 100644 | ||||
| --- gpu/command_buffer/client/gles2_implementation.cc | ||||
| +++ gpu/command_buffer/client/gles2_implementation.cc | ||||
| @@ -7616,6 +7616,22 @@ void GLES2Implementation::Viewport(GLint x, | ||||
| @@ -7619,6 +7619,22 @@ void GLES2Implementation::Viewport(GLint x, | ||||
|    CheckGLError(); | ||||
|  } | ||||
|   | ||||
| @@ -971,10 +991,10 @@ index 7c3d121e54dc..b9b7ffa2a585 100644 | ||||
|  GL_APICALL void         GL_APIENTRY glInvalidateReadbackBufferShadowDataCHROMIUM (GLidBuffer buffer_id); | ||||
|  // (used for CHROMIUM_nonblocking_readback implementation) | ||||
| diff --git gpu/command_buffer/service/BUILD.gn gpu/command_buffer/service/BUILD.gn | ||||
| index 8ff7c571352d..63ffe016f019 100644 | ||||
| index 5a84425376f2..6af28715789b 100644 | ||||
| --- gpu/command_buffer/service/BUILD.gn | ||||
| +++ gpu/command_buffer/service/BUILD.gn | ||||
| @@ -107,6 +107,8 @@ target(link_target_type, "gles2_sources") { | ||||
| @@ -108,6 +108,8 @@ target(link_target_type, "gles2_sources") { | ||||
|    visibility = [ "//gpu/*" ] | ||||
|   | ||||
|    sources = [ | ||||
| @@ -984,7 +1004,7 @@ index 8ff7c571352d..63ffe016f019 100644 | ||||
|      "abstract_texture_impl_shared_context_state.cc", | ||||
|      "abstract_texture_impl_shared_context_state.h", | ||||
| diff --git gpu/command_buffer/service/gles2_cmd_decoder.cc gpu/command_buffer/service/gles2_cmd_decoder.cc | ||||
| index 71ae06b85d79..c5599711d769 100644 | ||||
| index bc72d2624aad..18a477c53445 100644 | ||||
| --- gpu/command_buffer/service/gles2_cmd_decoder.cc | ||||
| +++ gpu/command_buffer/service/gles2_cmd_decoder.cc | ||||
| @@ -38,6 +38,7 @@ | ||||
| @@ -1018,7 +1038,7 @@ index 71ae06b85d79..c5599711d769 100644 | ||||
|    base::flat_set<scoped_refptr<Buffer>> writes_submitted_but_not_completed_; | ||||
|   | ||||
|    // The format of the back buffer_ | ||||
| @@ -5619,6 +5629,59 @@ error::Error GLES2DecoderImpl::HandleDestroyGpuFenceCHROMIUM( | ||||
| @@ -5620,6 +5630,59 @@ error::Error GLES2DecoderImpl::HandleDestroyGpuFenceCHROMIUM( | ||||
|    return error::kNoError; | ||||
|  } | ||||
|   | ||||
| @@ -1079,7 +1099,7 @@ index 71ae06b85d79..c5599711d769 100644 | ||||
|    for (auto it = saved_back_textures_.begin(); it != saved_back_textures_.end(); | ||||
|         ++it) { | ||||
| diff --git gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc | ||||
| index 6b9c176a0dcf..6e9ff5b7d35d 100644 | ||||
| index 15fd3f99101d..3c1234940c41 100644 | ||||
| --- gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc | ||||
| +++ gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc | ||||
| @@ -11,6 +11,7 @@ | ||||
| @@ -1090,7 +1110,7 @@ index 6b9c176a0dcf..6e9ff5b7d35d 100644 | ||||
|  #include "gpu/command_buffer/service/command_buffer_service.h" | ||||
|  #include "gpu/command_buffer/service/decoder_client.h" | ||||
|  #include "gpu/command_buffer/service/feature_info.h" | ||||
| @@ -2515,6 +2516,67 @@ error::Error GLES2DecoderPassthroughImpl::CheckSwapBuffersResult( | ||||
| @@ -2589,6 +2590,67 @@ error::Error GLES2DecoderPassthroughImpl::CheckSwapBuffersResult( | ||||
|    return error::kNoError; | ||||
|  } | ||||
|   | ||||
| @@ -1159,7 +1179,7 @@ index 6b9c176a0dcf..6e9ff5b7d35d 100644 | ||||
|  GLES2DecoderPassthroughImpl::TextureTarget | ||||
|  GLES2DecoderPassthroughImpl::GLenumToTextureTarget(GLenum target) { | ||||
| diff --git gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h | ||||
| index 7470c03bfc6a..58b91b2f666d 100644 | ||||
| index 1fa45e8311c3..f67179f3bdc4 100644 | ||||
| --- gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h | ||||
| +++ gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h | ||||
| @@ -45,6 +45,7 @@ class SharedImageRepresentationGLTexturePassthrough; | ||||
| @@ -1179,7 +1199,7 @@ index 7470c03bfc6a..58b91b2f666d 100644 | ||||
|    void* GetScratchMemory(size_t size); | ||||
|   | ||||
|    template <typename T> | ||||
| @@ -578,6 +581,8 @@ class GPU_GLES2_EXPORT GLES2DecoderPassthroughImpl : public GLES2Decoder { | ||||
| @@ -581,6 +584,8 @@ class GPU_GLES2_EXPORT GLES2DecoderPassthroughImpl : public GLES2Decoder { | ||||
|   | ||||
|    std::unique_ptr<MultiDrawManager> multi_draw_manager_; | ||||
|   | ||||
| @@ -1189,11 +1209,11 @@ index 7470c03bfc6a..58b91b2f666d 100644 | ||||
|    size_t active_texture_unit_; | ||||
|   | ||||
| diff --git ui/compositor/compositor.cc ui/compositor/compositor.cc | ||||
| index 6ab0a01e8f3d..1046cbde43e9 100644 | ||||
| index 15c98e2b7d42..d607234f8ad7 100644 | ||||
| --- ui/compositor/compositor.cc | ||||
| +++ ui/compositor/compositor.cc | ||||
| @@ -560,6 +560,16 @@ scoped_refptr<CompositorVSyncManager> Compositor::vsync_manager() const { | ||||
|    return vsync_manager_; | ||||
| @@ -548,6 +548,16 @@ gfx::AcceleratedWidget Compositor::widget() const { | ||||
|    return widget_; | ||||
|  } | ||||
|   | ||||
| +void* Compositor::GetSharedTexture() { | ||||
| @@ -1210,27 +1230,27 @@ index 6ab0a01e8f3d..1046cbde43e9 100644 | ||||
|    observer_list_.AddObserver(observer); | ||||
|  } | ||||
| diff --git ui/compositor/compositor.h ui/compositor/compositor.h | ||||
| index 102c2fcef112..0115a1ec972a 100644 | ||||
| index 494241c374b7..f07133a4b147 100644 | ||||
| --- ui/compositor/compositor.h | ||||
| +++ ui/compositor/compositor.h | ||||
| @@ -25,6 +25,7 @@ | ||||
| @@ -24,6 +24,7 @@ | ||||
|  #include "components/viz/common/frame_sinks/begin_frame_args.h" | ||||
|  #include "components/viz/common/surfaces/frame_sink_id.h" | ||||
|  #include "components/viz/common/surfaces/local_surface_id_allocation.h" | ||||
|  #include "components/viz/host/host_frame_sink_client.h" | ||||
| +#include "components/viz/service/display/software_output_device.h" | ||||
|  #include "services/viz/privileged/interfaces/compositing/vsync_parameter_observer.mojom-forward.h" | ||||
|  #include "third_party/skia/include/core/SkColor.h" | ||||
|  #include "third_party/skia/include/core/SkMatrix44.h" | ||||
|  #include "ui/compositor/compositor_animation_observer.h" | ||||
| @@ -154,6 +155,8 @@ class COMPOSITOR_EXPORT ContextFactoryPrivate { | ||||
|                                         const viz::BeginFrameArgs& args) = 0; | ||||
| @@ -155,6 +156,8 @@ class COMPOSITOR_EXPORT ContextFactoryPrivate { | ||||
|   | ||||
|    virtual void SetOutputIsSecure(Compositor* compositor, bool secure) = 0; | ||||
| + | ||||
| +  virtual void* GetSharedTexture(ui::Compositor* compositor) = 0; | ||||
|  }; | ||||
|   | ||||
|  // This class abstracts the creation of the 3D context for the compositor. It is | ||||
| @@ -194,6 +197,17 @@ class COMPOSITOR_EXPORT ContextFactory { | ||||
| +  virtual void* GetSharedTexture(ui::Compositor* compositor) = 0; | ||||
| + | ||||
|    // Adds an observer for vsync parameter changes. | ||||
|    virtual void AddVSyncParameterObserver( | ||||
|        Compositor* compositor, | ||||
| @@ -199,6 +202,17 @@ class COMPOSITOR_EXPORT ContextFactory { | ||||
|    virtual bool SyncTokensRequiredForDisplayCompositor() = 0; | ||||
|  }; | ||||
|   | ||||
| @@ -1248,7 +1268,7 @@ index 102c2fcef112..0115a1ec972a 100644 | ||||
|  // Compositor object to take care of GPU painting. | ||||
|  // A Browser compositor object is responsible for generating the final | ||||
|  // displayable form of pixels comprising a single widget's contents. It draws an | ||||
| @@ -236,6 +250,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
| @@ -238,6 +252,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
|    // Schedules a redraw of the layer tree associated with this compositor. | ||||
|    void ScheduleDraw(); | ||||
|   | ||||
| @@ -1258,7 +1278,7 @@ index 102c2fcef112..0115a1ec972a 100644 | ||||
|    // Sets the root of the layer tree drawn by this Compositor. The root layer | ||||
|    // must have no parent. The compositor's root layer is reset if the root layer | ||||
|    // is destroyed. NULL can be passed to reset the root layer, in which case the | ||||
| @@ -349,6 +366,10 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
| @@ -341,6 +358,10 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
|      return task_runner_; | ||||
|    } | ||||
|   | ||||
| @@ -1269,7 +1289,7 @@ index 102c2fcef112..0115a1ec972a 100644 | ||||
|    // Compositor does not own observers. It is the responsibility of the | ||||
|    // observer to remove itself when it is done observing. | ||||
|    void AddObserver(CompositorObserver* observer); | ||||
| @@ -460,6 +481,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
| @@ -454,6 +475,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
|    ui::ContextFactory* context_factory_; | ||||
|    ui::ContextFactoryPrivate* context_factory_private_; | ||||
|   | ||||
| @@ -1278,7 +1298,7 @@ index 102c2fcef112..0115a1ec972a 100644 | ||||
|    // The root of the Layer tree drawn by this compositor. | ||||
|    Layer* root_layer_ = nullptr; | ||||
|   | ||||
| @@ -494,6 +517,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
| @@ -485,6 +508,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, | ||||
|   | ||||
|    ExternalBeginFrameClient* const external_begin_frame_client_; | ||||
|   | ||||
| @@ -1288,11 +1308,11 @@ index 102c2fcef112..0115a1ec972a 100644 | ||||
|   | ||||
|    // The device scale factor of the monitor that this compositor is compositing | ||||
| diff --git ui/compositor/host/host_context_factory_private.cc ui/compositor/host/host_context_factory_private.cc | ||||
| index 2b23ed42a933..109841847888 100644 | ||||
| index 0ff1e05244e0..93d69530edc2 100644 | ||||
| --- ui/compositor/host/host_context_factory_private.cc | ||||
| +++ ui/compositor/host/host_context_factory_private.cc | ||||
| @@ -254,6 +254,10 @@ void HostContextFactoryPrivate::SetOutputIsSecure(Compositor* compositor, | ||||
|      iter->second.display_private->SetOutputIsSecure(secure); | ||||
| @@ -297,6 +297,10 @@ void HostContextFactoryPrivate::AddVSyncParameterObserver( | ||||
|    } | ||||
|  } | ||||
|   | ||||
| +void* HostContextFactoryPrivate::GetSharedTexture(Compositor* /*compositor*/) { | ||||
| @@ -1303,7 +1323,7 @@ index 2b23ed42a933..109841847888 100644 | ||||
|    // When running with viz there is no FrameSinkManagerImpl in the browser | ||||
|    // process. FrameSinkManagerImpl runs in the GPU process instead. Anything in | ||||
| diff --git ui/compositor/host/host_context_factory_private.h ui/compositor/host/host_context_factory_private.h | ||||
| index 18cd096449d2..aa25ea058925 100644 | ||||
| index dc31ab80f17e..c7c08d6137eb 100644 | ||||
| --- ui/compositor/host/host_context_factory_private.h | ||||
| +++ ui/compositor/host/host_context_factory_private.h | ||||
| @@ -50,6 +50,8 @@ class HostContextFactoryPrivate : public ContextFactoryPrivate { | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git .gn .gn | ||||
| index 2bccf9d2b12c..39ce25e36c22 100644 | ||||
| index 01085ea84619..b79158a1a962 100644 | ||||
| --- .gn | ||||
| +++ .gn | ||||
| @@ -664,6 +664,8 @@ exec_script_whitelist = | ||||
| @@ -666,6 +666,8 @@ exec_script_whitelist = | ||||
|        # in the Chromium repo outside of //build. | ||||
|        "//build_overrides/build.gni", | ||||
|   | ||||
| @@ -12,10 +12,10 @@ index 2bccf9d2b12c..39ce25e36c22 100644 | ||||
|        # https://crbug.com/474506. | ||||
|        "//clank/java/BUILD.gn", | ||||
| diff --git BUILD.gn BUILD.gn | ||||
| index 2d6f3315e687..405ddd14fab6 100644 | ||||
| index 8209523bebe9..84137b1a5cca 100644 | ||||
| --- BUILD.gn | ||||
| +++ BUILD.gn | ||||
| @@ -187,6 +187,7 @@ group("gn_all") { | ||||
| @@ -202,6 +202,7 @@ group("gn_all") { | ||||
|   | ||||
|    if (!is_ios && !is_fuchsia) { | ||||
|      deps += [ | ||||
| @@ -100,10 +100,10 @@ index ef8aeda56458..5b7f057311b9 100644 | ||||
|   | ||||
|   | ||||
| diff --git build/vs_toolchain.py build/vs_toolchain.py | ||||
| index 0ce237fe1323..6201bbba992c 100755 | ||||
| index 6a0dcbdb4fe2..9902f5da105a 100755 | ||||
| --- build/vs_toolchain.py | ||||
| +++ build/vs_toolchain.py | ||||
| @@ -78,11 +78,18 @@ def SetEnvironmentAndGetRuntimeDllDirs(): | ||||
| @@ -81,11 +81,18 @@ def SetEnvironmentAndGetRuntimeDllDirs(): | ||||
|      runtime_path = os.path.pathsep.join(vs_runtime_dll_dirs) | ||||
|      os.environ['PATH'] = runtime_path + os.path.pathsep + os.environ['PATH'] | ||||
|    elif sys.platform == 'win32' and not depot_tools_win_toolchain: | ||||
| @@ -123,10 +123,10 @@ index 0ce237fe1323..6201bbba992c 100755 | ||||
|      # directory in order to run binaries locally, but they are needed in order | ||||
|      # to create isolates or the mini_installer. Copying them to the output | ||||
| diff --git chrome/chrome_paks.gni chrome/chrome_paks.gni | ||||
| index dc766a29cc34..97b47d0538e4 100644 | ||||
| index 8ff44c72636e..bb5e1a42aed4 100644 | ||||
| --- chrome/chrome_paks.gni | ||||
| +++ chrome/chrome_paks.gni | ||||
| @@ -265,7 +265,7 @@ template("chrome_paks") { | ||||
| @@ -275,7 +275,7 @@ template("chrome_paks") { | ||||
|      } | ||||
|   | ||||
|      input_locales = locales | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git tools/gritsettings/resource_ids tools/gritsettings/resource_ids | ||||
| index 33dc98925f5f..9bd2dbef9faf 100644 | ||||
| index 2a7cb2dcb562..3fef6b5dee49 100644 | ||||
| --- tools/gritsettings/resource_ids | ||||
| +++ tools/gritsettings/resource_ids | ||||
| @@ -442,4 +442,11 @@ | ||||
| @@ -459,4 +459,11 @@ | ||||
|    # Please read the header and find the right section above instead. | ||||
|   | ||||
|    # Resource ids starting at 31000 are reserved for projects built on Chromium. | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git ui/base/ime/win/input_method_win_base.cc ui/base/ime/win/input_method_win_base.cc | ||||
| index 7de0c9321795..cba34d236a1f 100644 | ||||
| index 2627f1eae901..80c00fc9752a 100644 | ||||
| --- ui/base/ime/win/input_method_win_base.cc | ||||
| +++ ui/base/ime/win/input_method_win_base.cc | ||||
| @@ -267,8 +267,9 @@ bool InputMethodWinBase::IsWindowFocused(const TextInputClient* client) const { | ||||
| @@ -266,8 +266,9 @@ bool InputMethodWinBase::IsWindowFocused(const TextInputClient* client) const { | ||||
|    // receiving keyboard input as long as it is an active window. This works well | ||||
|    // even when the |attached_window_handle| becomes active but has not received | ||||
|    // WM_FOCUS yet. | ||||
|   | ||||
| @@ -1,34 +1,5 @@ | ||||
| diff --git build/config/linux/gtk/BUILD.gn build/config/linux/gtk/BUILD.gn | ||||
| index d78f7407c179..0bb79883e16c 100644 | ||||
| --- build/config/linux/gtk/BUILD.gn | ||||
| +++ build/config/linux/gtk/BUILD.gn | ||||
| @@ -4,8 +4,10 @@ | ||||
|   | ||||
|  import("//build/config/linux/gtk/gtk.gni") | ||||
|  import("//build/config/linux/pkg_config.gni") | ||||
| +import("//build/config/ui.gni") | ||||
|   | ||||
|  assert(is_linux, "This file should only be referenced on Linux") | ||||
| +assert(use_gtk, "This file should only be referenced when GTK is enabled") | ||||
|   | ||||
|  # GN doesn't check visibility for configs so we give this an obviously internal | ||||
|  # name to discourage random targets from accidentally depending on this and | ||||
| diff --git build/config/ui.gni build/config/ui.gni | ||||
| index 547b42fb5c66..0eae3470e1bb 100644 | ||||
| --- build/config/ui.gni | ||||
| +++ build/config/ui.gni | ||||
| @@ -37,6 +37,9 @@ declare_args() { | ||||
|    # True means the UI is built using the "views" framework. | ||||
|    toolkit_views = (is_mac || is_win || is_chromeos || use_aura) && | ||||
|                    !is_chromecast && !is_fuchsia | ||||
| + | ||||
| +  # Whether we should use GTK. | ||||
| +  use_gtk = use_aura && is_linux | ||||
|  } | ||||
|   | ||||
|  # Additional dependent variables ----------------------------------------------- | ||||
| diff --git chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc | ||||
| index c3511e3e6a66..3500f4a2b005 100644 | ||||
| index 07f06ac694f5..831fd9f82dbe 100644 | ||||
| --- chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc | ||||
| +++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc | ||||
| @@ -6,6 +6,7 @@ | ||||
| @@ -39,7 +10,7 @@ index c3511e3e6a66..3500f4a2b005 100644 | ||||
|  #include "chrome/browser/chrome_browser_main.h" | ||||
|  #include "chrome/browser/profiles/profile.h" | ||||
|  #include "chrome/browser/themes/theme_service.h" | ||||
| @@ -31,6 +32,7 @@ | ||||
| @@ -29,6 +30,7 @@ | ||||
|   | ||||
|  namespace { | ||||
|   | ||||
| @@ -47,7 +18,7 @@ index c3511e3e6a66..3500f4a2b005 100644 | ||||
|  ui::NativeTheme* GetNativeThemeForWindow(aura::Window* window) { | ||||
|    if (!window) | ||||
|      return nullptr; | ||||
| @@ -55,6 +57,7 @@ ui::NativeTheme* GetNativeThemeForWindow(aura::Window* window) { | ||||
| @@ -53,6 +55,7 @@ ui::NativeTheme* GetNativeThemeForWindow(aura::Window* window) { | ||||
|   | ||||
|    return ui::NativeTheme::GetInstanceForNativeUi(); | ||||
|  } | ||||
| @@ -55,32 +26,23 @@ index c3511e3e6a66..3500f4a2b005 100644 | ||||
|   | ||||
|  }  // namespace | ||||
|   | ||||
| @@ -68,9 +71,11 @@ ChromeBrowserMainExtraPartsViewsLinux:: | ||||
|  } | ||||
| @@ -67,9 +70,11 @@ void ChromeBrowserMainExtraPartsViewsLinux::PreEarlyInitialization() { | ||||
|    if (!linux_ui) | ||||
|      return; | ||||
|   | ||||
|  void ChromeBrowserMainExtraPartsViewsLinux::PreEarlyInitialization() { | ||||
| +#if !BUILDFLAG(ENABLE_CEF) | ||||
|    views::LinuxUI* gtk_ui = BuildGtkUi(); | ||||
|    gtk_ui->SetNativeThemeOverride(base::BindRepeating(&GetNativeThemeForWindow)); | ||||
|    views::LinuxUI::SetInstance(gtk_ui); | ||||
|    linux_ui->SetNativeThemeOverride( | ||||
|        base::BindRepeating(&GetNativeThemeForWindow)); | ||||
|    views::LinuxUI::SetInstance(linux_ui); | ||||
| +#endif | ||||
|  } | ||||
|   | ||||
|  void ChromeBrowserMainExtraPartsViewsLinux::ToolkitInitialized() { | ||||
| diff --git chrome/test/BUILD.gn chrome/test/BUILD.gn | ||||
| index 5406779a17c2..b1ed0f2c970b 100644 | ||||
| index 1fb3cf77f01c..dbb03ffe3333 100644 | ||||
| --- chrome/test/BUILD.gn | ||||
| +++ chrome/test/BUILD.gn | ||||
| @@ -4159,7 +4159,7 @@ test("unit_tests") { | ||||
|        "../browser/ui/input_method/input_method_engine_unittest.cc", | ||||
|      ] | ||||
|    } | ||||
| -  if (!is_chromeos && !is_chromecast && is_linux) { | ||||
| +  if (!is_chromeos && !is_chromecast && is_linux && use_gtk) { | ||||
|      sources += | ||||
|          [ "../browser/ui/libgtkui/select_file_dialog_impl_gtk_unittest.cc" ] | ||||
|      deps += [ "//build/config/linux/gtk" ] | ||||
| @@ -4180,7 +4180,7 @@ test("unit_tests") { | ||||
| @@ -4286,7 +4286,7 @@ test("unit_tests") { | ||||
|    if (use_gio) { | ||||
|      configs += [ "//build/linux:gio_config" ] | ||||
|    } | ||||
| @@ -89,7 +51,7 @@ index 5406779a17c2..b1ed0f2c970b 100644 | ||||
|      deps += [ "//chrome/browser/ui/libgtkui" ] | ||||
|    } | ||||
|   | ||||
| @@ -5206,7 +5206,7 @@ if (!is_android) { | ||||
| @@ -5286,7 +5286,7 @@ if (!is_android) { | ||||
|            # suites, it seems like one or another starts timing out too. | ||||
|            "../browser/ui/views/keyboard_access_browsertest.cc", | ||||
|          ] | ||||
| @@ -98,86 +60,3 @@ index 5406779a17c2..b1ed0f2c970b 100644 | ||||
|            sources += [ | ||||
|              "../browser/ui/libgtkui/select_file_dialog_interactive_uitest.cc", | ||||
|            ] | ||||
| diff --git remoting/host/BUILD.gn remoting/host/BUILD.gn | ||||
| index 229a7cb37e34..d51e249a7f9e 100644 | ||||
| --- remoting/host/BUILD.gn | ||||
| +++ remoting/host/BUILD.gn | ||||
| @@ -353,7 +353,7 @@ static_library("common") { | ||||
|        "//build/config/linux:xrandr", | ||||
|      ] | ||||
|      deps += [ "//remoting/host/linux:x11" ] | ||||
| -    if (is_desktop_linux) { | ||||
| +    if (is_desktop_linux && use_gtk) { | ||||
|        deps += [ "//build/config/linux/gtk" ] | ||||
|      } | ||||
|    } else { | ||||
| @@ -737,7 +737,7 @@ if (enable_me2me_host) { | ||||
|        deps += [ "//components/policy:generated" ] | ||||
|      } | ||||
|   | ||||
| -    if (is_desktop_linux) { | ||||
| +    if (is_desktop_linux && use_gtk) { | ||||
|        deps += [ "//build/config/linux/gtk" ] | ||||
|      } | ||||
|      if ((is_linux && !is_chromeos) || is_mac) { | ||||
| diff --git remoting/host/file_transfer/BUILD.gn remoting/host/file_transfer/BUILD.gn | ||||
| index ffaaa0b5b423..9fc7f88859a9 100644 | ||||
| --- remoting/host/file_transfer/BUILD.gn | ||||
| +++ remoting/host/file_transfer/BUILD.gn | ||||
| @@ -35,7 +35,7 @@ source_set("file_transfer") { | ||||
|      sources -= [ "get_desktop_directory.cc" ] | ||||
|    } | ||||
|   | ||||
| -  if (is_desktop_linux) { | ||||
| +  if (is_desktop_linux && use_gtk) { | ||||
|      sources += [ "file_chooser_linux.cc" ] | ||||
|      deps += [ "//build/config/linux/gtk" ] | ||||
|    } | ||||
| diff --git remoting/host/it2me/BUILD.gn remoting/host/it2me/BUILD.gn | ||||
| index 39dc46737578..e5cb11d5ef04 100644 | ||||
| --- remoting/host/it2me/BUILD.gn | ||||
| +++ remoting/host/it2me/BUILD.gn | ||||
| @@ -53,7 +53,7 @@ source_set("common") { | ||||
|      "//remoting/resources", | ||||
|      "//remoting/signaling", | ||||
|    ] | ||||
| -  if (is_desktop_linux) { | ||||
| +  if (is_desktop_linux && use_gtk) { | ||||
|      deps += [ | ||||
|        "//build/config/linux/gtk", | ||||
|   | ||||
| @@ -247,7 +247,7 @@ if (!is_chromeos && enable_remoting_host) { | ||||
|          } | ||||
|        } | ||||
|   | ||||
| -      if (is_desktop_linux) { | ||||
| +      if (is_desktop_linux && use_gtk) { | ||||
|          deps += [ "//build/config/linux/gtk" ] | ||||
|        } | ||||
|      } | ||||
| diff --git remoting/host/linux/BUILD.gn remoting/host/linux/BUILD.gn | ||||
| index a07f8b0254af..970c1a54b4d2 100644 | ||||
| --- remoting/host/linux/BUILD.gn | ||||
| +++ remoting/host/linux/BUILD.gn | ||||
| @@ -98,7 +98,7 @@ source_set("linux") { | ||||
|    if (use_x11) { | ||||
|      deps += [ ":x11" ] | ||||
|    } | ||||
| -  if (is_desktop_linux) { | ||||
| +  if (is_desktop_linux && use_gtk) { | ||||
|      deps += [ "//build/config/linux/gtk" ] | ||||
|    } | ||||
|  } | ||||
| diff --git remoting/test/BUILD.gn remoting/test/BUILD.gn | ||||
| index 57b7f3b4e507..e87a45273a21 100644 | ||||
| --- remoting/test/BUILD.gn | ||||
| +++ remoting/test/BUILD.gn | ||||
| @@ -158,7 +158,7 @@ if (enable_remoting_host && !is_android && !is_chromeos) { | ||||
|        ":it2me_standalone_host", | ||||
|      ] | ||||
|   | ||||
| -    if (is_desktop_linux) { | ||||
| +    if (is_desktop_linux && use_gtk) { | ||||
|        deps += [ "//build/config/linux/gtk" ] | ||||
|      } | ||||
|   | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git base/files/file_path_watcher_linux.cc base/files/file_path_watcher_linux.cc | ||||
| index 22732f2864ef..7d5caef5c3b0 100644 | ||||
| index 0ff8924fed4d..6c079b38e730 100644 | ||||
| --- base/files/file_path_watcher_linux.cc | ||||
| +++ base/files/file_path_watcher_linux.cc | ||||
| @@ -5,6 +5,7 @@ | ||||
| @@ -15,10 +15,10 @@ index 22732f2864ef..7d5caef5c3b0 100644 | ||||
|   | ||||
|  #include <algorithm> | ||||
| +#include <array> | ||||
|  #include <fstream> | ||||
|  #include <map> | ||||
|  #include <memory> | ||||
|  #include <set> | ||||
| @@ -220,22 +222,15 @@ void InotifyReaderThreadDelegate::ThreadMain() { | ||||
| @@ -263,22 +265,15 @@ void InotifyReaderThreadDelegate::ThreadMain() { | ||||
|    PlatformThread::SetName("inotify_reader"); | ||||
|   | ||||
|    // Make sure the file descriptors are good for use with select(). | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git ui/gl/init/gl_initializer_mac.cc ui/gl/init/gl_initializer_mac.cc | ||||
| index 85cab0eaef3e..37b2d42a34f5 100644 | ||||
| index 8d690474060f..03059842b1a4 100644 | ||||
| --- ui/gl/init/gl_initializer_mac.cc | ||||
| +++ ui/gl/init/gl_initializer_mac.cc | ||||
| @@ -46,11 +46,8 @@ bool InitializeOneOffForSandbox() { | ||||
| @@ -16,14 +16,3 @@ index 85cab0eaef3e..37b2d42a34f5 100644 | ||||
|    if (GetGLImplementation() == kGLImplementationAppleGL) { | ||||
|      attribs.push_back(kCGLPFARendererID); | ||||
|      attribs.push_back( | ||||
| @@ -102,8 +99,8 @@ bool InitializeStaticEGLInternal(GLImplementation implementation) { | ||||
|    // as app bundles. In that case, the .dylib is next to the executable. | ||||
|    base::FilePath base_dir; | ||||
|    if (base::mac::AmIBundled()) { | ||||
| -    base_dir = | ||||
| -        base::mac::FrameworkBundlePath().Append("Versions/Current/Libraries/"); | ||||
| +    // Rely on symlinks to find the correct version. | ||||
| +    base_dir = base::mac::FrameworkBundlePath().Append("Libraries/"); | ||||
|    } else { | ||||
|      if (!base::PathService::Get(base::FILE_EXE, &base_dir)) { | ||||
|        LOG(ERROR) << "PathService::Get failed."; | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git base/message_loop/message_loop.cc base/message_loop/message_loop.cc | ||||
| index afcf04d5882a..69f9f85cba84 100644 | ||||
| index 90cb3e3fc7dd..903f258f2e1c 100644 | ||||
| --- base/message_loop/message_loop.cc | ||||
| +++ base/message_loop/message_loop.cc | ||||
| @@ -149,6 +149,9 @@ bool MessageLoop::IsIdleForTesting() { | ||||
| @@ -100,6 +100,9 @@ bool MessageLoop::IsIdleForTesting() { | ||||
|   | ||||
|  //------------------------------------------------------------------------------ | ||||
|   | ||||
| @@ -13,10 +13,10 @@ index afcf04d5882a..69f9f85cba84 100644 | ||||
|  std::unique_ptr<MessageLoop> MessageLoop::CreateUnbound(Type type) { | ||||
|    return WrapUnique(new MessageLoop(type, nullptr)); | ||||
| diff --git base/message_loop/message_loop.h base/message_loop/message_loop.h | ||||
| index ddfed508baef..f332d1823667 100644 | ||||
| index a1d6acc4e78d..f9518bc96ce4 100644 | ||||
| --- base/message_loop/message_loop.h | ||||
| +++ base/message_loop/message_loop.h | ||||
| @@ -275,6 +275,7 @@ class BASE_EXPORT MessageLoop { | ||||
| @@ -229,6 +229,7 @@ class BASE_EXPORT MessageLoop { | ||||
|  class BASE_EXPORT MessageLoopForUI : public MessageLoop { | ||||
|   public: | ||||
|    explicit MessageLoopForUI(Type type = TYPE_UI); | ||||
| @@ -25,7 +25,7 @@ index ddfed508baef..f332d1823667 100644 | ||||
|  #if defined(OS_IOS) | ||||
|    // On iOS, the main message loop cannot be Run().  Instead call Attach(), | ||||
| diff --git base/message_loop/message_loop_current.cc base/message_loop/message_loop_current.cc | ||||
| index 2e2adfa55fa4..1370d8484d8f 100644 | ||||
| index 71a45d077a6a..fded5cf39adc 100644 | ||||
| --- base/message_loop/message_loop_current.cc | ||||
| +++ base/message_loop/message_loop_current.cc | ||||
| @@ -47,6 +47,8 @@ void MessageLoopCurrent::AddDestructionObserver( | ||||
| @@ -38,10 +38,10 @@ index 2e2adfa55fa4..1370d8484d8f 100644 | ||||
|    current_->RemoveDestructionObserver(destruction_observer); | ||||
|  } | ||||
| diff --git base/message_loop/message_loop_current.h base/message_loop/message_loop_current.h | ||||
| index 270c6593e789..520cb0e3198a 100644 | ||||
| index f259d89d429c..ffcc61ee95c2 100644 | ||||
| --- base/message_loop/message_loop_current.h | ||||
| +++ base/message_loop/message_loop_current.h | ||||
| @@ -132,6 +132,12 @@ class BASE_EXPORT MessageLoopCurrent { | ||||
| @@ -129,6 +129,12 @@ class BASE_EXPORT MessageLoopCurrent { | ||||
|    // posted tasks. | ||||
|    void SetAddQueueTimeToTasks(bool enable); | ||||
|   | ||||
| @@ -54,7 +54,7 @@ index 270c6593e789..520cb0e3198a 100644 | ||||
|    // Enables or disables the recursive task processing. This happens in the case | ||||
|    // of recursive message loops. Some unwanted message loops may occur when | ||||
|    // using common controls or printer functions. By default, recursive task | ||||
| @@ -202,6 +208,13 @@ class BASE_EXPORT MessageLoopCurrent { | ||||
| @@ -199,6 +205,13 @@ class BASE_EXPORT MessageLoopCurrent { | ||||
|    friend class web::TestWebThreadBundle; | ||||
|   | ||||
|    sequence_manager::internal::SequenceManagerImpl* current_; | ||||
|   | ||||
| @@ -22,10 +22,10 @@ index 49fe875c7d22..c1e3df840dc0 100644 | ||||
|    THREAD_CHECKER(thread_checker_); | ||||
|   | ||||
| diff --git net/url_request/url_request_job.cc net/url_request/url_request_job.cc | ||||
| index 06df9bd3e545..c5dbb0f0f6ef 100644 | ||||
| index 3a7efeaf5b04..1a03e0ab8229 100644 | ||||
| --- net/url_request/url_request_job.cc | ||||
| +++ net/url_request/url_request_job.cc | ||||
| @@ -464,6 +464,12 @@ void URLRequestJob::NotifyHeadersComplete() { | ||||
| @@ -438,6 +438,12 @@ void URLRequestJob::NotifyHeadersComplete() { | ||||
|      DCHECK(!source_stream_); | ||||
|      source_stream_ = SetUpSourceStream(); | ||||
|   | ||||
|   | ||||
| @@ -1,72 +1,15 @@ | ||||
| diff --git components/certificate_transparency/chrome_ct_policy_enforcer.cc components/certificate_transparency/chrome_ct_policy_enforcer.cc | ||||
| index 99a4405290ea..d0b35f74e552 100644 | ||||
| --- components/certificate_transparency/chrome_ct_policy_enforcer.cc | ||||
| +++ components/certificate_transparency/chrome_ct_policy_enforcer.cc | ||||
| @@ -36,15 +36,6 @@ namespace certificate_transparency { | ||||
|   | ||||
|  namespace { | ||||
|   | ||||
| -// Returns true if the current build is recent enough to ensure that | ||||
| -// built-in security information (e.g. CT Logs) is fresh enough. | ||||
| -// TODO(eranm): Move to base or net/base | ||||
| -bool IsBuildTimely() { | ||||
| -  const base::Time build_time = base::GetBuildTime(); | ||||
| -  // We consider built-in information to be timely for 10 weeks. | ||||
| -  return (base::Time::Now() - build_time).InDays() < 70 /* 10 weeks */; | ||||
| -} | ||||
| - | ||||
|  // Returns a rounded-down months difference of |start| and |end|, | ||||
|  // together with an indication of whether the last month was | ||||
|  // a full month, because the range starts specified in the policy | ||||
| @@ -304,4 +295,16 @@ CTPolicyCompliance ChromeCTPolicyEnforcer::CheckCompliance( | ||||
|    return compliance; | ||||
|  } | ||||
|   | ||||
| +// Returns true if the current build is recent enough to ensure that | ||||
| +// built-in security information (e.g. CT Logs) is fresh enough. | ||||
| +// TODO(eranm): Move to base or net/base | ||||
| +bool ChromeCTPolicyEnforcer::IsBuildTimely() const { | ||||
| +  if (!enforce_net_security_expiration_) | ||||
| +    return true; | ||||
| + | ||||
| +  const base::Time build_time = base::GetBuildTime(); | ||||
| +  // We consider built-in information to be timely for 10 weeks. | ||||
| +  return (base::Time::Now() - build_time).InDays() < 70 /* 10 weeks */; | ||||
| +} | ||||
| + | ||||
|  }  // namespace certificate_transparency | ||||
| diff --git components/certificate_transparency/chrome_ct_policy_enforcer.h components/certificate_transparency/chrome_ct_policy_enforcer.h | ||||
| index f61ff0d0564a..e6727c7b1cbc 100644 | ||||
| --- components/certificate_transparency/chrome_ct_policy_enforcer.h | ||||
| +++ components/certificate_transparency/chrome_ct_policy_enforcer.h | ||||
| @@ -26,6 +26,17 @@ class ChromeCTPolicyEnforcer : public net::CTPolicyEnforcer { | ||||
|        net::X509Certificate* cert, | ||||
|        const net::ct::SCTList& verified_scts, | ||||
|        const net::NetLogWithSource& net_log) override; | ||||
| + | ||||
| +  void set_enforce_net_security_expiration(bool enforce) { | ||||
| +    enforce_net_security_expiration_ = enforce; | ||||
| +  } | ||||
| + | ||||
| + private: | ||||
| +  // Returns true if the current build is recent enough to ensure that | ||||
| +  // built-in security information (e.g. CT Logs) is fresh enough. | ||||
| +  bool IsBuildTimely() const; | ||||
| + | ||||
| +  bool enforce_net_security_expiration_ = true; | ||||
|  }; | ||||
|   | ||||
|  }  // namespace certificate_transparency | ||||
| diff --git net/http/transport_security_state.cc net/http/transport_security_state.cc | ||||
| index b7a2bca7bf42..d0952ba4a4d7 100644 | ||||
| index b7a2bca7bf42..5987ee212a12 100644 | ||||
| --- net/http/transport_security_state.cc | ||||
| +++ net/http/transport_security_state.cc | ||||
| @@ -1100,8 +1100,10 @@ void TransportSecurityState::ClearReportCachesForTesting() { | ||||
| @@ -1100,8 +1100,12 @@ void TransportSecurityState::ClearReportCachesForTesting() { | ||||
|    sent_expect_ct_reports_cache_.Clear(); | ||||
|  } | ||||
|   | ||||
| -// static | ||||
| -bool TransportSecurityState::IsBuildTimely() { | ||||
| +// Returns true if the current build is recent enough to ensure that | ||||
| +// built-in security information (e.g. CT Logs) is fresh enough. | ||||
| +bool TransportSecurityState::IsBuildTimely() const { | ||||
| +  if (!enforce_net_security_expiration_) | ||||
| +    return true; | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git net/url_request/url_request.h net/url_request/url_request.h | ||||
| index b264ca045f24..1746e0588926 100644 | ||||
| index f6043de481fa..ca4d2472f572 100644 | ||||
| --- net/url_request/url_request.h | ||||
| +++ net/url_request/url_request.h | ||||
| @@ -748,10 +748,10 @@ class NET_EXPORT URLRequest : public base::SupportsUserData { | ||||
| @@ -782,10 +782,10 @@ class NET_EXPORT URLRequest : public base::SupportsUserData { | ||||
|   | ||||
|    base::WeakPtr<URLRequest> GetWeakPtr(); | ||||
|   | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| diff --git BUILD.gn BUILD.gn | ||||
| index 83fc631bd..26b675d64 100644 | ||||
| index 42f20931a..2a14a60e7 100644 | ||||
| --- BUILD.gn | ||||
| +++ BUILD.gn | ||||
| @@ -212,6 +212,10 @@ jumbo_static_library("pdfium") { | ||||
|      complete_static_lib = true | ||||
|      configs -= [ "//build/config/compiler:thin_archive" ] | ||||
| @@ -199,6 +199,10 @@ jumbo_component("pdfium") { | ||||
|    if (is_component_build) { | ||||
|      deps += [ "testing/fuzzers:fuzzer_impls" ] | ||||
|    } | ||||
| + | ||||
| +  include_dirs = [ | ||||
| @@ -14,10 +14,10 @@ index 83fc631bd..26b675d64 100644 | ||||
|   | ||||
|  # Targets below this are only visible within this file (and to the | ||||
| diff --git fpdfsdk/fpdf_view.cpp fpdfsdk/fpdf_view.cpp | ||||
| index 9b1e84b63..73f04bc68 100644 | ||||
| index 63374d2e9..7e9c32146 100644 | ||||
| --- fpdfsdk/fpdf_view.cpp | ||||
| +++ fpdfsdk/fpdf_view.cpp | ||||
| @@ -38,6 +38,7 @@ | ||||
| @@ -39,6 +39,7 @@ | ||||
|  #include "fpdfsdk/cpdfsdk_helpers.h" | ||||
|  #include "fpdfsdk/cpdfsdk_pageview.h" | ||||
|  #include "fpdfsdk/ipdfsdk_pauseadapter.h" | ||||
| @@ -25,7 +25,7 @@ index 9b1e84b63..73f04bc68 100644 | ||||
|  #include "fxjs/ijs_runtime.h" | ||||
|  #include "public/fpdf_formfill.h" | ||||
|  #include "third_party/base/ptr_util.h" | ||||
| @@ -183,6 +184,7 @@ FPDF_EXPORT void FPDF_CALLCONV FPDF_DestroyLibrary() { | ||||
| @@ -184,6 +185,7 @@ FPDF_EXPORT void FPDF_CALLCONV FPDF_DestroyLibrary() { | ||||
|   | ||||
|    CPDF_ModuleMgr::Destroy(); | ||||
|    CFX_GEModule::Destroy(); | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git content/public/common/common_param_traits_macros.h content/public/common/common_param_traits_macros.h | ||||
| index 24bded9417c5..cb5d04ab32ab 100644 | ||||
| index 9ad8ad0bfa50..2724dab2f003 100644 | ||||
| --- content/public/common/common_param_traits_macros.h | ||||
| +++ content/public/common/common_param_traits_macros.h | ||||
| @@ -189,6 +189,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences) | ||||
| @@ -188,6 +188,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences) | ||||
|    IPC_STRUCT_TRAITS_MEMBER(main_frame_resizes_are_orientation_changes) | ||||
|    IPC_STRUCT_TRAITS_MEMBER(initialize_at_minimum_page_scale) | ||||
|    IPC_STRUCT_TRAITS_MEMBER(smart_insert_delete_enabled) | ||||
| @@ -11,10 +11,10 @@ index 24bded9417c5..cb5d04ab32ab 100644 | ||||
|    IPC_STRUCT_TRAITS_MEMBER(navigate_on_drag_drop) | ||||
|    IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled) | ||||
| diff --git content/public/common/web_preferences.cc content/public/common/web_preferences.cc | ||||
| index 1822036e406d..b5f0e63d0b37 100644 | ||||
| index e2f3d5b5e1f9..3bf01af841ac 100644 | ||||
| --- content/public/common/web_preferences.cc | ||||
| +++ content/public/common/web_preferences.cc | ||||
| @@ -169,6 +169,7 @@ WebPreferences::WebPreferences() | ||||
| @@ -168,6 +168,7 @@ WebPreferences::WebPreferences() | ||||
|        spatial_navigation_enabled(false), | ||||
|        use_solid_color_scrollbars(false), | ||||
|        navigate_on_drag_drop(true), | ||||
| @@ -23,10 +23,10 @@ index 1822036e406d..b5f0e63d0b37 100644 | ||||
|        record_whole_document(false), | ||||
|        cookie_enabled(true), | ||||
| diff --git content/public/common/web_preferences.h content/public/common/web_preferences.h | ||||
| index a83015f3629a..fe79480e9af7 100644 | ||||
| index f9a996476d5d..09d69329e037 100644 | ||||
| --- content/public/common/web_preferences.h | ||||
| +++ content/public/common/web_preferences.h | ||||
| @@ -185,6 +185,7 @@ struct CONTENT_EXPORT WebPreferences { | ||||
| @@ -184,6 +184,7 @@ struct CONTENT_EXPORT WebPreferences { | ||||
|    bool spatial_navigation_enabled; | ||||
|    bool use_solid_color_scrollbars; | ||||
|    bool navigate_on_drag_drop; | ||||
| @@ -35,10 +35,10 @@ index a83015f3629a..fe79480e9af7 100644 | ||||
|    bool record_whole_document; | ||||
|   | ||||
| diff --git content/renderer/render_view_impl.cc content/renderer/render_view_impl.cc | ||||
| index 3e328daa5827..7d0869aa29fd 100644 | ||||
| index 1aa52af90279..e3107e93c866 100644 | ||||
| --- content/renderer/render_view_impl.cc | ||||
| +++ content/renderer/render_view_impl.cc | ||||
| @@ -1026,6 +1026,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, | ||||
| @@ -1012,6 +1012,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, | ||||
|  #endif | ||||
|   | ||||
|    WebRuntimeFeatures::EnableTranslateService(prefs.translate_service_available); | ||||
|   | ||||
| @@ -1,3 +1,42 @@ | ||||
| diff --git chrome/app/builtin_service_manifests.cc chrome/app/builtin_service_manifests.cc | ||||
| index 6c9c779d785e..6032d42122d3 100644 | ||||
| --- chrome/app/builtin_service_manifests.cc | ||||
| +++ chrome/app/builtin_service_manifests.cc | ||||
| @@ -10,6 +10,7 @@ | ||||
|  #include "chrome/common/constants.mojom.h" | ||||
|  #include "chrome/services/file_util/public/cpp/manifest.h" | ||||
|  #include "chrome/services/noop/public/cpp/manifest.h" | ||||
| +#include "chrome/services/printing/public/cpp/manifest.h" | ||||
|  #include "components/services/patch/public/cpp/manifest.h" | ||||
|  #include "components/services/quarantine/public/cpp/manifest.h" | ||||
|  #include "components/services/unzip/public/cpp/manifest.h" | ||||
| @@ -60,10 +61,6 @@ | ||||
|  #include "components/services/pdf_compositor/public/cpp/manifest.h"  // nogncheck | ||||
|  #endif | ||||
|   | ||||
| -#if BUILDFLAG(ENABLE_PRINT_PREVIEW) | ||||
| -#include "chrome/services/printing/public/cpp/manifest.h" | ||||
| -#endif | ||||
| - | ||||
|  #if BUILDFLAG(ENABLE_ISOLATED_XR_SERVICE) | ||||
|  #include "chrome/services/isolated_xr_device/manifest.h" | ||||
|  #endif | ||||
| diff --git chrome/app/printing_strings.grdp chrome/app/printing_strings.grdp | ||||
| index c7533c13e863..7578f9b6ae71 100644 | ||||
| --- chrome/app/printing_strings.grdp | ||||
| +++ chrome/app/printing_strings.grdp | ||||
| @@ -1,11 +1,9 @@ | ||||
|  <?xml version="1.0" encoding="utf-8"?> | ||||
|  <!-- Printing specific strings (included from generated_resources.grd). --> | ||||
|  <grit-part> | ||||
| -  <if expr="enable_print_preview or is_win"> | ||||
|      <message name="IDS_UTILITY_PROCESS_PRINTING_SERVICE_NAME" desc="The name of the utility process used for printing conversions."> | ||||
|        Printing Service | ||||
|      </message> | ||||
| -  </if> | ||||
|   | ||||
|    <message name="IDS_PRINT_INVALID_PRINTER_SETTINGS" desc="Message to display when selected printer is not reachable or its settings are invalid."> | ||||
|      The selected printer is not available or not installed correctly. Check your printer or try selecting another printer. | ||||
| diff --git chrome/browser/ui/cocoa/applescript/tab_applescript.mm chrome/browser/ui/cocoa/applescript/tab_applescript.mm | ||||
| index d4c9283b3cef..4a91987bfe7f 100644 | ||||
| --- chrome/browser/ui/cocoa/applescript/tab_applescript.mm | ||||
| @@ -242,7 +281,7 @@ index 1802034a6e15..ae0d479ecafa 100644 | ||||
|   | ||||
|  #endif  // COMPONENTS_PRINTING_COMMON_PRINT_MESSAGES_H_ | ||||
| diff --git components/printing/renderer/print_render_frame_helper.cc components/printing/renderer/print_render_frame_helper.cc | ||||
| index eb717d8d4be3..ddaa19d8d241 100644 | ||||
| index 74f26daa76a2..61a02b46e5a6 100644 | ||||
| --- components/printing/renderer/print_render_frame_helper.cc | ||||
| +++ components/printing/renderer/print_render_frame_helper.cc | ||||
| @@ -351,7 +351,6 @@ bool IsPrintingNodeOrPdfFrame(const blink::WebLocalFrame* frame, | ||||
| @@ -310,7 +349,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|  void PrintRenderFrameHelper::OnPrintPreview( | ||||
|      const base::DictionaryValue& settings) { | ||||
|    if (ipc_nesting_level_ > 1) | ||||
| @@ -1488,7 +1479,6 @@ int PrintRenderFrameHelper::GetFitToPageScaleFactor( | ||||
| @@ -1487,7 +1478,6 @@ int PrintRenderFrameHelper::GetFitToPageScaleFactor( | ||||
|        printable_height / static_cast<double>(uniform_page_size.height); | ||||
|    return static_cast<int>(100.0f * std::min(scale_width, scale_height)); | ||||
|  } | ||||
| @@ -318,7 +357,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|   | ||||
|  void PrintRenderFrameHelper::OnPrintingDone(bool success) { | ||||
|    if (ipc_nesting_level_ > 1) | ||||
| @@ -1503,7 +1493,6 @@ void PrintRenderFrameHelper::OnSetPrintingEnabled(bool enabled) { | ||||
| @@ -1502,7 +1492,6 @@ void PrintRenderFrameHelper::OnSetPrintingEnabled(bool enabled) { | ||||
|    is_printing_enabled_ = enabled; | ||||
|  } | ||||
|   | ||||
| @@ -326,7 +365,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|  void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { | ||||
|    if (ipc_nesting_level_ > 1) | ||||
|      return; | ||||
| @@ -1514,7 +1503,9 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { | ||||
| @@ -1513,7 +1502,9 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { | ||||
|    // that instead. | ||||
|    auto plugin = delegate_->GetPdfElement(frame); | ||||
|    if (!plugin.IsNull()) { | ||||
| @@ -336,7 +375,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|      return; | ||||
|    } | ||||
|    print_preview_context_.InitWithFrame(frame); | ||||
| @@ -1526,7 +1517,6 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { | ||||
| @@ -1525,7 +1516,6 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { | ||||
|  void PrintRenderFrameHelper::OnClosePrintPreviewDialog() { | ||||
|    print_preview_context_.source_frame()->DispatchAfterPrintEvent(); | ||||
|  } | ||||
| @@ -344,7 +383,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|   | ||||
|  void PrintRenderFrameHelper::OnPrintFrameContent( | ||||
|      const PrintMsg_PrintFrame_Params& params) { | ||||
| @@ -1610,11 +1600,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { | ||||
| @@ -1609,11 +1599,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { | ||||
|   | ||||
|    print_node_in_progress_ = true; | ||||
|   | ||||
| @@ -357,7 +396,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|    } else { | ||||
|      // Make a copy of the node, in case RenderView::OnContextMenuClosed() resets | ||||
|      // its |context_menu_node_|. | ||||
| @@ -1690,13 +1678,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, | ||||
| @@ -1689,13 +1677,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, | ||||
|  void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { | ||||
|    int cookie = | ||||
|        print_pages_params_ ? print_pages_params_->params.document_cookie : 0; | ||||
| @@ -371,7 +410,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|    switch (result) { | ||||
|      case OK: | ||||
|        break; | ||||
| @@ -1711,7 +1697,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { | ||||
| @@ -1710,7 +1696,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { | ||||
|        } | ||||
|        break; | ||||
|   | ||||
| @@ -379,7 +418,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|      case FAIL_PREVIEW: | ||||
|        if (!is_print_ready_metafile_sent_) { | ||||
|          if (notify_browser_of_print_failure_) { | ||||
| @@ -1729,7 +1714,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { | ||||
| @@ -1728,7 +1713,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { | ||||
|                                                                 cookie, ids)); | ||||
|        print_preview_context_.Failed(false); | ||||
|        break; | ||||
| @@ -387,7 +426,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|    } | ||||
|    prep_frame_view_.reset(); | ||||
|    print_pages_params_.reset(); | ||||
| @@ -1902,7 +1886,6 @@ bool PrintRenderFrameHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, | ||||
| @@ -1901,7 +1885,6 @@ bool PrintRenderFrameHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, | ||||
|    return true; | ||||
|  } | ||||
|   | ||||
| @@ -395,7 +434,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|  bool PrintRenderFrameHelper::SetOptionsFromPdfDocument( | ||||
|      PrintHostMsg_SetOptionsFromDocument_Params* options) { | ||||
|    blink::WebLocalFrame* source_frame = print_preview_context_.source_frame(); | ||||
| @@ -1987,7 +1970,6 @@ bool PrintRenderFrameHelper::UpdatePrintSettings( | ||||
| @@ -1986,7 +1969,6 @@ bool PrintRenderFrameHelper::UpdatePrintSettings( | ||||
|    print_preview_context_.set_error(PREVIEW_ERROR_INVALID_PRINTER_SETTINGS); | ||||
|    return false; | ||||
|  } | ||||
| @@ -403,7 +442,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|   | ||||
|  void PrintRenderFrameHelper::GetPrintSettingsFromUser( | ||||
|      blink::WebLocalFrame* frame, | ||||
| @@ -2139,7 +2121,6 @@ bool PrintRenderFrameHelper::CopyMetafileDataToReadOnlySharedMem( | ||||
| @@ -2138,7 +2120,6 @@ bool PrintRenderFrameHelper::CopyMetafileDataToReadOnlySharedMem( | ||||
|    return true; | ||||
|  } | ||||
|   | ||||
| @@ -411,7 +450,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|  void PrintRenderFrameHelper::ShowScriptedPrintPreview() { | ||||
|    if (is_scripted_preview_delayed_) { | ||||
|      is_scripted_preview_delayed_ = false; | ||||
| @@ -2265,7 +2246,6 @@ bool PrintRenderFrameHelper::PreviewPageRendered( | ||||
| @@ -2264,7 +2245,6 @@ bool PrintRenderFrameHelper::PreviewPageRendered( | ||||
|    Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params, ids)); | ||||
|    return true; | ||||
|  } | ||||
| @@ -420,7 +459,7 @@ index eb717d8d4be3..ddaa19d8d241 100644 | ||||
|  PrintRenderFrameHelper::PrintPreviewContext::PrintPreviewContext() = default; | ||||
|   | ||||
| diff --git components/printing/renderer/print_render_frame_helper.h components/printing/renderer/print_render_frame_helper.h | ||||
| index c4effb05d16c..5d225dcab071 100644 | ||||
| index 1e2777561ba6..21c3777010b6 100644 | ||||
| --- components/printing/renderer/print_render_frame_helper.h | ||||
| +++ components/printing/renderer/print_render_frame_helper.h | ||||
| @@ -150,10 +150,8 @@ class PrintRenderFrameHelper | ||||
| @@ -454,7 +493,7 @@ index c4effb05d16c..5d225dcab071 100644 | ||||
|    // Prepare frame for creating preview document. | ||||
|    void PrepareFrameForPreviewDocument(); | ||||
|   | ||||
| @@ -233,7 +228,6 @@ class PrintRenderFrameHelper | ||||
| @@ -232,7 +227,6 @@ class PrintRenderFrameHelper | ||||
|   | ||||
|    // Helper method to calculate the scale factor for fit-to-page. | ||||
|    int GetFitToPageScaleFactor(const gfx::Rect& printable_area_in_points); | ||||
| @@ -462,7 +501,7 @@ index c4effb05d16c..5d225dcab071 100644 | ||||
|   | ||||
|    // Enable/Disable printing. | ||||
|    void OnSetPrintingEnabled(bool enabled); | ||||
| @@ -260,7 +254,6 @@ class PrintRenderFrameHelper | ||||
| @@ -259,7 +253,6 @@ class PrintRenderFrameHelper | ||||
|                                const blink::WebNode& node, | ||||
|                                int* number_of_pages); | ||||
|   | ||||
| @@ -470,7 +509,7 @@ index c4effb05d16c..5d225dcab071 100644 | ||||
|    // Set options for print preset from source PDF document. | ||||
|    bool SetOptionsFromPdfDocument( | ||||
|        PrintHostMsg_SetOptionsFromDocument_Params* options); | ||||
| @@ -271,7 +264,6 @@ class PrintRenderFrameHelper | ||||
| @@ -270,7 +263,6 @@ class PrintRenderFrameHelper | ||||
|    bool UpdatePrintSettings(blink::WebLocalFrame* frame, | ||||
|                             const blink::WebNode& node, | ||||
|                             const base::DictionaryValue& passed_job_settings); | ||||
| @@ -478,7 +517,7 @@ index c4effb05d16c..5d225dcab071 100644 | ||||
|   | ||||
|    // Get final print settings from the user. | ||||
|    // WARNING: |this| may be gone after this method returns. | ||||
| @@ -353,7 +345,6 @@ class PrintRenderFrameHelper | ||||
| @@ -352,7 +344,6 @@ class PrintRenderFrameHelper | ||||
|    bool IsScriptInitiatedPrintAllowed(blink::WebLocalFrame* frame, | ||||
|                                       bool user_initiated); | ||||
|   | ||||
| @@ -486,7 +525,7 @@ index c4effb05d16c..5d225dcab071 100644 | ||||
|    // Shows scripted print preview when options from plugin are available. | ||||
|    void ShowScriptedPrintPreview(); | ||||
|   | ||||
| @@ -372,7 +363,6 @@ class PrintRenderFrameHelper | ||||
| @@ -371,7 +362,6 @@ class PrintRenderFrameHelper | ||||
|    // Returns true if print preview should continue, false on failure. | ||||
|    bool PreviewPageRendered(int page_number, | ||||
|                             std::unique_ptr<MetafileSkia> metafile); | ||||
| @@ -494,7 +533,7 @@ index c4effb05d16c..5d225dcab071 100644 | ||||
|   | ||||
|    void SetPrintPagesParams(const PrintMsg_PrintPages_Params& settings); | ||||
|   | ||||
| @@ -527,6 +517,7 @@ class PrintRenderFrameHelper | ||||
| @@ -526,6 +516,7 @@ class PrintRenderFrameHelper | ||||
|    ScriptingThrottler scripting_throttler_; | ||||
|   | ||||
|    bool print_node_in_progress_ = false; | ||||
| @@ -503,10 +542,10 @@ index c4effb05d16c..5d225dcab071 100644 | ||||
|    bool is_loading_ = false; | ||||
|    bool is_scripted_preview_delayed_ = false; | ||||
| diff --git components/printing_component_strings.grdp components/printing_component_strings.grdp | ||||
| index f157cbaec42e..5e3c3caa2aa2 100644 | ||||
| index f3cbf563dee3..d899aab89dfd 100644 | ||||
| --- components/printing_component_strings.grdp | ||||
| +++ components/printing_component_strings.grdp | ||||
| @@ -1,10 +1,8 @@ | ||||
| @@ -1,12 +1,10 @@ | ||||
|  <?xml version="1.0" encoding="utf-8"?> | ||||
|  <grit-part> | ||||
| -  <if expr="enable_print_preview"> | ||||
| @@ -516,7 +555,9 @@ index f157cbaec42e..5e3c3caa2aa2 100644 | ||||
|        </message> | ||||
|      </if> | ||||
| -  </if> | ||||
|  </grit-part> | ||||
|   | ||||
|    <message name="IDS_PDF_COMPOSITOR_SERVICE_DISPLAY_NAME" desc="The display name (in the system task manager, etc) of the service process used for PDF compositing."> | ||||
|      PDF Compositor Service | ||||
| diff --git components/pwg_encoder/BUILD.gn components/pwg_encoder/BUILD.gn | ||||
| index 96ae254116a9..3697d6034300 100644 | ||||
| --- components/pwg_encoder/BUILD.gn | ||||
|   | ||||
| @@ -11,10 +11,10 @@ index 691c476708b6..f198e2d0584f 100644 | ||||
|   | ||||
|  PrintJobWorker::~PrintJobWorker() { | ||||
| diff --git printing/printing_context.h printing/printing_context.h | ||||
| index a5879b5888c9..a46bfa474f47 100644 | ||||
| index 9ccc1a6680bc..c0494a1cc2e2 100644 | ||||
| --- printing/printing_context.h | ||||
| +++ printing/printing_context.h | ||||
| @@ -131,6 +131,13 @@ class PRINTING_EXPORT PrintingContext { | ||||
| @@ -129,6 +129,13 @@ class PRINTING_EXPORT PrintingContext { | ||||
|   | ||||
|    int job_id() const { return job_id_; } | ||||
|   | ||||
| @@ -28,7 +28,7 @@ index a5879b5888c9..a46bfa474f47 100644 | ||||
|   protected: | ||||
|    explicit PrintingContext(Delegate* delegate); | ||||
|   | ||||
| @@ -155,6 +162,10 @@ class PRINTING_EXPORT PrintingContext { | ||||
| @@ -153,6 +160,10 @@ class PRINTING_EXPORT PrintingContext { | ||||
|    // The job id for the current job. The value is 0 if no jobs are active. | ||||
|    int job_id_; | ||||
|   | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git build/config/compiler/compiler.gni build/config/compiler/compiler.gni | ||||
| index 3bdd85bf9758..b326e808f929 100644 | ||||
| index c351d6babb8d..db5b4f0b973a 100644 | ||||
| --- build/config/compiler/compiler.gni | ||||
| +++ build/config/compiler/compiler.gni | ||||
| @@ -250,18 +250,6 @@ if (symbol_level == -1) { | ||||
| @@ -248,18 +248,6 @@ if (symbol_level == -1) { | ||||
|    } | ||||
|  } | ||||
|   | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git chrome/browser/renderer_preferences_util.cc chrome/browser/renderer_preferences_util.cc | ||||
| index f5ed7f0683c5..5b31fb309985 100644 | ||||
| index 9008f3e280f2..71e21c813637 100644 | ||||
| --- chrome/browser/renderer_preferences_util.cc | ||||
| +++ chrome/browser/renderer_preferences_util.cc | ||||
| @@ -29,7 +29,8 @@ | ||||
| @@ -30,7 +30,8 @@ | ||||
|  #include "ui/base/cocoa/defaults_utils.h" | ||||
|  #endif | ||||
|   | ||||
| @@ -12,7 +12,7 @@ index f5ed7f0683c5..5b31fb309985 100644 | ||||
|  #include "chrome/browser/themes/theme_service.h" | ||||
|  #include "chrome/browser/themes/theme_service_factory.h" | ||||
|  #include "ui/views/linux_ui/linux_ui.h" | ||||
| @@ -129,7 +130,8 @@ void UpdateFromSystemSettings(blink::mojom::RendererPreferences* prefs, | ||||
| @@ -130,7 +131,8 @@ void UpdateFromSystemSettings(blink::mojom::RendererPreferences* prefs, | ||||
|      prefs->caret_blink_interval = interval; | ||||
|  #endif | ||||
|   | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git ui/base/resource/resource_bundle.cc ui/base/resource/resource_bundle.cc | ||||
| index 340291d8c8f3..34abefbd1c77 100644 | ||||
| index ab883f7cb8bb..ca12051438e2 100644 | ||||
| --- ui/base/resource/resource_bundle.cc | ||||
| +++ ui/base/resource/resource_bundle.cc | ||||
| @@ -716,6 +716,12 @@ ResourceBundle::ResourceBundle(Delegate* delegate) | ||||
| @@ -725,6 +725,12 @@ ResourceBundle::ResourceBundle(Delegate* delegate) | ||||
|      : delegate_(delegate), | ||||
|        locale_resources_data_lock_(new base::Lock), | ||||
|        max_scale_factor_(SCALE_FACTOR_100P) { | ||||
| @@ -15,7 +15,7 @@ index 340291d8c8f3..34abefbd1c77 100644 | ||||
|    mangle_localized_strings_ = base::CommandLine::ForCurrentProcess()->HasSwitch( | ||||
|        switches::kMangleLocalizedStrings); | ||||
|  } | ||||
| @@ -725,6 +731,11 @@ ResourceBundle::~ResourceBundle() { | ||||
| @@ -734,6 +740,11 @@ ResourceBundle::~ResourceBundle() { | ||||
|    UnloadLocaleResources(); | ||||
|  } | ||||
|   | ||||
| @@ -28,7 +28,7 @@ index 340291d8c8f3..34abefbd1c77 100644 | ||||
|  void ResourceBundle::InitSharedInstance(Delegate* delegate) { | ||||
|    DCHECK(g_shared_instance_ == NULL) << "ResourceBundle initialized twice"; | ||||
| diff --git ui/base/resource/resource_bundle.h ui/base/resource/resource_bundle.h | ||||
| index 1f0f0b575e44..b3f8d28b7a6e 100644 | ||||
| index 23005f6da221..3c87746c5a3d 100644 | ||||
| --- ui/base/resource/resource_bundle.h | ||||
| +++ ui/base/resource/resource_bundle.h | ||||
| @@ -150,6 +150,11 @@ class UI_BASE_EXPORT ResourceBundle { | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git content/browser/renderer_host/render_widget_host_view_aura.cc content/browser/renderer_host/render_widget_host_view_aura.cc | ||||
| index 8ab45cb1bb32..ddf13a935ee2 100644 | ||||
| index b54aedcb4282..ea7de4d815ab 100644 | ||||
| --- content/browser/renderer_host/render_widget_host_view_aura.cc | ||||
| +++ content/browser/renderer_host/render_widget_host_view_aura.cc | ||||
| @@ -742,10 +742,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { | ||||
| @@ -700,10 +700,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { | ||||
|  void RenderWidgetHostViewAura::UpdateBackgroundColor() { | ||||
|    DCHECK(GetBackgroundColor()); | ||||
|   | ||||
| @@ -19,10 +19,11 @@ index 8ab45cb1bb32..ddf13a935ee2 100644 | ||||
|  } | ||||
|   | ||||
|  void RenderWidgetHostViewAura::WindowTitleChanged() { | ||||
| @@ -2108,6 +2110,15 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { | ||||
| @@ -2037,6 +2039,15 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { | ||||
|    // Init(), because it needs to have the layer. | ||||
|    if (frame_sink_id_.is_valid()) | ||||
|      window_->SetEmbedFrameSinkId(frame_sink_id_); | ||||
|   | ||||
| + | ||||
| +  // Do this after |window_| is created to avoid crashes on Win10. | ||||
| +  // See https://crbug.com/761389. | ||||
| +  RenderViewHost* rvh = RenderViewHost::From(host_); | ||||
| @@ -31,7 +32,6 @@ index 8ab45cb1bb32..ddf13a935ee2 100644 | ||||
| +    // first to rebaseline some unreliable layout tests. | ||||
| +    ignore_result(rvh->GetWebkitPreferences()); | ||||
| +  } | ||||
| + | ||||
|    if (!features::IsMultiProcessMash()) | ||||
|      return; | ||||
|  } | ||||
|   | ||||
|  void RenderWidgetHostViewAura::CreateDelegatedFrameHostClient() { | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git services/service_manager/embedder/main.cc services/service_manager/embedder/main.cc | ||||
| index 2f1c18044c35..479cb45f09e1 100644 | ||||
| index 0d1fa74a3f43..11c7b62ac2ad 100644 | ||||
| --- services/service_manager/embedder/main.cc | ||||
| +++ services/service_manager/embedder/main.cc | ||||
| @@ -233,22 +233,36 @@ int RunService(MainDelegate* delegate) { | ||||
| @@ -240,22 +240,36 @@ int RunService(MainDelegate* delegate) { | ||||
|    return 0; | ||||
|  } | ||||
|   | ||||
| @@ -43,7 +43,7 @@ index 2f1c18044c35..479cb45f09e1 100644 | ||||
|   | ||||
|    // A flag to indicate whether Main() has been called before. On Android, we | ||||
|    // may re-run Main() without restarting the browser process. This flag | ||||
| @@ -334,12 +348,7 @@ int Main(const MainParams& params) { | ||||
| @@ -341,12 +355,7 @@ int Main(const MainParams& params) { | ||||
|      MainDelegate::InitializeParams init_params; | ||||
|   | ||||
|  #if defined(OS_MACOSX) | ||||
| @@ -57,7 +57,7 @@ index 2f1c18044c35..479cb45f09e1 100644 | ||||
|      InitializeMac(); | ||||
|  #endif | ||||
|   | ||||
| @@ -383,18 +392,16 @@ int Main(const MainParams& params) { | ||||
| @@ -390,18 +399,16 @@ int Main(const MainParams& params) { | ||||
|      } | ||||
|    } | ||||
|   | ||||
| @@ -85,7 +85,7 @@ index 2f1c18044c35..479cb45f09e1 100644 | ||||
|    switch (process_type) { | ||||
|      case ProcessType::kDefault: | ||||
|        NOTREACHED(); | ||||
| @@ -416,6 +423,8 @@ int Main(const MainParams& params) { | ||||
| @@ -423,6 +430,8 @@ int Main(const MainParams& params) { | ||||
|        break; | ||||
|    } | ||||
|   | ||||
| @@ -94,7 +94,7 @@ index 2f1c18044c35..479cb45f09e1 100644 | ||||
|    if (tracker) { | ||||
|      if (exit_code == 0) { | ||||
|        tracker->SetProcessPhaseIfEnabled( | ||||
| @@ -427,13 +436,38 @@ int Main(const MainParams& params) { | ||||
| @@ -434,13 +443,38 @@ int Main(const MainParams& params) { | ||||
|      } | ||||
|    } | ||||
|   | ||||
| @@ -125,7 +125,7 @@ index 2f1c18044c35..479cb45f09e1 100644 | ||||
| +  params.autorelease_pool = | ||||
| +      std::make_unique<base::mac::ScopedNSAutoreleasePool>(); | ||||
| +#endif | ||||
| +  | ||||
| + | ||||
| +  int exit_code = MainInitialize(params); | ||||
| +  if (exit_code >= 0) | ||||
| +    return exit_code; | ||||
|   | ||||
| @@ -35,10 +35,10 @@ index 2b24d1ac1b5b..6577495d87a9 100644 | ||||
|          base_cache_path.Append(chrome::kCacheDirname); | ||||
|      network_context_params->http_cache_max_size = | ||||
| diff --git chrome/browser/profiles/profile.h chrome/browser/profiles/profile.h | ||||
| index e77d8abd6601..88331e9af5e0 100644 | ||||
| index 15d2512dbeaa..04a34b73876b 100644 | ||||
| --- chrome/browser/profiles/profile.h | ||||
| +++ chrome/browser/profiles/profile.h | ||||
| @@ -321,6 +321,11 @@ class Profile : public content::BrowserContext { | ||||
| @@ -352,6 +352,11 @@ class Profile : public content::BrowserContext { | ||||
|    virtual bool ShouldRestoreOldSessionCookies(); | ||||
|    virtual bool ShouldPersistSessionCookies(); | ||||
|   | ||||
| @@ -51,10 +51,10 @@ index e77d8abd6601..88331e9af5e0 100644 | ||||
|    // itself, if |relative_path| is empty). | ||||
|    virtual network::mojom::NetworkContextPtr CreateNetworkContext( | ||||
| diff --git net/cookies/cookie_monster.cc net/cookies/cookie_monster.cc | ||||
| index e7ad8df8817e..68ae3c88d6cc 100644 | ||||
| index 5772e2ac6eb7..86053af86f14 100644 | ||||
| --- net/cookies/cookie_monster.cc | ||||
| +++ net/cookies/cookie_monster.cc | ||||
| @@ -508,6 +508,25 @@ void CookieMonster::SetCookieableSchemes( | ||||
| @@ -510,6 +510,25 @@ void CookieMonster::SetCookieableSchemes( | ||||
|    MaybeRunCookieCallback(std::move(callback), true); | ||||
|  } | ||||
|   | ||||
| @@ -81,7 +81,7 @@ index e7ad8df8817e..68ae3c88d6cc 100644 | ||||
|  void CookieMonster::SetPersistSessionCookies(bool persist_session_cookies) { | ||||
|    DCHECK(thread_checker_.CalledOnValidThread()); | ||||
| diff --git net/cookies/cookie_monster.h net/cookies/cookie_monster.h | ||||
| index 747b3789374a..d70c75ade666 100644 | ||||
| index 9b7dbbe4f644..da5ee7fe3f28 100644 | ||||
| --- net/cookies/cookie_monster.h | ||||
| +++ net/cookies/cookie_monster.h | ||||
| @@ -176,6 +176,8 @@ class NET_EXPORT CookieMonster : public CookieStore { | ||||
| @@ -94,7 +94,7 @@ index 747b3789374a..d70c75ade666 100644 | ||||
|    // Enables writing session cookies into the cookie database. If this this | ||||
|    // method is called, it must be called before first use of the instance | ||||
| diff --git net/cookies/cookie_store.h net/cookies/cookie_store.h | ||||
| index c1146a9e32f6..da1e54d423a7 100644 | ||||
| index d6299f543edd..ac8edd449452 100644 | ||||
| --- net/cookies/cookie_store.h | ||||
| +++ net/cookies/cookie_store.h | ||||
| @@ -145,6 +145,11 @@ class NET_EXPORT CookieStore { | ||||
| @@ -106,9 +106,9 @@ index c1146a9e32f6..da1e54d423a7 100644 | ||||
| +  virtual void AddCookieableSchemes(const std::vector<std::string>& schemes, | ||||
| +                                    SetCookieableSchemesCallback callback) = 0; | ||||
| + | ||||
|    // Returns true if this cookie store is ephemeral, and false if it is backed | ||||
|    // by some sort of persistence layer. | ||||
|    // TODO(nharper): Remove this method once crbug.com/548423 has been closed. | ||||
|    // Reports the estimate of dynamically allocated memory in bytes. | ||||
|    virtual void DumpMemoryStats(base::trace_event::ProcessMemoryDump* pmd, | ||||
|                                 const std::string& parent_absolute_name) const; | ||||
| diff --git services/network/cookie_manager.cc services/network/cookie_manager.cc | ||||
| index 8be1b9dea5f7..30f23449ac51 100644 | ||||
| --- services/network/cookie_manager.cc | ||||
| @@ -132,10 +132,10 @@ index 8be1b9dea5f7..30f23449ac51 100644 | ||||
|   | ||||
|  void CookieManager::SetForceKeepSessionState() { | ||||
| diff --git services/network/network_context.cc services/network/network_context.cc | ||||
| index 9d6f7b930e11..c16e5ca90c14 100644 | ||||
| index 6082e82d5854..b68b48eda578 100644 | ||||
| --- services/network/network_context.cc | ||||
| +++ services/network/network_context.cc | ||||
| @@ -1742,6 +1742,7 @@ URLRequestContextOwner NetworkContext::ApplyContextParamsToBuilder( | ||||
| @@ -1700,6 +1700,7 @@ URLRequestContextOwner NetworkContext::ApplyContextParamsToBuilder( | ||||
|    } | ||||
|   | ||||
|    scoped_refptr<SessionCleanupCookieStore> session_cleanup_cookie_store; | ||||
| @@ -143,7 +143,7 @@ index 9d6f7b930e11..c16e5ca90c14 100644 | ||||
|    if (params_->cookie_path) { | ||||
|      scoped_refptr<base::SequencedTaskRunner> client_task_runner = | ||||
|          base::MessageLoopCurrent::Get()->task_runner(); | ||||
| @@ -1769,18 +1770,27 @@ URLRequestContextOwner NetworkContext::ApplyContextParamsToBuilder( | ||||
| @@ -1727,18 +1728,27 @@ URLRequestContextOwner NetworkContext::ApplyContextParamsToBuilder( | ||||
|      session_cleanup_cookie_store = | ||||
|          base::MakeRefCounted<SessionCleanupCookieStore>(sqlite_store); | ||||
|   | ||||
| @@ -175,10 +175,10 @@ index 9d6f7b930e11..c16e5ca90c14 100644 | ||||
|        std::make_unique<net::StaticHttpUserAgentSettings>( | ||||
|            params_->accept_language, params_->user_agent); | ||||
| diff --git services/network/public/mojom/network_context.mojom services/network/public/mojom/network_context.mojom | ||||
| index 9e29276e0e4c..9d5588efe7cf 100644 | ||||
| index 482ec3cd0ba7..d135f0f19046 100644 | ||||
| --- services/network/public/mojom/network_context.mojom | ||||
| +++ services/network/public/mojom/network_context.mojom | ||||
| @@ -203,6 +203,9 @@ struct NetworkContextParams { | ||||
| @@ -205,6 +205,9 @@ struct NetworkContextParams { | ||||
|    // cookies. Otherwise it should be false. | ||||
|    bool persist_session_cookies = false; | ||||
|   | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git ui/views/controls/native/native_view_host.cc ui/views/controls/native/native_view_host.cc | ||||
| index 3ec401eabdd3..49a3d5f9fd33 100644 | ||||
| index 9d2c42e2ef46..e1b89a6a5d25 100644 | ||||
| --- ui/views/controls/native/native_view_host.cc | ||||
| +++ ui/views/controls/native/native_view_host.cc | ||||
| @@ -152,7 +152,7 @@ void NativeViewHost::OnPaint(gfx::Canvas* canvas) { | ||||
| @@ -151,7 +151,7 @@ void NativeViewHost::OnPaint(gfx::Canvas* canvas) { | ||||
|    // It would be nice if this used some approximation of the page's | ||||
|    // current background color. | ||||
|    if (native_wrapper_->HasInstalledClip()) | ||||
| @@ -12,7 +12,7 @@ index 3ec401eabdd3..49a3d5f9fd33 100644 | ||||
|   | ||||
|  void NativeViewHost::VisibilityChanged(View* starting_from, bool is_visible) { | ||||
| diff --git ui/views/controls/native/native_view_host.h ui/views/controls/native/native_view_host.h | ||||
| index 1a4bcee29cb6..c7601201aacd 100644 | ||||
| index c64341390fc4..6b2491ef4827 100644 | ||||
| --- ui/views/controls/native/native_view_host.h | ||||
| +++ ui/views/controls/native/native_view_host.h | ||||
| @@ -86,6 +86,12 @@ class VIEWS_EXPORT NativeViewHost : public View { | ||||
| @@ -25,12 +25,12 @@ index 1a4bcee29cb6..c7601201aacd 100644 | ||||
| +    resize_background_color_ = resize_background_color; | ||||
| +  } | ||||
| + | ||||
|    // Value of fast_resize() the last time Layout() was invoked. | ||||
|    bool fast_resize_at_last_layout() const { | ||||
|      return fast_resize_at_last_layout_; | ||||
| @@ -141,6 +147,9 @@ class VIEWS_EXPORT NativeViewHost : public View { | ||||
|    // Value of |fast_resize_| during the last call to Layout. | ||||
|    bool fast_resize_at_last_layout_ = false; | ||||
|    gfx::NativeView native_view() const { return native_view_; } | ||||
|   | ||||
|    void NativeViewDestroyed(); | ||||
| @@ -133,6 +139,9 @@ class VIEWS_EXPORT NativeViewHost : public View { | ||||
|    // in the setter/accessor above. | ||||
|    bool fast_resize_ = false; | ||||
|   | ||||
| +  // Color to paint in the background while resizing. | ||||
| +  SkColor resize_background_color_ = SK_ColorWHITE; | ||||
| @@ -39,7 +39,7 @@ index 1a4bcee29cb6..c7601201aacd 100644 | ||||
|  }; | ||||
|   | ||||
| diff --git ui/views/controls/webview/webview.cc ui/views/controls/webview/webview.cc | ||||
| index c77cb52a0aa4..c58c7e8d473d 100644 | ||||
| index 85a5587f4c5e..5621deed9417 100644 | ||||
| --- ui/views/controls/webview/webview.cc | ||||
| +++ ui/views/controls/webview/webview.cc | ||||
| @@ -121,6 +121,10 @@ void WebView::EnableSizingFromWebContents(const gfx::Size& min_size, | ||||
|   | ||||
| @@ -1,49 +0,0 @@ | ||||
| diff --git chrome/browser/profiles/profile_key.cc chrome/browser/profiles/profile_key.cc | ||||
| index b225f2b..946403e 100644 | ||||
| --- chrome/browser/profiles/profile_key.cc | ||||
| +++ chrome/browser/profiles/profile_key.cc | ||||
| @@ -5,9 +5,12 @@ | ||||
|  #include "chrome/browser/profiles/profile_key.h" | ||||
|   | ||||
|  #include "base/logging.h" | ||||
| +#include "components/keyed_service/core/simple_dependency_manager.h" | ||||
|   | ||||
|  ProfileKey::ProfileKey(const base::FilePath& path, ProfileKey* original_key) | ||||
| -    : SimpleFactoryKey(path), prefs_(nullptr), original_key_(original_key) {} | ||||
| +    : SimpleFactoryKey(path), prefs_(nullptr), original_key_(original_key) { | ||||
| +  SimpleDependencyManager::GetInstance()->MarkContextLive(this); | ||||
| +} | ||||
|   | ||||
|  ProfileKey::~ProfileKey() = default; | ||||
|   | ||||
| diff --git components/keyed_service/core/simple_dependency_manager.cc components/keyed_service/core/simple_dependency_manager.cc | ||||
| index 254c6ef..57d20b9 100644 | ||||
| --- components/keyed_service/core/simple_dependency_manager.cc | ||||
| +++ components/keyed_service/core/simple_dependency_manager.cc | ||||
| @@ -43,6 +43,10 @@ | ||||
|    DependencyManager::CreateContextServices(key, true); | ||||
|  } | ||||
|   | ||||
| +void SimpleDependencyManager::MarkContextLive(SimpleFactoryKey* key) { | ||||
| +  DependencyManager::MarkContextLive(key); | ||||
| +} | ||||
| + | ||||
|  SimpleDependencyManager::SimpleDependencyManager() = default; | ||||
|   | ||||
|  SimpleDependencyManager::~SimpleDependencyManager() = default; | ||||
| diff --git components/keyed_service/core/simple_dependency_manager.h components/keyed_service/core/simple_dependency_manager.h | ||||
| index 72fa74c..480f971 100644 | ||||
| --- components/keyed_service/core/simple_dependency_manager.h | ||||
| +++ components/keyed_service/core/simple_dependency_manager.h | ||||
| @@ -35,6 +35,11 @@ | ||||
|    // ServiceIsNULLWhileTesting(). | ||||
|    void CreateServicesForTest(SimpleFactoryKey* key); | ||||
|   | ||||
| +  // Marks |context| as live (i.e., not stale).  This method can be called as a | ||||
| +  // safeguard against |AssertContextWasntDestroyed()| checks going off due to | ||||
| +  // |context| aliasing an instance from a prior construction. | ||||
| +  void MarkContextLive(SimpleFactoryKey* key); | ||||
| + | ||||
|   private: | ||||
|    ~SimpleDependencyManager() override; | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git content/browser/blob_storage/chrome_blob_storage_context.cc content/browser/blob_storage/chrome_blob_storage_context.cc | ||||
| index 5610c0df1c7d..0f2ed42e6451 100644 | ||||
| index 94588aa5822d..1c16a71c4524 100644 | ||||
| --- content/browser/blob_storage/chrome_blob_storage_context.cc | ||||
| +++ content/browser/blob_storage/chrome_blob_storage_context.cc | ||||
| @@ -117,7 +117,8 @@ ChromeBlobStorageContext* ChromeBlobStorageContext::GetFor( | ||||
| @@ -13,18 +13,18 @@ index 5610c0df1c7d..0f2ed42e6451 100644 | ||||
|            {base::MayBlock(), base::TaskPriority::BEST_EFFORT, | ||||
|             base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}); | ||||
| diff --git content/browser/browser_context.cc content/browser/browser_context.cc | ||||
| index b2b3920da3b0..686afc464b42 100644 | ||||
| index 0d95af0ef882..463709a9152f 100644 | ||||
| --- content/browser/browser_context.cc | ||||
| +++ content/browser/browser_context.cc | ||||
| @@ -56,6 +56,7 @@ | ||||
| @@ -57,6 +57,7 @@ | ||||
|  #include "content/public/common/content_switches.h" | ||||
|  #include "content/public/common/service_manager_connection.h" | ||||
|  #include "content/public/common/service_names.mojom.h" | ||||
| +#include "media/capabilities/in_memory_video_decode_stats_db_impl.h" | ||||
|  #include "media/base/media_switches.h" | ||||
|  #include "media/capabilities/in_memory_video_decode_stats_db_impl.h" | ||||
|  #include "media/capabilities/video_decode_stats_db_impl.h" | ||||
|  #include "media/mojo/services/video_decode_perf_history.h" | ||||
|  #include "net/cookies/cookie_store.h" | ||||
| @@ -211,7 +212,7 @@ StoragePartition* GetStoragePartitionFromConfig( | ||||
| @@ -213,7 +214,7 @@ StoragePartition* GetStoragePartitionFromConfig( | ||||
|    StoragePartitionImplMap* partition_map = | ||||
|        GetStoragePartitionMap(browser_context); | ||||
|   | ||||
| @@ -33,29 +33,20 @@ index b2b3920da3b0..686afc464b42 100644 | ||||
|      in_memory = true; | ||||
|   | ||||
|    return partition_map->Get(partition_domain, partition_name, in_memory, | ||||
| @@ -790,9 +791,14 @@ media::VideoDecodePerfHistory* BrowserContext::GetVideoDecodePerfHistory() { | ||||
|    // occurs later upon first VideoDecodePerfHistory API request that requires DB | ||||
|    // access. DB operations will not block the UI thread. | ||||
|    if (!decode_history) { | ||||
| -    std::unique_ptr<media::VideoDecodeStatsDBImpl> stats_db = | ||||
| -        media::VideoDecodeStatsDBImpl::Create( | ||||
| -            GetPath().Append(FILE_PATH_LITERAL("VideoDecodeStats"))); | ||||
| +    std::unique_ptr<media::VideoDecodeStatsDB> stats_db; | ||||
| +    if (GetPath().empty()) { | ||||
| +      stats_db = | ||||
| +          std::make_unique<media::InMemoryVideoDecodeStatsDBImpl>(nullptr); | ||||
| +    } else { | ||||
| +      stats_db = media::VideoDecodeStatsDBImpl::Create( | ||||
| +          GetPath().Append(FILE_PATH_LITERAL("VideoDecodeStats"))); | ||||
| +    } | ||||
|      auto new_decode_history = std::make_unique<media::VideoDecodePerfHistory>( | ||||
|          std::move(stats_db), BrowserFeatureProvider::GetFactoryCB()); | ||||
|      decode_history = new_decode_history.get(); | ||||
| @@ -795,7 +796,7 @@ media::VideoDecodePerfHistory* BrowserContext::GetVideoDecodePerfHistory() { | ||||
|          kUseInMemoryDBDefault); | ||||
|   | ||||
|      std::unique_ptr<media::VideoDecodeStatsDB> stats_db; | ||||
| -    if (use_in_memory_db) { | ||||
| +    if (use_in_memory_db || GetPath().empty()) { | ||||
|        stats_db = | ||||
|            std::make_unique<media::InMemoryVideoDecodeStatsDBImpl>(nullptr); | ||||
|      } else { | ||||
| diff --git content/browser/renderer_host/render_process_host_impl.cc content/browser/renderer_host/render_process_host_impl.cc | ||||
| index f3a90e61f2b4..a9d322d66d86 100644 | ||||
| index 1aa874a2cf34..ff3279cbc323 100644 | ||||
| --- content/browser/renderer_host/render_process_host_impl.cc | ||||
| +++ content/browser/renderer_host/render_process_host_impl.cc | ||||
| @@ -2203,6 +2203,9 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { | ||||
| @@ -2178,6 +2178,9 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { | ||||
|      plugin_registry_.reset( | ||||
|          new PluginRegistryImpl(GetBrowserContext()->GetResourceContext())); | ||||
|    } | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git base/trace_event/builtin_categories.h base/trace_event/builtin_categories.h | ||||
| index 0a0fb37798bd..16f9ccdc669c 100644 | ||||
| index 97055b4bdaf0..10a59fc71431 100644 | ||||
| --- base/trace_event/builtin_categories.h | ||||
| +++ base/trace_event/builtin_categories.h | ||||
| @@ -47,6 +47,8 @@ | ||||
|   | ||||
| @@ -39,10 +39,10 @@ index cce16a111356..9f0a8b73adb5 100644 | ||||
|    virtual void MenuWillShow() {} | ||||
|   | ||||
| diff --git ui/gfx/render_text.cc ui/gfx/render_text.cc | ||||
| index 9c38cd6d4fdb..dcd34308a8bc 100644 | ||||
| index 87fd6313f5d8..42f58e7c13c9 100644 | ||||
| --- ui/gfx/render_text.cc | ||||
| +++ ui/gfx/render_text.cc | ||||
| @@ -514,6 +514,14 @@ void RenderText::SetElideBehavior(ElideBehavior elide_behavior) { | ||||
| @@ -532,6 +532,14 @@ void RenderText::SetElideBehavior(ElideBehavior elide_behavior) { | ||||
|    } | ||||
|  } | ||||
|   | ||||
| @@ -57,7 +57,7 @@ index 9c38cd6d4fdb..dcd34308a8bc 100644 | ||||
|  void RenderText::SetDisplayRect(const Rect& r) { | ||||
|    if (r != display_rect_) { | ||||
|      display_rect_ = r; | ||||
| @@ -1512,6 +1520,19 @@ void RenderText::OnTextAttributeChanged() { | ||||
| @@ -1638,6 +1646,19 @@ void RenderText::OnTextAttributeChanged() { | ||||
|    if (!multiline_ && replace_newline_chars_with_symbols_) | ||||
|      base::ReplaceChars(layout_text_, kNewline, kNewlineSymbol, &layout_text_); | ||||
|   | ||||
| @@ -78,10 +78,10 @@ index 9c38cd6d4fdb..dcd34308a8bc 100644 | ||||
|  } | ||||
|   | ||||
| diff --git ui/gfx/render_text.h ui/gfx/render_text.h | ||||
| index 18e57f9823d0..4ec5cb20dabb 100644 | ||||
| index 5c3985176054..ceab2a4fd9ba 100644 | ||||
| --- ui/gfx/render_text.h | ||||
| +++ ui/gfx/render_text.h | ||||
| @@ -309,6 +309,10 @@ class GFX_EXPORT RenderText { | ||||
| @@ -310,6 +310,10 @@ class GFX_EXPORT RenderText { | ||||
|    void SetElideBehavior(ElideBehavior elide_behavior); | ||||
|    ElideBehavior elide_behavior() const { return elide_behavior_; } | ||||
|   | ||||
| @@ -92,9 +92,9 @@ index 18e57f9823d0..4ec5cb20dabb 100644 | ||||
|    const Rect& display_rect() const { return display_rect_; } | ||||
|    void SetDisplayRect(const Rect& r); | ||||
|   | ||||
| @@ -918,6 +922,8 @@ class GFX_EXPORT RenderText { | ||||
|    // Extra spacing placed between glyphs; used for obscured text styling. | ||||
|    int glyph_spacing_ = 0; | ||||
| @@ -956,6 +960,8 @@ class GFX_EXPORT RenderText { | ||||
|    // The cursor position in view space, used to traverse lines of varied widths. | ||||
|    base::Optional<int> cached_cursor_x_; | ||||
|   | ||||
| +  int draw_strings_flags_ = 0; | ||||
| + | ||||
| @@ -102,7 +102,7 @@ index 18e57f9823d0..4ec5cb20dabb 100644 | ||||
|  }; | ||||
|   | ||||
| diff --git ui/views/animation/ink_drop_host_view.h ui/views/animation/ink_drop_host_view.h | ||||
| index cb9ef740c6f3..aa7de6bb1924 100644 | ||||
| index 308797385683..c0d0ac3bb496 100644 | ||||
| --- ui/views/animation/ink_drop_host_view.h | ||||
| +++ ui/views/animation/ink_drop_host_view.h | ||||
| @@ -120,6 +120,8 @@ class VIEWS_EXPORT InkDropHostView : public View { | ||||
| @@ -115,19 +115,11 @@ index cb9ef740c6f3..aa7de6bb1924 100644 | ||||
|    // Size used for the default SquareInkDropRipple. | ||||
|    static constexpr int kDefaultInkDropSize = 24; | ||||
| diff --git ui/views/controls/button/label_button.cc ui/views/controls/button/label_button.cc | ||||
| index da6d3116cf1c..362610e5bc6f 100644 | ||||
| index 90e6f9e1b003..756202fdaa6d 100644 | ||||
| --- ui/views/controls/button/label_button.cc | ||||
| +++ ui/views/controls/button/label_button.cc | ||||
| @@ -184,6 +184,7 @@ gfx::Size LabelButton::CalculatePreferredSize() const { | ||||
|    Label label(GetText(), {label_->font_list()}); | ||||
|    label.SetLineHeight(label_->line_height()); | ||||
|    label.SetShadows(label_->shadows()); | ||||
| +  label.SetDrawStringsFlags(label_->draw_strings_flags()); | ||||
|   | ||||
|    if (style_ == STYLE_BUTTON) { | ||||
|      // Some text appears wider when rendered normally than when rendered bold. | ||||
| @@ -379,6 +380,12 @@ void LabelButton::GetAccessibleNodeData(ui::AXNodeData* node_data) { | ||||
|    Button::GetAccessibleNodeData(node_data); | ||||
| @@ -469,6 +469,12 @@ void LabelButton::OnThemeChanged() { | ||||
|    SchedulePaint(); | ||||
|  } | ||||
|   | ||||
| +void LabelButton::SetFontList(const gfx::FontList& font_list) { | ||||
| @@ -140,21 +132,21 @@ index da6d3116cf1c..362610e5bc6f 100644 | ||||
|    const gfx::Size previous_image_size(image_->GetPreferredSize()); | ||||
|    UpdateImage(); | ||||
| diff --git ui/views/controls/button/label_button.h ui/views/controls/button/label_button.h | ||||
| index 46f81be3d27a..249edf8cc5f8 100644 | ||||
| index 93538c101aa0..4dec84140c5f 100644 | ||||
| --- ui/views/controls/button/label_button.h | ||||
| +++ ui/views/controls/button/label_button.h | ||||
| @@ -100,6 +100,9 @@ class VIEWS_EXPORT LabelButton : public Button, public NativeThemeDelegate { | ||||
|    void RemoveInkDropLayer(ui::Layer* ink_drop_layer) override; | ||||
|    void GetAccessibleNodeData(ui::AXNodeData* node_data) override; | ||||
| @@ -110,6 +110,9 @@ class VIEWS_EXPORT LabelButton : public Button, public NativeThemeDelegate { | ||||
|    ui::NativeTheme::State GetForegroundThemeState( | ||||
|        ui::NativeTheme::ExtraParams* params) const override; | ||||
|   | ||||
| +  // Sets the font list used by this button. | ||||
| +  void SetFontList(const gfx::FontList& font_list); | ||||
| + | ||||
|   protected: | ||||
|    ImageView* image() const { return image_; } | ||||
|    Label* label() const; | ||||
|    Label* label() const { return label_; } | ||||
| diff --git ui/views/controls/label.cc ui/views/controls/label.cc | ||||
| index bba449033e54..f9545546d580 100644 | ||||
| index 24d08c798ce7..4245b08cc743 100644 | ||||
| --- ui/views/controls/label.cc | ||||
| +++ ui/views/controls/label.cc | ||||
| @@ -44,6 +44,22 @@ bool IsOpaque(SkColor color) { | ||||
| @@ -195,7 +187,7 @@ index bba449033e54..f9545546d580 100644 | ||||
|  void Label::SetTooltipText(const base::string16& tooltip_text) { | ||||
|    DCHECK(handles_tooltips_); | ||||
|    tooltip_text_ = tooltip_text; | ||||
| @@ -432,7 +456,19 @@ std::unique_ptr<gfx::RenderText> Label::CreateRenderText() const { | ||||
| @@ -436,7 +460,19 @@ std::unique_ptr<gfx::RenderText> Label::CreateRenderText() const { | ||||
|    render_text->SetFontList(font_list()); | ||||
|    render_text->set_shadows(shadows()); | ||||
|    render_text->SetCursorEnabled(false); | ||||
| @@ -217,10 +209,10 @@ index bba449033e54..f9545546d580 100644 | ||||
|    render_text->SetMaxLines(multi_line() ? max_lines() : 0); | ||||
|    render_text->SetWordWrapBehavior(full_text_->word_wrap_behavior()); | ||||
| diff --git ui/views/controls/label.h ui/views/controls/label.h | ||||
| index 9df5c850d12d..e7007ffbb762 100644 | ||||
| index 50e30e5cf35b..7e774383cdb1 100644 | ||||
| --- ui/views/controls/label.h | ||||
| +++ ui/views/controls/label.h | ||||
| @@ -159,6 +159,10 @@ class VIEWS_EXPORT Label : public View, | ||||
| @@ -163,6 +163,10 @@ class VIEWS_EXPORT Label : public View, | ||||
|    void SetElideBehavior(gfx::ElideBehavior elide_behavior); | ||||
|    gfx::ElideBehavior elide_behavior() const { return elide_behavior_; } | ||||
|   | ||||
| @@ -231,7 +223,7 @@ index 9df5c850d12d..e7007ffbb762 100644 | ||||
|    // Sets the tooltip text.  Default behavior for a label (single-line) is to | ||||
|    // show the full text if it is wider than its bounds.  Calling this overrides | ||||
|    // the default behavior and lets you set a custom tooltip.  To revert to | ||||
| @@ -387,6 +391,7 @@ class VIEWS_EXPORT Label : public View, | ||||
| @@ -391,6 +395,7 @@ class VIEWS_EXPORT Label : public View, | ||||
|    bool collapse_when_hidden_; | ||||
|    int fixed_width_; | ||||
|    int max_width_; | ||||
| @@ -240,15 +232,15 @@ index 9df5c850d12d..e7007ffbb762 100644 | ||||
|    std::unique_ptr<SelectionController> selection_controller_; | ||||
|   | ||||
| diff --git ui/views/controls/menu/menu_controller.cc ui/views/controls/menu/menu_controller.cc | ||||
| index 5e630a1a5f47..a3725641c2db 100644 | ||||
| index 3ae7da55cf15..ba591459649a 100644 | ||||
| --- ui/views/controls/menu/menu_controller.cc | ||||
| +++ ui/views/controls/menu/menu_controller.cc | ||||
| @@ -2570,8 +2570,13 @@ MenuItemView* MenuController::FindNextSelectableMenuItem( | ||||
| @@ -2561,8 +2561,13 @@ MenuItemView* MenuController::FindNextSelectableMenuItem( | ||||
|   | ||||
|  void MenuController::OpenSubmenuChangeSelectionIfCan() { | ||||
|    MenuItemView* item = pending_state_.item; | ||||
| -  if (!item->HasSubmenu() || !item->enabled()) | ||||
| +  if (!item->HasSubmenu() || !item->enabled() || !item->GetParentMenuItem()) { | ||||
| -  if (!item->HasSubmenu() || !item->GetEnabled()) | ||||
| +  if (!item->HasSubmenu() || !item->GetEnabled() || !item->GetParentMenuItem()) { | ||||
| +    MenuItemView* submenu_item = | ||||
| +        item->GetParentMenuItem() ? item->GetParentMenuItem() : item; | ||||
| +    submenu_item->GetDelegate()->OnUnhandledOpenSubmenu(submenu_item, | ||||
| @@ -258,7 +250,7 @@ index 5e630a1a5f47..a3725641c2db 100644 | ||||
|    MenuItemView* to_select = nullptr; | ||||
|    if (!item->GetSubmenu()->GetMenuItems().empty()) | ||||
|      to_select = FindInitialSelectableMenuItem(item, INCREMENT_SELECTION_DOWN); | ||||
| @@ -2590,8 +2595,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { | ||||
| @@ -2581,8 +2586,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { | ||||
|  void MenuController::CloseSubmenu() { | ||||
|    MenuItemView* item = state_.item; | ||||
|    DCHECK(item); | ||||
| @@ -310,10 +302,10 @@ index 921aef245bf3..4b7474c01c0e 100644 | ||||
|    virtual int GetMaxWidthForMenu(MenuItemView* menu); | ||||
|   | ||||
| diff --git ui/views/controls/menu/menu_item_view.cc ui/views/controls/menu/menu_item_view.cc | ||||
| index 21379b8d3299..50bd688a01f3 100644 | ||||
| index 1e27d88823a3..7c9bcd0976ad 100644 | ||||
| --- ui/views/controls/menu/menu_item_view.cc | ||||
| +++ ui/views/controls/menu/menu_item_view.cc | ||||
| @@ -1060,6 +1060,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, | ||||
| @@ -1057,6 +1057,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, | ||||
|      spilling_rect.set_y(spilling_rect.y() - corner_radius_); | ||||
|      spilling_rect.set_height(spilling_rect.height() + corner_radius_); | ||||
|      canvas->DrawRoundRect(spilling_rect, corner_radius_, flags); | ||||
| @@ -329,7 +321,7 @@ index 21379b8d3299..50bd688a01f3 100644 | ||||
|    } else if (render_selection) { | ||||
|      gfx::Rect item_bounds = GetLocalBounds(); | ||||
|      if (type_ == ACTIONABLE_SUBMENU) { | ||||
| @@ -1126,6 +1135,13 @@ void MenuItemView::PaintMinorIconAndText( | ||||
| @@ -1123,6 +1132,13 @@ void MenuItemView::PaintMinorIconAndText( | ||||
|  } | ||||
|   | ||||
|  SkColor MenuItemView::GetTextColor(bool minor, bool render_selection) const { | ||||
| @@ -451,10 +443,10 @@ index 78f832fd3acf..cb030c991614 100644 | ||||
|    void WillHideMenu(MenuItemView* menu) override; | ||||
|    void OnMenuClosed(MenuItemView* menu) override; | ||||
| diff --git ui/views/controls/menu/menu_scroll_view_container.cc ui/views/controls/menu/menu_scroll_view_container.cc | ||||
| index f3ff29e3b7aa..12a8833b4fb3 100644 | ||||
| index 7ae246a53bdd..c28d8fe4a727 100644 | ||||
| --- ui/views/controls/menu/menu_scroll_view_container.cc | ||||
| +++ ui/views/controls/menu/menu_scroll_view_container.cc | ||||
| @@ -181,6 +181,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) | ||||
| @@ -179,6 +179,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) | ||||
|    scroll_view_ = new MenuScrollView(content_view); | ||||
|    AddChildView(scroll_view_); | ||||
|   | ||||
| @@ -467,7 +459,7 @@ index f3ff29e3b7aa..12a8833b4fb3 100644 | ||||
|        content_view_->GetMenuItem()->GetMenuController()->GetAnchorPosition()); | ||||
|   | ||||
| diff --git ui/views/test/ui_controls_factory_desktop_aurax11.cc ui/views/test/ui_controls_factory_desktop_aurax11.cc | ||||
| index b251f90a2e24..f0986338d883 100644 | ||||
| index 4f865802a6e9..42d047bd68ad 100644 | ||||
| --- ui/views/test/ui_controls_factory_desktop_aurax11.cc | ||||
| +++ ui/views/test/ui_controls_factory_desktop_aurax11.cc | ||||
| @@ -143,10 +143,6 @@ class UIControlsDesktopX11 : public UIControlsAura { | ||||
| @@ -482,7 +474,7 @@ index b251f90a2e24..f0986338d883 100644 | ||||
|        // Move the cursor because EnterNotify/LeaveNotify are generated with the | ||||
|        // current mouse position as a result of XGrabPointer() | ||||
| diff --git ui/views/view.h ui/views/view.h | ||||
| index b0d94c023392..20f671a0c35f 100644 | ||||
| index 3d90ae1c174c..7afa78b18c8a 100644 | ||||
| --- ui/views/view.h | ||||
| +++ ui/views/view.h | ||||
| @@ -22,6 +22,7 @@ | ||||
| @@ -493,7 +485,7 @@ index b0d94c023392..20f671a0c35f 100644 | ||||
|  #include "build/build_config.h" | ||||
|  #include "third_party/skia/include/core/SkPath.h" | ||||
|  #include "ui/accessibility/ax_enums.mojom.h" | ||||
| @@ -270,7 +271,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, | ||||
| @@ -274,7 +275,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, | ||||
|                            public ui::EventTarget, | ||||
|                            public ui::EventHandler, | ||||
|                            public ui::PropertyHandler, | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git content/browser/renderer_host/render_widget_host_view_base.cc content/browser/renderer_host/render_widget_host_view_base.cc | ||||
| index 6986a9b55908..3045018adba0 100644 | ||||
| index a2902adc59b6..2289ef03efc0 100644 | ||||
| --- content/browser/renderer_host/render_widget_host_view_base.cc | ||||
| +++ content/browser/renderer_host/render_widget_host_view_base.cc | ||||
| @@ -585,6 +585,14 @@ float RenderWidgetHostViewBase::GetDeviceScaleFactor() { | ||||
| @@ -579,6 +579,14 @@ float RenderWidgetHostViewBase::GetDeviceScaleFactor() { | ||||
|    return screen_info.device_scale_factor; | ||||
|  } | ||||
|   | ||||
| @@ -18,10 +18,10 @@ index 6986a9b55908..3045018adba0 100644 | ||||
|    return renderer_frame_number_; | ||||
|  } | ||||
| diff --git content/browser/renderer_host/render_widget_host_view_base.h content/browser/renderer_host/render_widget_host_view_base.h | ||||
| index 11c2dcff17aa..b90626f0a3c3 100644 | ||||
| index 903131f45d4f..49b0a67cb39e 100644 | ||||
| --- content/browser/renderer_host/render_widget_host_view_base.h | ||||
| +++ content/browser/renderer_host/render_widget_host_view_base.h | ||||
| @@ -83,6 +83,7 @@ class CursorManager; | ||||
| @@ -75,6 +75,7 @@ class CursorManager; | ||||
|  class MouseWheelPhaseHandler; | ||||
|  class RenderWidgetHostImpl; | ||||
|  class RenderWidgetHostViewBaseObserver; | ||||
| @@ -29,7 +29,7 @@ index 11c2dcff17aa..b90626f0a3c3 100644 | ||||
|  class SyntheticGestureTarget; | ||||
|  class TextInputManager; | ||||
|  class TouchSelectionControllerClientManager; | ||||
| @@ -104,6 +105,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
| @@ -96,6 +97,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
|    float current_device_scale_factor() const { | ||||
|      return current_device_scale_factor_; | ||||
|    } | ||||
| @@ -39,7 +39,7 @@ index 11c2dcff17aa..b90626f0a3c3 100644 | ||||
|   | ||||
|    // Returns the focused RenderWidgetHost inside this |view|'s RWH. | ||||
|    RenderWidgetHostImpl* GetFocusedWidget() const; | ||||
| @@ -138,6 +142,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
| @@ -130,6 +134,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
|    void DisableAutoResize(const gfx::Size& new_size) override; | ||||
|    bool IsScrollOffsetAtTop() override; | ||||
|    float GetDeviceScaleFactor() final; | ||||
| @@ -47,8 +47,8 @@ index 11c2dcff17aa..b90626f0a3c3 100644 | ||||
| +  bool HasExternalParent() const override; | ||||
|    TouchSelectionControllerClientManager* | ||||
|    GetTouchSelectionControllerClientManager() override; | ||||
|    void SetLastTabChangeStartTime(base::TimeTicks start_time) final; | ||||
| @@ -495,6 +501,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
|    void SetRecordTabSwitchTimeRequest(base::TimeTicks start_time, | ||||
| @@ -491,6 +497,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
|    // helps to position the full screen widget on the correct monitor. | ||||
|    virtual void InitAsFullscreen(RenderWidgetHostView* reference_host_view) = 0; | ||||
|   | ||||
| @@ -61,7 +61,7 @@ index 11c2dcff17aa..b90626f0a3c3 100644 | ||||
|    // Sets the cursor for this view to the one associated with the specified | ||||
|    // cursor_type. | ||||
|    virtual void UpdateCursor(const WebCursor& cursor) = 0; | ||||
| @@ -691,6 +703,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
| @@ -664,6 +676,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase | ||||
|   | ||||
|    bool is_currently_scrolling_viewport_ = false; | ||||
|   | ||||
| @@ -73,7 +73,7 @@ index 11c2dcff17aa..b90626f0a3c3 100644 | ||||
|    FRIEND_TEST_ALL_PREFIXES( | ||||
|        BrowserSideFlingBrowserTest, | ||||
| diff --git content/browser/renderer_host/render_widget_host_view_event_handler.cc content/browser/renderer_host/render_widget_host_view_event_handler.cc | ||||
| index 468561b429fc..960efc4945fb 100644 | ||||
| index 4e2075be4cf3..267cacfd285a 100644 | ||||
| --- content/browser/renderer_host/render_widget_host_view_event_handler.cc | ||||
| +++ content/browser/renderer_host/render_widget_host_view_event_handler.cc | ||||
| @@ -32,6 +32,10 @@ | ||||
| @@ -103,7 +103,7 @@ index 468561b429fc..960efc4945fb 100644 | ||||
|    // TODO(wjmaclean): can host_ ever be null? | ||||
|    if (host_ && set_focus_on_mouse_down_or_key_event_) { | ||||
| diff --git content/public/browser/render_widget_host_view.h content/public/browser/render_widget_host_view.h | ||||
| index ebe6ae74f316..321cbde15dcc 100644 | ||||
| index 07d4351d0a8a..4ad78ab76a7c 100644 | ||||
| --- content/public/browser/render_widget_host_view.h | ||||
| +++ content/public/browser/render_widget_host_view.h | ||||
| @@ -246,6 +246,14 @@ class CONTENT_EXPORT RenderWidgetHostView { | ||||
| @@ -135,10 +135,10 @@ index 70553b153c44..ecd99bc78373 100644 | ||||
|    return host ? host->GetAcceleratedWidget() : nullptr; | ||||
|  } | ||||
| diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc | ||||
| index b9e903a06bbc..23b1d4ad2d79 100644 | ||||
| index c18d5fb9ea58..52b35b90e03d 100644 | ||||
| --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc | ||||
| +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc | ||||
| @@ -90,6 +90,7 @@ DesktopWindowTreeHostWin::DesktopWindowTreeHostWin( | ||||
| @@ -92,6 +92,7 @@ DesktopWindowTreeHostWin::DesktopWindowTreeHostWin( | ||||
|        should_animate_window_close_(false), | ||||
|        pending_close_(false), | ||||
|        has_non_client_view_(false), | ||||
| @@ -146,7 +146,7 @@ index b9e903a06bbc..23b1d4ad2d79 100644 | ||||
|        tooltip_(nullptr) {} | ||||
|   | ||||
|  DesktopWindowTreeHostWin::~DesktopWindowTreeHostWin() { | ||||
| @@ -123,8 +124,12 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { | ||||
| @@ -125,8 +126,12 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { | ||||
|                          native_widget_delegate_); | ||||
|   | ||||
|    HWND parent_hwnd = nullptr; | ||||
| @@ -160,7 +160,7 @@ index b9e903a06bbc..23b1d4ad2d79 100644 | ||||
|   | ||||
|    remove_standard_frame_ = params.remove_standard_frame; | ||||
|    has_non_client_view_ = Widget::RequiresNonClientView(params.type); | ||||
| @@ -894,11 +899,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { | ||||
| @@ -880,11 +885,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { | ||||
|  } | ||||
|   | ||||
|  void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { | ||||
| @@ -179,10 +179,10 @@ index b9e903a06bbc..23b1d4ad2d79 100644 | ||||
|   | ||||
|  bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { | ||||
| diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_win.h ui/views/widget/desktop_aura/desktop_window_tree_host_win.h | ||||
| index 4a87724d58d4..17c1e62b6585 100644 | ||||
| index 8ac960b083c8..66b6ff2a3259 100644 | ||||
| --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.h | ||||
| +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.h | ||||
| @@ -293,6 +293,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin | ||||
| @@ -288,6 +288,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin | ||||
|    // True if the window should have the frame removed. | ||||
|    bool remove_standard_frame_; | ||||
|   | ||||
| @@ -194,10 +194,10 @@ index 4a87724d58d4..17c1e62b6585 100644 | ||||
|    // a reference. | ||||
|    corewm::TooltipWin* tooltip_; | ||||
| diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc | ||||
| index 423775286b42..bb2a8e0ac286 100644 | ||||
| index 81ef38287b65..f0e43abdc143 100644 | ||||
| --- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc | ||||
| +++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc | ||||
| @@ -173,6 +173,8 @@ std::vector<aura::Window*> DesktopWindowTreeHostX11::GetAllOpenWindows() { | ||||
| @@ -211,6 +211,8 @@ std::vector<aura::Window*> DesktopWindowTreeHostX11::GetAllOpenWindows() { | ||||
|  } | ||||
|   | ||||
|  gfx::Rect DesktopWindowTreeHostX11::GetX11RootWindowBounds() const { | ||||
| @@ -206,7 +206,7 @@ index 423775286b42..bb2a8e0ac286 100644 | ||||
|    return bounds_in_pixels_; | ||||
|  } | ||||
|   | ||||
| @@ -483,7 +485,8 @@ void DesktopWindowTreeHostX11::CloseNow() { | ||||
| @@ -519,7 +521,8 @@ void DesktopWindowTreeHostX11::CloseNow() { | ||||
|    // Actually free our native resources. | ||||
|    if (ui::PlatformEventSource::GetInstance()) | ||||
|      ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this); | ||||
| @@ -215,8 +215,8 @@ index 423775286b42..bb2a8e0ac286 100644 | ||||
| +    XDestroyWindow(xdisplay_, xwindow_); | ||||
|    xwindow_ = x11::None; | ||||
|   | ||||
|    desktop_native_widget_aura_->OnHostClosed(); | ||||
| @@ -628,6 +631,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement( | ||||
|    if (update_counter_ != x11::None) { | ||||
| @@ -671,6 +674,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement( | ||||
|  } | ||||
|   | ||||
|  gfx::Rect DesktopWindowTreeHostX11::GetWindowBoundsInScreen() const { | ||||
| @@ -225,7 +225,7 @@ index 423775286b42..bb2a8e0ac286 100644 | ||||
|    return ToDIPRect(bounds_in_pixels_); | ||||
|  } | ||||
|   | ||||
| @@ -1256,6 +1261,8 @@ void DesktopWindowTreeHostX11::SetBoundsInPixels( | ||||
| @@ -1296,6 +1301,8 @@ void DesktopWindowTreeHostX11::SetBoundsInPixels( | ||||
|  } | ||||
|   | ||||
|  gfx::Point DesktopWindowTreeHostX11::GetLocationOnScreenInPixels() const { | ||||
| @@ -234,7 +234,7 @@ index 423775286b42..bb2a8e0ac286 100644 | ||||
|    return bounds_in_pixels_.origin(); | ||||
|  } | ||||
|   | ||||
| @@ -1396,7 +1403,6 @@ void DesktopWindowTreeHostX11::InitX11Window( | ||||
| @@ -1436,7 +1443,6 @@ void DesktopWindowTreeHostX11::InitX11Window( | ||||
|    XAtom window_type; | ||||
|    switch (params.type) { | ||||
|      case Widget::InitParams::TYPE_MENU: | ||||
| @@ -242,7 +242,7 @@ index 423775286b42..bb2a8e0ac286 100644 | ||||
|        window_type = gfx::GetAtom("_NET_WM_WINDOW_TYPE_MENU"); | ||||
|        break; | ||||
|      case Widget::InitParams::TYPE_TOOLTIP: | ||||
| @@ -1453,9 +1459,15 @@ void DesktopWindowTreeHostX11::InitX11Window( | ||||
| @@ -1493,9 +1499,15 @@ void DesktopWindowTreeHostX11::InitX11Window( | ||||
|    attribute_mask |= CWBorderPixel; | ||||
|    swa.border_pixel = 0; | ||||
|   | ||||
| @@ -259,7 +259,7 @@ index 423775286b42..bb2a8e0ac286 100644 | ||||
|                             bounds_in_pixels_.y(), bounds_in_pixels_.width(), | ||||
|                             bounds_in_pixels_.height(), | ||||
|                             0,  // border width | ||||
| @@ -2077,6 +2089,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( | ||||
| @@ -2157,6 +2169,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( | ||||
|        } | ||||
|        break; | ||||
|      } | ||||
| @@ -271,7 +271,7 @@ index 423775286b42..bb2a8e0ac286 100644 | ||||
|      case x11::FocusOut: | ||||
|        OnFocusEvent(xev->type == x11::FocusIn, event->xfocus.mode, | ||||
| diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h | ||||
| index 4a3063c2af2c..9121a475949e 100644 | ||||
| index 92f49c677d62..2c1f1f8773e2 100644 | ||||
| --- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h | ||||
| +++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h | ||||
| @@ -91,6 +91,12 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 | ||||
| @@ -308,9 +308,9 @@ index 4a3063c2af2c..9121a475949e 100644 | ||||
|    DesktopDragDropClientAuraX11* drag_drop_client_ = nullptr; | ||||
|   | ||||
|    std::unique_ptr<ui::EventHandler> x11_non_client_event_filter_; | ||||
| @@ -458,6 +471,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 | ||||
|   | ||||
|    uint32_t modal_dialog_counter_ = 0; | ||||
| @@ -472,6 +485,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 | ||||
|    bool configure_counter_value_is_extended_ = false; | ||||
|    std::unique_ptr<CompositorObserver> compositor_observer_; | ||||
|   | ||||
| +  // True if the xwindow has already been destroyed. | ||||
| +  bool xwindow_destroyed_ = false; | ||||
| @@ -319,10 +319,10 @@ index 4a3063c2af2c..9121a475949e 100644 | ||||
|    base::WeakPtrFactory<DesktopWindowTreeHostX11> weak_factory_{this}; | ||||
|   | ||||
| diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc | ||||
| index 4e00aae2c6df..2b652017e35f 100644 | ||||
| index 0f01bf0c73c9..29676434c345 100644 | ||||
| --- ui/views/widget/widget.cc | ||||
| +++ ui/views/widget/widget.cc | ||||
| @@ -138,6 +138,7 @@ Widget::InitParams::InitParams(Type type) | ||||
| @@ -159,6 +159,7 @@ Widget::InitParams::InitParams(Type type) | ||||
|        use_system_default_icon(false), | ||||
|        show_state(ui::SHOW_STATE_DEFAULT), | ||||
|        parent(nullptr), | ||||
| @@ -330,7 +330,7 @@ index 4e00aae2c6df..2b652017e35f 100644 | ||||
|        native_widget(nullptr), | ||||
|        desktop_window_tree_host(nullptr), | ||||
|        layer_type(ui::LAYER_TEXTURED), | ||||
| @@ -289,7 +290,7 @@ void Widget::Init(const InitParams& in_params) { | ||||
| @@ -311,7 +312,7 @@ void Widget::Init(const InitParams& in_params) { | ||||
|      params.name = params.delegate->GetContentsView()->GetClassName(); | ||||
|   | ||||
|    params.child |= (params.type == InitParams::TYPE_CONTROL); | ||||
| @@ -339,7 +339,7 @@ index 4e00aae2c6df..2b652017e35f 100644 | ||||
|   | ||||
|    if (params.opacity == views::Widget::InitParams::INFER_OPACITY && | ||||
|        params.type != views::Widget::InitParams::TYPE_WINDOW) { | ||||
| @@ -354,7 +355,12 @@ void Widget::Init(const InitParams& in_params) { | ||||
| @@ -375,7 +376,12 @@ void Widget::Init(const InitParams& in_params) { | ||||
|      } | ||||
|    } else if (params.delegate) { | ||||
|      SetContentsView(params.delegate->GetContentsView()); | ||||
| @@ -351,9 +351,9 @@ index 4e00aae2c6df..2b652017e35f 100644 | ||||
| +      SetInitialBoundsForFramelessWindow(params.bounds); | ||||
| +    } | ||||
|    } | ||||
|    // This must come after SetContentsView() or it might not be able to find | ||||
|    // the correct NativeTheme (on Linux). See http://crbug.com/384492 | ||||
| @@ -1132,10 +1138,16 @@ void Widget::OnNativeWidgetDestroyed() { | ||||
|    // TODO(https://crbug.com/953978): Use GetNativeTheme() for all platforms. | ||||
|  #if defined(OS_MACOSX) || defined(OS_WIN) | ||||
| @@ -1165,10 +1171,16 @@ void Widget::OnNativeWidgetDestroyed() { | ||||
|  } | ||||
|   | ||||
|  gfx::Size Widget::GetMinimumSize() const { | ||||
| @@ -371,7 +371,7 @@ index 4e00aae2c6df..2b652017e35f 100644 | ||||
|  } | ||||
|   | ||||
| diff --git ui/views/widget/widget.h ui/views/widget/widget.h | ||||
| index d962e21208fa..0fa0ecfeab21 100644 | ||||
| index 8a073d74f341..5b2960fe8db5 100644 | ||||
| --- ui/views/widget/widget.h | ||||
| +++ ui/views/widget/widget.h | ||||
| @@ -255,6 +255,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, | ||||
| @@ -383,10 +383,10 @@ index d962e21208fa..0fa0ecfeab21 100644 | ||||
|      // the NativeWidget may specify a default size. If the parent is specified, | ||||
|      // |bounds| is in the parent's coordinate system. If the parent is not | ||||
| diff --git ui/views/widget/widget_delegate.h ui/views/widget/widget_delegate.h | ||||
| index 149f4798a445..5bfc9f32ec3b 100644 | ||||
| index 1f827524f4b4..068af34d3e98 100644 | ||||
| --- ui/views/widget/widget_delegate.h | ||||
| +++ ui/views/widget/widget_delegate.h | ||||
| @@ -190,6 +190,10 @@ class VIEWS_EXPORT WidgetDelegate { | ||||
| @@ -191,6 +191,10 @@ class VIEWS_EXPORT WidgetDelegate { | ||||
|    // be cycled through with keyboard focus. | ||||
|    virtual void GetAccessiblePanes(std::vector<View*>* panes) {} | ||||
|   | ||||
| @@ -411,10 +411,10 @@ index 5bcb8d8b9bae..020fa85573aa 100644 | ||||
|        if (native_widget_delegate->IsDialogBox()) { | ||||
|          *style |= DS_MODALFRAME; | ||||
| diff --git ui/views/win/hwnd_message_handler.cc ui/views/win/hwnd_message_handler.cc | ||||
| index fb8e820175ac..66c5cb91f7e8 100644 | ||||
| index de88c769b5be..1b642132eb2f 100644 | ||||
| --- ui/views/win/hwnd_message_handler.cc | ||||
| +++ ui/views/win/hwnd_message_handler.cc | ||||
| @@ -2918,10 +2918,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, | ||||
| @@ -2903,10 +2903,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, | ||||
|    } else if (event.type() == ui::ET_MOUSEWHEEL) { | ||||
|      ui::MouseWheelEvent mouse_wheel_event(msg); | ||||
|      // Reroute the mouse wheel to the window under the pointer if applicable. | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git content/browser/web_contents/web_contents_impl.cc content/browser/web_contents/web_contents_impl.cc | ||||
| index 1491bf580c59..ab2c83357303 100644 | ||||
| index f88cff5ab6d1..981a83fdded2 100644 | ||||
| --- content/browser/web_contents/web_contents_impl.cc | ||||
| +++ content/browser/web_contents/web_contents_impl.cc | ||||
| @@ -2068,21 +2068,30 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { | ||||
| @@ -2070,21 +2070,30 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { | ||||
|    std::string unique_name; | ||||
|    frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name); | ||||
|   | ||||
| @@ -45,7 +45,7 @@ index 1491bf580c59..ab2c83357303 100644 | ||||
|    CHECK(render_view_host_delegate_view_); | ||||
|    CHECK(view_.get()); | ||||
|   | ||||
| @@ -2781,6 +2790,15 @@ void WebContentsImpl::CreateNewWindow( | ||||
| @@ -2783,6 +2792,15 @@ void WebContentsImpl::CreateNewWindow( | ||||
|    create_params.renderer_initiated_creation = | ||||
|        main_frame_route_id != MSG_ROUTING_NONE; | ||||
|   | ||||
| @@ -61,7 +61,7 @@ index 1491bf580c59..ab2c83357303 100644 | ||||
|    std::unique_ptr<WebContents> new_contents; | ||||
|    if (!is_guest) { | ||||
|      create_params.context = view_->GetNativeView(); | ||||
| @@ -2813,7 +2831,7 @@ void WebContentsImpl::CreateNewWindow( | ||||
| @@ -2815,7 +2833,7 @@ void WebContentsImpl::CreateNewWindow( | ||||
|        // TODO(brettw): It seems bogus that we have to call this function on the | ||||
|        // newly created object and give it one of its own member variables. | ||||
|        new_view->CreateViewForWidget( | ||||
| @@ -70,7 +70,7 @@ index 1491bf580c59..ab2c83357303 100644 | ||||
|      } | ||||
|      // Save the created window associated with the route so we can show it | ||||
|      // later. | ||||
| @@ -6372,7 +6390,7 @@ InterstitialPageImpl* WebContentsImpl::GetInterstitialForRenderManager() { | ||||
| @@ -6387,7 +6405,7 @@ InterstitialPageImpl* WebContentsImpl::GetInterstitialForRenderManager() { | ||||
|  void WebContentsImpl::CreateRenderWidgetHostViewForRenderManager( | ||||
|      RenderViewHost* render_view_host) { | ||||
|    RenderWidgetHostViewBase* rwh_view = | ||||
| @@ -122,10 +122,10 @@ index 6cf2ca2a0ec5..bb29ed68f094 100644 | ||||
|      // the value that'll be returned by GetLastActiveTime(). If this is left | ||||
|      // default initialized then the value is not passed on to the WebContents | ||||
| diff --git content/public/browser/web_contents_delegate.h content/public/browser/web_contents_delegate.h | ||||
| index 3789137953ac..c8eb2dfb55ca 100644 | ||||
| index e99b9c52101d..ee725bd31948 100644 | ||||
| --- content/public/browser/web_contents_delegate.h | ||||
| +++ content/public/browser/web_contents_delegate.h | ||||
| @@ -56,10 +56,12 @@ class FileSelectListener; | ||||
| @@ -57,10 +57,12 @@ class FileSelectListener; | ||||
|  class JavaScriptDialogManager; | ||||
|  class RenderFrameHost; | ||||
|  class RenderProcessHost; | ||||
| @@ -138,7 +138,7 @@ index 3789137953ac..c8eb2dfb55ca 100644 | ||||
|  struct ContextMenuParams; | ||||
|  struct DropData; | ||||
|  struct NativeWebKeyboardEvent; | ||||
| @@ -321,6 +323,14 @@ class CONTENT_EXPORT WebContentsDelegate { | ||||
| @@ -323,6 +325,14 @@ class CONTENT_EXPORT WebContentsDelegate { | ||||
|        const std::string& partition_id, | ||||
|        SessionStorageNamespace* session_storage_namespace); | ||||
|   | ||||
|   | ||||
							
								
								
									
										36
									
								
								patch/patches/web_url_loader_cancel_1617042.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								patch/patches/web_url_loader_cancel_1617042.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| diff --git content/renderer/loader/web_url_loader_impl.h content/renderer/loader/web_url_loader_impl.h | ||||
| index 9ce1066841fc..b83e4bcc8969 100644 | ||||
| --- content/renderer/loader/web_url_loader_impl.h | ||||
| +++ content/renderer/loader/web_url_loader_impl.h | ||||
| @@ -86,6 +86,7 @@ class CONTENT_EXPORT WebURLLoaderImpl : public blink::WebURLLoader { | ||||
|                           blink::WebBlobInfo& downloaded_blob) override; | ||||
|    void LoadAsynchronously(const blink::WebURLRequest& request, | ||||
|                            blink::WebURLLoaderClient* client) override; | ||||
| +  void Cancel() override; | ||||
|    void SetDefersLoading(bool value) override; | ||||
|    void DidChangePriority(blink::WebURLRequest::Priority new_priority, | ||||
|                           int intra_priority_value) override; | ||||
| @@ -96,8 +97,6 @@ class CONTENT_EXPORT WebURLLoaderImpl : public blink::WebURLLoader { | ||||
|    class RequestPeerImpl; | ||||
|    class SinkPeer; | ||||
|   | ||||
| -  void Cancel(); | ||||
| - | ||||
|    scoped_refptr<Context> context_; | ||||
|   | ||||
|    DISALLOW_COPY_AND_ASSIGN(WebURLLoaderImpl); | ||||
| diff --git third_party/blink/public/platform/web_url_loader.h third_party/blink/public/platform/web_url_loader.h | ||||
| index 7bb0b6bf25dc..d0b6bf5a887b 100644 | ||||
| --- third_party/blink/public/platform/web_url_loader.h | ||||
| +++ third_party/blink/public/platform/web_url_loader.h | ||||
| @@ -71,6 +71,10 @@ class WebURLLoader { | ||||
|    virtual void LoadAsynchronously(const WebURLRequest&, | ||||
|                                    WebURLLoaderClient*) = 0; | ||||
|   | ||||
| +  // Cancels an asynchronous load.  This will appear as a load error to | ||||
| +  // the client. | ||||
| +  virtual void Cancel() {} | ||||
| + | ||||
|    // Suspends/resumes an asynchronous load. | ||||
|    virtual void SetDefersLoading(bool) = 0; | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git third_party/blink/public/mojom/plugins/plugin_registry.mojom third_party/blink/public/mojom/plugins/plugin_registry.mojom | ||||
| index 0cc3d5b6c9df..a4044788af10 100644 | ||||
| index ff7a8ed89e94..77f44956ff22 100644 | ||||
| --- third_party/blink/public/mojom/plugins/plugin_registry.mojom | ||||
| +++ third_party/blink/public/mojom/plugins/plugin_registry.mojom | ||||
| @@ -37,5 +37,5 @@ interface PluginRegistry { | ||||
| @@ -36,5 +36,5 @@ interface PluginRegistry { | ||||
|    // | ||||
|    // TODO(crbug.com/850278): We shouldn't rely on the renderer to tell us the main frame origin. | ||||
|    [Sync] | ||||
| @@ -10,10 +10,10 @@ index 0cc3d5b6c9df..a4044788af10 100644 | ||||
| +  GetPlugins(bool refresh, bool is_main_frame, url.mojom.Origin main_frame_origin) => (array<PluginInfo> plugins); | ||||
|  }; | ||||
| diff --git third_party/blink/public/platform/platform.h third_party/blink/public/platform/platform.h | ||||
| index 198d6649ef41..648b0bc20653 100644 | ||||
| index cd2e8603c391..a0eb460fcae1 100644 | ||||
| --- third_party/blink/public/platform/platform.h | ||||
| +++ third_party/blink/public/platform/platform.h | ||||
| @@ -729,6 +729,11 @@ class BLINK_PLATFORM_EXPORT Platform { | ||||
| @@ -706,6 +706,11 @@ class BLINK_PLATFORM_EXPORT Platform { | ||||
|    // runs during Chromium's build step). | ||||
|    virtual bool IsTakingV8ContextSnapshot() { return false; } | ||||
|   | ||||
| @@ -26,7 +26,7 @@ index 198d6649ef41..648b0bc20653 100644 | ||||
|    static void InitializeCommon(Platform* platform, | ||||
|                                 std::unique_ptr<Thread> main_thread); | ||||
| diff --git third_party/blink/renderer/core/dom/dom_implementation.cc third_party/blink/renderer/core/dom/dom_implementation.cc | ||||
| index a616fafed51f..dae131dad5de 100644 | ||||
| index 3de30fbbe096..a7cab9da38f2 100644 | ||||
| --- third_party/blink/renderer/core/dom/dom_implementation.cc | ||||
| +++ third_party/blink/renderer/core/dom/dom_implementation.cc | ||||
| @@ -244,10 +244,11 @@ Document* DOMImplementation::createDocument(const String& type, | ||||
| @@ -44,10 +44,10 @@ index a616fafed51f..dae131dad5de 100644 | ||||
|                                                          .Top() | ||||
|                                                          .GetSecurityContext() | ||||
| diff --git third_party/blink/renderer/core/frame/local_frame.cc third_party/blink/renderer/core/frame/local_frame.cc | ||||
| index dd0e2f0df7b5..3c3ff59f72a9 100644 | ||||
| index 4851cb4a227b..cc88dce2db46 100644 | ||||
| --- third_party/blink/renderer/core/frame/local_frame.cc | ||||
| +++ third_party/blink/renderer/core/frame/local_frame.cc | ||||
| @@ -1257,7 +1257,7 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() { | ||||
| @@ -1234,7 +1234,7 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() { | ||||
|  PluginData* LocalFrame::GetPluginData() const { | ||||
|    if (!Loader().AllowPlugins(kNotAboutToInstantiatePlugin)) | ||||
|      return nullptr; | ||||
| @@ -57,7 +57,7 @@ index dd0e2f0df7b5..3c3ff59f72a9 100644 | ||||
|  } | ||||
|   | ||||
| diff --git third_party/blink/renderer/core/inspector/devtools_session.cc third_party/blink/renderer/core/inspector/devtools_session.cc | ||||
| index 6435384652b7..79bd103df30d 100644 | ||||
| index e839efcfbd0b..1927d8dd2ed0 100644 | ||||
| --- third_party/blink/renderer/core/inspector/devtools_session.cc | ||||
| +++ third_party/blink/renderer/core/inspector/devtools_session.cc | ||||
| @@ -5,6 +5,7 @@ | ||||
| @@ -76,7 +76,7 @@ index 6435384652b7..79bd103df30d 100644 | ||||
|  } | ||||
|   | ||||
|  DevToolsSession::~DevToolsSession() { | ||||
| @@ -191,6 +193,7 @@ void DevToolsSession::Detach() { | ||||
| @@ -192,6 +194,7 @@ void DevToolsSession::Detach() { | ||||
|    agents_.clear(); | ||||
|    v8_session_.reset(); | ||||
|    agent_->client_->DebuggerTaskFinished(); | ||||
| @@ -85,10 +85,10 @@ index 6435384652b7..79bd103df30d 100644 | ||||
|   | ||||
|  void DevToolsSession::FlushProtocolNotifications() { | ||||
| diff --git third_party/blink/renderer/core/page/page.cc third_party/blink/renderer/core/page/page.cc | ||||
| index 5480f0e29789..3bf2f35c9741 100644 | ||||
| index bcab9669d29b..9e90c96b29e7 100644 | ||||
| --- third_party/blink/renderer/core/page/page.cc | ||||
| +++ third_party/blink/renderer/core/page/page.cc | ||||
| @@ -180,7 +180,8 @@ Page::Page(PageClients& page_clients) | ||||
| @@ -185,7 +185,8 @@ Page::Page(PageClients& page_clients) | ||||
|            MakeGarbageCollected<OverscrollController>(GetVisualViewport(), | ||||
|                                                       GetChromeClient())), | ||||
|        link_highlights_(MakeGarbageCollected<LinkHighlights>(*this)), | ||||
| @@ -98,7 +98,7 @@ index 5480f0e29789..3bf2f35c9741 100644 | ||||
|        // TODO(pdr): Initialize |validation_message_client_| lazily. | ||||
|        validation_message_client_( | ||||
|            MakeGarbageCollected<ValidationMessageClientImpl>(*this)), | ||||
| @@ -337,21 +338,40 @@ void Page::InitialStyleChanged() { | ||||
| @@ -346,21 +347,40 @@ void Page::InitialStyleChanged() { | ||||
|    } | ||||
|  } | ||||
|   | ||||
| @@ -148,7 +148,7 @@ index 5480f0e29789..3bf2f35c9741 100644 | ||||
|        page->NotifyPluginsChanged(); | ||||
|      } | ||||
|    } | ||||
| @@ -786,7 +806,8 @@ void Page::Trace(blink::Visitor* visitor) { | ||||
| @@ -832,7 +852,8 @@ void Page::Trace(blink::Visitor* visitor) { | ||||
|    visitor->Trace(link_highlights_); | ||||
|    visitor->Trace(spatial_navigation_controller_); | ||||
|    visitor->Trace(main_frame_); | ||||
| @@ -159,7 +159,7 @@ index 5480f0e29789..3bf2f35c9741 100644 | ||||
|    visitor->Trace(plugins_changed_observers_); | ||||
|    visitor->Trace(next_related_page_); | ||||
| diff --git third_party/blink/renderer/core/page/page.h third_party/blink/renderer/core/page/page.h | ||||
| index f3d748e4a3e7..3750ba015d76 100644 | ||||
| index eb5e930c4653..3a12676266d3 100644 | ||||
| --- third_party/blink/renderer/core/page/page.h | ||||
| +++ third_party/blink/renderer/core/page/page.h | ||||
| @@ -140,7 +140,8 @@ class CORE_EXPORT Page final : public GarbageCollectedFinalized<Page>, | ||||
| @@ -172,7 +172,7 @@ index f3d748e4a3e7..3750ba015d76 100644 | ||||
|   | ||||
|    // Resets the plugin data for all pages in the renderer process and notifies | ||||
|    // PluginsChangedObservers. | ||||
| @@ -364,7 +365,8 @@ class CORE_EXPORT Page final : public GarbageCollectedFinalized<Page>, | ||||
| @@ -366,7 +367,8 @@ class CORE_EXPORT Page final : public GarbageCollectedFinalized<Page>, | ||||
|    const Member<LinkHighlights> link_highlights_; | ||||
|    Member<SpatialNavigationController> spatial_navigation_controller_; | ||||
|   | ||||
| @@ -183,7 +183,7 @@ index f3d748e4a3e7..3750ba015d76 100644 | ||||
|    Member<ValidationMessageClient> validation_message_client_; | ||||
|   | ||||
| diff --git third_party/blink/renderer/core/page/plugin_data.cc third_party/blink/renderer/core/page/plugin_data.cc | ||||
| index 3855e47147d5..c83cd67b93d8 100644 | ||||
| index 89a12219de60..df47c0efd193 100644 | ||||
| --- third_party/blink/renderer/core/page/plugin_data.cc | ||||
| +++ third_party/blink/renderer/core/page/plugin_data.cc | ||||
| @@ -90,10 +90,12 @@ void PluginData::RefreshBrowserSidePluginCache() { | ||||
| @@ -211,7 +211,7 @@ index 3855e47147d5..c83cd67b93d8 100644 | ||||
|      auto* plugin_info = MakeGarbageCollected<PluginInfo>( | ||||
|          plugin->name, FilePathToWebString(plugin->filename), | ||||
| diff --git third_party/blink/renderer/core/page/plugin_data.h third_party/blink/renderer/core/page/plugin_data.h | ||||
| index 446cf8fbe161..299648db9c28 100644 | ||||
| index 7ca6da99d9a3..2f0dedba19ff 100644 | ||||
| --- third_party/blink/renderer/core/page/plugin_data.h | ||||
| +++ third_party/blink/renderer/core/page/plugin_data.h | ||||
| @@ -100,7 +100,8 @@ class CORE_EXPORT PluginData final | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git third_party/blink/renderer/core/input/pointer_event_manager.cc third_party/blink/renderer/core/input/pointer_event_manager.cc | ||||
| index b84e3bdd6679..a0d65d9a65a1 100644 | ||||
| index 4c8debe8c179..29aac92f216a 100644 | ||||
| --- third_party/blink/renderer/core/input/pointer_event_manager.cc | ||||
| +++ third_party/blink/renderer/core/input/pointer_event_manager.cc | ||||
| @@ -285,7 +285,7 @@ void PointerEventManager::HandlePointerInterruption( | ||||
| @@ -312,7 +312,7 @@ void PointerEventManager::HandlePointerInterruption( | ||||
|    for (auto pointer_event : canceled_pointer_events) { | ||||
|      // If we are sending a pointercancel we have sent the pointerevent to some | ||||
|      // target before. | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h | ||||
| index f831c084e1d3..80dd4ea3a154 100644 | ||||
| index 3b6b9a0bfc70..5ab43573416b 100644 | ||||
| --- third_party/blink/public/web/web_view.h | ||||
| +++ third_party/blink/public/web/web_view.h | ||||
| @@ -363,6 +363,7 @@ class WebView { | ||||
| @@ -11,10 +11,10 @@ index f831c084e1d3..80dd4ea3a154 100644 | ||||
|    // Cancels and hides the current popup (datetime, select...) if any. | ||||
|    virtual void CancelPagePopup() = 0; | ||||
| diff --git third_party/blink/renderer/core/exported/web_view_impl.cc third_party/blink/renderer/core/exported/web_view_impl.cc | ||||
| index fa2150289b4f..611dffb1ef7d 100644 | ||||
| index ec827ff90d5d..cd1f822785ae 100644 | ||||
| --- third_party/blink/renderer/core/exported/web_view_impl.cc | ||||
| +++ third_party/blink/renderer/core/exported/web_view_impl.cc | ||||
| @@ -238,8 +238,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { | ||||
| @@ -234,8 +234,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { | ||||
|    g_should_use_external_popup_menus = use_external_popup_menus; | ||||
|  } | ||||
|   | ||||
| @@ -30,7 +30,7 @@ index fa2150289b4f..611dffb1ef7d 100644 | ||||
|  } | ||||
|   | ||||
|  namespace { | ||||
| @@ -297,6 +302,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client, | ||||
| @@ -293,6 +298,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client, | ||||
|        chrome_client_(MakeGarbageCollected<ChromeClientImpl>(this)), | ||||
|        minimum_zoom_level_(ZoomFactorToZoomLevel(kMinTextSizeMultiplier)), | ||||
|        maximum_zoom_level_(ZoomFactorToZoomLevel(kMaxTextSizeMultiplier)), | ||||
| @@ -39,10 +39,10 @@ index fa2150289b4f..611dffb1ef7d 100644 | ||||
|        fullscreen_controller_(std::make_unique<FullscreenController>(this)) { | ||||
|    if (!AsView().client) { | ||||
| diff --git third_party/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h | ||||
| index aaa17462ee65..647b51d8fddc 100644 | ||||
| index 218915791efb..a57420b95773 100644 | ||||
| --- third_party/blink/renderer/core/exported/web_view_impl.h | ||||
| +++ third_party/blink/renderer/core/exported/web_view_impl.h | ||||
| @@ -105,7 +105,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, | ||||
| @@ -107,7 +107,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, | ||||
|    static HashSet<WebViewImpl*>& AllInstances(); | ||||
|    // Returns true if popup menus should be rendered by the browser, false if | ||||
|    // they should be rendered by WebKit (which is the default). | ||||
| @@ -52,7 +52,7 @@ index aaa17462ee65..647b51d8fddc 100644 | ||||
|   | ||||
|    // Returns whether frames under this WebView are backed by a compositor. When | ||||
|    // false there may be no WebWidgetClient present. When true, there must be a | ||||
| @@ -617,6 +618,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, | ||||
| @@ -615,6 +616,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, | ||||
|    float fake_page_scale_animation_page_scale_factor_ = 0.f; | ||||
|    bool fake_page_scale_animation_use_anchor_ = false; | ||||
|   | ||||
| @@ -62,10 +62,10 @@ index aaa17462ee65..647b51d8fddc 100644 | ||||
|    TransformationMatrix device_emulation_transform_; | ||||
|   | ||||
| diff --git third_party/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc | ||||
| index 4c326ba6d8d9..59f8ceb29958 100644 | ||||
| index b71a9ad5dba7..5fc52d50d0ad 100644 | ||||
| --- third_party/blink/renderer/core/page/chrome_client_impl.cc | ||||
| +++ third_party/blink/renderer/core/page/chrome_client_impl.cc | ||||
| @@ -812,7 +812,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { | ||||
| @@ -847,7 +847,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { | ||||
|  PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, | ||||
|                                             HTMLSelectElement& select) { | ||||
|    NotifyPopupOpeningObservers(); | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc | ||||
| index ea311eb90f4d..9e4a6ff96c56 100644 | ||||
| index 00fb583bc90e..667ff3497c1c 100644 | ||||
| --- chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc | ||||
| +++ chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc | ||||
| @@ -21,6 +21,7 @@ | ||||
| @@ -10,7 +10,7 @@ index ea311eb90f4d..9e4a6ff96c56 100644 | ||||
|  #include "components/prefs/pref_service.h" | ||||
|  #include "components/sync/driver/about_sync_util.h" | ||||
|  #include "components/sync/driver/sync_service.h" | ||||
| @@ -268,6 +269,10 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { | ||||
| @@ -275,6 +276,10 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { | ||||
|  } | ||||
|   | ||||
|  void ChromeInternalLogSource::PopulateSyncLogs(SystemLogsResponse* response) { | ||||
| @@ -21,7 +21,7 @@ index ea311eb90f4d..9e4a6ff96c56 100644 | ||||
|    // We are only interested in sync logs for the primary user profile. | ||||
|    Profile* profile = ProfileManager::GetPrimaryUserProfile(); | ||||
|    if (!profile || !ProfileSyncServiceFactory::HasSyncService(profile)) | ||||
| @@ -310,6 +315,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( | ||||
| @@ -317,6 +322,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( | ||||
|    if (!profile) | ||||
|      return; | ||||
|   | ||||
| @@ -34,6 +34,15 @@ index ea311eb90f4d..9e4a6ff96c56 100644 | ||||
|    extensions::ExtensionRegistry* extension_registry = | ||||
|        extensions::ExtensionRegistry::Get(profile); | ||||
|    std::string extensions_list; | ||||
| @@ -395,6 +406,8 @@ void ChromeInternalLogSource::PopulateLocalStateSettings( | ||||
|  #if defined(OS_WIN) | ||||
|  void ChromeInternalLogSource::PopulateUsbKeyboardDetected( | ||||
|      SystemLogsResponse* response) { | ||||
| +  // The below call may result in some DLLs being loaded. | ||||
| +  base::ScopedAllowBlockingForTesting allow_blocking; | ||||
|    std::string reason; | ||||
|    bool result = | ||||
|        base::win::IsKeyboardPresentOnSlate(&reason, ui::GetHiddenWindow()); | ||||
| diff --git chrome/browser/memory_details.cc chrome/browser/memory_details.cc | ||||
| index 14b789a35c34..19a1f340a101 100644 | ||||
| --- chrome/browser/memory_details.cc | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| diff --git chrome/app/generated_resources.grd chrome/app/generated_resources.grd | ||||
| index 4989fa559ee6..c6859944e8b4 100644 | ||||
| index af7b8fa63af0..118aea76fe39 100644 | ||||
| --- chrome/app/generated_resources.grd | ||||
| +++ chrome/app/generated_resources.grd | ||||
| @@ -4644,7 +4644,7 @@ Keep your key file in a safe place. You will need it to create new versions of y | ||||
| @@ -4654,7 +4654,7 @@ Keep your key file in a safe place. You will need it to create new versions of y | ||||
|          </message> | ||||
|        </if> | ||||
|        <message name="IDS_PLUGIN_BLOCKED_BY_POLICY" desc="The placeholder text for a plugin blocked by enterprise policy."> | ||||
|   | ||||
| @@ -1,18 +1,17 @@ | ||||
| diff --git services/service_manager/sandbox/win/sandbox_win.cc services/service_manager/sandbox/win/sandbox_win.cc | ||||
| index 2d994b725cf7..b91459e5b559 100644 | ||||
| index b5e74f458898..c0f00b9745df 100644 | ||||
| --- services/service_manager/sandbox/win/sandbox_win.cc | ||||
| +++ services/service_manager/sandbox/win/sandbox_win.cc | ||||
| @@ -917,8 +917,11 @@ sandbox::ResultCode SandboxWin::StartSandboxedProcess( | ||||
|  #endif | ||||
|   | ||||
|    // Post-startup mitigations. | ||||
| -  mitigations = sandbox::MITIGATION_STRICT_HANDLE_CHECKS | | ||||
| -                sandbox::MITIGATION_DLL_SEARCH_ORDER; | ||||
| +  mitigations = sandbox::MITIGATION_DLL_SEARCH_ORDER; | ||||
| +  if (!launcher_process_command_line.HasSwitch("win-rt-app")) { | ||||
| @@ -931,8 +931,11 @@ sandbox::ResultCode SandboxWin::StartSandboxedProcess( | ||||
|    } | ||||
|    // TODO(wfh): Relax strict handle checks for network process until root cause | ||||
|    // for this crash can be resolved. See https://crbug.com/939590. | ||||
| -  if (sandbox_type != SANDBOX_TYPE_NETWORK) | ||||
| +  if (!launcher_process_command_line.HasSwitch("win-rt-app") && | ||||
| +      sandbox_type != SANDBOX_TYPE_NETWORK) { | ||||
| +    // Don't enable this mitigation in WinRT apps. See issue #2274. | ||||
| +    mitigations |= sandbox::MITIGATION_STRICT_HANDLE_CHECKS; | ||||
|      mitigations |= sandbox::MITIGATION_STRICT_HANDLE_CHECKS; | ||||
| +  } | ||||
|    if (!cmd_line->HasSwitch(switches::kAllowThirdPartyModules)) | ||||
|      mitigations |= sandbox::MITIGATION_FORCE_MS_SIGNED_BINS; | ||||
|    if (sandbox_type == SANDBOX_TYPE_NETWORK || | ||||
|   | ||||
|    result = policy->SetDelayedProcessMitigations(mitigations); | ||||
|    if (result != sandbox::SBOX_ALL_OK) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user