From 59201188169f51645159ebb2cf0cd52619915c16 Mon Sep 17 00:00:00 2001 From: Kenny Ballou Date: Sun, 24 Feb 2019 22:49:16 -0700 Subject: Add chromium-72 patches from debian project Collect a number of patches, specifically, `fixes` and `gcc6` patches for compiling chromium-72. [0]: https://salsa.debian.org/chromium-team/chromium/tree/master/debian/patches Signed-off-by: Kenny Ballou --- .../chromium-72.0.3626.96/as-needed.patch | 14 ++ .../www-client/chromium-72.0.3626.96/atomic.patch | 34 +++ .../chromium-72.0.3626.96/connection-message.patch | 15 ++ .../chromium-72.0.3626.96/constexpr.patch | 25 ++ .../chromium-72.0.3626.96/constructor.patch | 21 ++ .../chromium-72.0.3626.96/empty-array.patch | 18 ++ .../chromium-72.0.3626.96/gpu-timeout.patch | 15 ++ .../chromium-72.0.3626.96/inspector.patch | 14 ++ .../chromium-72.0.3626.96/lambda-this.patch | 14 ++ .../www-client/chromium-72.0.3626.96/mojo.patch | 70 ++++++ .../chromium-72.0.3626.96/namespace.patch | 17 ++ .../nullptr-copy-construct.patch | 21 ++ .../www-client/chromium-72.0.3626.96/sizet.patch | 14 ++ .../chromium-72.0.3626.96/use-after-move.patch | 29 +++ .../www-client/chromium-72.0.3626.96/vaapi.patch | 254 +++++++++++++++++++++ .../chromium-72.0.3626.96/widevine-locations.patch | 18 ++ 16 files changed, 593 insertions(+) create mode 100644 patches/www-client/chromium-72.0.3626.96/as-needed.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/atomic.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/connection-message.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/constexpr.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/constructor.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/empty-array.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/gpu-timeout.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/inspector.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/lambda-this.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/mojo.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/namespace.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/nullptr-copy-construct.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/sizet.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/use-after-move.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/vaapi.patch create mode 100644 patches/www-client/chromium-72.0.3626.96/widevine-locations.patch diff --git a/patches/www-client/chromium-72.0.3626.96/as-needed.patch b/patches/www-client/chromium-72.0.3626.96/as-needed.patch new file mode 100644 index 0000000..791090d --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/as-needed.patch @@ -0,0 +1,14 @@ +description: some libraries fail to link when --as-needed is set +author: Michael Gilbert + +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -396,7 +396,7 @@ config("compiler") { + if (!using_sanitizer) { + ldflags += [ + "-Wl,-z,defs", +- "-Wl,--as-needed", ++ "-Wl,--no-as-needed", + ] + } + } diff --git a/patches/www-client/chromium-72.0.3626.96/atomic.patch b/patches/www-client/chromium-72.0.3626.96/atomic.patch new file mode 100644 index 0000000..7c787ea --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/atomic.patch @@ -0,0 +1,34 @@ +description: gcc 6 does not provide a typedef for atomic +author: Michael Gilbert + +--- a/third_party/blink/renderer/platform/heap/gc_info.cc ++++ b/third_party/blink/renderer/platform/heap/gc_info.cc +@@ -51,7 +51,7 @@ void GCInfoTable::CreateGlobalTable() { + + uint32_t GCInfoTable::EnsureGCInfoIndex( + const GCInfo* gc_info, +- std::atomic_uint32_t* gc_info_index_slot) { ++ std::atomic* gc_info_index_slot) { + DCHECK(gc_info); + DCHECK(gc_info_index_slot); + +--- a/third_party/blink/renderer/platform/heap/gc_info.h ++++ b/third_party/blink/renderer/platform/heap/gc_info.h +@@ -72,7 +72,7 @@ class PLATFORM_EXPORT GCInfoTable { + return info; + } + +- uint32_t EnsureGCInfoIndex(const GCInfo*, std::atomic_uint32_t*); ++ uint32_t EnsureGCInfoIndex(const GCInfo*, std::atomic*); + + uint32_t GcInfoIndex() { return current_index_; } + +@@ -117,7 +117,7 @@ struct GCInfoAtBaseType { + }; + // This is more complicated than using threadsafe initialization, but this + // is instantiated many times (once for every GC type). +- static std::atomic_uint32_t gc_info_index{0}; ++ static std::atomic gc_info_index{0}; + uint32_t index = gc_info_index.load(std::memory_order_acquire); + if (!index) + index = GCInfoTable::Get().EnsureGCInfoIndex(&kGcInfo, &gc_info_index); diff --git a/patches/www-client/chromium-72.0.3626.96/connection-message.patch b/patches/www-client/chromium-72.0.3626.96/connection-message.patch new file mode 100644 index 0000000..b5d69e2 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/connection-message.patch @@ -0,0 +1,15 @@ +description: suggest proxy misconfiguration when network is unreachable +author: Michael Gilbert +bug-debian: http://bugs.debian.org/864539 + +--- a/components/error_page_strings.grdp ++++ b/components/error_page_strings.grdp +@@ -73,7 +73,7 @@ + + + Check any cables and reboot any routers, modems, or other network +- devices you may be using. ++ devices you may be using. Also check that any proxy server currently in use is reachable and configured correctly. + + + diff --git a/patches/www-client/chromium-72.0.3626.96/constexpr.patch b/patches/www-client/chromium-72.0.3626.96/constexpr.patch new file mode 100644 index 0000000..a9d7416 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/constexpr.patch @@ -0,0 +1,25 @@ +description: add constexpr to methods where it is required +author: Michael Gilbert + +--- a/third_party/blink/renderer/core/animation/animation_time_delta.h ++++ b/third_party/blink/renderer/core/animation/animation_time_delta.h +@@ -53,7 +53,7 @@ class CORE_EXPORT AnimationTimeDelta { + return AnimationTimeDelta(std::numeric_limits::infinity()); + } + +- double InSecondsF() const { return delta_; } ++ constexpr double InSecondsF() const { return delta_; } + double InMillisecondsF() const { return delta_ * 1000; } + + bool is_max() const { +--- a/third_party/blink/renderer/core/layout/ng/inline/ng_baseline.cc ++++ b/third_party/blink/renderer/core/layout/ng/inline/ng_baseline.cc +@@ -11,7 +11,7 @@ + namespace blink { + + const unsigned NGBaselineRequest::kTypeIdCount; +-const LayoutUnit NGBaselineList::kEmptyOffset; ++constexpr LayoutUnit NGBaselineList::kEmptyOffset; + + bool NGBaselineRequest::operator==(const NGBaselineRequest& other) const { + return algorithm_type_ == other.algorithm_type_ && diff --git a/patches/www-client/chromium-72.0.3626.96/constructor.patch b/patches/www-client/chromium-72.0.3626.96/constructor.patch new file mode 100644 index 0000000..64fc664 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/constructor.patch @@ -0,0 +1,21 @@ +description: constructor of Algorithm needs to be public +author: Michael Gilbert + +--- a/third_party/blink/renderer/core/streams/transform_stream.cc ++++ b/third_party/blink/renderer/core/streams/transform_stream.cc +@@ -39,7 +39,6 @@ class TransformStream::Algorithm : publi + ScriptFunction::Trace(visitor); + } + +- protected: + Algorithm(TransformStreamTransformer* transformer, + ScriptState* script_state, + ExceptionState& exception_state) +@@ -48,6 +47,7 @@ class TransformStream::Algorithm : publi + interface_name_(exception_state.InterfaceName()), + property_name_(exception_state.PropertyName()) {} + ++ protected: + // AlgorithmScope holds the stack-allocated objects used by the CallRaw() + // methods for FlushAlgorithm and TransformAlgorithm. + class AlgorithmScope { diff --git a/patches/www-client/chromium-72.0.3626.96/empty-array.patch b/patches/www-client/chromium-72.0.3626.96/empty-array.patch new file mode 100644 index 0000000..5a68026 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/empty-array.patch @@ -0,0 +1,18 @@ +description: arraysize macro fails for zero length array, add one character +author: Michael Gilbert + +--- a/third_party/blink/renderer/platform/text/character_property_data.h ++++ b/third_party/blink/renderer/platform/text/character_property_data.h +@@ -244,10 +244,10 @@ static const UChar32 kIsHangulRanges[] = + 0xD7B0, 0xD7FF, + // Halfwidth Hangul Jamo + // https://www.unicode.org/charts/nameslist/c_FF00.html +- 0xFFA0, 0xFFDC, ++ 0xFFA0, 0xFFDB, + }; + +-static const UChar32 kIsHangulArray[] = {}; ++static const UChar32 kIsHangulArray[] = {0xFFDC}; + + #if !defined(USING_SYSTEM_ICU) + // Freezed trie tree, see character_property_data_generator.cc. diff --git a/patches/www-client/chromium-72.0.3626.96/gpu-timeout.patch b/patches/www-client/chromium-72.0.3626.96/gpu-timeout.patch new file mode 100644 index 0000000..3055999 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/gpu-timeout.patch @@ -0,0 +1,15 @@ +description: 10 seconds may not be enough, so don't kill the gpu process until 20. +author: Chad MILLER +bug-debian: http://bugs.debian.org/781940 + +--- a/gpu/ipc/service/gpu_watchdog_thread.cc ++++ b/gpu/ipc/service/gpu_watchdog_thread.cc +@@ -44,7 +44,7 @@ const int kGpuTimeout = 30000; + // infected machines. + const int kGpuTimeout = 15000; + #else +-const int kGpuTimeout = 10000; ++const int kGpuTimeout = 20000; + #endif + + #if defined(USE_X11) diff --git a/patches/www-client/chromium-72.0.3626.96/inspector.patch b/patches/www-client/chromium-72.0.3626.96/inspector.patch new file mode 100644 index 0000000..e88932e --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/inspector.patch @@ -0,0 +1,14 @@ +description: use inspector_protocol from top level third_party dir +author: Michael Gilbert + +--- a/v8/src/inspector/BUILD.gn ++++ b/v8/src/inspector/BUILD.gn +@@ -4,7 +4,7 @@ + + import("../../gni/v8.gni") + +-_inspector_protocol = v8_path_prefix + "/third_party/inspector_protocol" ++_inspector_protocol = "../../../third_party/inspector_protocol" + import("$_inspector_protocol/inspector_protocol.gni") + + _protocol_generated = [ diff --git a/patches/www-client/chromium-72.0.3626.96/lambda-this.patch b/patches/www-client/chromium-72.0.3626.96/lambda-this.patch new file mode 100644 index 0000000..21f0510 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/lambda-this.patch @@ -0,0 +1,14 @@ +description: gcc 6 cannot automatically resolve the this pointer in a lambda +author: Michael Gilbert + +--- a/chrome/browser/usb/web_usb_service_impl.cc ++++ b/chrome/browser/usb/web_usb_service_impl.cc +@@ -161,7 +161,7 @@ void WebUsbServiceImpl::OnPermissionRevo + if (!device_info) + return true; + +- return !HasDevicePermission(*device_info); ++ return !this->HasDevicePermission(*device_info); + }); + } + diff --git a/patches/www-client/chromium-72.0.3626.96/mojo.patch b/patches/www-client/chromium-72.0.3626.96/mojo.patch new file mode 100644 index 0000000..b42f33d --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/mojo.patch @@ -0,0 +1,70 @@ +description: fix mojo layout test build error +author: Michael Gilbert + +--- a/content/shell/BUILD.gn ++++ b/content/shell/BUILD.gn +@@ -125,8 +125,6 @@ jumbo_static_library("content_shell_lib" + "browser/layout_test/layout_test_url_request_context_getter.h", + "browser/layout_test/leak_detector.cc", + "browser/layout_test/leak_detector.h", +- "browser/layout_test/mojo_layout_test_helper.cc", +- "browser/layout_test/mojo_layout_test_helper.h", + "browser/layout_test/secondary_test_window_observer.cc", + "browser/layout_test/secondary_test_window_observer.h", + "browser/layout_test/test_info_extractor.cc", +@@ -289,9 +287,7 @@ jumbo_static_library("content_shell_lib" + "//content/public/common", + "//content/public/common:service_names", + "//content/shell/test_runner:test_runner", +- "//content/test:content_test_mojo_bindings", + "//content/test:layouttest_support", +- "//content/test:mojo_layouttest_bindings", + "//content/test:test_support", + "//device/bluetooth", + "//device/bluetooth:fake_bluetooth", +--- a/content/shell/browser/layout_test/layout_test_content_browser_client.cc ++++ b/content/shell/browser/layout_test/layout_test_content_browser_client.cc +@@ -30,7 +30,6 @@ + #include "content/shell/browser/layout_test/layout_test_browser_context.h" + #include "content/shell/browser/layout_test/layout_test_browser_main_parts.h" + #include "content/shell/browser/layout_test/layout_test_message_filter.h" +-#include "content/shell/browser/layout_test/mojo_layout_test_helper.h" + #include "content/shell/browser/shell_browser_context.h" + #include "content/shell/common/layout_test/layout_test_switches.h" + #include "content/shell/common/shell_messages.h" +@@ -47,11 +46,6 @@ namespace { + + LayoutTestContentBrowserClient* g_layout_test_browser_client; + +-void BindLayoutTestHelper(mojom::MojoLayoutTestHelperRequest request, +- RenderFrameHost* render_frame_host) { +- MojoLayoutTestHelper::Create(std::move(request)); +-} +- + class TestOverlayWindow : public OverlayWindow { + public: + TestOverlayWindow() = default; +@@ -157,7 +151,6 @@ void LayoutTestContentBrowserClient::Exp + &LayoutTestContentBrowserClient::CreateFakeBluetoothChooser, + base::Unretained(this)), + ui_task_runner); +- registry->AddInterface(base::BindRepeating(&MojoLayoutTestHelper::Create)); + registry->AddInterface( + base::BindRepeating(&LayoutTestContentBrowserClient::BindClipboardHost, + base::Unretained(this)), +@@ -314,7 +307,6 @@ bool LayoutTestContentBrowserClient::Can + void LayoutTestContentBrowserClient::ExposeInterfacesToFrame( + service_manager::BinderRegistryWithArgs* + registry) { +- registry->AddInterface(base::Bind(&BindLayoutTestHelper)); + } + + scoped_refptr +--- a/chromecast/common/mojom/typemaps.gni ++++ b/chromecast/common/mojom/typemaps.gni +@@ -2,4 +2,4 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + +-typemaps = [ "//chromecast/common/mojom/multiroom.typemap" ] ++typemaps = [ ] diff --git a/patches/www-client/chromium-72.0.3626.96/namespace.patch b/patches/www-client/chromium-72.0.3626.96/namespace.patch new file mode 100644 index 0000000..7265024 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/namespace.patch @@ -0,0 +1,17 @@ +description: jumbo build has trouble with these namespaces +author: Michael Gilbert + +--- a/chrome/browser/apps/platform_apps/api/sync_file_system/extension_sync_event_observer.h ++++ b/chrome/browser/apps/platform_apps/api/sync_file_system/extension_sync_event_observer.h +@@ -81,8 +81,10 @@ class ExtensionSyncEventObserver : publi + } // namespace api + } // namespace chrome_apps + ++namespace extensions { + template <> +-void extensions::BrowserContextKeyedAPIFactory< ++void BrowserContextKeyedAPIFactory< + chrome_apps::api::ExtensionSyncEventObserver>::DeclareFactoryDependencies(); ++} + + #endif // CHROME_BROWSER_APPS_PLATFORM_APPS_API_SYNC_FILE_SYSTEM_EXTENSION_SYNC_EVENT_OBSERVER_H_ diff --git a/patches/www-client/chromium-72.0.3626.96/nullptr-copy-construct.patch b/patches/www-client/chromium-72.0.3626.96/nullptr-copy-construct.patch new file mode 100644 index 0000000..378f9e8 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/nullptr-copy-construct.patch @@ -0,0 +1,21 @@ +description: gcc 6 does not support copy construction from a nullptr +author: Michael Gilbert + +--- a/components/omnibox/browser/autocomplete_match.cc ++++ b/components/omnibox/browser/autocomplete_match.cc +@@ -142,14 +142,13 @@ AutocompleteMatch::AutocompleteMatch(con + ? new AutocompleteMatch(*match.associated_keyword) + : nullptr), + keyword(match.keyword), +- pedal(match.pedal), + from_previous(match.from_previous), + search_terms_args( + match.search_terms_args + ? new TemplateURLRef::SearchTermsArgs(*match.search_terms_args) + : nullptr), + additional_info(match.additional_info), +- duplicate_matches(match.duplicate_matches) {} ++ duplicate_matches(match.duplicate_matches) { pedal = match.pedal; } + + AutocompleteMatch::~AutocompleteMatch() { + } diff --git a/patches/www-client/chromium-72.0.3626.96/sizet.patch b/patches/www-client/chromium-72.0.3626.96/sizet.patch new file mode 100644 index 0000000..5c5ed22 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/sizet.patch @@ -0,0 +1,14 @@ +description: size_t is not in scope by default in gcc 6 +author: Michael Gilbert + +--- a/media/base/subsample_entry.h ++++ b/media/base/subsample_entry.h +@@ -36,7 +36,7 @@ struct SubsampleEntry { + // does not match |input_size|. + MEDIA_EXPORT bool VerifySubsamplesMatchSize( + const std::vector& subsamples, +- size_t input_size); ++ std::size_t input_size); + + } // namespace media + diff --git a/patches/www-client/chromium-72.0.3626.96/use-after-move.patch b/patches/www-client/chromium-72.0.3626.96/use-after-move.patch new file mode 100644 index 0000000..a72a4f2 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/use-after-move.patch @@ -0,0 +1,29 @@ +description: gcc 6 does not support using a unique_ptr after its been moved +author: Michael Gilbert + +--- a/services/resource_coordinator/coordination_unit/coordination_unit_base.cc ++++ b/services/resource_coordinator/coordination_unit/coordination_unit_base.cc +@@ -81,7 +81,8 @@ void CoordinationUnitBase::SetProperty(m + // static + CoordinationUnitBase* CoordinationUnitBase::PassOwnershipToGraph( + std::unique_ptr new_cu) { +- return new_cu->graph()->AddNewCoordinationUnit(std::move(new_cu)); ++ CoordinationUnitGraph* graph = new_cu->graph(); ++ return graph->AddNewCoordinationUnit(std::move(new_cu)); + } + + } // namespace resource_coordinator + +--- a/base/task/sequence_manager/task_queue.cc ++++ b/base/task/sequence_manager/task_queue.cc +@@ -50,7 +50,9 @@ TaskQueue::~TaskQueue() { + // If we've not been unregistered then this must occur on the main thread. + DCHECK_CALLED_ON_VALID_THREAD(associated_thread_->thread_checker); + impl_->SetOnNextWakeUpChangedCallback(RepeatingCallback()); +- impl_->sequence_manager()->ShutdownTaskQueueGracefully(TakeTaskQueueImpl()); ++ internal::SequenceManagerImpl* sequence_manager = impl_->sequence_manager(); ++ if (sequence_manager) ++ sequence_manager->ShutdownTaskQueueGracefully(TakeTaskQueueImpl()); + } + + TaskQueue::TaskTiming::TaskTiming(bool has_wall_time, bool has_thread_time) diff --git a/patches/www-client/chromium-72.0.3626.96/vaapi.patch b/patches/www-client/chromium-72.0.3626.96/vaapi.patch new file mode 100644 index 0000000..57cadba --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/vaapi.patch @@ -0,0 +1,254 @@ +description: build with hardware accelerated (vaapi) video support +author: Akarshan Biswas + +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1714,7 +1714,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + #if defined(OS_WIN) +@@ -2345,12 +2345,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // ENABLE_ISOLATED_XR_SERVICE + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, + flag_descriptions::kV8CacheOptionsDescription, kOsAll, + MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, +@@ -4289,12 +4289,14 @@ const FeatureEntry kFeatureEntries[] = { + "AutofillDropdownLayout")}, + #endif // OS_ANDROID + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"enable-vaapi-jpeg-image-decode-acceleration", + flag_descriptions::kVaapiJpegImageDecodeAccelerationName, +- flag_descriptions::kVaapiJpegImageDecodeAccelerationDescription, kOsCrOS, ++ flag_descriptions::kVaapiJpegImageDecodeAccelerationDescription, kOsCrOS | kOsLinux, + FEATURE_VALUE_TYPE(features::kVaapiJpegImageDecodeAcceleration)}, ++#endif + ++#if defined(OS_CHROMEOS) + {"enable-home-launcher-gestures", + flag_descriptions::kEnableHomeLauncherGesturesName, + flag_descriptions::kEnableHomeLauncherGesturesDescription, kOsCrOS, +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -3085,9 +3085,9 @@ const char kTextSuggestionsTouchBarDescr + + #endif + +-// Chrome OS ------------------------------------------------------------------- ++// Chrome OS and Linux ------------------------------------------------------------------- + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + const char kAcceleratedMjpegDecodeName[] = + "Hardware-accelerated mjpeg decode for captured frame"; +@@ -3095,6 +3095,18 @@ const char kAcceleratedMjpegDecodeDescri + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++#endif // defined(OS_CHROMEOS) defined(OS_LINUX) and !defined(OS_ANDROID) ++ ++// Only Chrome OS ------------------------------------------------------ ++ ++#if defined(OS_CHROMEOS) ++ + const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click"; + const char kAllowTouchpadThreeFingerClickDescription[] = + "Enables touchpad three-finger-click as middle button."; +@@ -3665,12 +3677,6 @@ const char kUseMonitorColorSpaceDescript + "Enables Chrome to use the color space information provided by the monitor" + " instead of the default sRGB color space."; + +-const char kVaapiJpegImageDecodeAccelerationName[] = +- "VA-API JPEG decode acceleration for images"; +-const char kVaapiJpegImageDecodeAccelerationDescription[] = +- "Enable or disable decode acceleration of JPEG images (as opposed to camera" +- " captures) using the VA-API."; +- + const char kVideoPlayerChromecastSupportName[] = + "Experimental Chromecast support for Video Player"; + const char kVideoPlayerChromecastSupportDescription[] = +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1846,13 +1846,22 @@ extern const char kPermissionPromptPersi + + #endif // defined(OS_MACOSX) + +-// Chrome OS ------------------------------------------------------------------ ++// Chrome OS and Linux ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++// Chrome OS ---------------------------------------------------------------------- ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAllowTouchpadThreeFingerClickName[]; + extern const char kAllowTouchpadThreeFingerClickDescription[]; + +@@ -2197,9 +2206,6 @@ extern const char kUseMashDescription[]; + extern const char kUseMonitorColorSpaceName[]; + extern const char kUseMonitorColorSpaceDescription[]; + +-extern const char kVaapiJpegImageDecodeAccelerationName[]; +-extern const char kVaapiJpegImageDecodeAccelerationDescription[]; +- + extern const char kVideoPlayerChromecastSupportName[]; + extern const char kVideoPlayerChromecastSupportDescription[]; + +--- a/components/viz/service/main/viz_main_impl.cc ++++ b/components/viz/service/main/viz_main_impl.cc +@@ -41,7 +41,7 @@ std::unique_ptr CreateAndS + // It should be possible to use |main_task_runner_| for doing IO tasks. + base::Thread::Options thread_options(base::MessageLoop::TYPE_IO, 0); + thread_options.priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_LINUX) + // TODO(reveman): Remove this in favor of setting it explicitly for each + // type of process. + thread_options.priority = base::ThreadPriority::DISPLAY; +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -136,4 +137,9 @@ target(link_target_type, "gpu_sources") + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +--- a/content/gpu/gpu_main.cc ++++ b/content/gpu/gpu_main.cc +@@ -284,7 +284,7 @@ int GpuMain(const MainFunctionParams& pa + + base::PlatformThread::SetName("CrGpuMain"); + +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_LINUX) + // Set thread priority before sandbox initialization. + base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); + #endif +@@ -317,7 +317,7 @@ int GpuMain(const MainFunctionParams& pa + GetContentClient()->SetGpuInfo(gpu_init->gpu_info()); + + base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_LINUX) + io_thread_priority = base::ThreadPriority::DISPLAY; + #endif + +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -370,17 +370,6 @@ + ] + }, + { +- "id": 48, +- "description": "Accelerated video decode is unavailable on Linux", +- "cr_bugs": [137247], +- "os": { +- "type": "linux" +- }, +- "features": [ +- "accelerated_video_decode" +- ] +- }, +- { + "id": 50, + "description": "Disable VMware software renderer on older Mesa", + "cr_bugs": [145531, 332596, 571899, 629434], +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -496,7 +496,7 @@ bool IsVideoCaptureAcceleratedJpegDecodi + switches::kUseFakeJpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -200,7 +201,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -508,6 +508,12 @@ if (use_v4l2_codec || use_vaapi || is_ma + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + if (use_v4l2_codec || use_vaapi) { + test("jpeg_encode_accelerator_unittest") { + deps = [ +@@ -578,6 +584,7 @@ if (is_chromeos || is_linux) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + diff --git a/patches/www-client/chromium-72.0.3626.96/widevine-locations.patch b/patches/www-client/chromium-72.0.3626.96/widevine-locations.patch new file mode 100644 index 0000000..5f144d4 --- /dev/null +++ b/patches/www-client/chromium-72.0.3626.96/widevine-locations.patch @@ -0,0 +1,18 @@ +description: try alternative locations for libwidevinecdm.so + - $HOME/.local/lib/ (snap-friendly, see https://launchpad.net/bugs/1738149) +author: Olivier Tilloy + +--- a/chrome/common/chrome_paths.cc ++++ b/chrome/common/chrome_paths.cc +@@ -375,6 +375,11 @@ bool PathProvider(int key, base::FilePat + // TODO(crbug.com/663554): Remove this after component updated CDM is + // supported on Linux and ChromeOS. + case chrome::FILE_WIDEVINE_CDM: ++ base::PathService::Get(base::DIR_HOME, &cur); ++ cur = cur.Append(FILE_PATH_LITERAL(".local/lib/libwidevinecdm.so")); ++ if (base::PathExists(cur)) { ++ break; ++ } + if (!GetComponentDirectory(&cur)) + return false; + cur = -- cgit v1.2.1