Commit c88577c4 authored by Alex Denes's avatar Alex Denes 🔧 Committed by Kevin Daudt

testing/ungoogled-chromium: new aport

parent 9809eeca
Pipeline #74749 failed with stages
in 60 minutes and 57 seconds
This diff is collapsed.
--- third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h
+++ third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h
@@ -125,7 +125,7 @@
/* #undef HAVE_MALLCTL */
/* Define to 1 if you have the `mallinfo' function. */
-#define HAVE_MALLINFO 1
+// #define HAVE_MALLINFO 1
/* Define to 1 if you have the <malloc/malloc.h> header file. */
/* #undef HAVE_MALLOC_MALLOC_H */
From 54deb9811ca9bd2327def5c05ba6987b8c7a0897 Mon Sep 17 00:00:00 2001
From: Evangelos Foutras <evangelos@foutrelis.com>
Date: Tue, 29 Sep 2020 01:02:22 +0000
Subject: [PATCH] Check for enable-accelerated-video-decode on Linux
Video decoding was being accelerated on Linux even though the newly
added "enable-accelerated-video-decode" flag was not specified. The
chrome://gpu page was misleadingly showing this feature as disabled:
> Video Decode: Software only. Hardware acceleration disabled
This change adds a check for --enable-accelerated-video-decode when
considering if video decoding should be activated. (Only on Linux.)
Extra context: https://crbug.com/1097029#c18 (and also comment 20).
Bug: 1066176, 1097029
Change-Id: I534115f5f6ceed0ee3511fcf5c2d0f1dd04b9b7e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2431434
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811480}
---
content/renderer/render_thread_impl.cc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index f13c94ddab7..0352f127171 100644
--- content/renderer/render_thread_impl.cc
+++ content/renderer/render_thread_impl.cc
@@ -1121,7 +1121,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl::GetGpuFactories() {
kGpuStreamPriorityMedia);
const bool enable_video_accelerator =
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ cmd_line->HasSwitch(switches::kEnableAcceleratedVideoDecode) &&
+#else
!cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) &&
+#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
(gpu_channel_host->gpu_feature_info()
.status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE] ==
gpu::kGpuFeatureStatusEnabled);
#!/bin/sh
# Allow the user to override command-line flags, bug #357629.
# This is based on Debian's chromium-browser package, and is intended
# to be consistent with Debian.
for f in /etc/chromium/*.conf; do
[ -f ${f} ] && . "${f}"
done
# Prefer user defined CHROMIUM_USER_FLAGS (from env) over system
# default CHROMIUM_FLAGS (from /etc/chromium/default).
CHROMIUM_FLAGS=${CHROMIUM_USER_FLAGS:-"$CHROMIUM_FLAGS"}
# Let the wrapped binary know that it has been run through the wrapper
export CHROME_WRAPPER=$(readlink -f "$0")
PROGDIR=${CHROME_WRAPPER%/*}
case ":$PATH:" in
*:$PROGDIR:*)
# $PATH already contains $PROGDIR
;;
*)
# Append $PROGDIR to $PATH
export PATH="$PATH:$PROGDIR"
;;
esac
if [ $(id -u) -eq 0 ] && [ $(stat -c %u -L ${XDG_CONFIG_HOME:-${HOME}}) -eq 0 ]; then
# Running as root with HOME owned by root.
# Pass --user-data-dir to work around upstream failsafe.
CHROMIUM_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/chromium
${CHROMIUM_FLAGS}"
fi
# Set the .desktop file name
export CHROME_DESKTOP="chromium.desktop"
exec "$PROGDIR/chrome" --extra-plugin-dir=/usr/lib/nsbrowser/plugins ${CHROMIUM_FLAGS} "$@"
Reason: Fixes:
../../third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h:34:3: error: unknown type name 'size_t'; did you mean 'std::size_t'?
size_t stability_counter_;
^~~~~~
std::size_t
/usr/bin/../lib/gcc/x86_64-alpine-linux-musl/10.2.0/../../../../include/c++/10.2.0/x86_64-alpine-linux-musl/bits/c++config.h:260:26: note: 'std::size_t' declared here
typedef __SIZE_TYPE__ size_t;
^
1 error generated.
Upstream: No
--- third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h.orig 2020-08-23 12:43:09.289768089 +0200
+++ third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h 2020-08-23 12:43:39.386217911 +0200
@@ -12,6 +12,7 @@
#define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
#include <array>
+#include <stddef.h>
namespace webrtc {
--- chrome/browser/search/background/ntp_backgrounds.h.orig 2020-08-23 14:35:40.788447650 +0200
+++ chrome/browser/search/background/ntp_backgrounds.h 2020-08-23 14:36:16.414865836 +0200
@@ -6,6 +6,7 @@
#define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
#include <array>
+#include <stddef.h>
class GURL;
--- build/config/compiler/BUILD.gn
+++ build/config/compiler/BUILD.gn
@@ -752,8 +752,8 @@
}
} else if (current_cpu == "arm") {
if (is_clang && !is_android && !is_nacl) {
- cflags += [ "--target=arm-linux-gnueabihf" ]
- ldflags += [ "--target=arm-linux-gnueabihf" ]
+ cflags += [ "--target=armv7-alpine-linux-musleabihf" ]
+ ldflags += [ "--target=armv7-alpine-linux-musleabihf" ]
}
if (!is_nacl) {
cflags += [
@@ -766,8 +766,8 @@
}
} else if (current_cpu == "arm64") {
if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
- cflags += [ "--target=aarch64-linux-gnu" ]
- ldflags += [ "--target=aarch64-linux-gnu" ]
+ cflags += [ "--target=aarch64-alpine-linux-musl" ]
+ ldflags += [ "--target=aarch64-alpine-linux-musl" ]
}
} else if (current_cpu == "mipsel" && !is_nacl) {
ldflags += [ "-Wl,--hash-style=sysv" ]
@@ -777,8 +777,8 @@
cflags += [ "--target=mipsel-linux-android" ]
ldflags += [ "--target=mipsel-linux-android" ]
} else {
- cflags += [ "--target=mipsel-linux-gnu" ]
- ldflags += [ "--target=mipsel-linux-gnu" ]
+ cflags += [ "--target=mipsel-alpine-linux-musl" ]
+ ldflags += [ "--target=mipsel-alpine-linux-musl" ]
}
} else {
cflags += [ "-EL" ]
@@ -794,7 +794,7 @@
"-march=mipsel",
"-mcpu=mips32r6",
]
- } else {
+ } else {
cflags += [
"-mips32r6",
"-Wa,-mips32r6",
@@ -908,8 +908,8 @@
cflags += [ "--target=mips64el-linux-android" ]
ldflags += [ "--target=mips64el-linux-android" ]
} else {
- cflags += [ "--target=mips64el-linux-gnuabi64" ]
- ldflags += [ "--target=mips64el-linux-gnuabi64" ]
+ cflags += [ "--target=mips64el-alpine-linux-musl" ]
+ ldflags += [ "--target=mips64el-alpine-linux-musl" ]
}
} else {
cflags += [
@@ -967,8 +967,8 @@
ldflags += [ "-Wl,--hash-style=sysv" ]
if (custom_toolchain == "") {
if (is_clang) {
- cflags += [ "--target=mips64-linux-gnuabi64" ]
- ldflags += [ "--target=mips64-linux-gnuabi64" ]
+ cflags += [ "--target=mips64-alpine-linux-musl" ]
+ ldflags += [ "--target=mips64-alpine-linux-musl" ]
} else {
cflags += [
"-EB",
# Default settings for chromium. This file is sourced by /bin/sh from
# the chromium launcher.
# Options to pass to chromium.
#CHROMIUM_FLAGS=""
[Desktop Entry]
Name=Chromium
GenericName=Web Browser
Comment=Access the Internet
Exec=chromium-browser %U
Terminal=false
Icon=chromium
Type=Application
Categories=GTK;Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
--- chrome/browser/ui/views/accessibility/invert_bubble_view.cc.orig
+++ chrome/browser/ui/views/accessibility/invert_bubble_view.cc
@@ -47,7 +47,7 @@
// Tag value used to uniquely identify the "learn more" (?) button.
constexpr int kLearnMoreButton = 100;
-std::unique_ptr<views::View> CreateExtraView(views::ButtonListener* listener) {
+std::unique_ptr<views::View> CreateExtraViewInternal(views::ButtonListener* listener) {
auto learn_more = views::CreateVectorImageButtonWithNativeTheme(
listener, vector_icons::kHelpOutlineIcon);
learn_more->SetTooltipText(l10n_util::GetStringUTF16(IDS_LEARN_MORE));
@@ -85,7 +85,7 @@
browser_(browser) {
SetButtons(ui::DIALOG_BUTTON_OK);
SetButtonLabel(ui::DIALOG_BUTTON_OK, l10n_util::GetStringUTF16(IDS_DONE));
- SetExtraView(::CreateExtraView(this));
+ SetExtraView(::CreateExtraViewInternal(this));
set_margins(gfx::Insets());
chrome::RecordDialogCreation(chrome::DialogIdentifier::INVERT);
}
--- base/threading/platform_thread_linux.cc
+++ base/threading/platform_thread_linux.cc
@@ -186,7 +186,8 @@
size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) {
#if !defined(THREAD_SANITIZER)
- return 0;
+ // use 8mb like glibc to avoid running out of space
+ return (1 << 23);
#else
// ThreadSanitizer bloats the stack heavily. Evidence has been that the
// default stack size isn't enough for some browser tests.
--- chrome/app/shutdown_signal_handlers_posix.cc
+++ chrome/app/shutdown_signal_handlers_posix.cc
@@ -187,11 +187,19 @@
g_shutdown_pipe_read_fd = pipefd[0];
g_shutdown_pipe_write_fd = pipefd[1];
#if !defined(ADDRESS_SANITIZER)
+# if defined(__GLIBC__)
const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+# else
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
+# endif
#else
+# if defined(__GLIBC__)
// ASan instrumentation bloats the stack frames, so we need to increase the
// stack size to avoid hitting the guard page.
const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
+# else
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
+# endif
#endif
ShutdownDetector* detector = new ShutdownDetector(
g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
--- ./v8/src/base/cpu.cc.orig
+++ ./v8/src/base/cpu.cc
@@ -16,7 +16,7 @@
#if V8_OS_QNX
#include <sys/syspage.h> // cpuinfo
#endif
-#if V8_OS_LINUX && (V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64)
+#if V8_OS_LINUX && (V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64 || V8_HOST_ARCH_ARM)
#include <elf.h>
#endif
#if V8_OS_AIX
From 53478caee862624fc6d73516f8d64253854b146f Mon Sep 17 00:00:00 2001
From: Piotr Tworek <ptworek@vewd.com>
Date: Mon, 31 Aug 2020 21:03:58 +0000
Subject: [PATCH] Fix invalid "end" iterator usage in CookieMonster.
Commit 229623d76e8baf714c8569c9f4efc5de266cef8b has introduced the following
code in cookie_monster.cc.
// If this is the first cookie in |cookies_| with this key, increment the
// |num_keys_| counter.
bool different_prev =
inserted == cookies_.begin() || std::prev(inserted)->first != key;
bool different_next =
inserted == cookies_.end() || std::next(inserted)->first != key;
if (different_prev && different_next)
++num_keys_;
The "inserted" iterator is something that has been returned from
std::multimap::insert. At first glance it looks reasonable. The code
tries to determine if there are already similar elements with the same
key in the map. Unfortunately the expression calculating the value of
different_next can potentially use the end iterator to the map. The
"inserted == cookies_.end()" part of the expression will always evaluate
to false since the newly inserted element has to be in the map and
cookies_.end() points to the first element outside the map. If the
inserted happens to be the last element in the map the second part of
the expression will grab the end iterator by calling std::next(inserted)
and then will try to use it leading to invalid memory access.
Given the fact that cookies_ is a std::multimap we should not even need
to calculate the value of different_next. It should always be true.
"If the container has elements with equivalent key, inserts at the
upper bound of that range.(since C++11)"
See: https://en.cppreference.com/w/cpp/container/multimap/insert
Bug: 1120240
Change-Id: I8928c294ac4daf72349a2331b31b017c1d015da0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2368872
Reviewed-by: Maksim Orlovich <morlovich@chromium.org>
Commit-Queue: Piotr Tworek <ptworek@vewd.com>
Cr-Commit-Position: refs/heads/master@{#803260}
---
net/cookies/cookie_monster.cc | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc
index 265deed0e52..140b61a81dc 100644
--- net/cookies/cookie_monster.cc
+++ net/cookies/cookie_monster.cc
@@ -1151,9 +1151,14 @@ CookieMonster::CookieMap::iterator CookieMonster::InternalInsertCookie(
// |num_keys_| counter.
bool different_prev =
inserted == cookies_.begin() || std::prev(inserted)->first != key;
- bool different_next =
- inserted == cookies_.end() || std::next(inserted)->first != key;
- if (different_prev && different_next)
+ // According to std::multiqueue documentation:
+ // "If the container has elements with equivalent key, inserts at the upper
+ // bound of that range. (since C++11)"
+ // This means that "inserted" iterator either points to the last element in
+ // the map, or the element succeeding it has to have different key.
+ DCHECK(std::next(inserted) == cookies_.end() ||
+ std::next(inserted)->first != key);
+ if (different_prev)
++num_keys_;
return inserted;
@@ -1381,7 +1386,7 @@ void CookieMonster::InternalDeleteCookie(CookieMap::iterator it,
bool different_prev =
it == cookies_.begin() || std::prev(it)->first != it->first;
bool different_next =
- it == cookies_.end() || std::next(it)->first != it->first;
+ std::next(it) == cookies_.end() || std::next(it)->first != it->first;
if (different_prev && different_next)
--num_keys_;
--- ./third_party/zlib/BUILD.gn.orig
+++ ./third_party/zlib/BUILD.gn
@@ -21,7 +21,7 @@
!(is_win && !is_clang)) {
# TODO(richard.townsend@arm.com): Optimizations temporarily disabled for
# Windows on Arm MSVC builds, see http://crbug.com/v8/10012.
- if (arm_use_neon) {
+ if (arm_use_neon && is_clang) {
use_arm_neon_optimizations = true
}
}
--- ./v8/BUILD.gn
+++ ./v8/BUILD.gn
@@ -675,6 +675,14 @@
defines += [ "V8_TARGET_OS_WIN" ]
}
+ if (!is_win && !is_clang) {
+ # GCC 6 can optimize away pointer comparisons to null. This is
+ # problematic as V8 encodes Values through tagged pointers and comparisons
+ # with 0 are actually necessary in many cases. As a temporary Workaround
+ # we disable this optimization. See: https://crbug.com/v8/3782
+ cflags = [ "-fno-delete-null-pointer-checks" ]
+ }
+
# TODO(jochen): Support v8_enable_prof on Windows.
# TODO(jochen): Add support for compiling with simulators.
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKIyBQbGVhc2UgZG9udCB1c2UgdGhlc2Uga2V5cyBvdXRzaWRlIG9mIEFscGluZSBMaW51
eCBwcm9qZWN0ICMKIyBZb3UgY2FuIGNyZWF0ZSB5b3VyIG93biBhdDogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKIyBodHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2hv
dy10b3MvYXBpLWtleXMgICAgICAgICMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKX2dvb2dsZV9hcGlfa2V5PSJBSXphU3lDUkk0
RUdwRHVfQUFISThFMnllbmpWaFdRZHA0RzhpZ2MiCl9nb29nbGVfZGVmYXVsdF9jbGllbnRfaWQ9
IjQ5NzU1MDYyMjM2Ny11YnRrbWQzYjJwcDVndWxiYTVuNmhhNnNxNG4zNWVoai5hcHBzLmdvb2ds
ZXVzZXJjb250ZW50LmNvbSIKX2dvb2dsZV9kZWZhdWx0X2NsaWVudF9zZWNyZXQ9Ik5hQ1g4dElJ
QXBocmpzNTZuM1RwSHhfZSIKCg==
--- ./media/base/subsample_entry.h
+++ ./media/base/subsample_entry.h
@@ -9,6 +9,7 @@
#include <stdint.h>
#include <vector>
+#include <cstddef>
#include "media/base/media_export.h"
diff --git a/third_party/crashpad/crashpad/util/linux/ptracer.cc b/third_party/crashpad/crashpad/util/linux/ptracer.cc
index c6c9229..a5336b6 100644
--- ./third_party/crashpad/crashpad/util/linux/ptracer.cc
+++ ./third_party/crashpad/crashpad/util/linux/ptracer.cc
@@ -26,6 +26,7 @@
#if defined(ARCH_CPU_X86_FAMILY)
#include <asm/ldt.h>
+#include <asm/ptrace-abi.h>
#endif
namespace crashpad {
diff --git a/third_party/crashpad/crashpad/util/linux/thread_info.h b/third_party/crashpad/crashpad/util/linux/thread_info.h
index 5b55c24..08cec52 100644
--- ./third_party/crashpad/crashpad/util/linux/thread_info.h
+++ ./third_party/crashpad/crashpad/util/linux/thread_info.h
@@ -273,7 +273,7 @@ union FloatContext {
"Size mismatch");
#elif defined(ARCH_CPU_ARMEL)
static_assert(sizeof(f32_t::fpregs) == sizeof(user_fpregs), "Size mismatch");
-#if !defined(__GLIBC__)
+#if defined(OS_ANDROID)
static_assert(sizeof(f32_t::vfp) == sizeof(user_vfp), "Size mismatch");
#endif
#elif defined(ARCH_CPU_ARM64)
--- ./third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
+++ ./third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
@@ -490,7 +490,9 @@
siginfo.si_code = SI_USER;
siginfo.si_pid = getpid();
ucontext_t context;
+#if defined(__GLIBC__)
getcontext(&context);
+#endif
return HandleSignal(sig, &siginfo, &context);
}
@@ -675,9 +677,13 @@
sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
CrashContext context;
+#if defined(__GLIBC__)
int getcontext_result = getcontext(&context.context);
if (getcontext_result)
return false;
+#else
+ return false;
+#endif
#if defined(__i386__)
// In CPUFillFromUContext in minidumpwriter.cc the stack pointer is retrieved
--- ./third_party/lss/linux_syscall_support.h.orig
+++ ./third_party/lss/linux_syscall_support.h
@@ -139,12 +139,14 @@
*/
#pragma push_macro("stat64")
#pragma push_macro("fstat64")
+#pragma push_macro("fstatat64")
#pragma push_macro("lstat64")
#pragma push_macro("pread64")
#pragma push_macro("pwrite64")
#pragma push_macro("getdents64")
#undef stat64
#undef fstat64
+#undef fstatat64
#undef lstat64
#undef pread64
#undef pwrite64
@@ -1258,6 +1260,12 @@
#ifndef __NR_getrandom
#define __NR_getrandom 318
#endif
+
+#undef __NR_pread
+#define __NR_pread __NR_pread64
+#undef __NR_pwrite
+#define __NR_pwrite __NR_pwrite64
+
/* End of x86-64 definitions */
#elif defined(__mips__)
#if _MIPS_SIM == _MIPS_SIM_ABI32
@@ -4545,6 +4553,7 @@
* corresponding #pragma push_macro near the top of this file. */
#pragma pop_macro("stat64")
#pragma pop_macro("fstat64")
+#pragma pop_macro("fstatat64")
#pragma pop_macro("lstat64")
#pragma pop_macro("pread64")
#pragma pop_macro("pwrite64")
--- ./sandbox/linux/suid/process_util.h.orig
+++ ./sandbox/linux/suid/process_util.h
@@ -11,6 +11,14 @@
#include <stdbool.h>
#include <sys/types.h>
+// Some additional functions
+# define TEMP_FAILURE_RETRY(expression) \
+ (__extension__ \
+ ({ long int __result; \
+ do __result = (long int) (expression); \
+ while (__result == -1L && errno == EINTR); \
+ __result; }))
+
// This adjusts /proc/process/oom_score_adj so the Linux OOM killer
// will prefer certain process types over others. The range for the
// adjustment is [-1000, 1000], with [0, 1000] being user accessible.
--- ./sandbox/linux/seccomp-bpf/trap.cc.orig 2020-04-12 08:26:40.184159217 -0400
+++ ./sandbox/linux/seccomp-bpf/trap.cc 2020-04-12 08:46:16.737191222 -0400
@@ -174,7 +174,7 @@
// If the version of glibc doesn't include this information in
// siginfo_t (older than 2.17), we need to explicitly copy it
// into an arch_sigsys structure.
- memcpy(&sigsys, &info->_sifields, sizeof(sigsys));
+ memcpy(&sigsys, &info->__sifields, sizeof(sigsys));
#endif
#if defined(__mips__)
--- ./third_party/ffmpeg/libavutil/cpu.c.orig
+++ ./third_party/ffmpeg/libavutil/cpu.c
@@ -38,7 +38,6 @@
#include <sys/param.h>
#endif
#include <sys/types.h>
-#include <sys/sysctl.h>
#endif
#if HAVE_UNISTD_H
#include <unistd.h>
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc