From 1931d6226d12382abfbff8bf5b91eda248f32b0b Mon Sep 17 00:00:00 2001 From: Kenny Ballou Date: Tue, 26 Mar 2019 22:06:32 -0600 Subject: Add chromium-73 patches Add patches from the debian project, refreshed from chromium-73. Do not need GCC-6 fixes, as we have updated to GCC-8. Signed-off-by: Kenny Ballou --- .../www-client/chromium-73.0.3683.75/alignof.patch | 17 ++ .../chromium-73.0.3683.75/as-needed.patch | 14 ++ .../chromedriver-revision.patch | 14 ++ .../chromium-73.0.3683.75/connection-message.patch | 15 ++ .../chromium-73.0.3683.75/empty-array.patch | 18 ++ .../chromium-73.0.3683.75/gpu-timeout.patch | 15 ++ .../chromium-73.0.3683.75/inspector.patch | 14 ++ .../www-client/chromium-73.0.3683.75/mojo.patch | 163 +++++++++++++ .../chromium-73.0.3683.75/namespace.patch | 68 ++++++ .../chromium-73.0.3683.75/ps-print.patch | 13 + .../chromium-73.0.3683.75/sequence-point.patch | 29 +++ .../www-client/chromium-73.0.3683.75/vaapi.patch | 265 +++++++++++++++++++++ .../chromium-73.0.3683.75/widevine-locations.patch | 18 ++ 13 files changed, 663 insertions(+) create mode 100644 patches/www-client/chromium-73.0.3683.75/alignof.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/as-needed.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/chromedriver-revision.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/connection-message.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/empty-array.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/gpu-timeout.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/inspector.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/mojo.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/namespace.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/ps-print.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/sequence-point.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/vaapi.patch create mode 100644 patches/www-client/chromium-73.0.3683.75/widevine-locations.patch diff --git a/patches/www-client/chromium-73.0.3683.75/alignof.patch b/patches/www-client/chromium-73.0.3683.75/alignof.patch new file mode 100644 index 0000000..e606cb2 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/alignof.patch @@ -0,0 +1,17 @@ +description: use __alignof__ since as of gcc8 alignof returns 4 != 8 bytes on i386 +origin: https://src.fedoraproject.org/cgit/rpms/chromium.git/tree/chromium-66.0.3359.170-gcc8-alignof.patch +author: Fedora chromium maintainers + +--- a/mojo/public/c/system/macros.h ++++ b/mojo/public/c/system/macros.h +@@ -27,9 +27,7 @@ + (sizeof(void*) == 4 ? 32 : 0) + + // Like the C++11 |alignof| operator. +-#if __cplusplus >= 201103L +-#define MOJO_ALIGNOF(type) alignof(type) +-#elif defined(__GNUC__) ++#if defined(__GNUC__) + #define MOJO_ALIGNOF(type) __alignof__(type) + #elif defined(_MSC_VER) + // The use of |sizeof| is to work around a bug in MSVC 2010 (see diff --git a/patches/www-client/chromium-73.0.3683.75/as-needed.patch b/patches/www-client/chromium-73.0.3683.75/as-needed.patch new file mode 100644 index 0000000..e1475d1 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/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 +@@ -397,7 +397,7 @@ config("compiler") { + if (!using_sanitizer) { + ldflags += [ + "-Wl,-z,defs", +- "-Wl,--as-needed", ++ "-Wl,--no-as-needed", + ] + } + } diff --git a/patches/www-client/chromium-73.0.3683.75/chromedriver-revision.patch b/patches/www-client/chromium-73.0.3683.75/chromedriver-revision.patch new file mode 100644 index 0000000..5919e8b --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/chromedriver-revision.patch @@ -0,0 +1,14 @@ +description: set chromedriver version as undefined +author: Michael Gilbert + +--- a/chrome/test/chromedriver/embed_version_in_cpp.py ++++ b/chrome/test/chromedriver/embed_version_in_cpp.py +@@ -39,7 +39,7 @@ def get_release_version(chrome_version_f + version_info.revision) + if not match: + # revision is not the expected format, probably not in a release branch. +- return None ++ return "undefined" + + # Result is based on Chrome version number, e.g., + # '70.0.3516.0 (26c10db8bff36a8b6fc073c0f38b1e9493cabb04)'. diff --git a/patches/www-client/chromium-73.0.3683.75/connection-message.patch b/patches/www-client/chromium-73.0.3683.75/connection-message.patch new file mode 100644 index 0000000..b5d69e2 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/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-73.0.3683.75/empty-array.patch b/patches/www-client/chromium-73.0.3683.75/empty-array.patch new file mode 100644 index 0000000..5a68026 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/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-73.0.3683.75/gpu-timeout.patch b/patches/www-client/chromium-73.0.3683.75/gpu-timeout.patch new file mode 100644 index 0000000..406bf01 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/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 +@@ -47,7 +47,7 @@ const int kGpuTimeout = 30000; + // hangs at context creation during startup. See https://crbug.com/918490. + 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-73.0.3683.75/inspector.patch b/patches/www-client/chromium-73.0.3683.75/inspector.patch new file mode 100644 index 0000000..e88932e --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/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-73.0.3683.75/mojo.patch b/patches/www-client/chromium-73.0.3683.75/mojo.patch new file mode 100644 index 0000000..d5943d3 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/mojo.patch @@ -0,0 +1,163 @@ +description: fix mojo layout test build error +author: Michael Gilbert + +--- a/mojo/public/tools/bindings/chromium_bindings_configuration.gni ++++ b/mojo/public/tools/bindings/chromium_bindings_configuration.gni +@@ -8,7 +8,6 @@ _typemap_imports = [ + "//chrome/common/importer/typemaps.gni", + "//chrome/common/media_router/mojo/typemaps.gni", + "//chrome/typemaps.gni", +- "//chromecast/common/mojom/typemaps.gni", + "//chromeos/typemaps.gni", + "//chromeos/components/multidevice/mojom/typemaps.gni", + "//chromeos/services/secure_channel/public/mojom/typemaps.gni", +--- a/content/shell/BUILD.gn ++++ b/content/shell/BUILD.gn +@@ -145,8 +145,6 @@ jumbo_static_library("content_shell_lib" + "browser/web_test/fake_bluetooth_chooser.h", + "browser/web_test/leak_detector.cc", + "browser/web_test/leak_detector.h", +- "browser/web_test/mojo_web_test_helper.cc", +- "browser/web_test/mojo_web_test_helper.h", + "browser/web_test/secondary_test_window_observer.cc", + "browser/web_test/secondary_test_window_observer.h", + "browser/web_test/test_info_extractor.cc", +@@ -288,7 +286,6 @@ jumbo_static_library("content_shell_lib" + "//content/public/common:service_names", + "//content/shell/test_runner:test_runner", + "//content/test:content_test_mojo_bindings", +- "//content/test:mojo_web_test_bindings", + "//content/test:test_support", + "//content/test:web_test_support", + "//device/bluetooth", +--- a/BUILD.gn ++++ b/BUILD.gn +@@ -971,7 +971,6 @@ if (!is_ios) { + ":layout_test_data_mojo_bindings", + ":layout_test_data_mojo_bindings_lite", + "//content/shell:content_shell", +- "//content/test:mojo_web_test_bindings_js_data_deps", + "//device/bluetooth/public/mojom:fake_bluetooth_interfaces_js_data_deps", + "//device/usb/public/mojom:mojom_js_data_deps", + "//device/vr/public/mojom:mojom_js_data_deps", +--- a/content/browser/service_manager/service_manager_context.cc ++++ b/content/browser/service_manager/service_manager_context.cc +@@ -85,8 +85,6 @@ + #include "services/service_manager/sandbox/sandbox_type.h" + #include "services/service_manager/service_manager.h" + #include "services/shape_detection/public/mojom/constants.mojom.h" +-#include "services/tracing/public/mojom/constants.mojom.h" +-#include "services/tracing/tracing_service.h" + #include "services/video_capture/public/mojom/constants.mojom.h" + #include "services/video_capture/service_impl.h" + #include "services/viz/public/interfaces/constants.mojom.h" +@@ -391,11 +389,6 @@ std::unique_ptr CreateTracingService( +- service_manager::mojom::ServiceRequest request) { +- return std::make_unique(std::move(request)); +-} +- + std::unique_ptr CreateMediaSessionService( + service_manager::mojom::ServiceRequest request) { + return std::make_unique( +@@ -587,11 +580,6 @@ ServiceManagerContext::ServiceManagerCon + base::BindRepeating(&CreateResourceCoordinatorService)); + + RegisterInProcessService(packaged_services_connection_.get(), +- tracing::mojom::kServiceName, +- service_manager_thread_task_runner_, +- base::BindRepeating(&CreateTracingService)); +- +- RegisterInProcessService(packaged_services_connection_.get(), + metrics::mojom::kMetricsServiceName, + service_manager_thread_task_runner_, + base::BindRepeating(&metrics::CreateMetricsService)); +--- a/content/browser/tracing/tracing_controller_impl.h ++++ b/content/browser/tracing/tracing_controller_impl.h +@@ -17,7 +17,6 @@ + #include "content/common/content_export.h" + #include "content/public/browser/tracing_controller.h" + #include "mojo/public/cpp/system/data_pipe_drainer.h" +-#include "services/tracing/public/mojom/tracing.mojom.h" + + namespace base { + +@@ -95,7 +94,6 @@ class TracingControllerImpl + + void CompleteFlush(); + +- tracing::mojom::CoordinatorPtr coordinator_; + std::vector> agents_; + std::unique_ptr delegate_; + std::unique_ptr trace_config_; +--- a/content/shell/browser/web_test/web_test_content_browser_client.cc ++++ b/content/shell/browser/web_test/web_test_content_browser_client.cc +@@ -27,7 +27,6 @@ + #include "content/shell/browser/shell_browser_context.h" + #include "content/shell/browser/web_test/blink_test_controller.h" + #include "content/shell/browser/web_test/fake_bluetooth_chooser.h" +-#include "content/shell/browser/web_test/mojo_web_test_helper.h" + #include "content/shell/browser/web_test/web_test_bluetooth_fake_adapter_setter_impl.h" + #include "content/shell/browser/web_test/web_test_browser_context.h" + #include "content/shell/browser/web_test/web_test_browser_main_parts.h" +@@ -47,11 +46,6 @@ namespace { + + WebTestContentBrowserClient* g_web_test_browser_client; + +-void BindWebTestHelper(mojom::MojoWebTestHelperRequest request, +- RenderFrameHost* render_frame_host) { +- MojoWebTestHelper::Create(std::move(request)); +-} +- + class TestOverlayWindow : public OverlayWindow { + public: + TestOverlayWindow() = default; +@@ -155,7 +149,6 @@ void WebTestContentBrowserClient::Expose + &WebTestContentBrowserClient::CreateFakeBluetoothChooser, + base::Unretained(this)), + ui_task_runner); +- registry->AddInterface(base::BindRepeating(&MojoWebTestHelper::Create)); + registry->AddInterface( + base::BindRepeating(&WebTestContentBrowserClient::BindClipboardHost, + base::Unretained(this)), +@@ -313,7 +306,6 @@ bool WebTestContentBrowserClient::CanIgn + void WebTestContentBrowserClient::ExposeInterfacesToFrame( + service_manager::BinderRegistryWithArgs* + registry) { +- registry->AddInterface(base::Bind(&BindWebTestHelper)); + } + + scoped_refptr WebTestContentBrowserClient::CreateLoginDelegate( +--- a/content/shell/browser/shell_content_browser_client.cc ++++ b/content/shell/browser/shell_content_browser_client.cc +@@ -47,7 +47,6 @@ + #include "content/shell/common/web_test/fake_bluetooth_chooser.mojom.h" + #include "content/shell/common/web_test/web_test_bluetooth_fake_adapter_setter.mojom.h" + #include "content/shell/common/web_test/web_test_switches.h" +-#include "content/test/data/mojo_web_test_helper_test.mojom.h" + #include "device/bluetooth/public/mojom/test/fake_bluetooth.mojom.h" + #include "media/mojo/buildflags.h" + #include "net/ssl/client_cert_identity.h" +@@ -161,7 +160,7 @@ const service_manager::Manifest& GetCont + .ExposeCapability( + "renderer", + service_manager::Manifest::InterfaceList< +- mojom::MojoWebTestHelper, mojom::FakeBluetoothChooser, ++ mojom::FakeBluetoothChooser, + mojom::WebTestBluetoothFakeAdapterSetter, + bluetooth::mojom::FakeBluetooth>()) + .RequireCapability(echo::mojom::kServiceName, "echo") +@@ -169,10 +168,6 @@ const service_manager::Manifest& GetCont + .RequireCapability(ws::mojom::kServiceName, "test") + .RequireCapability("test_ws", "test") + #endif +- .ExposeInterfaceFilterCapability_Deprecated( +- "navigation:frame", "renderer", +- service_manager::Manifest::InterfaceList< +- mojom::MojoWebTestHelper>()) + .Build() + }; + return *manifest; diff --git a/patches/www-client/chromium-73.0.3683.75/namespace.patch b/patches/www-client/chromium-73.0.3683.75/namespace.patch new file mode 100644 index 0000000..50b5ce0 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/namespace.patch @@ -0,0 +1,68 @@ +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_ +--- a/third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h ++++ b/third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h +@@ -12,14 +12,20 @@ + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + + // Conversion from CString to TraceValue so that trace arguments can be strings. ++namespace base { ++namespace trace_event { ++ + template <> +-struct base::trace_event::TraceValue::Helper { ++struct TraceValue::Helper { + static constexpr unsigned char kType = TRACE_VALUE_TYPE_COPY_STRING; + static inline void SetValue(TraceValue* v, const WTF::CString& value) { + v->as_string = value.data(); + } + }; + ++} // namespace trace_event ++} // namespace base ++ + namespace blink { + namespace trace_event { + +--- a/gin/v8_platform.cc ++++ b/gin/v8_platform.cc +@@ -268,10 +268,13 @@ base::LazyInstance::Leaky + + } // namespace gin + ++namespace base { ++namespace trace_event { ++ + // Allow std::unique_ptr to be a valid + // initialization value for trace macros. + template <> +-struct base::trace_event::TraceValue::Helper< ++struct TraceValue::Helper< + std::unique_ptr> { + static constexpr unsigned char kType = TRACE_VALUE_TYPE_CONVERTABLE; + static inline void SetValue( +@@ -284,6 +287,9 @@ struct base::trace_event::TraceValue::He + } + }; + ++} // namespace trace_event ++} // namespace base ++ + namespace gin { + + class V8Platform::TracingControllerImpl : public v8::TracingController { diff --git a/patches/www-client/chromium-73.0.3683.75/ps-print.patch b/patches/www-client/chromium-73.0.3683.75/ps-print.patch new file mode 100644 index 0000000..18c74d1 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/ps-print.patch @@ -0,0 +1,13 @@ +description: add postscript (ps) printing capability +author: Salvatore Bonaccorso + +--- a/chrome/browser/ui/libgtkui/print_dialog_gtk.cc ++++ b/chrome/browser/ui/libgtkui/print_dialog_gtk.cc +@@ -333,6 +333,7 @@ void PrintDialogGtk::ShowDialog( + // Since we only generate PDF, only show printers that support PDF. + // TODO(thestig) Add more capabilities to support? + GtkPrintCapabilities cap = static_cast( ++ GTK_PRINT_CAPABILITY_GENERATE_PS | + GTK_PRINT_CAPABILITY_GENERATE_PDF | + GTK_PRINT_CAPABILITY_PAGE_SET | + GTK_PRINT_CAPABILITY_COPIES | diff --git a/patches/www-client/chromium-73.0.3683.75/sequence-point.patch b/patches/www-client/chromium-73.0.3683.75/sequence-point.patch new file mode 100644 index 0000000..41c97bb --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/sequence-point.patch @@ -0,0 +1,29 @@ +description: fix undefined order in which expressions are evaluated (-Wsequence-point) +author: Michael Gilbert + +--- a/components/download/internal/common/download_item_impl.cc ++++ b/components/download/internal/common/download_item_impl.cc +@@ -593,7 +593,9 @@ void DownloadItemImpl::UpdateResumptionI + bytes_wasted_ = 0; + } + +- auto_resume_count_ = user_resume ? 0 : ++auto_resume_count_; ++ ++auto_resume_count_; ++ if (user_resume) ++ auto_resume_count_ = 0; + } + + void DownloadItemImpl::Cancel(bool user_cancel) { +--- a/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc ++++ b/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc +@@ -152,8 +152,8 @@ OpenTypeCapsSupport::FontFormat OpenType + hb_blob_get_length(mort_blob.get()); + bool has_gsub = hb_ot_layout_has_substitution(hb_face); + font_format_ = has_morx_or_mort&& !has_gsub +- ? font_format_ = FontFormat::kAat +- : font_format_ = FontFormat::kOpenType; ++ ? FontFormat::kAat ++ : FontFormat::kOpenType; + } + return font_format_; + } diff --git a/patches/www-client/chromium-73.0.3683.75/vaapi.patch b/patches/www-client/chromium-73.0.3683.75/vaapi.patch new file mode 100644 index 0000000..8754e19 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/vaapi.patch @@ -0,0 +1,265 @@ +description: build with hardware accelerated (vaapi) video support +author: Akarshan Biswas + +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1606,7 +1606,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) +@@ -2216,12 +2216,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)}, +@@ -4078,12 +4078,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 +@@ -3081,9 +3081,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"; +@@ -3091,6 +3091,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."; +@@ -3610,12 +3622,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 +@@ -1833,13 +1833,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[]; + +@@ -2161,9 +2170,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 +@@ -35,7 +35,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 +@@ -290,7 +290,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 +@@ -323,7 +323,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 +@@ -495,7 +495,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 +@@ -202,7 +203,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 +@@ -503,6 +503,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 = [ +@@ -573,6 +579,7 @@ if (is_chromeos || is_linux) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + +--- a/media/gpu/vaapi/vaapi_wrapper.cc ++++ b/media/gpu/vaapi/vaapi_wrapper.cc +@@ -1027,7 +1027,7 @@ scoped_refptr VaapiWrapper::C + } + va_attrib_extbuf.num_planes = num_planes; + +- std::vector fds(num_fds); ++ std::vector fds(num_fds); + for (size_t i = 0; i < num_fds; ++i) { + int dmabuf_fd = pixmap->GetDmaBufFd(i); + if (dmabuf_fd < 0) { diff --git a/patches/www-client/chromium-73.0.3683.75/widevine-locations.patch b/patches/www-client/chromium-73.0.3683.75/widevine-locations.patch new file mode 100644 index 0000000..5f144d4 --- /dev/null +++ b/patches/www-client/chromium-73.0.3683.75/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