M120 stage 7

This commit is contained in:
Alexander Frick 2024-01-22 15:21:54 -06:00
parent 99e2749d54
commit 4bd6d01eac
54 changed files with 645 additions and 668 deletions

View file

@ -1,6 +1,6 @@
BSD 3-Clause License BSD 3-Clause License
Copyright (c) 2021-2024, Alexander David Frick Copyright (c) 2021-2024, Alexander Frick
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met: modification, are permitted provided that the following conditions are met:

View file

@ -71,6 +71,10 @@ declare_args() {
# on-device decoding and bitstream passthrough as supported by device. # on-device decoding and bitstream passthrough as supported by device.
enable_platform_ac3_eac3_audio = proprietary_codecs && is_cast_media_device enable_platform_ac3_eac3_audio = proprietary_codecs && is_cast_media_device
# Enables AC4 audio handling in chromium. This includes demuxing,
# on-device decoding and bitstream passthrough as supported by device.
enable_platform_ac4_audio = false
enable_platform_mpeg_h_audio = proprietary_codecs && is_cast_media_device enable_platform_mpeg_h_audio = proprietary_codecs && is_cast_media_device
# Enables DTS/DTSX audio handling in chromium. This includes demuxing, # Enables DTS/DTSX audio handling in chromium. This includes demuxing,
@ -150,6 +154,8 @@ assert(!enable_hls_demuxer || proprietary_codecs,
"proprietary_codecs required for enable_hls_demuxer") "proprietary_codecs required for enable_hls_demuxer")
assert(!enable_platform_ac3_eac3_audio || proprietary_codecs, assert(!enable_platform_ac3_eac3_audio || proprietary_codecs,
"proprietary_codecs required for enable_platform_ac3_eac3_audio") "proprietary_codecs required for enable_platform_ac3_eac3_audio")
assert(!enable_platform_ac4_audio || proprietary_codecs,
"proprietary_codecs required for enable_platform_ac4_audio")
assert(!enable_platform_mpeg_h_audio || proprietary_codecs, assert(!enable_platform_mpeg_h_audio || proprietary_codecs,
"proprietary_codecs required for enable_platform_mpeg_h_audio") "proprietary_codecs required for enable_platform_mpeg_h_audio")
assert(!enable_mse_mpeg2ts_stream_parser || proprietary_codecs, assert(!enable_mse_mpeg2ts_stream_parser || proprietary_codecs,
@ -228,7 +234,8 @@ declare_args() {
# Enables host verification for CDMs. # Enables host verification for CDMs.
# Windows and Mac. # Windows and Mac.
enable_cdm_host_verification = enable_cdm_host_verification =
enable_library_cdms && (is_mac || is_win) && is_chrome_branded enable_library_cdms && (is_mac || is_win) && is_chrome_branded &&
!is_chrome_for_testing_branded
# Enable Storage ID which is used by CDMs. This is only available with chrome # Enable Storage ID which is used by CDMs. This is only available with chrome
# branding, but may be overridden by other embedders. # branding, but may be overridden by other embedders.
@ -245,6 +252,10 @@ declare_args() {
assert(!enable_cdm_host_verification || is_mac || is_win, assert(!enable_cdm_host_verification || is_mac || is_win,
"CDM host verification is only supported on Mac and Windows.") "CDM host verification is only supported on Mac and Windows.")
# https://crbug.com/1475137#c37
assert(!is_chrome_for_testing_branded || !enable_cdm_host_verification,
"Chrome for Testing is incompatible with CDM Host Verification.")
# Default |mojo_media_services| and |mojo_media_host| on various platforms. See # Default |mojo_media_services| and |mojo_media_host| on various platforms. See
# comments below for valid values. Can be overridden by gn build arguments from # comments below for valid values. Can be overridden by gn build arguments from
# the --args command line flag. # the --args command line flag.
@ -258,6 +269,7 @@ if (is_cast_media_device) {
_default_mojo_media_services = [ _default_mojo_media_services = [
"cdm", "cdm",
"audio_decoder", "audio_decoder",
"audio_encoder",
"video_decoder", "video_decoder",
] ]
_default_mojo_media_host = "gpu" _default_mojo_media_host = "gpu"

View file

@ -1,4 +1,4 @@
// Copyright 2023 The Chromium Authors and Alex313031 // Copyright 2024 The Chromium Authors and Alex313031
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
@ -197,6 +197,7 @@ bool IsAudioCodecProprietary(AudioCodec codec) {
case AudioCodec::kDTS: case AudioCodec::kDTS:
case AudioCodec::kDTSXP2: case AudioCodec::kDTSXP2:
case AudioCodec::kDTSE: case AudioCodec::kDTSE:
case AudioCodec::kAC4:
return true; return true;
case AudioCodec::kFLAC: case AudioCodec::kFLAC:
@ -266,8 +267,8 @@ bool IsAV1Supported(const VideoType& type) {
} }
bool IsMPEG4Supported() { bool IsMPEG4Supported() {
#if BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(USE_PROPRIETARY_CODECS)
return true; return base::FeatureList::IsEnabled(kCrOSLegacyMediaFormats);
#else #else
return false; return false;
#endif #endif
@ -324,9 +325,10 @@ bool IsDefaultSupportedVideoType(const VideoType& type) {
#endif #endif
switch (type.codec) { switch (type.codec) {
case VideoCodec::kTheora:
return IsBuiltInVideoCodec(type.codec);
case VideoCodec::kH264: case VideoCodec::kH264:
case VideoCodec::kVP8: case VideoCodec::kVP8:
case VideoCodec::kTheora:
return true; return true;
case VideoCodec::kAV1: case VideoCodec::kAV1:
return IsAV1Supported(type); return IsAV1Supported(type);
@ -372,6 +374,7 @@ bool IsDefaultSupportedAudioType(const AudioType& type) {
case AudioCodec::kGSM_MS: case AudioCodec::kGSM_MS:
case AudioCodec::kALAC: case AudioCodec::kALAC:
case AudioCodec::kMpegHAudio: case AudioCodec::kMpegHAudio:
case AudioCodec::kAC4:
case AudioCodec::kUnknown: case AudioCodec::kUnknown:
return false; return false;
case AudioCodec::kDTS: case AudioCodec::kDTS:
@ -395,7 +398,7 @@ bool IsDefaultSupportedAudioType(const AudioType& type) {
bool IsBuiltInVideoCodec(VideoCodec codec) { bool IsBuiltInVideoCodec(VideoCodec codec) {
#if BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS) #if BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
if (codec == VideoCodec::kTheora) if (codec == VideoCodec::kTheora)
return true; return base::FeatureList::IsEnabled(kTheoraVideoCodec);
if (codec == VideoCodec::kVP8) if (codec == VideoCodec::kVP8)
return true; return true;
#if BUILDFLAG(USE_PROPRIETARY_CODECS) #if BUILDFLAG(USE_PROPRIETARY_CODECS)

View file

@ -421,10 +421,10 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
} }
#endif #endif
// Verify that AudioConfig.bits_per_channel was calculated correctly for // Verify that AudioConfig.bytes_per_channel was calculated correctly for
// codecs that have |sample_fmt| set by FFmpeg. // codecs that have |sample_fmt| set by FFmpeg.
DCHECK_EQ(av_get_bytes_per_sample(codec_context->sample_fmt) * 8, DCHECK_EQ(av_get_bytes_per_sample(codec_context->sample_fmt),
config->bits_per_channel()); config->bytes_per_channel());
return true; return true;
} }

View file

@ -1,4 +1,4 @@
# Copyright (c) 2023 Alex313031 and Iridium # Copyright (c) 2024 Alex313031 and Iridium
# Shows the output of a given command only on failure, or when VERBOSE is set. # Shows the output of a given command only on failure, or when VERBOSE is set.
log_cmd() { log_cmd() {
if [ "${VERBOSE:-}" ]; then if [ "${VERBOSE:-}" ]; then

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2022 Google Inc and Alex313031. All rights reserved. # Copyright (c) 2024 Google Inc and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

224
depot_tools/win_toolchain/package_from_installed.py Normal file → Executable file
View file

@ -1,8 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Copyright 2023 The Chromium Authors and Alex313031. All rights reserved. # Copyright 2024 The Chromium Authors and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
""" """
From a system-installed copy of the toolchain, packages all the required bits From a system-installed copy of the toolchain, packages all the required bits
into a .zip file. into a .zip file.
@ -31,8 +30,6 @@ useful as the resulting zip can't be redistributed, and most will presumably
have a Pro license anyway). have a Pro license anyway).
""" """
from __future__ import print_function
import collections import collections
import glob import glob
import json import json
@ -47,7 +44,6 @@ import zipfile
import get_toolchain_if_necessary import get_toolchain_if_necessary
_vs_version = None _vs_version = None
_win_version = None _win_version = None
_vc_tools = None _vc_tools = None
@ -78,10 +74,12 @@ def GetVSPath():
matching_vs_path = vs_path matching_vs_path = vs_path
if vs_installs_count == 0: if vs_installs_count == 0:
raise Exception('VS %s path not found in vswhere output' % (_vs_version)) raise Exception('VS %s path not found in vswhere output' %
(_vs_version))
if vs_installs_count > 1: if vs_installs_count > 1:
if not _allow_multiple_vs_installs: if not _allow_multiple_vs_installs:
raise Exception('Multiple VS installs detected. This is unsupported. ' raise Exception(
'Multiple VS installs detected. This is unsupported. '
'It is recommended that packaging be done on a clean VM ' 'It is recommended that packaging be done on a clean VM '
'with just one version installed. To proceed anyway add ' 'with just one version installed. To proceed anyway add '
'the --allow_multiple_vs_installs flag to this script') 'the --allow_multiple_vs_installs flag to this script')
@ -96,7 +94,8 @@ def ExpandWildcards(root, sub_dir):
path = os.path.normpath(os.path.join(root, sub_dir)) path = os.path.normpath(os.path.join(root, sub_dir))
matches = glob.glob(path) matches = glob.glob(path)
if len(matches) != 1: if len(matches) != 1:
raise Exception('%s had %d matches - should be one' % (path, len(matches))) raise Exception('%s had %d matches - should be one' %
(path, len(matches)))
return matches[0] return matches[0]
@ -164,7 +163,8 @@ def BuildFileList(override_dir, include_arm, vs_path):
if include_arm: if include_arm:
paths += [ paths += [
('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'sysarm64'), ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'sysarm64'),
('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'VC/bin/amd64_arm64'), ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT',
'VC/bin/amd64_arm64'),
('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'VC/bin/arm64'), ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'VC/bin/arm64'),
('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT',
'Windows Kits/10/bin/arm64'), 'Windows Kits/10/bin/arm64'),
@ -185,20 +185,22 @@ def BuildFileList(override_dir, include_arm, vs_path):
# vctip.exe doesn't shutdown, leaving locks on directories. It's # vctip.exe doesn't shutdown, leaving locks on directories. It's
# optional so let's avoid this problem by not packaging it. # optional so let's avoid this problem by not packaging it.
# https://crbug.com/735226 # https://crbug.com/735226
if f.lower() =='vctip.exe': if f.lower() == 'vctip.exe':
continue continue
final_from = os.path.normpath(os.path.join(root, f)) final_from = os.path.normpath(os.path.join(root, f))
if isinstance(path, tuple): if isinstance(path, tuple):
assert final_from.startswith(combined) assert final_from.startswith(combined)
dest = final_from[len(combined) + 1:] dest = final_from[len(combined) + 1:]
result.append( result.append((final_from,
(final_from, os.path.normpath(os.path.join(path[1], dest)))) os.path.normpath(os.path.join(path[1],
dest))))
else: else:
assert final_from.startswith(vs_path) assert final_from.startswith(vs_path)
dest = final_from[len(vs_path) + 1:] dest = final_from[len(vs_path) + 1:]
result.append((final_from, dest)) result.append((final_from, dest))
command = (r'reg query "HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots"' command = (
r'reg query "HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots"'
r' /v KitsRoot10') r' /v KitsRoot10')
marker = " KitsRoot10 REG_SZ " marker = " KitsRoot10 REG_SZ "
sdk_path = None sdk_path = None
@ -218,25 +220,28 @@ def BuildFileList(override_dir, include_arm, vs_path):
for root, _, files in os.walk(sdk_path): for root, _, files in os.walk(sdk_path):
for f in files: for f in files:
combined = os.path.normpath(os.path.join(root, f)) combined = os.path.normpath(os.path.join(root, f))
# Some of the files in this directory are exceedingly long (and exceed # Some of the files in this directory are exceedingly long (and
# _MAX_PATH for any moderately long root), so exclude them. We don't need # exceed _MAX_PATH for any moderately long root), so exclude them.
# them anyway. Exclude/filter/skip others just to save space. # We don't need them anyway. Exclude/filter/skip others just to save
# space.
tail = combined[len(sdk_path) + 1:] tail = combined[len(sdk_path) + 1:]
skip_dir = False skip_dir = False
for dir in ['References\\', 'Windows Performance Toolkit\\', 'Testing\\', for dir in [
'App Certification Kit\\', 'Extension SDKs\\', 'References\\', 'Windows Performance Toolkit\\',
'Assessment and Deployment Kit\\']: 'Testing\\', 'App Certification Kit\\', 'Extension SDKs\\',
'Assessment and Deployment Kit\\'
]:
if tail.startswith(dir): if tail.startswith(dir):
skip_dir = True skip_dir = True
if skip_dir: if skip_dir:
continue continue
# There may be many Include\Lib\Source\bin directories for many different # There may be many Include\Lib\Source\bin directories for many
# versions of Windows and packaging them all wastes ~450 MB # different versions of Windows and packaging them all wastes ~450
# (uncompressed) per version and wastes time. Only copy the specified # MB (uncompressed) per version and wastes time. Only copy the
# version. Note that the SDK version number started being part of the bin # specified version. Note that the SDK version number started being
# path with 10.0.15063.0. # part of the bin path with 10.0.15063.0.
if (tail.startswith('Include\\') or tail.startswith('Lib\\') or if (tail.startswith('Include\\') or tail.startswith('Lib\\')
tail.startswith('Source\\') or tail.startswith('bin\\')): or tail.startswith('Source\\') or tail.startswith('bin\\')):
if tail.count(_win_version) == 0: if tail.count(_win_version) == 0:
continue continue
to = os.path.join('Windows Kits', '10', tail) to = os.path.join('Windows Kits', '10', tail)
@ -249,10 +254,10 @@ def BuildFileList(override_dir, include_arm, vs_path):
if not os.path.exists(ucrt_dir): if not os.path.exists(ucrt_dir):
ucrt_dir = os.path.join(sdk_path, r'redist\ucrt\dlls\x86') ucrt_dir = os.path.join(sdk_path, r'redist\ucrt\dlls\x86')
ucrt_paths = glob.glob(ucrt_dir + r'\*') ucrt_paths = glob.glob(ucrt_dir + r'\*')
assert(len(ucrt_paths) > 0) assert (len(ucrt_paths) > 0)
for ucrt_path in ucrt_paths: for ucrt_path in ucrt_paths:
ucrt_file = os.path.split(ucrt_path)[1] ucrt_file = os.path.split(ucrt_path)[1]
for dest_dir in [ r'Windows Kits\10\bin\x86', 'sys32' ]: for dest_dir in [r'Windows Kits\10\bin\x86', 'sys32']:
result.append((ucrt_path, os.path.join(dest_dir, ucrt_file))) result.append((ucrt_path, os.path.join(dest_dir, ucrt_file)))
# Copy the x64 ucrt DLLs to all directories with x64 binaries that are # Copy the x64 ucrt DLLs to all directories with x64 binaries that are
@ -261,11 +266,13 @@ def BuildFileList(override_dir, include_arm, vs_path):
if not os.path.exists(ucrt_dir): if not os.path.exists(ucrt_dir):
ucrt_dir = os.path.join(sdk_path, r'redist\ucrt\dlls\x64') ucrt_dir = os.path.join(sdk_path, r'redist\ucrt\dlls\x64')
ucrt_paths = glob.glob(ucrt_dir + r'\*') ucrt_paths = glob.glob(ucrt_dir + r'\*')
assert(len(ucrt_paths) > 0) assert (len(ucrt_paths) > 0)
for ucrt_path in ucrt_paths: for ucrt_path in ucrt_paths:
ucrt_file = os.path.split(ucrt_path)[1] ucrt_file = os.path.split(ucrt_path)[1]
for dest_dir in [ r'VC\bin\amd64_x86', r'VC\bin\amd64', for dest_dir in [
r'Windows Kits\10\bin\x64', 'sys64']: r'VC\bin\amd64_x86', r'VC\bin\amd64',
r'Windows Kits\10\bin\x64', 'sys64'
]:
result.append((ucrt_path, os.path.join(dest_dir, ucrt_file))) result.append((ucrt_path, os.path.join(dest_dir, ucrt_file)))
system_crt_files = [ system_crt_files = [
@ -283,7 +290,8 @@ def BuildFileList(override_dir, include_arm, vs_path):
for system_crt_file in system_crt_files: for system_crt_file in system_crt_files:
for cpu_pair in cpu_pairs: for cpu_pair in cpu_pairs:
target_cpu, dest_dir = cpu_pair target_cpu, dest_dir = cpu_pair
src_path = os.path.join(sdk_path, 'bin', _win_version, target_cpu, 'ucrt') src_path = os.path.join(sdk_path, 'bin', _win_version, target_cpu,
'ucrt')
result.append((os.path.join(src_path, system_crt_file), result.append((os.path.join(src_path, system_crt_file),
os.path.join(dest_dir, system_crt_file))) os.path.join(dest_dir, system_crt_file)))
@ -291,13 +299,14 @@ def BuildFileList(override_dir, include_arm, vs_path):
# drop .msi files because we don't need installers and drop # drop .msi files because we don't need installers and drop
# samples since those are not used by any tools. # samples since those are not used by any tools.
def is_skippable(f): def is_skippable(f):
return ('arm\\' in f.lower() or return ('arm\\' in f.lower()
(not include_arm and 'arm64\\' in f.lower()) or or (not include_arm and 'arm64\\' in f.lower())
'samples\\' in f.lower() or or 'samples\\' in f.lower() or f.lower().endswith(
f.lower().endswith(('.msi', ('.msi', '.msm')))
'.msm')))
return [(f, t) for f, t in result if not is_skippable(f)] return [(f, t) for f, t in result if not is_skippable(f)]
def GenerateSetEnvCmd(target_dir): def GenerateSetEnvCmd(target_dir):
"""Generate a batch file that gyp expects to exist to set up the compiler """Generate a batch file that gyp expects to exist to set up the compiler
environment. environment.
@ -323,8 +332,8 @@ def GenerateSetEnvCmd(target_dir):
] ]
# Common to x86, x64, and arm64 # Common to x86, x64, and arm64
env = collections.OrderedDict([ env = collections.OrderedDict([
# Yuck: These have a trailing \ character. No good way to represent this in # Yuck: These have a trailing \ character. No good way to represent this
# an OS-independent way. # in an OS-independent way.
('VSINSTALLDIR', [['.\\']]), ('VSINSTALLDIR', [['.\\']]),
('VCINSTALLDIR', [['VC\\']]), ('VCINSTALLDIR', [['VC\\']]),
('INCLUDE', include_dirs), ('INCLUDE', include_dirs),
@ -340,8 +349,8 @@ def GenerateSetEnvCmd(target_dir):
[ [
['Windows Kits', '10', 'bin', _win_version, 'x64'], ['Windows Kits', '10', 'bin', _win_version, 'x64'],
vc_tools_parts + ['bin', 'HostX64', 'x86'], vc_tools_parts + ['bin', 'HostX64', 'x86'],
vc_tools_parts + ['bin', 'HostX64', 'x64' vc_tools_parts +
], # Needed for mspdb1x0.dll. ['bin', 'HostX64', 'x64'], # Needed for mspdb1x0.dll.
]), ]),
('LIB', [ ('LIB', [
vc_tools_parts + ['lib', 'x86'], vc_tools_parts + ['lib', 'x86'],
@ -382,11 +391,12 @@ def GenerateSetEnvCmd(target_dir):
def BatDirs(dirs): def BatDirs(dirs):
return ';'.join(['%cd%\\' + os.path.join(*d) for d in dirs]) return ';'.join(['%cd%\\' + os.path.join(*d) for d in dirs])
set_env_prefix = os.path.join(target_dir, r'Windows Kits\10\bin\SetEnv') set_env_prefix = os.path.join(target_dir, r'Windows Kits\10\bin\SetEnv')
with open(set_env_prefix + '.cmd', 'w') as f: with open(set_env_prefix + '.cmd', 'w') as f:
# The prologue changes the current directory to the root of the toolchain # The prologue changes the current directory to the root of the
# package, so that path entries can be set up without needing ..\..\..\ # toolchain package, so that path entries can be set up without needing
# components. # ..\..\..\ components.
f.write('@echo off\n' f.write('@echo off\n'
':: Generated by win_toolchain\\package_from_installed.py.\n' ':: Generated by win_toolchain\\package_from_installed.py.\n'
'pushd %~dp0..\..\..\n') 'pushd %~dp0..\..\..\n')
@ -396,36 +406,48 @@ def GenerateSetEnvCmd(target_dir):
f.write('if "%1"=="/arm64" goto arm64\n') f.write('if "%1"=="/arm64" goto arm64\n')
for var, dirs in env_x86.items(): for var, dirs in env_x86.items():
f.write('set %s=%s%s\n' % ( f.write('set %s=%s%s\n' %
var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else '')) (var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else ''))
f.write('goto :END\n') f.write('goto :END\n')
f.write(':x64\n') f.write(':x64\n')
for var, dirs in env_x64.items(): for var, dirs in env_x64.items():
f.write('set %s=%s%s\n' % ( f.write('set %s=%s%s\n' %
var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else '')) (var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else ''))
f.write('goto :END\n') f.write('goto :END\n')
f.write(':arm64\n') f.write(':arm64\n')
for var, dirs in env_arm64.items(): for var, dirs in env_arm64.items():
f.write('set %s=%s%s\n' % ( f.write('set %s=%s%s\n' %
var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else '')) (var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else ''))
f.write('goto :END\n') f.write('goto :END\n')
f.write(':END\n') f.write(':END\n')
# Restore the original directory. # Restore the original directory.
f.write('popd\n') f.write('popd\n')
with open(set_env_prefix + '.x86.json', 'wt', newline='') as f: with open(set_env_prefix + '.x86.json', 'wt', newline='') as f:
assert not set(env.keys()) & set(env_x86.keys()), 'dupe keys' assert not set(env.keys()) & set(env_x86.keys()), 'dupe keys'
json.dump({'env': collections.OrderedDict(list(env.items()) + list(env_x86.items()))}, json.dump(
f) {
'env':
collections.OrderedDict(
list(env.items()) + list(env_x86.items()))
}, f)
with open(set_env_prefix + '.x64.json', 'wt', newline='') as f: with open(set_env_prefix + '.x64.json', 'wt', newline='') as f:
assert not set(env.keys()) & set(env_x64.keys()), 'dupe keys' assert not set(env.keys()) & set(env_x64.keys()), 'dupe keys'
json.dump({'env': collections.OrderedDict(list(env.items()) + list(env_x64.items()))}, json.dump(
f) {
'env':
collections.OrderedDict(
list(env.items()) + list(env_x64.items()))
}, f)
with open(set_env_prefix + '.arm64.json', 'wt', newline='') as f: with open(set_env_prefix + '.arm64.json', 'wt', newline='') as f:
assert not set(env.keys()) & set(env_arm64.keys()), 'dupe keys' assert not set(env.keys()) & set(env_arm64.keys()), 'dupe keys'
json.dump({'env': collections.OrderedDict(list(env.items()) + list(env_arm64.items()))}, json.dump(
f) {
'env':
collections.OrderedDict(
list(env.items()) + list(env_arm64.items()))
}, f)
def AddEnvSetup(files, include_arm): def AddEnvSetup(files, include_arm):
@ -434,18 +456,18 @@ def AddEnvSetup(files, include_arm):
tempdir = tempfile.mkdtemp() tempdir = tempfile.mkdtemp()
os.makedirs(os.path.join(tempdir, 'Windows Kits', '10', 'bin')) os.makedirs(os.path.join(tempdir, 'Windows Kits', '10', 'bin'))
GenerateSetEnvCmd(tempdir) GenerateSetEnvCmd(tempdir)
files.append(( files.append(
os.path.join(tempdir, 'Windows Kits', '10', 'bin', 'SetEnv.cmd'), (os.path.join(tempdir, 'Windows Kits', '10', 'bin',
'Windows Kits\\10\\bin\\SetEnv.cmd')) 'SetEnv.cmd'), 'Windows Kits\\10\\bin\\SetEnv.cmd'))
files.append(( files.append((os.path.join(tempdir, 'Windows Kits', '10', 'bin',
os.path.join(tempdir, 'Windows Kits', '10', 'bin', 'SetEnv.x86.json'), 'SetEnv.x86.json'),
'Windows Kits\\10\\bin\\SetEnv.x86.json')) 'Windows Kits\\10\\bin\\SetEnv.x86.json'))
files.append(( files.append((os.path.join(tempdir, 'Windows Kits', '10', 'bin',
os.path.join(tempdir, 'Windows Kits', '10', 'bin', 'SetEnv.x64.json'), 'SetEnv.x64.json'),
'Windows Kits\\10\\bin\\SetEnv.x64.json')) 'Windows Kits\\10\\bin\\SetEnv.x64.json'))
if include_arm: if include_arm:
files.append(( files.append((os.path.join(tempdir, 'Windows Kits', '10', 'bin',
os.path.join(tempdir, 'Windows Kits', '10', 'bin', 'SetEnv.arm64.json'), 'SetEnv.arm64.json'),
'Windows Kits\\10\\bin\\SetEnv.arm64.json')) 'Windows Kits\\10\\bin\\SetEnv.arm64.json'))
vs_version_file = os.path.join(tempdir, 'VS_VERSION') vs_version_file = os.path.join(tempdir, 'VS_VERSION')
with open(vs_version_file, 'wt', newline='') as version: with open(vs_version_file, 'wt', newline='') as version:
@ -461,8 +483,8 @@ def RenameToSha1(output):
old_dir = os.getcwd() old_dir = os.getcwd()
os.chdir(tempdir) os.chdir(tempdir)
rel_dir = 'vs_files' rel_dir = 'vs_files'
with zipfile.ZipFile( with zipfile.ZipFile(os.path.join(old_dir, output), 'r',
os.path.join(old_dir, output), 'r', zipfile.ZIP_DEFLATED, True) as zf: zipfile.ZIP_DEFLATED, True) as zf:
zf.extractall(rel_dir) zf.extractall(rel_dir)
print('Hashing...') print('Hashing...')
sha1 = get_toolchain_if_necessary.CalculateHash(rel_dir, None) sha1 = get_toolchain_if_necessary.CalculateHash(rel_dir, None)
@ -483,23 +505,41 @@ def main():
sys.exit(10) sys.exit(10)
usage = 'usage: %prog [options] 2019|2022' usage = 'usage: %prog [options] 2019|2022'
parser = optparse.OptionParser(usage) parser = optparse.OptionParser(usage)
parser.add_option('-w', '--winver', action='store', type='string', parser.add_option('-w',
dest='winver', default='10.0.22621.0', '--winver',
action='store',
type='string',
dest='winver',
default='10.0.22621.0',
help='Windows SDK version, such as 10.0.22621.0') help='Windows SDK version, such as 10.0.22621.0')
parser.add_option('-d', '--dryrun', action='store_true', dest='dryrun', parser.add_option('-d',
'--dryrun',
action='store_true',
dest='dryrun',
default=False, default=False,
help='scan for file existence and prints statistics') help='scan for file existence and prints statistics')
parser.add_option('--noarm', action='store_false', dest='arm', parser.add_option('--noarm',
action='store_false',
dest='arm',
default=True, default=True,
help='Avoids arm parts of the SDK') help='Avoids arm parts of the SDK')
parser.add_option('--override', action='store', type='string', parser.add_option('--override',
dest='override_dir', default=None, action='store',
type='string',
dest='override_dir',
default=None,
help='Specify alternate bin/include/lib directory') help='Specify alternate bin/include/lib directory')
parser.add_option('--repackage', action='store', type='string', parser.add_option(
dest='repackage_dir', default=None, '--repackage',
action='store',
type='string',
dest='repackage_dir',
default=None,
help='Specify raw directory to be packaged, for hot fixes.') help='Specify raw directory to be packaged, for hot fixes.')
parser.add_option('--allow_multiple_vs_installs', action='store_true', parser.add_option('--allow_multiple_vs_installs',
default=False, dest='allow_multiple_vs_installs', action='store_true',
default=False,
dest='allow_multiple_vs_installs',
help='Specify if multiple VS installs are allowed.') help='Specify if multiple VS installs are allowed.')
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
@ -508,14 +548,18 @@ def main():
else: else:
if len(args) != 1 or args[0] not in SUPPORTED_VS_VERSIONS: if len(args) != 1 or args[0] not in SUPPORTED_VS_VERSIONS:
print('Must specify 2019 or 2022') print('Must specify 2019 or 2022')
parser.print_help(); parser.print_help()
return 1 return 1
if options.override_dir: if options.override_dir:
if (not os.path.exists(os.path.join(options.override_dir, 'bin')) or if (not os.path.exists(os.path.join(options.override_dir, 'bin'))
not os.path.exists(os.path.join(options.override_dir, 'include')) or or not os.path.exists(
not os.path.exists(os.path.join(options.override_dir, 'lib'))): os.path.join(options.override_dir, 'include'))
print('Invalid override directory - must contain bin/include/lib dirs') or not os.path.exists(
os.path.join(options.override_dir, 'lib'))):
print(
'Invalid override directory - must contain bin/include/lib dirs'
)
return 1 return 1
global _vs_version global _vs_version
@ -527,10 +571,12 @@ def main():
_allow_multiple_vs_installs = options.allow_multiple_vs_installs _allow_multiple_vs_installs = options.allow_multiple_vs_installs
vs_path = GetVSPath() vs_path = GetVSPath()
temp_tools_path = ExpandWildcards(vs_path, 'VC/Tools/MSVC/14.*.*') temp_tools_path = ExpandWildcards(vs_path, 'VC/Tools/MSVC/14.*.*')
# Strip off the leading vs_path characters and switch back to / separators. # Strip off the leading vs_path characters and switch back to /
# separators.
_vc_tools = temp_tools_path[len(vs_path) + 1:].replace('\\', '/') _vc_tools = temp_tools_path[len(vs_path) + 1:].replace('\\', '/')
print('Building file list for VS %s Windows %s...' % (_vs_version, _win_version)) print('Building file list for VS %s Windows %s...' %
(_vs_version, _win_version))
files = BuildFileList(options.override_dir, options.arm, vs_path) files = BuildFileList(options.override_dir, options.arm, vs_path)
AddEnvSetup(files, options.arm) AddEnvSetup(files, options.arm)
@ -549,7 +595,8 @@ def main():
missing_files = False missing_files = False
with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED, True) as zf: with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED, True) as zf:
for disk_name, archive_name in files: for disk_name, archive_name in files:
sys.stdout.write('\r%d/%d ...%s' % (count, len(files), disk_name[-40:])) sys.stdout.write('\r%d/%d ...%s' %
(count, len(files), disk_name[-40:]))
sys.stdout.flush() sys.stdout.flush()
count += 1 count += 1
if not options.repackage_dir and disk_name.count(_win_version) > 0: if not options.repackage_dir and disk_name.count(_win_version) > 0:
@ -562,15 +609,16 @@ def main():
missing_files = True missing_files = True
sys.stdout.write('\r%s does not exist.\n\n' % disk_name) sys.stdout.write('\r%s does not exist.\n\n' % disk_name)
sys.stdout.flush() sys.stdout.flush()
sys.stdout.write('\r%1.3f GB of data in %d files, %d files for %s.%s\n' % sys.stdout.write(
(total_size / 1e9, count, version_match_count, _win_version, ' '*50)) '\r%1.3f GB of data in %d files, %d files for %s.%s\n' %
(total_size / 1e9, count, version_match_count, _win_version, ' ' * 50))
if options.dryrun: if options.dryrun:
return 0 return 0
if missing_files: if missing_files:
raise Exception('One or more files were missing - aborting') raise Exception('One or more files were missing - aborting')
if not options.repackage_dir and version_match_count == 0: if not options.repackage_dir and version_match_count == 0:
raise Exception('No files found that match the specified winversion') raise Exception('No files found that match the specified winversion')
sys.stdout.write('\rWrote to %s.%s\n' % (output, ' '*50)) sys.stdout.write('\rWrote to %s.%s\n' % (output, ' ' * 50))
sys.stdout.flush() sys.stdout.flush()
RenameToSha1(output) RenameToSha1(output)

View file

@ -1,5 +1,5 @@
## These are instruction for cross building Thorium for Windows, on Linux. Preliminary file for @gz83, to be eventually migrated to a Wiki with building instructions for all paltforms. # These are instruction for cross building Thorium for Windows, on Linux. Preliminary file for @gz83, to be eventually migrated to a Wiki with building instructions for all paltforms.
## Copyright (c) 2022 Alex313031 ## Copyright (c) 2024 Alex313031
## In general, this document follows information from > https://chromium.googlesource.com/chromium/src.git/+/HEAD/docs/win_cross.md and https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md ## In general, this document follows information from > https://chromium.googlesource.com/chromium/src.git/+/HEAD/docs/win_cross.md and https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md

View file

@ -1,5 +1,5 @@
## These are instruction for building Thorium for Windows, natively on Windows. Preliminary file for @gz83, to be eventually migrated to a Wiki with building instructions for all paltforms. # These are instruction for building Thorium for Windows, natively on Windows. Preliminary file for @gz83, to be eventually migrated to a Wiki with building instructions for all paltforms.
## Copyright (c) 2022 Alex313031 ## Copyright (c) 2024 Alex313031
## Preparatory setup ## Preparatory setup
First, we need to install depot_tools and Visual Studio. depot_tools is a .zip that contains tools for all Google projects like Chromium, ChromiumOS, NaCl, V8, Infra, Android, Google Cloud, and Fuschia. First, we need to install depot_tools and Visual Studio. depot_tools is a .zip that contains tools for all Google projects like Chromium, ChromiumOS, NaCl, V8, Infra, Android, Google Cloud, and Fuschia.

View file

@ -1,4 +1,4 @@
# Copyright (c) 2023 Alex313031 # Copyright (c) 2024 Alex313031
# Official Thorium builds can be downloaded from https://github.com/Alex313031/thorium/releases # Official Thorium builds can be downloaded from https://github.com/Alex313031/thorium/releases
app: Thorium app: Thorium
appId: "org.chromium.Thorium" appId: "org.chromium.Thorium"

View file

@ -1,4 +1,4 @@
# Copyright (c) 2023 Alex313031, JPratama7, and StarterX4. # Copyright (c) 2024 Alex313031, JPratama7, and StarterX4.
# Maintainer: JPratama7 <josepratama080@gmail.com> # Maintainer: JPratama7 <josepratama080@gmail.com>
# Maintainer: Dominik Adrian Grzywak <starterx4 at gmail dot com> # Maintainer: Dominik Adrian Grzywak <starterx4 at gmail dot com>

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
# Export libs # Export libs
LD_LIBRARY_PATH="$(pwd)/lib" LD_LIBRARY_PATH="$(pwd)/lib"

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan CYA='\033[1;96m' # Cyan
@ -22,7 +22,6 @@ displayHelp () {
printf "${underline}Usage: ${c0}build_debug_linux.sh # (where # is number of jobs)\n" && printf "${underline}Usage: ${c0}build_debug_linux.sh # (where # is number of jobs)\n" &&
printf "\n" printf "\n"
} }
case $1 in case $1 in
--help) displayHelp; exit 0;; --help) displayHelp; exit 0;;
esac esac

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2023 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan CYA='\033[1;96m' # Cyan
@ -22,7 +22,6 @@ displayHelp () {
printf "${underline}Usage: ${c0}build_debug_shell.sh # (where # is number of jobs)\n" && printf "${underline}Usage: ${c0}build_debug_shell.sh # (where # is number of jobs)\n" &&
printf "\n" printf "\n"
} }
case $1 in case $1 in
--help) displayHelp; exit 0;; --help) displayHelp; exit 0;;
esac esac
@ -76,4 +75,3 @@ cp -r -f -v ~/chromium/src/out/thorium/ClearKeyCdm/_platform_specific/linux_x64/
printf "${GRE}Thorium UI Debug Shell Build Completed.\n" && printf "${GRE}Thorium UI Debug Shell Build Completed.\n" &&
tput sgr0 tput sgr0
exit 0

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan CYA='\033[1;96m' # Cyan
@ -22,7 +22,6 @@ displayHelp () {
printf "${underline}Usage: ${c0}build_debug_shell.sh # (where # is number of jobs)\n" && printf "${underline}Usage: ${c0}build_debug_shell.sh # (where # is number of jobs)\n" &&
printf "\n" printf "\n"
} }
case $1 in case $1 in
--help) displayHelp; exit 0;; --help) displayHelp; exit 0;;
esac esac

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan CYA='\033[1;96m' # Cyan
@ -22,7 +22,6 @@ displayHelp () {
printf "${underline}Usage: ${c0}build_debug_win.sh # (where # is number of jobs)\n" && printf "${underline}Usage: ${c0}build_debug_win.sh # (where # is number of jobs)\n" &&
printf "\n" printf "\n"
} }
case $1 in case $1 in
--help) displayHelp; exit 0;; --help) displayHelp; exit 0;;
esac esac

View file

@ -64,6 +64,8 @@
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:ui/base/x/x11_util.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">x11_util.cc - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:ui/base/x/x11_util.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">x11_util.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/_/chromium/v8/v8.git/+/6372efd0ead5d2da7296c9aa02c9bebce4ae7ff4:src/objects/js-display-names.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">js-display-names.cc - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/_/chromium/v8/v8.git/+/6372efd0ead5d2da7296c9aa02c9bebce4ae7ff4:src/objects/js-display-names.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">js-display-names.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:third_party/widevine/cdm/widevine_cdm_version.h;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">widevine_cdm_version.h - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:third_party/widevine/cdm/widevine_cdm_version.h;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">widevine_cdm_version.h - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:third_party/widevine/cdm/BUILD.gn;bpv=1;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">BUILD.gn - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:third_party/widevine/cdm/widevine.gni;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">widevine.gni - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/common/media/cdm_registration.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">cdm_registration.cc - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/common/media/cdm_registration.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">cdm_registration.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/browser/resources/components/components.css;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">components.css - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/browser/resources/components/components.css;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">components.css - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/browser/resources/downloads/images/incognito_marker.svg;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">incognito_marker.svg - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/browser/resources/downloads/images/incognito_marker.svg;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">incognito_marker.svg - Chromium Code Search</A>
@ -117,6 +119,7 @@
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/app/chrome_exe.vsprops;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">chrome_exe.vsprops - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/app/chrome_exe.vsprops;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">chrome_exe.vsprops - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/installer/util/util_constants.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">util_constants.cc - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/installer/util/util_constants.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">util_constants.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:content/shell/BUILD.gn;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">BUILD.gn - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:content/shell/BUILD.gn;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">BUILD.gn - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:content/shell/android/BUILD.gn;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">BUILD.gn - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:content/shell/app/shell_main_delegate.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">shell_main_delegate.cc - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:content/shell/app/shell_main_delegate.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">shell_main_delegate.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/common/channel_info_posix.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">channel_info_posix.cc - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/common/channel_info_posix.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">channel_info_posix.cc - Chromium Code Search</A>
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/browser/shell_integration_linux.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">shell_integration_linux.cc - Chromium Code Search</A> <DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.235:chrome/browser/shell_integration_linux.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">shell_integration_linux.cc - Chromium Code Search</A>

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
# Installs necessary prerequisites for building and running Chromium/ChromiumOS on Arch Linux. echo "Installs necessary prerequisites for building and running Chromium/ChromiumOS on Arch Linux."
sudo pacman -Syyuu --needed autoconf autoconf-archive automake base-devel beep bluez-libs cabextract cmake curl dkms dosfstools exfatprogs exo ffmpeg gcc git go gperf gtk2 gtk3 hwdata i2c-tools java-runtime-common java-runtime-headless kdialog libcbor libdrm libnet libpulse libsecret libudev0-shim libva libva-utils libva-vdpau-driver libwebp libxss lm_sensors lsb-release make man-db mesa-utils minizip mtools nano nasm ncurses nodejs nss ntfs-3g numlockx openjpeg2 opus org.freedesktop.secrets p7zip pciutils pipewire polkit python python-docutils python-oauth2client python-oauthlib python-pkgconfig python-pkginfo python-protobuf python-setuptools python-virtualenv qt5-base re2 read-edid tar libtar tk tree ttf-font ttf-liberation unrar unzip vulkan-extra-layers vulkan-headers vulkan-tools wget xdg-utils xsensors xz yasm zenity sudo pacman -Syyuu --needed autoconf autoconf-archive automake base-devel beep bluez-libs cabextract cmake curl dkms dosfstools exfatprogs exo ffmpeg gcc git go gperf gtk2 gtk3 hwdata i2c-tools java-runtime-common java-runtime-headless kdialog libcbor libdrm libnet libpulse libsecret libudev0-shim libva libva-utils libva-vdpau-driver libwebp libxss lm_sensors lsb-release make man-db mesa-utils minizip mtools nano nasm ncurses nodejs nss ntfs-3g numlockx openjpeg2 opus org.freedesktop.secrets p7zip pciutils pipewire polkit python python-docutils python-oauth2client python-oauthlib python-pkgconfig python-pkginfo python-protobuf python-setuptools python-virtualenv qt5-base re2 read-edid tar libtar tk tree ttf-font ttf-liberation unrar unzip vulkan-extra-layers vulkan-headers vulkan-tools wget xdg-utils xsensors xz yasm zenity

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2023 Alex313031 and Midzer. # Copyright (c) 2024 Alex313031 and Midzer.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan CYA='\033[1;96m' # Cyan

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2023 Alex313031. # Copyright (c) 2024 Alex313031.
# Simply uses wget to fetch Thorium API Keys. # Simply uses wget to fetch Thorium API Keys.
# This is to keep them out of the main repo, in the case Google # This is to keep them out of the main repo, in the case Google
@ -32,5 +32,3 @@ printf "${GRE}Done.\n" &&
printf "${YEL}- Use the three lines therein at the atop of your args.gn\n" && printf "${YEL}- Use the three lines therein at the atop of your args.gn\n" &&
printf "${YEL} (Replacing the ones already in there that have blank values)\n" && printf "${YEL} (Replacing the ones already in there that have blank values)\n" &&
tput sgr0 tput sgr0
exit 0

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2023 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan CYA='\033[1;96m' # Cyan
@ -44,5 +44,3 @@ printf "\n" &&
printf "${GRE}Done.\n" && printf "${GRE}Done.\n" &&
printf "\n" && printf "\n" &&
tput sgr0 tput sgr0
exit 0

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
RED='\033[1;31m' # Red RED='\033[1;31m' # Red
@ -146,5 +146,3 @@ printf "${YEL}Done!\n" &&
printf "${GRE}Done! ${YEL}You can now run ./setup.sh or build vanilla Chromium.\n" printf "${GRE}Done! ${YEL}You can now run ./setup.sh or build vanilla Chromium.\n"
tput sgr0 tput sgr0
exit 0

View file

@ -1,4 +1,4 @@
## Copyright (c) 2022 Alex313031 ## Copyright (c) 2024 Alex313031
## Summary ## Summary
This is a special program, built on top of content_shell and incorporating a multitude of options for testing, viewing, and debugging UI resources in Thorium. This is a special program, built on top of content_shell and incorporating a multitude of options for testing, viewing, and debugging UI resources in Thorium.

View file

@ -1,5 +1,6 @@
## Thorium Portable for Linux README # Thorium Portable for Linux README
## Copyright (c) 2022 Alex313031
## Copyright (c) 2024 Alex313031
This is a portable build of Thorium which can also be used to install/use Thorium on Linux distros that do not use .deb packages. The THORIUM-PORTABLE script and THORIUM-SHELL script will need to be made executable with `sudo chmod +x`, and when run will disable logging, default browser check, and set the user data dir to .config/thorium in this folder rather than the usual $HOME/.config/thorium folder. This is a portable build of Thorium which can also be used to install/use Thorium on Linux distros that do not use .deb packages. The THORIUM-PORTABLE script and THORIUM-SHELL script will need to be made executable with `sudo chmod +x`, and when run will disable logging, default browser check, and set the user data dir to .config/thorium in this folder rather than the usual $HOME/.config/thorium folder.

View file

@ -1,5 +1,6 @@
## Thorium Portable for Windows README.txt # Thorium Portable for Windows README.txt
## Copyright (c) 2023 Alex313031
## Copyright (c) 2024 Alex313031
# How to use the files in this .zip # How to use the files in this .zip
# Unpack .zip to wherever # Unpack .zip to wherever

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (c) 2023 The Chromium Authors and Alex313031. All rights reserved. # Copyright (c) 2024 The Chromium Authors and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031 # Copyright (c) 2024 Alex313031
./thorium_shell --data-path=$(pwd)/.config/thorium-shell --enable-experimental-web-platform-features --debug --enable-clear-hevc-for-testing $@ ./thorium_shell --data-path=$(pwd)/.config/thorium-shell --enable-experimental-web-platform-features --debug --enable-clear-hevc-for-testing $@

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2023 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
RED='\033[1;31m' # Red RED='\033[1;31m' # Red
@ -21,7 +21,6 @@ displayHelp () {
printf "${bold}${YEL}Please place the Thorium .deb file in this directory before running.${c0}\n" && printf "${bold}${YEL}Please place the Thorium .deb file in this directory before running.${c0}\n" &&
printf "\n" printf "\n"
} }
case $1 in case $1 in
--help) displayHelp; exit 0;; --help) displayHelp; exit 0;;
esac esac

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2023 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
RED='\033[1;31m' # Red RED='\033[1;31m' # Red
@ -21,7 +21,6 @@ displayHelp () {
printf "${bold}${YEL}Please place the thorium_mini_installer.exe file in this directory before running.${c0}\n" && printf "${bold}${YEL}Please place the thorium_mini_installer.exe file in this directory before running.${c0}\n" &&
printf "\n" printf "\n"
} }
case $1 in case $1 in
--help) displayHelp; exit 0;; --help) displayHelp; exit 0;;
esac esac

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
RED='\033[1;31m' # Red RED='\033[1;31m' # Red

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
RED='\033[1;31m' # Red RED='\033[1;31m' # Red

View file

@ -1,4 +1,4 @@
# Copyright 2023 The Chromium Authors and Alex313031 # Copyright 2024 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
@ -50,6 +50,7 @@ if (is_android) {
import("//chrome/version.gni") import("//chrome/version.gni")
import("//content/public/app/mac_helpers.gni") import("//content/public/app/mac_helpers.gni")
import("//media/cdm/library_cdm/cdm_paths.gni") import("//media/cdm/library_cdm/cdm_paths.gni")
import("//services/on_device_model/on_device_model.gni")
import("//third_party/icu/config.gni") import("//third_party/icu/config.gni")
} }
@ -325,6 +326,7 @@ if (!is_android && !is_mac) {
# On Chrome OS builds (for both ash-chrome and lacros-chrome), put # On Chrome OS builds (for both ash-chrome and lacros-chrome), put
# a metadata.json file in root directory containing Chrome version. # a metadata.json file in root directory containing Chrome version.
if (is_chromeos) { if (is_chromeos) {
deps += [ "//ui/gfx/linux:gbm" ]
data_deps += [ "//build:version_metadata" ] data_deps += [ "//build:version_metadata" ]
} }
@ -1033,6 +1035,14 @@ if (is_win) {
} }
} }
if (enable_ml_internal) {
bundle_data("chrome_ml_library") {
sources = [ "$root_out_dir/libchrome_ml.dylib" ]
outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}" ]
public_deps = [ "//third_party/ml:chrome_ml_library_copy" ]
}
}
group("angle_library") { group("angle_library") {
if (bundle_egl_libraries) { if (bundle_egl_libraries) {
deps = [ ":angle_binaries" ] deps = [ ":angle_binaries" ]
@ -1253,6 +1263,10 @@ if (is_win) {
"//chrome/browser/resources/media/mei_preload:component_bundle", "//chrome/browser/resources/media/mei_preload:component_bundle",
] ]
if (enable_ml_internal) {
bundle_deps += [ ":chrome_ml_library" ]
}
if (is_chrome_branded) { if (is_chrome_branded) {
bundle_deps += [ ":preinstalled_apps" ] bundle_deps += [ ":preinstalled_apps" ]
} }
@ -1531,11 +1545,6 @@ if (is_win) {
] ]
} }
process_version_rc_template("nacl64_exe_version") {
sources = [ "app/nacl64_exe.ver" ]
output = "$target_gen_dir/nacl64_exe_version.rc"
}
process_version_rc_template("other_version") { process_version_rc_template("other_version") {
sources = [ "app/other.ver" ] sources = [ "app/other.ver" ]
output = "$target_gen_dir/other_version.rc" output = "$target_gen_dir/other_version.rc"

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
## Copyright (c) 2022 Alex313031/ ## Copyright (c) 2024 Alex313031
## Clones latest LLVM being used by the Chromium Project, and builds a local LLVM toolchain with Polly to use the Polly optimizations in the main Thorium BUILD.gn ## Clones latest LLVM being used by the Chromium Project, and builds a local LLVM toolchain with Polly to use the Polly optimizations in the main Thorium BUILD.gn

View file

@ -1,90 +0,0 @@
#!/bin/bash
# Copyright (c) 2022 Alex313031.
YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan
RED='\033[1;31m' # Red
GRE='\033[1;32m' # Green
c0='\033[0m' # Reset Text
bold='\033[1m' # Bold Text
underline='\033[4m' # Underline Text
# Error handling
yell() { echo "$0: $*" >&2; }
die() { yell "$*"; exit 111; }
try() { "$@" || die "${RED}Failed $*"; }
# help
printf "\n" &&
printf "${bold}${GRE}Script to copy Thorium source files over the Chromium source tree.${c0}\n" &&
printf "${bold}${YEL}Use the --avx flag for Regular (AVX) builds.${c0}\n" &&
printf "${bold}${YEL}Use the --avx2 flag for AVX2 Builds.${c0}\n" &&
printf "${bold}${YEL}Use the --sse3 flag for SSE3 Builds.${c0}\n" &&
printf "${bold}${YEL}IMPORTANT: For Polly builds, first run build_polly.sh in Thorium/infra, then use this script.${c0}\n" &&
printf "${bold}${YEL}Both of these actions should be taken AFTER running the regular setup.sh script!${c0}\n" &&
printf "\n" &&
tput sgr0 &&
# Copy Polly AVX files
copyAVX () {
printf "\n" &&
printf "${YEL}Copying Polly AVX build files...${c0}\n" &&
cp -r -v Regular/BUILD.gn $HOME/chromium/src/build/config/compiler/ &&
printf "\n"
}
case $1 in
--avx) copyAVX;
esac
# Copy Polly AVX2 files
copyAVX2 () {
printf "\n" &&
printf "${YEL}Copying Polly AVX2 build files...${c0}\n" &&
cp -r -v AVX2/BUILD.gn $HOME/chromium/src/build/config/compiler/ &&
printf "\n"
}
case $1 in
--avx2) copyAVX2;
esac
# Copy Polly SSE3 files
copySSE3 () {
printf "\n" &&
printf "${YEL}Copying Polly SSE3 build files...${c0}\n" &&
cp -r -v SSE3/BUILD.gn $HOME/chromium/src/build/config/compiler/ &&
printf "\n"
}
case $1 in
--sse3) copySSE3;
esac
printf "${GRE}Done!\n" &&
printf "\n" &&
printf "${YEL}Exporting variables...\n" &&
export NINJA_SUMMARIZE_BUILD=1 &&
export EDITOR=nano &&
export VISUAL=nano &&
printf "\n" &&
tput sgr0 &&
printf "export ${CYA}NINJA_SUMMARIZE_BUILD=1${c0}\n" &&
printf "export ${CYA}EDITOR=nano${c0}\n" &&
printf "export ${CYA}VISUAL=nano${c0}\n" &&
printf "\n" &&
printf "${GRE}Enjoy Thorium!\n" &&
printf "\n" &&
tput sgr0
exit 0

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2023 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
CYA='\033[1;96m' # Cyan CYA='\033[1;96m' # Cyan

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (c) 2022 Alex313031. # Copyright (c) 2024 Alex313031.
YEL='\033[1;33m' # Yellow YEL='\033[1;33m' # Yellow
RED='\033[1;31m' # Red RED='\033[1;31m' # Red
@ -13,14 +13,6 @@ underline=$'\033[4m' # Underline Text
yell() { echo "$0: $*" >&2; } yell() { echo "$0: $*" >&2; }
die() { yell "$*"; exit 111; } die() { yell "$*"; exit 111; }
try() { "$@" || die "${RED}Failed $*"; } try() { "$@" || die "${RED}Failed $*"; }
# Clean build dir.
cleanBuild () {
printf "\n" &&
printf "${bold}${RED}Cleaning build directory.${c0}\n" &&
printf "\n" &&
sleep 1 &&
rm -r -f -v ./build
}
# --help # --help
displayHelp () { displayHelp () {
@ -29,22 +21,31 @@ displayHelp () {
printf "${bold}${YEL}Use the --clean flag to delete the build directory.${c0}\n" && printf "${bold}${YEL}Use the --clean flag to delete the build directory.${c0}\n" &&
printf "\n" printf "\n"
} }
case $1 in case $1 in
--help) displayHelp; exit 0;; --help) displayHelp; exit 0;;
esac esac
# Clean build dir.
cleanBuild () {
printf "\n" &&
printf "${bold}${YEL}Cleaning build directory.${c0}\n" &&
printf "\n" &&
sleep 1 &&
rm -r -f -v ./build_
printf "\n" &&
printf "${bold}${GRE}Done.${c0}\n" &&
printf "\n" &&
}
case $1 in case $1 in
--clean) cleanBuild; exit 0;; --clean) cleanBuild; exit 0;;
esac esac
mkdir -v -p build && mkdir -v -p build_ &&
cd build && cd build_ &&
cmake -GNinja -DLGPL=OFF .. && cmake -GNinja -DLGPL=OFF .. &&
ninja -v -d stats && ninja -v -d stats &&
cd ../build cd ../

View file

@ -2499,12 +2499,12 @@ if (current_toolchain == default_toolchain) {
chrome_public_apk_or_module_tmpl("chrome_public_apk") { chrome_public_apk_or_module_tmpl("chrome_public_apk") {
target_type = "android_apk" target_type = "android_apk"
apk_name = "ThoriumPublic" apk_name = "Thorium_Public"
art_profile_path = "//chrome/android/baseline_profiles/profile.txt" art_profile_path = "//chrome/android/baseline_profiles/profile.txt"
} }
chrome_public_bundle("chrome_public_bundle") { chrome_public_bundle("chrome_public_bundle") {
bundle_name = "ThoriumPublic" bundle_name = "Thorium_Public"
} }
android_library("monochrome_java") { android_library("monochrome_java") {

View file

@ -1,4 +1,4 @@
# Copyright (c) 2023 Alex313031. # Copyright (c) 2024 Alex313031.
APT_GET="`command -v apt-get 2> /dev/null`" APT_GET="`command -v apt-get 2> /dev/null`"
APT_CONFIG="`command -v apt-config 2> /dev/null`" APT_CONFIG="`command -v apt-config 2> /dev/null`"

View file

@ -1,4 +1,4 @@
# Copyright (c) 2022 The Chromium Authors and Alex313031. All rights reserved. # Copyright (c) 2024 The Chromium Authors and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
# #

View file

@ -1,4 +1,4 @@
# Copyright (c) 2023 Alex313031 and Iridium # Copyright (c) 2024 Alex313031 and Iridium
# Shows the output of a given command only on failure, or when VERBOSE is set. # Shows the output of a given command only on failure, or when VERBOSE is set.
log_cmd() { log_cmd() {
if [ "${VERBOSE:-}" ]; then if [ "${VERBOSE:-}" ]; then

View file

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright 2023 The Chromium Authors and Alex313031. # Copyright 2024 The Chromium Authors and Alex313031.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
# #

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright (c) 2023 The Chromium Authors and Alex313031. All rights reserved. # Copyright (c) 2024 The Chromium Authors and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright 2023 The Chromium Authors and Alex313031 # Copyright 2024 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (c) 2022 The Chromium Authors and Alex313031. All rights reserved. # Copyright (c) 2024 The Chromium Authors and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (c) 2022 The Chromium Authors and Alex313031. All rights reserved. # Copyright (c) 2024 The Chromium Authors and Alex313031. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright 2023 The Chromium Authors and Alex313031 # Copyright 2024 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright 2023 The Chromium Authors and Alex313031 # Copyright 2024 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,4 +1,4 @@
# Copyright 2023 The Chromium Authors and Alex313031 # Copyright 2024 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
@ -83,7 +83,6 @@ android_library("content_shell_java") {
":content_shell_java_resources", ":content_shell_java_resources",
":content_shell_manifest", ":content_shell_manifest",
"//base:base_java", "//base:base_java",
"//base:jni_java",
"//build/android:build_java", "//build/android:build_java",
"//components/download/internal/common:internal_java", "//components/download/internal/common:internal_java",
"//components/embedder_support/android:content_view_java", "//components/embedder_support/android:content_view_java",
@ -94,6 +93,7 @@ android_library("content_shell_java") {
"//media/capture/video/android:capture_java", "//media/capture/video/android:capture_java",
"//mojo/public/java:system_java", "//mojo/public/java:system_java",
"//net/android:net_java", "//net/android:net_java",
"//third_party/jni_zero:jni_zero_java",
"//ui/android:ui_java", "//ui/android:ui_java",
"//ui/base/cursor/mojom:cursor_type_java", "//ui/base/cursor/mojom:cursor_type_java",
"//url:gurl_java", "//url:gurl_java",

View file

@ -1,4 +1,4 @@
# Copyright 2023 The Chromium Authors and Alex313031 # Copyright 2024 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.

View file

@ -1,4 +1,4 @@
// Copyright (c) 2023 The Chromium Authors and Alex313031. All rights reserved. // Copyright (c) 2024 The Chromium Authors and Alex313031. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.

View file

@ -1,4 +1,4 @@
// Copyright (c) 2023 The Chromium Authors and Alex313031. All rights reserved. // Copyright (c) 2024 The Chromium Authors and Alex313031. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.

View file

@ -1,4 +1,4 @@
# Copyright 2023 The Chromium Authors and Alex313031 # Copyright 2024 The Chromium Authors and Alex313031
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
@ -8,8 +8,8 @@ import("//build/config/chromeos/ui_mode.gni")
import("//media/media_options.gni") import("//media/media_options.gni")
declare_args() { declare_args() {
# Enables Widevine key system support. Enabled by default in Google Chrome and # Enables Widevine key system support. Enabled by default in Google Chrome,
# on Android. For Fuchsia, see crbug.com/1354347. # Google Chrome for Testing and Android. For Fuchsia, see crbug.com/1354347.
# Can be optionally enabled in Chromium on non-Android platforms. Please see # Can be optionally enabled in Chromium on non-Android platforms. Please see
# //src/third_party/widevine/LICENSE file for details. # //src/third_party/widevine/LICENSE file for details.
enable_widevine = !is_fuchsia enable_widevine = !is_fuchsia
@ -52,7 +52,8 @@ assert(!enable_media_foundation_widevine_cdm || is_win)
assert(!enable_media_foundation_widevine_cdm || enable_widevine) assert(!enable_media_foundation_widevine_cdm || enable_widevine)
declare_args() { declare_args() {
# Widevine CDM is bundled as part of Google Chrome builds. # Widevine CDM is bundled as part of Google Chrome and
# Google Chrome for Testing builds.
bundle_widevine_cdm = false bundle_widevine_cdm = false
# Relative root directory to //third_party/widevine/cdm for CDM files. # Relative root directory to //third_party/widevine/cdm for CDM files.
@ -63,7 +64,8 @@ declare_args() {
declare_args() { declare_args() {
# Enable Widevine CDM host verification, which will sign additional binaries # Enable Widevine CDM host verification, which will sign additional binaries
# with Widevine certs and copy signature files as needed. # with Widevine certs and copy signature files as needed.
enable_widevine_cdm_host_verification = enable_library_widevine_cdm && enable_cdm_host_verification enable_widevine_cdm_host_verification =
enable_library_widevine_cdm && enable_cdm_host_verification
# If set, and Widevine CDM host verification signing failed due to no signing # If set, and Widevine CDM host verification signing failed due to no signing
# cert, the failure will be ignored. Otherwise the build process will fail. # cert, the failure will be ignored. Otherwise the build process will fail.

View file

@ -1,4 +1,4 @@
// Copyright 2023 The Chromium Authors and Alex313031 // Copyright 2024 The Chromium Authors and Alex313031
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.

@ -1 +1 @@
Subproject commit 63f44d9bee552359522bb0b2c28e8c6adb6bc218 Subproject commit eccb57ae3043304462c6e709efd65b2a5edf1d16