mirror of
https://github.com/Alex313031/thorium.git
synced 2025-01-09 11:27:32 -03:00
M115 stage 6
This commit is contained in:
parent
85ec748136
commit
65337b1866
25 changed files with 1548 additions and 1280 deletions
|
@ -355,9 +355,7 @@ bool IsDefaultSupportedAudioType(const AudioType& type) {
|
|||
case AudioCodec::kAMR_NB:
|
||||
case AudioCodec::kAMR_WB:
|
||||
case AudioCodec::kGSM_MS:
|
||||
case AudioCodec::kEAC3:
|
||||
case AudioCodec::kALAC:
|
||||
case AudioCodec::kAC3:
|
||||
case AudioCodec::kMpegHAudio:
|
||||
case AudioCodec::kUnknown:
|
||||
return false;
|
||||
|
@ -368,6 +366,13 @@ bool IsDefaultSupportedAudioType(const AudioType& type) {
|
|||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
case AudioCodec::kAC3:
|
||||
case AudioCodec::kEAC3:
|
||||
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -379,7 +384,7 @@ bool IsBuiltInVideoCodec(VideoCodec codec) {
|
|||
if (codec == VideoCodec::kVP8)
|
||||
return true;
|
||||
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
|
||||
if (codec == VideoCodec::kH264)
|
||||
if (codec == VideoCodec::kH264 || codec == VideoCodec::kHEVC)
|
||||
return true;
|
||||
#endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
|
||||
#endif // BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
|
||||
|
|
|
@ -740,7 +740,7 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
|
|||
AVMasteringDisplayMetadata* metadata =
|
||||
reinterpret_cast<AVMasteringDisplayMetadata*>(side_data.data);
|
||||
if (metadata->has_primaries) {
|
||||
hdr_metadata.color_volume_metadata.primaries = {
|
||||
hdr_metadata.smpte_st_2086.primaries = {
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[0][0])),
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[0][1])),
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[1][0])),
|
||||
|
@ -752,9 +752,9 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
|
|||
};
|
||||
}
|
||||
if (metadata->has_luminance) {
|
||||
hdr_metadata.color_volume_metadata.luminance_max =
|
||||
hdr_metadata.smpte_st_2086.luminance_max =
|
||||
av_q2d(metadata->max_luminance);
|
||||
hdr_metadata.color_volume_metadata.luminance_min =
|
||||
hdr_metadata.smpte_st_2086.luminance_min =
|
||||
av_q2d(metadata->min_luminance);
|
||||
}
|
||||
}
|
||||
|
@ -910,26 +910,6 @@ VideoPixelFormat AVPixelFormatToVideoPixelFormat(AVPixelFormat pixel_format) {
|
|||
return PIXEL_FORMAT_UNKNOWN;
|
||||
}
|
||||
|
||||
VideoColorSpace AVColorSpaceToColorSpace(AVColorSpace color_space,
|
||||
AVColorRange color_range) {
|
||||
// TODO(hubbe): make this better
|
||||
if (color_range == AVCOL_RANGE_JPEG)
|
||||
return VideoColorSpace::JPEG();
|
||||
|
||||
switch (color_space) {
|
||||
case AVCOL_SPC_UNSPECIFIED:
|
||||
break;
|
||||
case AVCOL_SPC_BT709:
|
||||
return VideoColorSpace::REC709();
|
||||
case AVCOL_SPC_SMPTE170M:
|
||||
case AVCOL_SPC_BT470BG:
|
||||
return VideoColorSpace::REC601();
|
||||
default:
|
||||
DVLOG(1) << "Unknown AVColorSpace: " << color_space;
|
||||
}
|
||||
return VideoColorSpace();
|
||||
}
|
||||
|
||||
std::string AVErrorToString(int errnum) {
|
||||
char errbuf[AV_ERROR_MAX_STRING_SIZE] = {0};
|
||||
av_strerror(errnum, errbuf, AV_ERROR_MAX_STRING_SIZE);
|
||||
|
|
|
@ -113,6 +113,10 @@ declare_args() {
|
|||
enable_hevc_parser_and_hw_decoder =
|
||||
proprietary_codecs &&
|
||||
(use_fuzzing_engine || is_win || is_mac || is_android || is_linux)
|
||||
|
||||
# Enable inclusion of VVC/H.266 parser/demuxer, and also enable VVC/H.266 decoding
|
||||
# with hardware acceleration provided by platform. Disabled by default for all builds.
|
||||
enable_platform_vvc = false
|
||||
}
|
||||
|
||||
# Use another declare_args() to allow dependence on args defined above.
|
||||
|
|
|
@ -355,9 +355,7 @@ bool IsDefaultSupportedAudioType(const AudioType& type) {
|
|||
case AudioCodec::kAMR_NB:
|
||||
case AudioCodec::kAMR_WB:
|
||||
case AudioCodec::kGSM_MS:
|
||||
case AudioCodec::kEAC3:
|
||||
case AudioCodec::kALAC:
|
||||
case AudioCodec::kAC3:
|
||||
case AudioCodec::kMpegHAudio:
|
||||
case AudioCodec::kUnknown:
|
||||
return false;
|
||||
|
@ -368,6 +366,13 @@ bool IsDefaultSupportedAudioType(const AudioType& type) {
|
|||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
case AudioCodec::kAC3:
|
||||
case AudioCodec::kEAC3:
|
||||
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -740,7 +740,7 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
|
|||
AVMasteringDisplayMetadata* metadata =
|
||||
reinterpret_cast<AVMasteringDisplayMetadata*>(side_data.data);
|
||||
if (metadata->has_primaries) {
|
||||
hdr_metadata.color_volume_metadata.primaries = {
|
||||
hdr_metadata.smpte_st_2086.primaries = {
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[0][0])),
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[0][1])),
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[1][0])),
|
||||
|
@ -752,9 +752,9 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
|
|||
};
|
||||
}
|
||||
if (metadata->has_luminance) {
|
||||
hdr_metadata.color_volume_metadata.luminance_max =
|
||||
hdr_metadata.smpte_st_2086.luminance_max =
|
||||
av_q2d(metadata->max_luminance);
|
||||
hdr_metadata.color_volume_metadata.luminance_min =
|
||||
hdr_metadata.smpte_st_2086.luminance_min =
|
||||
av_q2d(metadata->min_luminance);
|
||||
}
|
||||
}
|
||||
|
@ -910,26 +910,6 @@ VideoPixelFormat AVPixelFormatToVideoPixelFormat(AVPixelFormat pixel_format) {
|
|||
return PIXEL_FORMAT_UNKNOWN;
|
||||
}
|
||||
|
||||
VideoColorSpace AVColorSpaceToColorSpace(AVColorSpace color_space,
|
||||
AVColorRange color_range) {
|
||||
// TODO(hubbe): make this better
|
||||
if (color_range == AVCOL_RANGE_JPEG)
|
||||
return VideoColorSpace::JPEG();
|
||||
|
||||
switch (color_space) {
|
||||
case AVCOL_SPC_UNSPECIFIED:
|
||||
break;
|
||||
case AVCOL_SPC_BT709:
|
||||
return VideoColorSpace::REC709();
|
||||
case AVCOL_SPC_SMPTE170M:
|
||||
case AVCOL_SPC_BT470BG:
|
||||
return VideoColorSpace::REC601();
|
||||
default:
|
||||
DVLOG(1) << "Unknown AVColorSpace: " << color_space;
|
||||
}
|
||||
return VideoColorSpace();
|
||||
}
|
||||
|
||||
std::string AVErrorToString(int errnum) {
|
||||
char errbuf[AV_ERROR_MAX_STRING_SIZE] = {0};
|
||||
av_strerror(errnum, errbuf, AV_ERROR_MAX_STRING_SIZE);
|
||||
|
|
|
@ -203,7 +203,7 @@
|
|||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/115.0.5790.172:media/ffmpeg/ffmpeg_common.cc;bpv=1" ADD_DATE="1678753149" 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">ffmpeg_common.cc - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/115.0.5790.172:build/config/android/BUILD.gn;bpv=1" ADD_DATE="1679174369" 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/115.0.5790.172:media/media_options.gni;bpv=1" ADD_DATE="1679174990" 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">media_options.gni - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/main:tools/cfi/ignores.txt;bpv=1" ADD_DATE="1682694796" 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">ignores.txt - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/115.0.5790.172:tools/cfi/ignores.txt;bpv=1" ADD_DATE="1682694796" 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">ignores.txt - Chromium Code Search</A>
|
||||
</DL><p>
|
||||
<DT><H3 ADD_DATE="1685601933" LAST_MODIFIED="1685602782">Th23</H3>
|
||||
<DL><p>
|
||||
|
|
|
@ -8,10 +8,6 @@
|
|||
|
||||
- https://github.com/ungoogled-software/ungoogled-chromium/pull/2314/files
|
||||
|
||||
- Add env variables for all scripts for chromium src dir location
|
||||
|
||||
- https://github.com/Alex313031/thorium/blob/main/trunk.sh
|
||||
|
||||
- Update build instructions and add Mac build instructions (also merge to website)
|
||||
|
||||
- https://github.com/Alex313031/thorium/blob/main/trunk.sh
|
||||
|
@ -19,3 +15,12 @@
|
|||
- Update win scripts to work seamlessly
|
||||
|
||||
- https://github.com/Alex313031/thorium/tree/main/win_scripts
|
||||
|
||||
- Re-evaluate vector icons and webui images for CR23 refresh
|
||||
|
||||
- To keep .icons correct
|
||||
|
||||
- Add new Thorium shortcuts to ThoriumOS Shortcuts App
|
||||
|
||||
- For ChromeOS only: If you plan on adding a new accelerator and want it
|
||||
displayed in the Shortcuts app, please follow the instructions at: `ash/webui/shortcut_customization_ui/backend/accelerator_layout_table.h`.
|
||||
|
|
|
@ -1 +1 @@
|
|||
START "" "%cd%\BIN\114.0.5735.205\thorium_shell.exe" --data-path="%~dp0%\USER_DATA\thorium_shell" --allow-outdated-plugins --disable-logging --disable-breakpad --enable-experimental-web-platform-features --new-canvas-2d-api
|
||||
START "" "%cd%\BIN\115.0.5790.172\thorium_shell.exe" --data-path="%~dp0%\USER_DATA\thorium_shell" --allow-outdated-plugins --disable-logging --disable-breakpad --enable-experimental-web-platform-features --new-canvas-2d-api
|
||||
|
|
930
src/build/install-build-deps.py
Executable file
930
src/build/install-build-deps.py
Executable file
|
@ -0,0 +1,930 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright 2023 The Chromium Authors and Alex313031
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
# Script to install everything needed to build chromium
|
||||
# including items requiring sudo privileges.
|
||||
# See https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md
|
||||
|
||||
import argparse
|
||||
import functools
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
@functools.lru_cache(maxsize=1)
|
||||
def build_apt_package_list():
|
||||
print("Building apt package list.", file=sys.stderr)
|
||||
output = subprocess.check_output(["apt-cache", "dumpavail"]).decode()
|
||||
arch_map = {"i386": ":i386"}
|
||||
package_regex = re.compile(r"^Package: (.+?)$.+?^Architecture: (.+?)$",
|
||||
re.M | re.S)
|
||||
return set(package + arch_map.get(arch, "")
|
||||
for package, arch in re.findall(package_regex, output))
|
||||
|
||||
|
||||
def package_exists(package_name: str) -> bool:
|
||||
return package_name in build_apt_package_list()
|
||||
|
||||
|
||||
def parse_args(argv):
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Install Chromium build dependencies.")
|
||||
parser.add_argument("--syms",
|
||||
action="store_true",
|
||||
help="Enable installation of debugging symbols")
|
||||
parser.add_argument(
|
||||
"--no-syms",
|
||||
action="store_false",
|
||||
dest="syms",
|
||||
help="Disable installation of debugging symbols",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--lib32",
|
||||
action="store_true",
|
||||
help="Enable installation of 32-bit libraries, e.g. for V8 snapshot",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--android",
|
||||
action="store_true",
|
||||
help="Enable installation of android dependencies",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--no-android",
|
||||
action="store_false",
|
||||
dest="android",
|
||||
help="Disable installation of android dependencies",
|
||||
)
|
||||
parser.add_argument("--arm",
|
||||
action="store_true",
|
||||
help="Enable installation of arm cross toolchain")
|
||||
parser.add_argument(
|
||||
"--no-arm",
|
||||
action="store_false",
|
||||
dest="arm",
|
||||
help="Disable installation of arm cross toolchain",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--chromeos-fonts",
|
||||
action="store_true",
|
||||
help="Enable installation of Chrome OS fonts",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--no-chromeos-fonts",
|
||||
action="store_false",
|
||||
dest="chromeos_fonts",
|
||||
help="Disable installation of Chrome OS fonts",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--nacl",
|
||||
action="store_true",
|
||||
help="Enable installation of prerequisites for building NaCl",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--no-nacl",
|
||||
action="store_false",
|
||||
dest="nacl",
|
||||
help="Disable installation of prerequisites for building NaCl",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--backwards-compatible",
|
||||
action="store_true",
|
||||
help=
|
||||
"Enable installation of packages that are no longer currently needed and"
|
||||
+ "have been removed from this script. Useful for bisection.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--no-backwards-compatible",
|
||||
action="store_false",
|
||||
dest="backwards_compatible",
|
||||
help=
|
||||
"Disable installation of packages that are no longer currently needed and"
|
||||
+ "have been removed from this script.",
|
||||
)
|
||||
parser.add_argument("--no-prompt",
|
||||
action="store_true",
|
||||
help="Automatic yes to prompts")
|
||||
parser.add_argument(
|
||||
"--quick-check",
|
||||
action="store_true",
|
||||
help="Quickly try to determine if dependencies are installed",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--unsupported",
|
||||
action="store_true",
|
||||
help="Attempt installation even on unsupported systems",
|
||||
)
|
||||
|
||||
options = parser.parse_args(argv)
|
||||
|
||||
if options.arm or options.android:
|
||||
options.lib32 = True
|
||||
|
||||
return options
|
||||
|
||||
|
||||
def check_lsb_release():
|
||||
if not shutil.which("lsb_release"):
|
||||
print("ERROR: lsb_release not found in $PATH", file=sys.stderr)
|
||||
print("try: sudo apt-get install lsb-release", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
@functools.lru_cache(maxsize=1)
|
||||
def distro_codename():
|
||||
return subprocess.check_output(["lsb_release", "--codename",
|
||||
"--short"]).decode().strip()
|
||||
|
||||
|
||||
def check_distro(options):
|
||||
if options.unsupported or options.quick_check:
|
||||
return
|
||||
|
||||
distro_id = subprocess.check_output(["lsb_release", "--id",
|
||||
"--short"]).decode().strip()
|
||||
|
||||
supported_codenames = ["bionic", "focal", "jammy", "kinetic", "lunar"]
|
||||
supported_ids = ["Debian"]
|
||||
|
||||
if (distro_codename() not in supported_codenames
|
||||
and distro_id not in supported_ids):
|
||||
print(
|
||||
"WARNING: The following distributions are supported,",
|
||||
"but distributions not in the list below can also try to install",
|
||||
"dependencies by passing the `--unsupported` parameter",
|
||||
"\tUbuntu 18.04 LTS (bionic with EoL April 2028)",
|
||||
"\tUbuntu 20.04 LTS (focal with EoL April 2030)",
|
||||
"\tUbuntu 22.04 LTS (jammy with EoL April 2032)",
|
||||
"\tUbuntu 22.10 (kinetic with EoL October 2023)\n" \
|
||||
"\tUbuntu 23.04 (lunar with EoL April 2024)\n" \
|
||||
"\tDebian 10 (buster), 11 (bullseye) or 12 (bookworm)",
|
||||
sep="\n",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def check_architecture():
|
||||
architecture = subprocess.check_output(["uname", "-m"]).decode().strip()
|
||||
if architecture not in ["i686", "x86_64"]:
|
||||
print("Only x86 architectures are currently supported", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def check_root():
|
||||
if os.geteuid() != 0:
|
||||
print("Running as non-root user.", file=sys.stderr)
|
||||
print("You might have to enter your password one or more times for 'sudo'.",
|
||||
file=sys.stderr)
|
||||
print(file=sys.stderr)
|
||||
|
||||
|
||||
def apt_update(options):
|
||||
if options.lib32 or options.nacl:
|
||||
subprocess.check_call(["sudo", "dpkg", "--add-architecture", "i386"])
|
||||
subprocess.check_call(["sudo", "apt-get", "update"])
|
||||
|
||||
|
||||
# Packages needed for development
|
||||
def dev_list():
|
||||
packages = [
|
||||
"binutils",
|
||||
"bison",
|
||||
"bzip2",
|
||||
"cdbs",
|
||||
"curl",
|
||||
"dbus-x11",
|
||||
"devscripts",
|
||||
"dpkg-dev",
|
||||
"elfutils",
|
||||
"fakeroot",
|
||||
"flex",
|
||||
"git-core",
|
||||
"gperf",
|
||||
"icoutils",
|
||||
"libasound2-dev",
|
||||
"libatspi2.0-dev",
|
||||
"libbrlapi-dev",
|
||||
"libbz2-dev",
|
||||
"libc6-dev",
|
||||
"libcairo2-dev",
|
||||
"libcap-dev",
|
||||
"libcups2-dev",
|
||||
"libcurl4-gnutls-dev",
|
||||
"libdrm-dev",
|
||||
"libelf-dev",
|
||||
"libevdev-dev",
|
||||
"libffi-dev",
|
||||
"libgbm-dev",
|
||||
"libglib2.0-dev",
|
||||
"libglu1-mesa-dev",
|
||||
"libgtk-3-dev",
|
||||
"libkrb5-dev",
|
||||
"libnspr4-dev",
|
||||
"libnss3-dev",
|
||||
"libpam0g-dev",
|
||||
"libpci-dev",
|
||||
"libpulse-dev",
|
||||
"libsctp-dev",
|
||||
"libspeechd-dev",
|
||||
"libsqlite3-dev",
|
||||
"libssl-dev",
|
||||
"libsystemd-dev",
|
||||
"libudev-dev",
|
||||
"libva-dev",
|
||||
"libwww-perl",
|
||||
"libxshmfence-dev",
|
||||
"libxslt1-dev",
|
||||
"libxss-dev",
|
||||
"libxt-dev",
|
||||
"libxtst-dev",
|
||||
"lighttpd",
|
||||
"locales",
|
||||
"openbox",
|
||||
"p7zip",
|
||||
"patch",
|
||||
"perl",
|
||||
"pkg-config",
|
||||
"rpm",
|
||||
"ruby",
|
||||
"subversion",
|
||||
"uuid-dev",
|
||||
"wdiff",
|
||||
"wget",
|
||||
"x11-utils",
|
||||
"xcompmgr",
|
||||
"xz-utils",
|
||||
"zip",
|
||||
]
|
||||
|
||||
# Packages needed for chromeos only
|
||||
packages += [
|
||||
"libbluetooth-dev",
|
||||
"libxkbcommon-dev",
|
||||
"mesa-common-dev",
|
||||
"zstd",
|
||||
]
|
||||
|
||||
if package_exists("realpath"):
|
||||
packages.append("realpath")
|
||||
|
||||
if package_exists("libjpeg-dev"):
|
||||
packages.append("libjpeg-dev")
|
||||
else:
|
||||
packages.append("libjpeg62-dev")
|
||||
|
||||
if package_exists("libudev1"):
|
||||
packages.append("libudev1")
|
||||
else:
|
||||
packages.append("libudev0")
|
||||
|
||||
if package_exists("libbrlapi0.8"):
|
||||
packages.append("libbrlapi0.8")
|
||||
elif package_exists("libbrlapi0.7"):
|
||||
packages.append("libbrlapi0.7")
|
||||
elif package_exists("libbrlapi0.6"):
|
||||
packages.append("libbrlapi0.6")
|
||||
else:
|
||||
packages.append("libbrlapi0.5")
|
||||
|
||||
if package_exists("libav-tools"):
|
||||
packages.append("libav-tools")
|
||||
|
||||
if package_exists("libvulkan-dev"):
|
||||
packages.append("libvulkan-dev")
|
||||
|
||||
if package_exists("libinput-dev"):
|
||||
packages.append("libinput-dev")
|
||||
|
||||
# Cross-toolchain strip is needed for building the sysroots.
|
||||
if package_exists("binutils-arm-linux-gnueabihf"):
|
||||
packages.append("binutils-arm-linux-gnueabihf")
|
||||
if package_exists("binutils-aarch64-linux-gnu"):
|
||||
packages.append("binutils-aarch64-linux-gnu")
|
||||
if package_exists("binutils-mipsel-linux-gnu"):
|
||||
packages.append("binutils-mipsel-linux-gnu")
|
||||
if package_exists("binutils-mips64el-linux-gnuabi64"):
|
||||
packages.append("binutils-mips64el-linux-gnuabi64")
|
||||
|
||||
# 64-bit systems need a minimum set of 32-bit compat packages for the
|
||||
# pre-built NaCl binaries.
|
||||
if "ELF 64-bit" in subprocess.check_output(["file", "-L",
|
||||
"/sbin/init"]).decode():
|
||||
packages.extend(["libc6-i386", "lib32stdc++6"])
|
||||
|
||||
# lib32gcc-s1 used to be called lib32gcc1 in older distros.
|
||||
if package_exists("lib32gcc-s1"):
|
||||
packages.append("lib32gcc-s1")
|
||||
elif package_exists("lib32gcc1"):
|
||||
packages.append("lib32gcc1")
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
# List of required run-time libraries
|
||||
def lib_list():
|
||||
packages = [
|
||||
"lib32z1",
|
||||
"libasound2",
|
||||
"libatk1.0-0",
|
||||
"libatspi2.0-0",
|
||||
"libc6",
|
||||
"libcairo2",
|
||||
"libcap2",
|
||||
"libcgi-session-perl",
|
||||
"libcups2",
|
||||
"libdrm2",
|
||||
"libegl1",
|
||||
"libevdev2",
|
||||
"libexpat1",
|
||||
"libfontconfig1",
|
||||
"libfreetype6",
|
||||
"libgbm1",
|
||||
"libglib2.0-0",
|
||||
"libgl1",
|
||||
"libgtk-3-0",
|
||||
"libncurses5",
|
||||
"libpam0g",
|
||||
"libpango-1.0-0",
|
||||
"libpangocairo-1.0-0",
|
||||
"libpci3",
|
||||
"libpcre3",
|
||||
"libpixman-1-0",
|
||||
"libspeechd2",
|
||||
"libstdc++6",
|
||||
"libsqlite3-0",
|
||||
"libuuid1",
|
||||
"libwayland-egl1",
|
||||
"libwayland-egl1-mesa",
|
||||
"libx11-6",
|
||||
"libx11-xcb1",
|
||||
"libxau6",
|
||||
"libxcb1",
|
||||
"libxcomposite1",
|
||||
"libxcursor1",
|
||||
"libxdamage1",
|
||||
"libxdmcp6",
|
||||
"libxext6",
|
||||
"libxfixes3",
|
||||
"libxi6",
|
||||
"libxinerama1",
|
||||
"libxrandr2",
|
||||
"libxrender1",
|
||||
"libxtst6",
|
||||
"x11-utils",
|
||||
"xvfb",
|
||||
"zlib1g",
|
||||
]
|
||||
|
||||
# Run-time libraries required by chromeos only
|
||||
packages += [
|
||||
"libpulse0",
|
||||
"libbz2-1.0",
|
||||
]
|
||||
|
||||
if package_exists("libffi8"):
|
||||
packages.append("libffi8")
|
||||
elif package_exists("libffi7"):
|
||||
packages.append("libffi7")
|
||||
elif package_exists("libffi6"):
|
||||
packages.append("libffi6")
|
||||
|
||||
if package_exists("libpng16-16"):
|
||||
packages.append("libpng16-16")
|
||||
else:
|
||||
packages.append("libpng12-0")
|
||||
|
||||
if package_exists("libnspr4"):
|
||||
packages.extend(["libnspr4", "libnss3"])
|
||||
else:
|
||||
packages.extend(["libnspr4-0d", "libnss3-1d"])
|
||||
|
||||
if package_exists("appmenu-gtk"):
|
||||
packages.append("appmenu-gtk")
|
||||
if package_exists("libgnome-keyring0"):
|
||||
packages.append("libgnome-keyring0")
|
||||
if package_exists("libgnome-keyring-dev"):
|
||||
packages.append("libgnome-keyring-dev")
|
||||
if package_exists("libvulkan1"):
|
||||
packages.append("libvulkan1")
|
||||
if package_exists("libinput10"):
|
||||
packages.append("libinput10")
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
def lib32_list(options):
|
||||
if not options.lib32:
|
||||
print("Skipping 32-bit libraries.", file=sys.stderr)
|
||||
return []
|
||||
print("Including 32-bit libraries.", file=sys.stderr)
|
||||
|
||||
packages = [
|
||||
# 32-bit libraries needed for a 32-bit build
|
||||
# includes some 32-bit libraries required by the Android SDK
|
||||
# See https://developer.android.com/sdk/installing/index.html?pkg=tools
|
||||
"libasound2:i386",
|
||||
"libatk-bridge2.0-0:i386",
|
||||
"libatk1.0-0:i386",
|
||||
"libatspi2.0-0:i386",
|
||||
"libdbus-1-3:i386",
|
||||
"libegl1:i386",
|
||||
"libgl1:i386",
|
||||
"libglib2.0-0:i386",
|
||||
"libncurses5:i386",
|
||||
"libnss3:i386",
|
||||
"libpango-1.0-0:i386",
|
||||
"libpangocairo-1.0-0:i386",
|
||||
"libstdc++6:i386",
|
||||
"libwayland-egl1:i386",
|
||||
"libx11-xcb1:i386",
|
||||
"libxcomposite1:i386",
|
||||
"libxdamage1:i386",
|
||||
"libxkbcommon0:i386",
|
||||
"libxrandr2:i386",
|
||||
"libxtst6:i386",
|
||||
"zlib1g:i386",
|
||||
# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf
|
||||
"linux-libc-dev-i386-cross",
|
||||
"libpci3:i386",
|
||||
]
|
||||
|
||||
# When cross building for arm/Android on 64-bit systems the host binaries
|
||||
# that are part of v8 need to be compiled with -m32 which means
|
||||
# that basic multilib support is needed.
|
||||
if "ELF 64-bit" in subprocess.check_output(["file", "-L",
|
||||
"/sbin/init"]).decode():
|
||||
# gcc-multilib conflicts with the arm cross compiler but
|
||||
# g++-X.Y-multilib gives us the 32-bit support that we need. Find out the
|
||||
# appropriate value of X and Y by seeing what version the current
|
||||
# distribution's g++-multilib package depends on.
|
||||
lines = subprocess.check_output(
|
||||
["apt-cache", "depends", "g++-multilib", "--important"]).decode()
|
||||
pattern = re.compile(r"g\+\+-[0-9.]+-multilib")
|
||||
packages += re.findall(pattern, lines)
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
# Packages that have been removed from this script. Regardless of configuration
|
||||
# or options passed to this script, whenever a package is removed, it should be
|
||||
# added here.
|
||||
def backwards_compatible_list(options):
|
||||
if not options.backwards_compatible:
|
||||
print("Skipping backwards compatible packages.", file=sys.stderr)
|
||||
return []
|
||||
print("Including backwards compatible packages.", file=sys.stderr)
|
||||
|
||||
packages = [
|
||||
"7za",
|
||||
"fonts-indic",
|
||||
"fonts-ipafont",
|
||||
"fonts-stix",
|
||||
"fonts-thai-tlwg",
|
||||
"fonts-tlwg-garuda",
|
||||
"g++",
|
||||
"g++-4.8-multilib-arm-linux-gnueabihf",
|
||||
"gcc-4.8-multilib-arm-linux-gnueabihf",
|
||||
"g++-9-multilib-arm-linux-gnueabihf",
|
||||
"gcc-9-multilib-arm-linux-gnueabihf",
|
||||
"gcc-arm-linux-gnueabihf",
|
||||
"g++-10-multilib-arm-linux-gnueabihf",
|
||||
"gcc-10-multilib-arm-linux-gnueabihf",
|
||||
"g++-10-arm-linux-gnueabihf",
|
||||
"gcc-10-arm-linux-gnueabihf",
|
||||
"git-svn",
|
||||
"language-pack-da",
|
||||
"language-pack-fr",
|
||||
"language-pack-he",
|
||||
"language-pack-zh-hant",
|
||||
"libappindicator-dev",
|
||||
"libappindicator1",
|
||||
"libappindicator3-1",
|
||||
"libappindicator3-dev",
|
||||
"libdconf-dev",
|
||||
"libdconf1",
|
||||
"libdconf1:i386",
|
||||
"libexif-dev",
|
||||
"libexif12",
|
||||
"libexif12:i386",
|
||||
"libgbm-dev",
|
||||
"libgbm-dev-lts-trusty",
|
||||
"libgbm-dev-lts-xenial",
|
||||
"libgconf-2-4:i386",
|
||||
"libgconf2-dev",
|
||||
"libgl1-mesa-dev",
|
||||
"libgl1-mesa-dev-lts-trusty",
|
||||
"libgl1-mesa-dev-lts-xenial",
|
||||
"libgl1-mesa-glx:i386",
|
||||
"libgl1-mesa-glx-lts-trusty:i386",
|
||||
"libgl1-mesa-glx-lts-xenial:i386",
|
||||
"libgles2-mesa-dev",
|
||||
"libgles2-mesa-dev-lts-trusty",
|
||||
"libgles2-mesa-dev-lts-xenial",
|
||||
"libgtk-3-0:i386",
|
||||
"libgtk2.0-0",
|
||||
"libgtk2.0-0:i386",
|
||||
"libgtk2.0-dev",
|
||||
"mesa-common-dev",
|
||||
"mesa-common-dev-lts-trusty",
|
||||
"mesa-common-dev-lts-xenial",
|
||||
"msttcorefonts",
|
||||
"python-dev",
|
||||
"python-setuptools",
|
||||
"snapcraft",
|
||||
"ttf-dejavu-core",
|
||||
"ttf-indic-fonts",
|
||||
"ttf-kochi-gothic",
|
||||
"ttf-kochi-mincho",
|
||||
"ttf-mscorefonts-installer",
|
||||
"xfonts-mathml",
|
||||
]
|
||||
|
||||
if package_exists("python-is-python2"):
|
||||
packages.extend(["python-is-python2", "python2-dev"])
|
||||
else:
|
||||
packages.append("python")
|
||||
|
||||
if package_exists("python-crypto"):
|
||||
packages.append("python-crypto")
|
||||
|
||||
if package_exists("python-numpy"):
|
||||
packages.append("python-numpy")
|
||||
|
||||
if package_exists("python-openssl"):
|
||||
packages.append("python-openssl")
|
||||
|
||||
if package_exists("python-psutil"):
|
||||
packages.append("python-psutil")
|
||||
|
||||
if package_exists("python-yaml"):
|
||||
packages.append("python-yaml")
|
||||
|
||||
if package_exists("apache2.2-bin"):
|
||||
packages.append("apache2.2-bin")
|
||||
else:
|
||||
packages.append("apache2-bin")
|
||||
|
||||
php_versions = [
|
||||
("php8.1-cgi", "libapache2-mod-php8.1"),
|
||||
("php8.0-cgi", "libapache2-mod-php8.0"),
|
||||
("php7.4-cgi", "libapache2-mod-php7.4"),
|
||||
("php7.3-cgi", "libapache2-mod-php7.3"),
|
||||
("php7.2-cgi", "libapache2-mod-php7.2"),
|
||||
("php7.1-cgi", "libapache2-mod-php7.1"),
|
||||
("php7.0-cgi", "libapache2-mod-php7.0"),
|
||||
("php5-cgi", "libapache2-mod-php5"),
|
||||
]
|
||||
|
||||
for php_cgi, mod_php in php_versions:
|
||||
if package_exists(php_cgi):
|
||||
packages.extend([php_cgi, mod_php])
|
||||
break
|
||||
|
||||
return [package for package in packages if package_exists(package)]
|
||||
|
||||
|
||||
def arm_list(options):
|
||||
if not options.arm:
|
||||
print("Skipping ARM cross toolchain.", file=sys.stderr)
|
||||
return []
|
||||
print("Including ARM cross toolchain.", file=sys.stderr)
|
||||
|
||||
# arm cross toolchain packages needed to build chrome on armhf
|
||||
packages = [
|
||||
"libc6-dev-armhf-cross",
|
||||
"libc6-dev-arm64-cross",
|
||||
"linux-libc-dev-armhf-cross",
|
||||
"linux-libc-dev-arm64-cross",
|
||||
"g++-arm-linux-gnueabihf",
|
||||
]
|
||||
|
||||
# Work around for dependency issue Ubuntu: http://crbug.com/435056
|
||||
if distro_codename() == "bionic":
|
||||
packages.extend([
|
||||
"g++-5-multilib-arm-linux-gnueabihf",
|
||||
"gcc-5-multilib-arm-linux-gnueabihf",
|
||||
"gcc-arm-linux-gnueabihf",
|
||||
])
|
||||
elif distro_codename() == "focal":
|
||||
packages.extend([
|
||||
"g++-10-multilib-arm-linux-gnueabihf",
|
||||
"gcc-10-multilib-arm-linux-gnueabihf",
|
||||
"gcc-arm-linux-gnueabihf",
|
||||
])
|
||||
elif distro_codename() == "jammy":
|
||||
packages.extend([
|
||||
"gcc-arm-linux-gnueabihf",
|
||||
"g++-11-arm-linux-gnueabihf",
|
||||
"gcc-11-arm-linux-gnueabihf",
|
||||
])
|
||||
elif distro_codename() == "kinetic":
|
||||
packages.extend([
|
||||
"gcc-arm-linux-gnueabihf",
|
||||
"g++-11-arm-linux-gnueabihf",
|
||||
"gcc-11-arm-linux-gnueabihf",
|
||||
])
|
||||
elif distro_codename() == "lunar":
|
||||
packages.extend([
|
||||
"gcc-arm-linux-gnueabihf",
|
||||
"g++-11-arm-linux-gnueabihf",
|
||||
"gcc-11-arm-linux-gnueabihf",
|
||||
])
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
def nacl_list(options):
|
||||
if not options.nacl:
|
||||
print("Skipping NaCl, NaCl toolchain, NaCl ports dependencies.",
|
||||
file=sys.stderr)
|
||||
return []
|
||||
print("Including NaCl, NaCl toolchain, NaCl ports dependencies.",
|
||||
file=sys.stderr)
|
||||
|
||||
packages = [
|
||||
"g++-mingw-w64-i686",
|
||||
"lib32z1-dev",
|
||||
"libasound2:i386",
|
||||
"libcap2:i386",
|
||||
"libelf-dev:i386",
|
||||
"libfontconfig1:i386",
|
||||
"libglib2.0-0:i386",
|
||||
"libgpm2:i386",
|
||||
"libncurses5:i386",
|
||||
"lib32ncurses5-dev",
|
||||
"libnss3:i386",
|
||||
"libpango-1.0-0:i386",
|
||||
"libssl-dev:i386",
|
||||
"libtinfo-dev",
|
||||
"libtinfo-dev:i386",
|
||||
"libtool",
|
||||
"libuuid1:i386",
|
||||
"libxcomposite1:i386",
|
||||
"libxcursor1:i386",
|
||||
"libxdamage1:i386",
|
||||
"libxi6:i386",
|
||||
"libxrandr2:i386",
|
||||
"libxss1:i386",
|
||||
"libxtst6:i386",
|
||||
"texinfo",
|
||||
"xvfb",
|
||||
# Packages to build NaCl, its toolchains, and its ports.
|
||||
"ant",
|
||||
"autoconf",
|
||||
"bison",
|
||||
"cmake",
|
||||
"gawk",
|
||||
"intltool",
|
||||
"xutils-dev",
|
||||
"xsltproc",
|
||||
]
|
||||
|
||||
# Some package names have changed over time
|
||||
if package_exists("libssl-dev"):
|
||||
packages.append("libssl-dev:i386")
|
||||
elif package_exists("libssl1.1"):
|
||||
packages.append("libssl1.1:i386")
|
||||
elif package_exists("libssl1.0.2"):
|
||||
packages.append("libssl1.0.2:i386")
|
||||
else:
|
||||
packages.append("libssl1.0.0:i386")
|
||||
|
||||
if package_exists("libtinfo5"):
|
||||
packages.append("libtinfo5")
|
||||
|
||||
if package_exists("libudev1"):
|
||||
packages.append("libudev1:i386")
|
||||
else:
|
||||
packages.append("libudev0:i386")
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
# Debian is in the process of transitioning to automatic debug packages, which
|
||||
# have the -dbgsym suffix (https://wiki.debian.org/AutomaticDebugPackages).
|
||||
# Untransitioned packages have the -dbg suffix. And on some systems, neither
|
||||
# will be available, so exclude the ones that are missing.
|
||||
def dbg_package_name(package):
|
||||
if package_exists(package + "-dbgsym"):
|
||||
return [package + "-dbgsym"]
|
||||
if package_exists(package + "-dbg"):
|
||||
return [package + "-dbg"]
|
||||
return []
|
||||
|
||||
|
||||
def dbg_list(options):
|
||||
if not options.syms:
|
||||
print("Skipping debugging symbols.", file=sys.stderr)
|
||||
return []
|
||||
print("Including debugging symbols.", file=sys.stderr)
|
||||
|
||||
packages = [
|
||||
dbg_package for package in lib_list()
|
||||
for dbg_package in dbg_package_name(package)
|
||||
]
|
||||
|
||||
# Debugging symbols packages not following common naming scheme
|
||||
if not dbg_package_name("libstdc++6"):
|
||||
for version in ["8", "7", "6", "5", "4.9", "4.8", "4.7", "4.6"]:
|
||||
if package_exists("libstdc++6-%s-dbg" % version):
|
||||
packages.append("libstdc++6-%s-dbg" % version)
|
||||
break
|
||||
|
||||
if not dbg_package_name("libatk1.0-0"):
|
||||
packages.extend(dbg_package_name("libatk1.0"))
|
||||
|
||||
if not dbg_package_name("libpango-1.0-0"):
|
||||
packages.extend(dbg_package_name("libpango1.0-dev"))
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
def package_list(options):
|
||||
packages = (dev_list() + lib_list() + dbg_list(options) +
|
||||
lib32_list(options) + arm_list(options) + nacl_list(options) +
|
||||
backwards_compatible_list(options))
|
||||
|
||||
# Sort all the :i386 packages to the front, to avoid confusing dpkg-query
|
||||
# (https://crbug.com/446172).
|
||||
return sorted(set(packages), key=lambda x: (not x.endswith(":i386"), x))
|
||||
|
||||
|
||||
def missing_packages(packages):
|
||||
try:
|
||||
subprocess.run(
|
||||
["dpkg-query", "-W", "-f", " "] + packages,
|
||||
check=True,
|
||||
capture_output=True,
|
||||
).decode()
|
||||
return []
|
||||
except subprocess.CalledProcessError as e:
|
||||
return [line.split(" ")[-1] for line in e.stderr.strip().splitlines()]
|
||||
|
||||
|
||||
def package_is_installable(package):
|
||||
result = subprocess.run(["apt-cache", "show", package],
|
||||
capture_output=True).decode()
|
||||
return result.returncode == 0
|
||||
|
||||
|
||||
def quick_check(options):
|
||||
if not options.quick_check:
|
||||
return
|
||||
|
||||
missing = missing_packages(package_list(options))
|
||||
if not missing:
|
||||
sys.exit(0)
|
||||
|
||||
not_installed = []
|
||||
unknown = []
|
||||
for p in missing:
|
||||
if package_is_installable(p):
|
||||
not_installed.append(p)
|
||||
else:
|
||||
unknown.append(p)
|
||||
|
||||
if not_installed:
|
||||
print("WARNING: The following packages are not installed:", file=sys.stderr)
|
||||
print(" ".join(not_installed), file=sys.stderr)
|
||||
|
||||
if unknown:
|
||||
print("WARNING: The following packages are unknown to your system",
|
||||
file=sys.stderr)
|
||||
print("(maybe missing a repo or need to 'sudo apt-get update'):",
|
||||
file=sys.stderr)
|
||||
print(" ".join(unknown), file=sys.stderr)
|
||||
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def find_missing_packages(options):
|
||||
print("Finding missing packages...", file=sys.stderr)
|
||||
|
||||
packages = package_list(options)
|
||||
packages_str = " ".join(packages)
|
||||
print("Packages required: " + packages_str, file=sys.stderr)
|
||||
|
||||
query_cmd = ["apt-get", "--just-print", "install"] + packages
|
||||
env = os.environ.copy()
|
||||
env["LANGUAGE"] = "en"
|
||||
env["LANG"] = "C"
|
||||
cmd_output = subprocess.check_output(query_cmd, env=env).decode()
|
||||
lines = cmd_output.splitlines()
|
||||
|
||||
install = []
|
||||
for pattern in (
|
||||
"The following NEW packages will be installed:",
|
||||
"The following packages will be upgraded:",
|
||||
):
|
||||
if pattern in lines:
|
||||
for line in lines[lines.index(pattern) + 1:]:
|
||||
if not line.startswith(" "):
|
||||
break
|
||||
install += line.strip().split(" ")
|
||||
return install
|
||||
|
||||
|
||||
def install_packages(options):
|
||||
try:
|
||||
packages = find_missing_packages(options)
|
||||
if packages:
|
||||
quiet = ["-qq", "--assume-yes"] if options.no_prompt else []
|
||||
subprocess.check_call(["sudo", "apt-get", "install"] + quiet + packages)
|
||||
print(file=sys.stderr)
|
||||
else:
|
||||
print("No missing packages, and the packages are up to date.",
|
||||
file=sys.stderr)
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
# An apt-get exit status of 100 indicates that a real error has occurred.
|
||||
print("`apt-get --just-print install ...` failed", file=sys.stderr)
|
||||
print("It produced the following output:", file=sys.stderr)
|
||||
print(e.output.decode(), file=sys.stderr)
|
||||
print(file=sys.stderr)
|
||||
print("You will have to install the above packages yourself.",
|
||||
file=sys.stderr)
|
||||
print(file=sys.stderr)
|
||||
sys.exit(100)
|
||||
|
||||
|
||||
# Install the Chrome OS default fonts. This must go after running
|
||||
# apt-get, since install-chromeos-fonts depends on curl.
|
||||
def install_chromeos_fonts(options):
|
||||
if not options.chromeos_fonts:
|
||||
print("Skipping installation of Chrome OS fonts.", file=sys.stderr)
|
||||
return
|
||||
print("Installing Chrome OS fonts.", file=sys.stderr)
|
||||
|
||||
dir = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
try:
|
||||
subprocess.check_call(
|
||||
["sudo",
|
||||
os.path.join(dir, "linux", "install-chromeos-fonts.py")])
|
||||
except subprocess.CalledProcessError:
|
||||
print("ERROR: The installation of the Chrome OS default fonts failed.",
|
||||
file=sys.stderr)
|
||||
if (subprocess.check_output(
|
||||
["stat", "-f", "-c", "%T", dir], ).decode().startswith("nfs")):
|
||||
print(
|
||||
"The reason is that your repo is installed on a remote file system.",
|
||||
file=sys.stderr)
|
||||
else:
|
||||
print(
|
||||
"This is expected if your repo is installed on a remote file system.",
|
||||
file=sys.stderr)
|
||||
|
||||
print("It is recommended to install your repo on a local file system.",
|
||||
file=sys.stderr)
|
||||
print("You can skip the installation of the Chrome OS default fonts with",
|
||||
file=sys.stderr)
|
||||
print("the command line option: --no-chromeos-fonts.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def install_locales():
|
||||
print("Installing locales.", file=sys.stderr)
|
||||
CHROMIUM_LOCALES = [
|
||||
"da_DK.UTF-8", "fr_FR.UTF-8", "he_IL.UTF-8", "zh_TW.UTF-8"
|
||||
]
|
||||
LOCALE_GEN = "/etc/locale.gen"
|
||||
if os.path.exists(LOCALE_GEN):
|
||||
old_locale_gen = open(LOCALE_GEN).read()
|
||||
for locale in CHROMIUM_LOCALES:
|
||||
subprocess.check_call(
|
||||
["sudo", "sed", "-i",
|
||||
"s/^# %s/%s/" % (locale, locale), LOCALE_GEN])
|
||||
|
||||
# Regenerating locales can take a while, so only do it if we need to.
|
||||
locale_gen = open(LOCALE_GEN).read()
|
||||
if locale_gen != old_locale_gen:
|
||||
subprocess.check_call(["sudo", "locale-gen"])
|
||||
else:
|
||||
print("Locales already up-to-date.", file=sys.stderr)
|
||||
else:
|
||||
for locale in CHROMIUM_LOCALES:
|
||||
subprocess.check_call(["sudo", "locale-gen", locale])
|
||||
|
||||
|
||||
def main():
|
||||
options = parse_args(sys.argv[1:])
|
||||
check_lsb_release()
|
||||
check_distro(options)
|
||||
check_architecture()
|
||||
quick_check(options)
|
||||
check_root()
|
||||
apt_update(options)
|
||||
install_packages(options)
|
||||
install_chromeos_fonts(options)
|
||||
install_locales()
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
|
@ -1,828 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
# Copyright 2023 The Chromium Authors and Alex313031
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
# Script to install everything needed to build chromium (well, ideally, anyway)
|
||||
# including items requiring sudo privileges.
|
||||
# See https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md
|
||||
# and https://chromium.googlesource.com/chromium/src/+/HEAD/docs/android_build_instructions.md
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 [--options]"
|
||||
echo "Options:"
|
||||
echo "--[no-]syms: enable or disable installation of debugging symbols"
|
||||
echo "--lib32: enable installation of 32-bit libraries, e.g. for V8 snapshot"
|
||||
echo "--[no-]android: enable or disable installation of android dependencies"
|
||||
echo "--[no-]arm: enable or disable installation of arm cross toolchain"
|
||||
echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\
|
||||
"fonts"
|
||||
echo "--[no-]nacl: enable or disable installation of prerequisites for"\
|
||||
"building standalone NaCl and all its toolchains"
|
||||
echo "--[no-]backwards-compatible: enable or disable installation of packages
|
||||
that are no longer currently needed and have been removed from this
|
||||
script. Useful for bisection."
|
||||
echo "--no-prompt: silently select standard options/defaults"
|
||||
echo "--quick-check: quickly try to determine if dependencies are installed"
|
||||
echo " (this avoids interactive prompts and sudo commands,"
|
||||
echo " so might not be 100% accurate)"
|
||||
echo "--unsupported: attempt installation even on unsupported systems"
|
||||
echo "Script will prompt interactively if options not given."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Build list of apt packages in dpkg --get-selections format.
|
||||
build_apt_package_list() {
|
||||
echo "Building apt package list." >&2
|
||||
apt-cache dumpavail | \
|
||||
python3 -c 'import re,sys; \
|
||||
o = sys.stdin.read(); \
|
||||
p = {"i386": ":i386"}; \
|
||||
f = re.M | re.S; \
|
||||
r = re.compile(r"^Package: (.+?)$.+?^Architecture: (.+?)$", f); \
|
||||
m = ["%s%s" % (x, p.get(y, "")) for x, y in re.findall(r, o)]; \
|
||||
print("\n".join(m))'
|
||||
}
|
||||
|
||||
# Checks whether a particular package is available in the repos.
|
||||
# Uses pre-formatted ${apt_package_list}.
|
||||
# USAGE: $ package_exists <package name>
|
||||
package_exists() {
|
||||
if [ -z "${apt_package_list}" ]; then
|
||||
echo "Call build_apt_package_list() prior to calling package_exists()" >&2
|
||||
apt_package_list=$(build_apt_package_list)
|
||||
fi
|
||||
# `grep` takes a regex string, so the +'s in package names, e.g. "libstdc++",
|
||||
# need to be escaped.
|
||||
local escaped="$(echo $1 | sed 's/[\~\+\.\:-]/\\&/g')"
|
||||
[ ! -z "$(grep "^${escaped}$" <<< "${apt_package_list}")" ]
|
||||
}
|
||||
|
||||
do_inst_arm=0
|
||||
do_inst_nacl=0
|
||||
do_inst_android=0
|
||||
|
||||
while [ "$1" != "" ]
|
||||
do
|
||||
case "$1" in
|
||||
--syms) do_inst_syms=1;;
|
||||
--no-syms) do_inst_syms=0;;
|
||||
--lib32) do_inst_lib32=1;;
|
||||
--android) do_inst_android=1;;
|
||||
--no-android) do_inst_android=0;;
|
||||
--arm) do_inst_arm=1;;
|
||||
--no-arm) do_inst_arm=0;;
|
||||
--chromeos-fonts) do_inst_chromeos_fonts=1;;
|
||||
--no-chromeos-fonts) do_inst_chromeos_fonts=0;;
|
||||
--nacl) do_inst_nacl=1;;
|
||||
--no-nacl) do_inst_nacl=0;;
|
||||
--backwards-compatible) do_inst_backwards_compatible=1;;
|
||||
--no-backwards-compatible) do_inst_backwards_compatible=0;;
|
||||
--add-cross-tool-repo) add_cross_tool_repo=1;;
|
||||
--no-prompt) do_default=1
|
||||
do_quietly="-qq --assume-yes"
|
||||
;;
|
||||
--quick-check) do_quick_check=1;;
|
||||
--unsupported) do_unsupported=1;;
|
||||
*) usage;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$do_inst_arm" = "1" ]; then
|
||||
do_inst_lib32=1
|
||||
fi
|
||||
|
||||
if [ "$do_inst_android" = "1" ]; then
|
||||
do_inst_lib32=1
|
||||
fi
|
||||
|
||||
# Check for lsb_release command in $PATH
|
||||
if ! which lsb_release > /dev/null; then
|
||||
echo "ERROR: lsb_release not found in \$PATH" >&2
|
||||
echo "try: sudo apt-get install lsb-release" >&2
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
distro_codename=$(lsb_release --codename --short)
|
||||
distro_id=$(lsb_release --id --short)
|
||||
supported_codenames="(bionic|focal|jammy|kinetic|lunar)"
|
||||
supported_ids="(Debian)"
|
||||
if [ 0 -eq "${do_unsupported-0}" ] && [ 0 -eq "${do_quick_check-0}" ] ; then
|
||||
if [[ ! $distro_codename =~ $supported_codenames &&
|
||||
! $distro_id =~ $supported_ids ]]; then
|
||||
echo -e "WARNING: The following distributions are supported,
|
||||
but distributions not in the list below can also try to install
|
||||
dependencies by passing the `--unsupported` parameter\n" \
|
||||
"\tUbuntu 18.04 LTS (bionic with EoL April 2028)\n" \
|
||||
"\tUbuntu 20.04 LTS (focal with EoL April 2030)\n" \
|
||||
"\tUbuntu 22.04 LTS (jammy with EoL April 2032)\n" \
|
||||
"\tUbuntu 22.10 (kinetic with EoL October 2023)\n" \
|
||||
"\tUbuntu 23.04 (lunar with EoL April 2024)\n" \
|
||||
"\tDebian 10 (buster) or later" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check system architecture
|
||||
if ! uname -m | egrep -q "i686|x86_64"; then
|
||||
echo "Only x86 architectures are currently supported" >&2
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "x$(id -u)" != x0 ] && [ 0 -eq "${do_quick_check-0}" ]; then
|
||||
echo "Running as non-root user."
|
||||
echo "You might have to enter your password one or more times for 'sudo'."
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ 0 -eq "${do_quick_check-0}" ] ; then
|
||||
if [ "$do_inst_lib32" = "1" ] || [ "$do_inst_nacl" = "1" ]; then
|
||||
sudo dpkg --add-architecture i386
|
||||
fi
|
||||
sudo apt-get update
|
||||
fi
|
||||
|
||||
# Populate ${apt_package_list} for package_exists() parsing.
|
||||
apt_package_list=$(build_apt_package_list)
|
||||
|
||||
# Packages needed for chromeos only
|
||||
chromeos_dev_list="libbluetooth-dev libxkbcommon-dev mesa-common-dev zstd"
|
||||
|
||||
if package_exists realpath; then
|
||||
chromeos_dev_list="${chromeos_dev_list} realpath"
|
||||
fi
|
||||
|
||||
# Packages needed for development
|
||||
dev_list="\
|
||||
binutils
|
||||
bison
|
||||
bzip2
|
||||
cdbs
|
||||
curl
|
||||
dbus-x11
|
||||
dpkg-dev
|
||||
elfutils
|
||||
devscripts
|
||||
fakeroot
|
||||
flex
|
||||
git-core
|
||||
gperf
|
||||
icoutils
|
||||
libasound2-dev
|
||||
libatspi2.0-dev
|
||||
libbrlapi-dev
|
||||
libbz2-dev
|
||||
libcairo2-dev
|
||||
libcap-dev
|
||||
libc6-dev
|
||||
libcups2-dev
|
||||
libcurl4-gnutls-dev
|
||||
libdrm-dev
|
||||
libelf-dev
|
||||
libevdev-dev
|
||||
libffi-dev
|
||||
libgbm-dev
|
||||
libglib2.0-dev
|
||||
libglu1-mesa-dev
|
||||
libgtk-3-dev
|
||||
libkrb5-dev
|
||||
libnspr4-dev
|
||||
libnss3-dev
|
||||
libpam0g-dev
|
||||
libpci-dev
|
||||
libpulse-dev
|
||||
libsctp-dev
|
||||
libspeechd-dev
|
||||
libsqlite3-dev
|
||||
libssl-dev
|
||||
libsystemd-dev
|
||||
libudev-dev
|
||||
libva-dev
|
||||
libwww-perl
|
||||
libxshmfence-dev
|
||||
libxslt1-dev
|
||||
libxss-dev
|
||||
libxt-dev
|
||||
libxtst-dev
|
||||
lighttpd
|
||||
locales
|
||||
openbox
|
||||
p7zip
|
||||
patch
|
||||
perl
|
||||
pkg-config
|
||||
rpm
|
||||
ruby
|
||||
subversion
|
||||
uuid-dev
|
||||
wdiff
|
||||
wget
|
||||
x11-utils
|
||||
xcompmgr
|
||||
xz-utils
|
||||
zip
|
||||
$chromeos_dev_list
|
||||
"
|
||||
|
||||
# 64-bit systems need a minimum set of 32-bit compat packages for the pre-built
|
||||
# NaCl binaries.
|
||||
if file -L /sbin/init | grep -q 'ELF 64-bit'; then
|
||||
dev_list="${dev_list} libc6-i386 lib32stdc++6"
|
||||
|
||||
# lib32gcc-s1 used to be called lib32gcc1 in older distros.
|
||||
if package_exists lib32gcc-s1; then
|
||||
dev_list="${dev_list} lib32gcc-s1"
|
||||
elif package_exists lib32gcc1; then
|
||||
dev_list="${dev_list} lib32gcc1"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Run-time libraries required by chromeos only
|
||||
chromeos_lib_list="libpulse0 libbz2-1.0"
|
||||
|
||||
# List of required run-time libraries
|
||||
common_lib_list="\
|
||||
lib32z1
|
||||
libasound2
|
||||
libatk1.0-0
|
||||
libatspi2.0-0
|
||||
libc6
|
||||
libcairo2
|
||||
libcap2
|
||||
libcgi-session-perl
|
||||
libcups2
|
||||
libdrm2
|
||||
libegl1
|
||||
libevdev2
|
||||
libexpat1
|
||||
libfontconfig1
|
||||
libfreetype6
|
||||
libgbm1
|
||||
libglib2.0-0
|
||||
libgl1
|
||||
libgtk-3-0
|
||||
libncurses5
|
||||
libpam0g
|
||||
libpango-1.0-0
|
||||
libpangocairo-1.0-0
|
||||
libpci3
|
||||
libpcre3
|
||||
libpixman-1-0
|
||||
libspeechd2
|
||||
libstdc++6
|
||||
libsqlite3-0
|
||||
libuuid1
|
||||
libwayland-egl1
|
||||
libwayland-egl1-mesa
|
||||
libx11-6
|
||||
libx11-xcb1
|
||||
libxau6
|
||||
libxcb1
|
||||
libxcomposite1
|
||||
libxcursor1
|
||||
libxdamage1
|
||||
libxdmcp6
|
||||
libxext6
|
||||
libxfixes3
|
||||
libxi6
|
||||
libxinerama1
|
||||
libxrandr2
|
||||
libxrender1
|
||||
libxtst6
|
||||
x11-utils
|
||||
xvfb
|
||||
zlib1g
|
||||
"
|
||||
|
||||
if package_exists libffi8; then
|
||||
common_lib_list="${common_lib_list} libffi8"
|
||||
elif package_exists libffi7; then
|
||||
common_lib_list="${common_lib_list} libffi7"
|
||||
elif package_exists libffi6; then
|
||||
common_lib_list="${common_lib_list} libffi6"
|
||||
fi
|
||||
|
||||
# Full list of required run-time libraries
|
||||
lib_list="\
|
||||
$common_lib_list
|
||||
$chromeos_lib_list
|
||||
"
|
||||
|
||||
# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf
|
||||
lib32_list="linux-libc-dev-i386-cross libpci3:i386"
|
||||
|
||||
# 32-bit libraries needed for a 32-bit build
|
||||
# includes some 32-bit libraries required by the Android SDK
|
||||
# See https://developer.android.com/sdk/installing/index.html?pkg=tools
|
||||
lib32_list="$lib32_list
|
||||
libasound2:i386
|
||||
libatk-bridge2.0-0:i386
|
||||
libatk1.0-0:i386
|
||||
libatspi2.0-0:i386
|
||||
libdbus-1-3:i386
|
||||
libegl1:i386
|
||||
libgl1:i386
|
||||
libglib2.0-0:i386
|
||||
libncurses5:i386
|
||||
libnss3:i386
|
||||
libpango-1.0-0:i386
|
||||
libpangocairo-1.0-0:i386
|
||||
libstdc++6:i386
|
||||
libwayland-egl1:i386
|
||||
libx11-xcb1:i386
|
||||
libxcomposite1:i386
|
||||
libxdamage1:i386
|
||||
libxkbcommon0:i386
|
||||
libxrandr2:i386
|
||||
libxtst6:i386
|
||||
zlib1g:i386
|
||||
"
|
||||
|
||||
# Packages that have been removed from this script. Regardless of configuration
|
||||
# or options passed to this script, whenever a package is removed, it should be
|
||||
# added here.
|
||||
backwards_compatible_list="\
|
||||
7za
|
||||
fonts-indic
|
||||
fonts-ipafont
|
||||
fonts-stix
|
||||
fonts-thai-tlwg
|
||||
fonts-tlwg-garuda
|
||||
g++
|
||||
g++-4.8-multilib-arm-linux-gnueabihf
|
||||
gcc-4.8-multilib-arm-linux-gnueabihf
|
||||
g++-9-multilib-arm-linux-gnueabihf
|
||||
gcc-9-multilib-arm-linux-gnueabihf
|
||||
gcc-arm-linux-gnueabihf
|
||||
g++-10-multilib-arm-linux-gnueabihf
|
||||
gcc-10-multilib-arm-linux-gnueabihf
|
||||
g++-10-arm-linux-gnueabihf
|
||||
gcc-10-arm-linux-gnueabihf
|
||||
git-svn
|
||||
language-pack-da
|
||||
language-pack-fr
|
||||
language-pack-he
|
||||
language-pack-zh-hant
|
||||
libappindicator-dev
|
||||
libappindicator1
|
||||
libappindicator3-1
|
||||
libappindicator3-dev
|
||||
libdconf-dev
|
||||
libdconf1
|
||||
libdconf1:i386
|
||||
libexif-dev
|
||||
libexif12
|
||||
libexif12:i386
|
||||
libgbm-dev
|
||||
libgbm-dev-lts-trusty
|
||||
libgbm-dev-lts-xenial
|
||||
libgconf-2-4:i386
|
||||
libgconf2-dev
|
||||
libgl1-mesa-dev
|
||||
libgl1-mesa-dev-lts-trusty
|
||||
libgl1-mesa-dev-lts-xenial
|
||||
libgl1-mesa-glx:i386
|
||||
libgl1-mesa-glx-lts-trusty:i386
|
||||
libgl1-mesa-glx-lts-xenial:i386
|
||||
libgles2-mesa-dev
|
||||
libgles2-mesa-dev-lts-trusty
|
||||
libgles2-mesa-dev-lts-xenial
|
||||
libgtk-3-0:i386
|
||||
libgtk2.0-0
|
||||
libgtk2.0-0:i386
|
||||
libgtk2.0-dev
|
||||
mesa-common-dev
|
||||
mesa-common-dev-lts-trusty
|
||||
mesa-common-dev-lts-xenial
|
||||
msttcorefonts
|
||||
python-dev
|
||||
python-setuptools
|
||||
ttf-dejavu-core
|
||||
ttf-indic-fonts
|
||||
ttf-kochi-gothic
|
||||
ttf-kochi-mincho
|
||||
ttf-mscorefonts-installer
|
||||
xfonts-mathml
|
||||
"
|
||||
|
||||
if package_exists python-is-python2; then
|
||||
backwards_compatible_list="${backwards_compatible_list} python-is-python2 python2-dev"
|
||||
else
|
||||
backwards_compatible_list="${backwards_compatible_list} python"
|
||||
fi
|
||||
|
||||
if package_exists python-crypto; then
|
||||
backwards_compatible_list="${backwards_compatible_list} python-crypto"
|
||||
fi
|
||||
|
||||
if package_exists python-numpy; then
|
||||
backwards_compatible_list="${backwards_compatible_list} python-numpy"
|
||||
fi
|
||||
|
||||
if package_exists python-openssl; then
|
||||
backwards_compatible_list="${backwards_compatible_list} python-openssl"
|
||||
fi
|
||||
|
||||
if package_exists python-psutil; then
|
||||
backwards_compatible_list="${backwards_compatible_list} python-psutil"
|
||||
fi
|
||||
|
||||
if package_exists python-yaml; then
|
||||
backwards_compatible_list="${backwards_compatible_list} python-yaml"
|
||||
fi
|
||||
if package_exists apache2.2-bin; then
|
||||
backwards_compatible_list="${backwards_compatible_list} apache2.2-bin"
|
||||
else
|
||||
backwards_compatible_list="${backwards_compatible_list} apache2-bin"
|
||||
fi
|
||||
if package_exists php8.1-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php8.1-cgi libapache2-mod-php8.1"
|
||||
elif package_exists php8.0-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php8.0-cgi libapache2-mod-php8.0"
|
||||
elif package_exists php7.4-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php7.4-cgi libapache2-mod-php7.4"
|
||||
elif package_exists php7.3-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php7.3-cgi libapache2-mod-php7.3"
|
||||
elif package_exists php7.2-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php7.2-cgi libapache2-mod-php7.2"
|
||||
elif package_exists php7.1-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php7.1-cgi libapache2-mod-php7.1"
|
||||
elif package_exists php7.0-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php7.0-cgi libapache2-mod-php7.0"
|
||||
elif package_exists php8.0-cgi; then
|
||||
backwards_compatible_list="${backwards_compatible_list} php8.0-cgi libapache2-mod-php8.0"
|
||||
else
|
||||
backwards_compatible_list="${backwards_compatible_list} php5-cgi libapache2-mod-php5"
|
||||
fi
|
||||
|
||||
# arm cross toolchain packages needed to build chrome on armhf
|
||||
arm_list="libc6-dev-armhf-cross
|
||||
libc6-dev-arm64-cross
|
||||
linux-libc-dev-armhf-cross
|
||||
linux-libc-dev-arm64-cross
|
||||
g++-arm-linux-gnueabihf"
|
||||
|
||||
# Work around for dependency issue Ubuntu: http://crbug.com/435056
|
||||
case $distro_codename in
|
||||
bionic)
|
||||
arm_list+=" g++-5-multilib-arm-linux-gnueabihf
|
||||
gcc-5-multilib-arm-linux-gnueabihf
|
||||
gcc-arm-linux-gnueabihf"
|
||||
;;
|
||||
focal)
|
||||
arm_list+=" g++-10-multilib-arm-linux-gnueabihf
|
||||
gcc-10-multilib-arm-linux-gnueabihf
|
||||
gcc-arm-linux-gnueabihf"
|
||||
;;
|
||||
jammy)
|
||||
arm_list+=" gcc-arm-linux-gnueabihf
|
||||
g++-11-arm-linux-gnueabihf
|
||||
gcc-11-arm-linux-gnueabihf"
|
||||
;;
|
||||
kinetic)
|
||||
arm_list+=" gcc-arm-linux-gnueabihf
|
||||
g++-11-arm-linux-gnueabihf
|
||||
gcc-11-arm-linux-gnueabihf"
|
||||
;;
|
||||
lunar)
|
||||
arm_list+=" gcc-arm-linux-gnueabihf
|
||||
g++-11-arm-linux-gnueabihf
|
||||
gcc-11-arm-linux-gnueabihf"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Packages to build NaCl, its toolchains, and its ports.
|
||||
naclports_list="ant autoconf bison cmake gawk intltool xutils-dev xsltproc"
|
||||
nacl_list="\
|
||||
g++-mingw-w64-i686
|
||||
lib32z1-dev
|
||||
libasound2:i386
|
||||
libcap2:i386
|
||||
libelf-dev:i386
|
||||
libfontconfig1:i386
|
||||
libglib2.0-0:i386
|
||||
libgpm2:i386
|
||||
libncurses5:i386
|
||||
lib32ncurses5-dev
|
||||
libnss3:i386
|
||||
libpango-1.0-0:i386
|
||||
libssl-dev:i386
|
||||
libtinfo-dev
|
||||
libtinfo-dev:i386
|
||||
libtool
|
||||
libuuid1:i386
|
||||
libxcomposite1:i386
|
||||
libxcursor1:i386
|
||||
libxdamage1:i386
|
||||
libxi6:i386
|
||||
libxrandr2:i386
|
||||
libxss1:i386
|
||||
libxtst6:i386
|
||||
texinfo
|
||||
xvfb
|
||||
${naclports_list}
|
||||
"
|
||||
|
||||
# Some package names have changed over time
|
||||
if package_exists libssl-dev; then
|
||||
nacl_list="${nacl_list} libssl-dev:i386"
|
||||
elif package_exists libssl1.1; then
|
||||
nacl_list="${nacl_list} libssl1.1:i386"
|
||||
elif package_exists libssl1.0.2; then
|
||||
nacl_list="${nacl_list} libssl1.0.2:i386"
|
||||
else
|
||||
nacl_list="${nacl_list} libssl1.0.0:i386"
|
||||
fi
|
||||
if package_exists libtinfo5; then
|
||||
nacl_list="${nacl_list} libtinfo5"
|
||||
fi
|
||||
if package_exists libpng16-16; then
|
||||
lib_list="${lib_list} libpng16-16"
|
||||
else
|
||||
lib_list="${lib_list} libpng12-0"
|
||||
fi
|
||||
if package_exists libnspr4; then
|
||||
lib_list="${lib_list} libnspr4 libnss3"
|
||||
else
|
||||
lib_list="${lib_list} libnspr4-0d libnss3-1d"
|
||||
fi
|
||||
if package_exists libjpeg-dev; then
|
||||
dev_list="${dev_list} libjpeg-dev"
|
||||
else
|
||||
dev_list="${dev_list} libjpeg62-dev"
|
||||
fi
|
||||
if package_exists libudev1; then
|
||||
dev_list="${dev_list} libudev1"
|
||||
nacl_list="${nacl_list} libudev1:i386"
|
||||
else
|
||||
dev_list="${dev_list} libudev0"
|
||||
nacl_list="${nacl_list} libudev0:i386"
|
||||
fi
|
||||
if package_exists libbrlapi0.8; then
|
||||
dev_list="${dev_list} libbrlapi0.8"
|
||||
elif package_exists libbrlapi0.7; then
|
||||
dev_list="${dev_list} libbrlapi0.7"
|
||||
elif package_exists libbrlapi0.6; then
|
||||
dev_list="${dev_list} libbrlapi0.6"
|
||||
else
|
||||
dev_list="${dev_list} libbrlapi0.5"
|
||||
fi
|
||||
if package_exists libav-tools; then
|
||||
dev_list="${dev_list} libav-tools"
|
||||
fi
|
||||
|
||||
# Some packages are only needed if the distribution actually supports
|
||||
# installing them.
|
||||
if package_exists appmenu-gtk; then
|
||||
lib_list="$lib_list appmenu-gtk"
|
||||
fi
|
||||
if package_exists libgnome-keyring0; then
|
||||
lib_list="${lib_list} libgnome-keyring0"
|
||||
fi
|
||||
if package_exists libgnome-keyring-dev; then
|
||||
lib_list="${lib_list} libgnome-keyring-dev"
|
||||
fi
|
||||
if package_exists libvulkan-dev; then
|
||||
dev_list="${dev_list} libvulkan-dev"
|
||||
fi
|
||||
if package_exists libvulkan1; then
|
||||
lib_list="${lib_list} libvulkan1"
|
||||
fi
|
||||
if package_exists libinput10; then
|
||||
lib_list="${lib_list} libinput10"
|
||||
fi
|
||||
if package_exists libinput-dev; then
|
||||
dev_list="${dev_list} libinput-dev"
|
||||
fi
|
||||
|
||||
# Cross-toolchain strip is needed for building the sysroots.
|
||||
if package_exists binutils-arm-linux-gnueabihf; then
|
||||
dev_list="${dev_list} binutils-arm-linux-gnueabihf"
|
||||
fi
|
||||
if package_exists binutils-aarch64-linux-gnu; then
|
||||
dev_list="${dev_list} binutils-aarch64-linux-gnu"
|
||||
fi
|
||||
if package_exists binutils-mipsel-linux-gnu; then
|
||||
dev_list="${dev_list} binutils-mipsel-linux-gnu"
|
||||
fi
|
||||
if package_exists binutils-mips64el-linux-gnuabi64; then
|
||||
dev_list="${dev_list} binutils-mips64el-linux-gnuabi64"
|
||||
fi
|
||||
|
||||
# When cross building for arm/Android on 64-bit systems the host binaries
|
||||
# that are part of v8 need to be compiled with -m32 which means
|
||||
# that basic multilib support is needed.
|
||||
if file -L /sbin/init | grep -q 'ELF 64-bit'; then
|
||||
# gcc-multilib conflicts with the arm cross compiler but
|
||||
# g++-X.Y-multilib gives us the 32-bit support that we need. Find out the
|
||||
# appropriate value of X and Y by seeing what version the current
|
||||
# distribution's g++-multilib package depends on.
|
||||
multilib_package=$(apt-cache depends g++-multilib --important | \
|
||||
grep -E --color=never --only-matching '\bg\+\+-[0-9.]+-multilib\b')
|
||||
lib32_list="$lib32_list $multilib_package"
|
||||
fi
|
||||
|
||||
if [ "$do_inst_syms" = "1" ]; then
|
||||
echo "Including debugging symbols."
|
||||
|
||||
# Debian is in the process of transitioning to automatic debug packages, which
|
||||
# have the -dbgsym suffix (https://wiki.debian.org/AutomaticDebugPackages).
|
||||
# Untransitioned packages have the -dbg suffix. And on some systems, neither
|
||||
# will be available, so exclude the ones that are missing.
|
||||
dbg_package_name() {
|
||||
if package_exists "$1-dbgsym"; then
|
||||
echo "$1-dbgsym"
|
||||
elif package_exists "$1-dbg"; then
|
||||
echo "$1-dbg"
|
||||
fi
|
||||
}
|
||||
|
||||
for package in "${common_lib_list}"; do
|
||||
dbg_list="$dbg_list $(dbg_package_name ${package})"
|
||||
done
|
||||
|
||||
# Debugging symbols packages not following common naming scheme
|
||||
if [ "$(dbg_package_name libstdc++6)" == "" ]; then
|
||||
if package_exists libstdc++6-8-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-8-dbg"
|
||||
elif package_exists libstdc++6-7-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-7-dbg"
|
||||
elif package_exists libstdc++6-6-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-6-dbg"
|
||||
elif package_exists libstdc++6-5-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-5-dbg"
|
||||
elif package_exists libstdc++6-4.9-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-4.9-dbg"
|
||||
elif package_exists libstdc++6-4.8-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-4.8-dbg"
|
||||
elif package_exists libstdc++6-4.7-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-4.7-dbg"
|
||||
elif package_exists libstdc++6-4.6-dbg; then
|
||||
dbg_list="${dbg_list} libstdc++6-4.6-dbg"
|
||||
fi
|
||||
fi
|
||||
if [ "$(dbg_package_name libatk1.0-0)" == "" ]; then
|
||||
dbg_list="$dbg_list $(dbg_package_name libatk1.0)"
|
||||
fi
|
||||
if [ "$(dbg_package_name libpango-1.0-0)" == "" ]; then
|
||||
dbg_list="$dbg_list $(dbg_package_name libpango1.0-dev)"
|
||||
fi
|
||||
else
|
||||
echo "Skipping debugging symbols."
|
||||
dbg_list=
|
||||
fi
|
||||
|
||||
if [ "$do_inst_lib32" = "1" ]; then
|
||||
echo "Including 32-bit libraries."
|
||||
else
|
||||
echo "Skipping 32-bit libraries."
|
||||
lib32_list=
|
||||
fi
|
||||
|
||||
if [ "$do_inst_android" = "1" ]; then
|
||||
echo "Including Android dependencies."
|
||||
else
|
||||
echo "Skipping Android dependencies."
|
||||
fi
|
||||
|
||||
if [ "$do_inst_arm" = "1" ]; then
|
||||
echo "Including ARM cross toolchain."
|
||||
else
|
||||
echo "Skipping ARM cross toolchain."
|
||||
arm_list=
|
||||
fi
|
||||
|
||||
if [ "$do_inst_nacl" = "1" ]; then
|
||||
echo "Including NaCl, NaCl toolchain, NaCl ports dependencies."
|
||||
else
|
||||
echo "Skipping NaCl, NaCl toolchain, NaCl ports dependencies."
|
||||
nacl_list=
|
||||
fi
|
||||
|
||||
filtered_backwards_compatible_list=
|
||||
if [ "$do_inst_backwards_compatible" = "1" ]; then
|
||||
echo "Including backwards compatible packages."
|
||||
for package in ${backwards_compatible_list}; do
|
||||
if package_exists ${package}; then
|
||||
filtered_backwards_compatible_list+=" ${package}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# The `sort -r -s -t: -k2` sorts all the :i386 packages to the front, to avoid
|
||||
# confusing dpkg-query (crbug.com/446172).
|
||||
packages="$(
|
||||
echo "${dev_list} ${lib_list} ${dbg_list} ${lib32_list} ${arm_list}" \
|
||||
"${nacl_list}" ${filtered_backwards_compatible_list} | tr " " "\n" | \
|
||||
sort -u | sort -r -s -t: -k2 | tr "\n" " "
|
||||
)"
|
||||
|
||||
if [ 1 -eq "${do_quick_check-0}" ] ; then
|
||||
if ! missing_packages="$(dpkg-query -W -f ' ' ${packages} 2>&1)"; then
|
||||
# Distinguish between packages that actually aren't available to the
|
||||
# system (i.e. not in any repo) and packages that just aren't known to
|
||||
# dpkg (i.e. managed by apt).
|
||||
missing_packages="$(echo "${missing_packages}" | awk '{print $NF}')"
|
||||
not_installed=""
|
||||
unknown=""
|
||||
for p in ${missing_packages}; do
|
||||
if apt-cache show ${p} > /dev/null 2>&1; then
|
||||
not_installed="${p}\n${not_installed}"
|
||||
else
|
||||
unknown="${p}\n${unknown}"
|
||||
fi
|
||||
done
|
||||
if [ -n "${not_installed}" ]; then
|
||||
echo "WARNING: The following packages are not installed:"
|
||||
echo -e "${not_installed}" | sed -e "s/^/ /"
|
||||
fi
|
||||
if [ -n "${unknown}" ]; then
|
||||
echo "WARNING: The following packages are unknown to your system"
|
||||
echo "(maybe missing a repo or need to 'sudo apt-get update'):"
|
||||
echo -e "${unknown}" | sed -e "s/^/ /"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Finding missing packages..."
|
||||
# Intentionally leaving $packages unquoted so it's more readable.
|
||||
echo "Packages required: " $packages
|
||||
echo
|
||||
query_cmd="apt-get --just-print install $(echo $packages)"
|
||||
if cmd_output="$(LANGUAGE=en LANG=C $query_cmd)"; then
|
||||
new_list=$(echo "$cmd_output" |
|
||||
sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d' |
|
||||
sed 's/ *$//')
|
||||
upgrade_list=$(echo "$cmd_output" |
|
||||
sed -e '1,/The following packages will be upgraded:/d;s/^ //;t;d' |
|
||||
sed 's/ *$//')
|
||||
if [ -z "$new_list" ] && [ -z "$upgrade_list" ]; then
|
||||
echo "No missing packages, and the packages are up to date."
|
||||
else
|
||||
echo "Installing and upgrading packages: $new_list $upgrade_list."
|
||||
sudo apt-get install ${do_quietly-} ${new_list} ${upgrade_list}
|
||||
fi
|
||||
echo
|
||||
else
|
||||
# An apt-get exit status of 100 indicates that a real error has occurred.
|
||||
|
||||
# I am intentionally leaving out the '"'s around query_cmd,
|
||||
# as this makes it easier to cut and paste the output
|
||||
echo "The following command failed: " ${query_cmd}
|
||||
echo
|
||||
echo "It produced the following output:"
|
||||
echo "$cmd_output"
|
||||
echo
|
||||
echo "You will have to install the above packages yourself."
|
||||
echo
|
||||
exit 100
|
||||
fi
|
||||
|
||||
# Install the Chrome OS default fonts. This must go after running
|
||||
# apt-get, since install-chromeos-fonts depends on curl.
|
||||
if [ "$do_inst_chromeos_fonts" != "0" ]; then
|
||||
echo
|
||||
echo "Installing Chrome OS fonts."
|
||||
dir=`echo $0 | sed -r -e 's/\/[^/]+$//'`
|
||||
if ! sudo $dir/linux/install-chromeos-fonts.py; then
|
||||
echo "ERROR: The installation of the Chrome OS default fonts failed."
|
||||
if [ `stat -f -c %T $dir` == "nfs" ]; then
|
||||
echo "The reason is that your repo is installed on a remote file system."
|
||||
else
|
||||
echo "This is expected if your repo is installed on a remote file system."
|
||||
fi
|
||||
echo "It is recommended to install your repo on a local file system."
|
||||
echo "You can skip the installation of the Chrome OS default fonts with"
|
||||
echo "the command line option: --no-chromeos-fonts."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Skipping installation of Chrome OS fonts."
|
||||
fi
|
||||
|
||||
echo "Installing locales."
|
||||
CHROMIUM_LOCALES="da_DK.UTF-8 fr_FR.UTF-8 he_IL.UTF-8 zh_TW.UTF-8"
|
||||
LOCALE_GEN=/etc/locale.gen
|
||||
if [ -e ${LOCALE_GEN} ]; then
|
||||
OLD_LOCALE_GEN="$(cat /etc/locale.gen)"
|
||||
for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do
|
||||
sudo sed -i "s/^# ${CHROMIUM_LOCALE}/${CHROMIUM_LOCALE}/" ${LOCALE_GEN}
|
||||
done
|
||||
# Regenerating locales can take a while, so only do it if we need to.
|
||||
if (echo "${OLD_LOCALE_GEN}" | cmp -s ${LOCALE_GEN}); then
|
||||
echo "Locales already up-to-date."
|
||||
else
|
||||
sudo locale-gen
|
||||
fi
|
||||
else
|
||||
for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do
|
||||
sudo locale-gen ${CHROMIUM_LOCALE}
|
||||
done
|
||||
fi
|
||||
|
||||
sudo snap install --classic snapcraft
|
||||
sudo snap install --classic multipass
|
|
@ -58,6 +58,72 @@ if (current_toolchain == default_toolchain) {
|
|||
|
||||
app_hooks_impl = "java/src/org/chromium/chrome/browser/AppHooksImpl.java"
|
||||
|
||||
template("chrome_public_bundle") {
|
||||
_is_monochrome = defined(invoker.is_monochrome) && invoker.is_monochrome
|
||||
if (_is_monochrome) {
|
||||
_module_descs = monochrome_module_descs
|
||||
} else {
|
||||
_module_descs = chrome_module_descs
|
||||
}
|
||||
|
||||
_base_module_target_name = "${invoker.target_name}__base_bundle_module"
|
||||
chrome_public_apk_or_module_tmpl(_base_module_target_name) {
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"add_view_trace_events",
|
||||
"expected_android_manifest",
|
||||
"is_64_bit_browser",
|
||||
"is_monochrome",
|
||||
"is_trichrome",
|
||||
"include_32_bit_webview",
|
||||
"include_64_bit_webview",
|
||||
"static_library_provider",
|
||||
"resource_ids_provider_dep",
|
||||
])
|
||||
target_type = "android_app_bundle_module"
|
||||
|
||||
srcjar_deps = []
|
||||
foreach(_module_desc, _module_descs) {
|
||||
if (defined(_module_desc.jni_registration)) {
|
||||
srcjar_deps += [ _module_desc.jni_registration ]
|
||||
}
|
||||
}
|
||||
|
||||
if (defined(invoker.expected_android_manifest_template)) {
|
||||
expected_android_manifest =
|
||||
string_replace(invoker.expected_android_manifest_template,
|
||||
"SPLIT_NAME",
|
||||
"base")
|
||||
}
|
||||
}
|
||||
|
||||
chrome_bundle(target_name) {
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"add_view_trace_events",
|
||||
"baseline_profile_path",
|
||||
"bundle_name",
|
||||
"enable_lint",
|
||||
"include_32_bit_webview",
|
||||
"include_64_bit_webview",
|
||||
"is_64_bit_browser",
|
||||
"is_monochrome",
|
||||
"is_trichrome",
|
||||
"lint_baseline_file",
|
||||
"lint_min_sdk_version",
|
||||
"lint_suppressions_file",
|
||||
"static_library_provider",
|
||||
"expected_android_manifest_template",
|
||||
"expected_libs_and_assets",
|
||||
"expected_proguard_config",
|
||||
])
|
||||
base_module_target = ":$_base_module_target_name"
|
||||
manifest_package = chrome_public_manifest_package
|
||||
module_descs = _module_descs
|
||||
chrome_deps = [ ":delegate_public_impl_java" ]
|
||||
}
|
||||
}
|
||||
|
||||
jinja_template("chrome_public_android_feature_vr_manifest") {
|
||||
input = "features/vr/java/AndroidManifest.xml"
|
||||
output = feature_module_vr_android_manifest_path
|
||||
|
@ -217,7 +283,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/android/webapk/libs/common:splash_java",
|
||||
"//chrome/android/webapk/libs/runtime_library:webapk_service_aidl_java",
|
||||
"//chrome/browser/accessibility/hierarchysnapshotter/android:java",
|
||||
"//chrome/browser/android/browserservices/constants:java",
|
||||
"//chrome/browser/android/auxiliary_search/proto:proto_java",
|
||||
"//chrome/browser/android/browserservices/intents:java",
|
||||
"//chrome/browser/android/browserservices/metrics:java",
|
||||
"//chrome/browser/android/browserservices/verification:java",
|
||||
|
@ -277,6 +343,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/password_entry_edit:public_java",
|
||||
"//chrome/browser/password_manager/android:java",
|
||||
"//chrome/browser/password_manager/android:settings_interface_java",
|
||||
"//chrome/browser/password_manager/android/pwd_migration:java",
|
||||
"//chrome/browser/policy/android:java",
|
||||
"//chrome/browser/preferences:java",
|
||||
"//chrome/browser/prefetch/android:java",
|
||||
|
@ -332,9 +399,6 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/user_education:java",
|
||||
"//chrome/browser/util:java",
|
||||
"//chrome/browser/version:java",
|
||||
"//chrome/browser/video_tutorials:factory_java",
|
||||
"//chrome/browser/video_tutorials:java",
|
||||
"//chrome/browser/video_tutorials:java_resources",
|
||||
"//chrome/browser/webapps/android:java",
|
||||
"//chrome/browser/webauthn/android:java",
|
||||
"//chrome/browser/xsurface:java",
|
||||
|
@ -487,7 +551,6 @@ if (current_toolchain == default_toolchain) {
|
|||
"//mojo/public/java/system:system_impl_java",
|
||||
"//mojo/public/mojom/base:base_java",
|
||||
"//net/android:net_java",
|
||||
"//services/audio/public/java:audio_feature_list_java",
|
||||
"//services/data_decoder/public/cpp/android:safe_json_java",
|
||||
"//services/device/public/java:device_feature_list_java",
|
||||
"//services/device/public/mojom:mojom_java",
|
||||
|
@ -532,7 +595,9 @@ if (current_toolchain == default_toolchain) {
|
|||
"//third_party/blink/public/mojom:android_mojo_bindings_java",
|
||||
"//third_party/blink/public/mojom:mojom_platform_java",
|
||||
"//third_party/gif_player:gif_player_java",
|
||||
"//third_party/kotlin_stdlib:kotlin_stdlib_java",
|
||||
"//third_party/metrics_proto:metrics_proto_java",
|
||||
"//ui/accessibility:ax_base_java",
|
||||
"//ui/android:ui_java",
|
||||
"//ui/base/ime/mojom:mojom_java",
|
||||
"//ui/base/mojom:mojom_java",
|
||||
|
@ -664,7 +729,7 @@ if (current_toolchain == default_toolchain) {
|
|||
java_package = "org.chromium.chrome.browser"
|
||||
}
|
||||
|
||||
# This is a list of all base module java dependencies. New features should be
|
||||
# This is a list of all chrome module java dependencies. New features should be
|
||||
# added to this list.
|
||||
java_group("chrome_all_java") {
|
||||
deps = [
|
||||
|
@ -681,13 +746,13 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/tabmodel/internal:java",
|
||||
"//chrome/browser/touch_to_fill/android/internal:java",
|
||||
"//chrome/browser/touch_to_fill/common/android:java",
|
||||
"//chrome/browser/touch_to_fill/password_generation/android/internal:java",
|
||||
"//chrome/browser/touch_to_fill/payments/android/internal:java",
|
||||
"//chrome/browser/ui/android/appmenu/internal:java",
|
||||
"//chrome/browser/ui/android/autofill/internal:java",
|
||||
"//chrome/browser/ui/android/edge_to_edge/internal:java",
|
||||
"//chrome/browser/ui/android/fast_checkout/internal:java",
|
||||
"//chrome/browser/ui/android/webid/internal:java",
|
||||
"//chrome/browser/video_tutorials/internal:java",
|
||||
"//components/browser_ui/bottomsheet/android/internal:java",
|
||||
"//components/messages/android/internal:java",
|
||||
"//components/segmentation_platform/internal:internal_java",
|
||||
|
@ -803,7 +868,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/android/webapk/libs/common:common_java",
|
||||
"//chrome/android/webapk/libs/common:splash_java",
|
||||
"//chrome/android/webapk/test:junit_test_support",
|
||||
"//chrome/browser/android/browserservices/constants:java",
|
||||
"//chrome/browser/android/auxiliary_search/proto:proto_java",
|
||||
"//chrome/browser/android/browserservices/intents:java",
|
||||
"//chrome/browser/android/browserservices/intents:junit",
|
||||
"//chrome/browser/android/browserservices/metrics:java",
|
||||
|
@ -862,6 +927,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/omaha/android:java",
|
||||
"//chrome/browser/optimization_guide/android:java",
|
||||
"//chrome/browser/partnercustomizations:java",
|
||||
"//chrome/browser/partnercustomizations:junit",
|
||||
"//chrome/browser/password_edit_dialog/android:junit",
|
||||
"//chrome/browser/password_entry_edit/android/internal:junit",
|
||||
"//chrome/browser/password_manager/android:java",
|
||||
|
@ -939,14 +1005,11 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/util:java",
|
||||
"//chrome/browser/util:junit_tests",
|
||||
"//chrome/browser/version:java",
|
||||
"//chrome/browser/video_tutorials:factory_java",
|
||||
"//chrome/browser/video_tutorials:java",
|
||||
"//chrome/browser/video_tutorials:test_support_java",
|
||||
"//chrome/browser/video_tutorials/internal:junit",
|
||||
"//chrome/browser/webapps/android:java",
|
||||
"//chrome/browser/xsurface:java",
|
||||
"//chrome/test:sync_integration_test_support_java",
|
||||
"//chrome/test/android:chrome_java_unit_test_support",
|
||||
"//components/autofill/android:autofill_features_java",
|
||||
"//components/autofill/android:main_autofill_java",
|
||||
"//components/autofill/android:prefeditor_autofill_java",
|
||||
"//components/background_task_scheduler:background_task_scheduler_java",
|
||||
|
@ -969,6 +1032,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//components/browser_ui/util/android:java",
|
||||
"//components/browser_ui/widget/android:java",
|
||||
"//components/browser_ui/widget/android:test_support_java",
|
||||
"//components/browsing_data/core:java",
|
||||
"//components/commerce/core:proto_java",
|
||||
"//components/commerce/core/android:core_java",
|
||||
"//components/content_capture/android:java",
|
||||
|
@ -1029,6 +1093,8 @@ if (current_toolchain == default_toolchain) {
|
|||
"//components/webapk/android/libs/client:java",
|
||||
"//components/webapk/android/libs/common:java",
|
||||
"//components/webapps/browser/android:java",
|
||||
"//components/webauthn/android:java",
|
||||
"//components/webauthn/android:test_support_java",
|
||||
"//content/public/android:content_java",
|
||||
"//content/public/common:common_java",
|
||||
"//content/public/test/android:content_java_test_support",
|
||||
|
@ -1036,6 +1102,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//mojo/public/java:system_java",
|
||||
"//mojo/public/mojom/base:base_java",
|
||||
"//net/android:net_java",
|
||||
"//services/device/public/java:device_feature_list_java",
|
||||
"//services/device/public/mojom:mojom_java",
|
||||
"//services/media_session/public/cpp/android:media_session_java",
|
||||
"//services/media_session/public/mojom:mojom_java",
|
||||
|
@ -1075,6 +1142,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//url:gurl_junit_tests",
|
||||
"//url:origin_java",
|
||||
"//url/mojom:url_mojom_gurl_java",
|
||||
"//url/mojom:url_mojom_origin_java",
|
||||
]
|
||||
|
||||
deps += chrome_junit_test_java_deps
|
||||
|
@ -1113,6 +1181,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//content/public/test/android:content_java_test_support",
|
||||
"//third_party/androidx:androidx_annotation_annotation_java",
|
||||
"//third_party/androidx:androidx_browser_browser_java",
|
||||
"//third_party/androidx:androidx_test_core_java",
|
||||
"//third_party/androidx:androidx_test_monitor_java",
|
||||
"//third_party/junit:junit",
|
||||
"//url:gurl_java",
|
||||
|
@ -1333,6 +1402,12 @@ if (current_toolchain == default_toolchain) {
|
|||
data = [ "//chrome/test/data/android/" ]
|
||||
}
|
||||
|
||||
flatbuffer_java_library(
|
||||
"critical_persisted_tab_data_flatbuffer_test_v1_java") {
|
||||
root_dir = "javatests/src/org/chromium/chrome/browser/tab/state/"
|
||||
sources = [ "$root_dir/critical_persisted_tab_data_test_v1.fbs" ]
|
||||
}
|
||||
|
||||
android_library("chrome_test_java") {
|
||||
testonly = true
|
||||
resources_package = "org.chromium.chrome.test"
|
||||
|
@ -1340,11 +1415,15 @@ if (current_toolchain == default_toolchain) {
|
|||
# From java_sources.gni.
|
||||
sources = chrome_test_java_sources
|
||||
|
||||
mergeable_android_manifests =
|
||||
[ "javatests/AndroidManifest_ChromeTests.xml" ]
|
||||
|
||||
deps = [
|
||||
":base_module_java",
|
||||
":browser_java_test_support",
|
||||
":chrome_app_java_resources",
|
||||
":chrome_test_util_java",
|
||||
":critical_persisted_tab_data_flatbuffer_test_v1_java",
|
||||
":delegate_public_impl_java",
|
||||
"$google_play_services_package:google_play_services_base_java",
|
||||
"$google_play_services_package:google_play_services_basement_java",
|
||||
|
@ -1371,7 +1450,6 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/android/webapk/libs/client:client_java",
|
||||
"//chrome/android/webapk/libs/common:common_java",
|
||||
"//chrome/android/webapk/libs/runtime_library:webapk_service_aidl_java",
|
||||
"//chrome/browser/android/browserservices/constants:java",
|
||||
"//chrome/browser/android/browserservices/intents:java",
|
||||
"//chrome/browser/android/browserservices/verification:java",
|
||||
"//chrome/browser/android/browserservices/verification:javatests",
|
||||
|
@ -1494,7 +1572,6 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/ui/messages/android:java",
|
||||
"//chrome/browser/uid/android:java",
|
||||
"//chrome/browser/util:java",
|
||||
"//chrome/browser/video_tutorials:test_support_java",
|
||||
"//chrome/browser/webapps/android:java",
|
||||
"//chrome/test:sync_integration_test_support_java",
|
||||
"//chrome/test:test_support_java",
|
||||
|
@ -1668,11 +1745,13 @@ if (current_toolchain == default_toolchain) {
|
|||
"//third_party/junit",
|
||||
"//third_party/metrics_proto:metrics_proto_java",
|
||||
"//third_party/mockito:mockito_java",
|
||||
"//ui/accessibility:ax_base_java",
|
||||
"//ui/android:clipboard_java_test_support",
|
||||
"//ui/android:ui_java",
|
||||
"//ui/android:ui_java_test_support",
|
||||
"//ui/base/ime/mojom:mojom_java",
|
||||
"//ui/base/mojom:mojom_java",
|
||||
"//url:android_test_helper_java",
|
||||
"//url:gurl_java",
|
||||
"//url:gurl_junit_test_support",
|
||||
"//url:origin_java",
|
||||
|
@ -1752,7 +1831,6 @@ if (current_toolchain == default_toolchain) {
|
|||
"//base:base_java_test_support",
|
||||
"//chrome/android:chrome_java",
|
||||
"//chrome/android:delegate_public_impl_java",
|
||||
"//chrome/android/features/vr:java",
|
||||
"//chrome/browser/flags:java",
|
||||
"//chrome/browser/tab:java",
|
||||
"//chrome/browser/tabmodel:java",
|
||||
|
@ -1767,6 +1845,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//net/android:net_java_test_support",
|
||||
"//third_party/androidx:androidx_annotation_annotation_java",
|
||||
"//third_party/androidx:androidx_browser_browser_java",
|
||||
"//third_party/androidx:androidx_test_core_java",
|
||||
"//third_party/androidx:androidx_test_monitor_java",
|
||||
"//third_party/androidx:androidx_test_rules_java",
|
||||
"//third_party/androidx:androidx_test_runner_java",
|
||||
|
@ -1775,6 +1854,10 @@ if (current_toolchain == default_toolchain) {
|
|||
"//ui/android:ui_java",
|
||||
]
|
||||
|
||||
if (enable_gvr_services) {
|
||||
chrome_test_xr_java_deps += [ "//chrome/android/features/vr:java" ]
|
||||
}
|
||||
|
||||
# Files used for both VR and AR testing
|
||||
android_library("chrome_test_xr_java") {
|
||||
testonly = true
|
||||
|
@ -1810,29 +1893,10 @@ if (current_toolchain == default_toolchain) {
|
|||
resources_package = "org.chromium.chrome.vr"
|
||||
|
||||
sources = [
|
||||
"javatests/src/org/chromium/chrome/browser/vr/EmulatedVrController.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/TestVrShellDelegate.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/VrDaydreamReadyModuleInstallTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/VrInstallUpdateMessageTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrDeviceTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrInputTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrPermissionTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrPermissionTestFramework.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrTabTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrTestFramework.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrTransitionTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/mock/MockVrCoreVersionChecker.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/mock/MockVrDaydreamApi.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/ChromeTabbedActivityVrTestRule.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/CustomTabActivityVrTestRule.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/VrModuleNotInstalled.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/VrTestRule.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/WebappActivityVrTestRule.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/NativeUiUtils.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/VrMessageUtils.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/VrShellDelegateUtils.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/VrTestRuleUtils.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/VrTransitionUtils.java",
|
||||
]
|
||||
|
||||
deps = chrome_test_xr_java_deps + [
|
||||
|
@ -1850,11 +1914,42 @@ if (current_toolchain == default_toolchain) {
|
|||
"//components/messages/android/internal:java",
|
||||
"//components/messages/android/test:test_support_java",
|
||||
"//components/module_installer/android:module_installer_java",
|
||||
"//third_party/gvr-android-sdk:controller_test_api_java",
|
||||
"//third_party/gvr-android-sdk:gvr_common_java",
|
||||
"//third_party/androidx:androidx_test_core_java",
|
||||
"//third_party/androidx:androidx_test_core_java",
|
||||
"//ui/android:ui_java_test_support",
|
||||
]
|
||||
|
||||
if (enable_gvr_services) {
|
||||
sources += [
|
||||
"javatests/src/org/chromium/chrome/browser/vr/EmulatedVrController.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/TestVrShellDelegate.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/VrDaydreamReadyModuleInstallTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/VrInstallUpdateMessageTest.java",
|
||||
|
||||
# TODO(https://crbug.com/1429384): Modify these tests to run on non-GVR runtimes.
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrDeviceTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrInputTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrPermissionTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrPermissionTestFramework.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrTabTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrTestFramework.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/WebXrVrTransitionTest.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/mock/MockVrCoreVersionChecker.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/mock/MockVrDaydreamApi.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/ChromeTabbedActivityVrTestRule.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/CustomTabActivityVrTestRule.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/rules/WebappActivityVrTestRule.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/VrShellDelegateUtils.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/VrTestRuleUtils.java",
|
||||
"javatests/src/org/chromium/chrome/browser/vr/util/VrTransitionUtils.java",
|
||||
]
|
||||
|
||||
deps += [
|
||||
"//third_party/gvr-android-sdk:controller_test_api_java",
|
||||
"//third_party/gvr-android-sdk:gvr_common_java",
|
||||
]
|
||||
}
|
||||
|
||||
data = [
|
||||
"//chrome/android/shared_preference_files/test/",
|
||||
"//third_party/gvr-android-sdk/test-apks/",
|
||||
|
@ -2158,17 +2253,6 @@ if (current_toolchain == default_toolchain) {
|
|||
is_bundle_module = true
|
||||
}
|
||||
|
||||
# Java libraries that go into each public chrome APK and base module. The chrome
|
||||
# JNI registration is generated based on this target.
|
||||
# TODO(tiborg): Remove the following three groups once we have a APK / module
|
||||
# target that contain exactly the grouped java libraries.
|
||||
java_group("chrome_public_base_module_java") {
|
||||
deps = [
|
||||
":chrome_all_java",
|
||||
":delegate_public_impl_java",
|
||||
]
|
||||
}
|
||||
|
||||
# Exists separately from chrome_public_base_module_java_for_test to allow
|
||||
# downstream to depend on test support packages without needing to depend on
|
||||
# delegate_public_impl_java.
|
||||
|
@ -2191,13 +2275,12 @@ if (current_toolchain == default_toolchain) {
|
|||
]
|
||||
}
|
||||
|
||||
# Similar to chrome_public_base_module_java but for Java libraries that go into
|
||||
# the public chrome test APK.
|
||||
java_group("chrome_public_base_module_java_for_test") {
|
||||
testonly = true
|
||||
deps = [
|
||||
":chrome_public_base_module_java",
|
||||
":chrome_all_java",
|
||||
":chrome_public_base_module_java_test_support",
|
||||
":delegate_public_impl_java",
|
||||
]
|
||||
}
|
||||
|
||||
|
@ -2279,6 +2362,10 @@ if (current_toolchain == default_toolchain) {
|
|||
baseline_profile_path = "//chrome/android/baseline_profiles/profile.txt"
|
||||
}
|
||||
|
||||
chrome_public_bundle("chrome_public_bundle") {
|
||||
bundle_name = "ChromePublic"
|
||||
}
|
||||
|
||||
android_library("monochrome_java") {
|
||||
deps = [
|
||||
":base_module_java",
|
||||
|
@ -2533,6 +2620,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/optimization_guide/android:unit_device_javatests",
|
||||
"//chrome/browser/partnercustomizations:unit_device_javatests",
|
||||
"//chrome/browser/password_edit_dialog/android:unit_device_javatests",
|
||||
"//chrome/browser/recent_tabs/internal:unit_device_javatests",
|
||||
"//chrome/browser/signin/services/android:unit_device_javatests",
|
||||
"//chrome/browser/thumbnail/generator:unit_device_javatests",
|
||||
"//chrome/browser/ui/android/appmenu/internal:unit_device_javatests",
|
||||
|
@ -2541,7 +2629,6 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/ui/android/searchactivityutils:unit_device_javatests",
|
||||
"//chrome/browser/ui/android/signin:unit_device_javatests",
|
||||
"//chrome/browser/ui/messages/android:unit_device_javatests",
|
||||
"//chrome/browser/video_tutorials/internal:unit_device_javatests",
|
||||
"//components/browser_ui/bottomsheet/android/internal:unit_device_javatests",
|
||||
"//components/browser_ui/contacts_picker/android:unit_device_javatests",
|
||||
"//components/browser_ui/modaldialog/android:unit_device_javatests",
|
||||
|
@ -2592,6 +2679,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"//chrome/browser/engagement/android:javatests",
|
||||
"//chrome/browser/flags:javatests",
|
||||
"//chrome/browser/password_check/android:test_java",
|
||||
"//chrome/browser/password_manager/android/pwd_migration:javatests",
|
||||
"//chrome/browser/subresource_filter:subresource_filter_javatests",
|
||||
"//chrome/browser/touch_to_fill/android:test_java",
|
||||
"//chrome/browser/touch_to_fill/payments/android/internal:javatests",
|
||||
|
@ -2668,10 +2756,13 @@ if (current_toolchain == default_toolchain) {
|
|||
"javatests/src/org/chromium/chrome/test/smoke/AndroidManifest.xml"
|
||||
target_sdk_version = android_sdk_version
|
||||
testonly = true
|
||||
sources =
|
||||
[ "javatests/src/org/chromium/chrome/test/smoke/ChromeSmokeTest.java" ]
|
||||
sources = [
|
||||
"javatests/src/org/chromium/chrome/test/smoke/ChromeTabSwitcherTest.java",
|
||||
"javatests/src/org/chromium/chrome/test/smoke/utilities/FirstRunNavigator.java",
|
||||
]
|
||||
data = [ "javatests/src/org/chromium/chrome/test/smoke/test.html" ]
|
||||
deps = [
|
||||
"//base:base_java",
|
||||
"//base:base_java_test_support",
|
||||
"//chrome/test/android:chrome_java_test_pagecontroller",
|
||||
"//content/public/test/android:content_java_test_support",
|
||||
|
@ -2881,65 +2972,6 @@ if (current_toolchain == default_toolchain) {
|
|||
]
|
||||
}
|
||||
|
||||
template("chrome_bundle_tmpl") {
|
||||
_is_monochrome = defined(invoker.is_monochrome) && invoker.is_monochrome
|
||||
|
||||
_base_module_target_name = "${invoker.target_name}__base_bundle_module"
|
||||
chrome_public_apk_or_module_tmpl(_base_module_target_name) {
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"add_view_trace_events",
|
||||
"expected_android_manifest",
|
||||
"is_64_bit_browser",
|
||||
"is_monochrome",
|
||||
"is_trichrome",
|
||||
"include_32_bit_webview",
|
||||
"include_64_bit_webview",
|
||||
"static_library_provider",
|
||||
"resource_ids_provider_dep",
|
||||
])
|
||||
target_type = "android_app_bundle_module"
|
||||
bundle_target = ":${invoker.target_name}"
|
||||
|
||||
if (defined(invoker.expected_android_manifest_template)) {
|
||||
expected_android_manifest =
|
||||
string_replace(invoker.expected_android_manifest_template,
|
||||
"SPLIT_NAME",
|
||||
"base")
|
||||
}
|
||||
}
|
||||
|
||||
chrome_bundle(target_name) {
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"add_view_trace_events",
|
||||
"baseline_profile_path",
|
||||
"bundle_name",
|
||||
"enable_lint",
|
||||
"include_32_bit_webview",
|
||||
"include_64_bit_webview",
|
||||
"is_64_bit_browser",
|
||||
"is_monochrome",
|
||||
"is_trichrome",
|
||||
"lint_baseline_file",
|
||||
"lint_min_sdk_version",
|
||||
"lint_suppressions_file",
|
||||
"static_library_provider",
|
||||
"expected_android_manifest_template",
|
||||
"expected_libs_and_assets",
|
||||
"expected_proguard_config",
|
||||
])
|
||||
base_module_target = ":$_base_module_target_name"
|
||||
manifest_package = chrome_public_manifest_package
|
||||
if (_is_monochrome) {
|
||||
module_descs = monochrome_module_descs
|
||||
} else {
|
||||
module_descs = chrome_module_descs
|
||||
}
|
||||
chrome_deps = [ ":delegate_public_impl_java" ]
|
||||
}
|
||||
}
|
||||
|
||||
group("android_lint") {
|
||||
if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
|
||||
assert(disable_android_lint)
|
||||
|
@ -2962,7 +2994,7 @@ if (current_toolchain == default_toolchain) {
|
|||
} else {
|
||||
# Public webview targets don't work with non-public sdks.
|
||||
# https://crbug.com/1000763
|
||||
chrome_bundle_tmpl("monochrome_public_bundle") {
|
||||
chrome_public_bundle("monochrome_public_bundle") {
|
||||
is_monochrome = true
|
||||
bundle_name = "MonochromePublic"
|
||||
|
||||
|
@ -3004,7 +3036,7 @@ if (current_toolchain == default_toolchain) {
|
|||
}
|
||||
}
|
||||
|
||||
chrome_bundle_tmpl("trichrome_chrome_bundle") {
|
||||
chrome_public_bundle("trichrome_chrome_bundle") {
|
||||
is_trichrome = true
|
||||
bundle_name = "TrichromeChrome"
|
||||
static_library_provider = ":trichrome_library_apk"
|
||||
|
@ -3118,14 +3150,14 @@ if (current_toolchain == default_toolchain) {
|
|||
}
|
||||
|
||||
if (android_64bit_target_cpu) {
|
||||
chrome_bundle_tmpl("monochrome_64_public_bundle") {
|
||||
chrome_public_bundle("monochrome_64_public_bundle") {
|
||||
is_monochrome = true
|
||||
bundle_name = "MonochromePublic64"
|
||||
is_64_bit_browser = true
|
||||
include_32_bit_webview = false
|
||||
}
|
||||
|
||||
chrome_bundle_tmpl("trichrome_chrome_64_bundle") {
|
||||
chrome_public_bundle("trichrome_chrome_64_bundle") {
|
||||
is_trichrome = true
|
||||
bundle_name = "TrichromeChrome64"
|
||||
is_64_bit_browser = true
|
||||
|
@ -3138,21 +3170,21 @@ if (current_toolchain == default_toolchain) {
|
|||
}
|
||||
|
||||
if (!skip_secondary_abi_for_cq) {
|
||||
chrome_bundle_tmpl("monochrome_32_public_bundle") {
|
||||
chrome_public_bundle("monochrome_32_public_bundle") {
|
||||
is_monochrome = true
|
||||
bundle_name = "MonochromePublic32"
|
||||
is_64_bit_browser = false
|
||||
include_64_bit_webview = false
|
||||
}
|
||||
|
||||
chrome_bundle_tmpl("monochrome_64_32_public_bundle") {
|
||||
chrome_public_bundle("monochrome_64_32_public_bundle") {
|
||||
is_monochrome = true
|
||||
bundle_name = "MonochromePublic6432"
|
||||
is_64_bit_browser = true
|
||||
include_32_bit_webview = true
|
||||
}
|
||||
|
||||
chrome_bundle_tmpl("trichrome_chrome_64_32_bundle") {
|
||||
chrome_public_bundle("trichrome_chrome_64_32_bundle") {
|
||||
is_trichrome = true
|
||||
bundle_name = "TrichromeChrome6432"
|
||||
is_64_bit_browser = true
|
||||
|
@ -3163,7 +3195,7 @@ if (current_toolchain == default_toolchain) {
|
|||
"expectations/$target_name.$target_cpu.libs_and_assets.expected"
|
||||
}
|
||||
}
|
||||
chrome_bundle_tmpl("trichrome_chrome_32_bundle") {
|
||||
chrome_public_bundle("trichrome_chrome_32_bundle") {
|
||||
is_trichrome = true
|
||||
bundle_name = "TrichromeChrome32"
|
||||
is_64_bit_browser = false
|
||||
|
@ -3197,7 +3229,6 @@ generate_jni("chrome_jni_headers") {
|
|||
"java/src/org/chromium/chrome/browser/announcement/AnnouncementNotificationManager.java",
|
||||
"java/src/org/chromium/chrome/browser/app/send_tab_to_self/SendTabToSelfNotificationReceiver.java",
|
||||
"java/src/org/chromium/chrome/browser/app/tab_activity_glue/ReparentingTask.java",
|
||||
"java/src/org/chromium/chrome/browser/app/video_tutorials/VideoTutorialsServiceUtils.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/AutofillAccessibilityUtils.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/AutofillExpirationDateFixFlowBridge.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/AutofillLogger.java",
|
||||
|
@ -3209,11 +3240,10 @@ generate_jni("chrome_jni_headers") {
|
|||
"java/src/org/chromium/chrome/browser/autofill/PhoneNumberUtil.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePrompt.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePromptController.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/VirtualCardEnrollmentDelegate.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/VirtualCardEnrollmentDialogViewBridge.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsDelegate.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfileBridge.java",
|
||||
"java/src/org/chromium/chrome/browser/autofill/settings/VirtualCardEnrollmentFields.java",
|
||||
"java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchBridge.java",
|
||||
"java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTask.java",
|
||||
"java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTaskScheduler.java",
|
||||
"java/src/org/chromium/chrome/browser/background_sync/GooglePlayServicesChecker.java",
|
||||
|
@ -3221,7 +3251,6 @@ generate_jni("chrome_jni_headers") {
|
|||
"java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java",
|
||||
"java/src/org/chromium/chrome/browser/background_task_scheduler/ProxyNativeTask.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java",
|
||||
"java/src/org/chromium/chrome/browser/browserservices/QualityEnforcer.java",
|
||||
"java/src/org/chromium/chrome/browser/browserservices/digitalgoods/SiteIsolator.java",
|
||||
"java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java",
|
||||
"java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappGeolocationBridge.java",
|
||||
|
@ -3340,7 +3369,6 @@ generate_jni("chrome_jni_headers") {
|
|||
"java/src/org/chromium/chrome/browser/query_tiles/QueryTileUtils.java",
|
||||
"java/src/org/chromium/chrome/browser/query_tiles/TileProviderFactory.java",
|
||||
"java/src/org/chromium/chrome/browser/query_tiles/TileServiceUtils.java",
|
||||
"java/src/org/chromium/chrome/browser/read_later/ReadingListBridge.java",
|
||||
"java/src/org/chromium/chrome/browser/renderer_host/ChromeNavigationUIData.java",
|
||||
"java/src/org/chromium/chrome/browser/resources/ResourceMapper.java",
|
||||
"java/src/org/chromium/chrome/browser/rlz/RevenueStats.java",
|
||||
|
@ -3469,6 +3497,7 @@ template("libchrome_impl") {
|
|||
deps += [ "//chrome/browser/android/vr:module_factory" ]
|
||||
}
|
||||
|
||||
java_targets = [ "//chrome/android:chrome_public_apk" ]
|
||||
forward_variables_from(invoker, "*", [ "deps" ])
|
||||
}
|
||||
}
|
||||
|
@ -3487,6 +3516,8 @@ libchrome_impl("libchrome") {
|
|||
# it comes before the actual (very slow) link step.
|
||||
deps = [ ":libchrome_inputs" ]
|
||||
}
|
||||
|
||||
module_descs = chrome_module_descs
|
||||
}
|
||||
|
||||
chrome_common_shared_library("libchromefortest") {
|
||||
|
@ -3516,9 +3547,6 @@ chrome_common_shared_library("libchromefortest") {
|
|||
if (enable_vr) {
|
||||
deps += [ "//chrome/browser/android/vr:test_support" ]
|
||||
}
|
||||
if (allow_jni_multiplexing) {
|
||||
enable_jni_multiplexing = true
|
||||
}
|
||||
|
||||
# Make this a partitioned library, since some partitioned code is linked in
|
||||
# (otherwise, the library will warn at build time that it contains multiple
|
||||
|
@ -3526,6 +3554,19 @@ chrome_common_shared_library("libchromefortest") {
|
|||
# required or packaged into the APK. This can be removed if LLD starts
|
||||
# supporting a "no partitions" argument (https://crbug.com/1021108).
|
||||
module_descs = []
|
||||
|
||||
java_targets = [
|
||||
"//chrome/android:chrome_public_unit_test_apk__test_apk",
|
||||
"//chrome/android:chrome_public_test_apk__test_apk",
|
||||
"//chrome/test/android:chrome_java_test_pagecontroller_tests__test_apk",
|
||||
"//chrome/test/android:chrome_java_test_wpr_tests__test_apk",
|
||||
"//chrome/test/android:chrome_java_test_feed_test__test_apk",
|
||||
"//chrome/test/android:chrome_webapk_integration_tests__test_apk",
|
||||
"//chrome/test/android:chrome_java_test_pagecontroller_codelab__test_apk",
|
||||
]
|
||||
if (enable_vr) {
|
||||
java_targets += [ "//chrome/android:chrome_public_test_vr_apk__test_apk" ]
|
||||
}
|
||||
}
|
||||
|
||||
# Monochrome equivalent of Chrome's APK or bundle library template.
|
||||
|
@ -3550,6 +3591,11 @@ template("libmonochrome_apk_or_bundle_tmpl") {
|
|||
if (allow_jni_multiplexing) {
|
||||
enable_jni_multiplexing = true
|
||||
}
|
||||
if (android_64bit_target_cpu) {
|
||||
java_targets = [ "//chrome/android:monochrome_64_public_bundle" ]
|
||||
} else {
|
||||
java_targets = [ "//chrome/android:monochrome_public_bundle" ]
|
||||
}
|
||||
|
||||
if (enable_vr) {
|
||||
deps += [ "//chrome/browser/android/vr:module_factory" ]
|
||||
|
|
|
@ -174,6 +174,11 @@ template("chrome_common_apk_or_module_tmpl") {
|
|||
_version_code = chrome_version_code
|
||||
}
|
||||
|
||||
# Need to apply override explicitly to have it apply to library version.
|
||||
if (android_override_version_code != "") {
|
||||
_version_code = android_override_version_code
|
||||
}
|
||||
|
||||
if (defined(invoker.manifest_package)) {
|
||||
_manifest_package = invoker.manifest_package
|
||||
} else if (_is_test) {
|
||||
|
@ -466,7 +471,6 @@ template("chrome_common_apk_or_module_tmpl") {
|
|||
} else if (!_is_trichrome) {
|
||||
deps += [
|
||||
"//chrome/android:chrome_public_apk_base_module_resources",
|
||||
"//chrome/android:chrome_public_base_module_java",
|
||||
"//chrome/android:chrome_public_non_pak_assets",
|
||||
"//components/browser_ui/styles/android:chrome_public_apk_resources",
|
||||
]
|
||||
|
@ -478,7 +482,10 @@ template("chrome_common_apk_or_module_tmpl") {
|
|||
"//components/language/android:ulp_delegate_public_java",
|
||||
]
|
||||
} else {
|
||||
deps += [ "//chrome/android:delegate_public_impl_java" ]
|
||||
deps += [
|
||||
"//chrome/android:chrome_all_java",
|
||||
"//chrome/android:delegate_public_impl_java",
|
||||
]
|
||||
}
|
||||
if (_is_test) {
|
||||
deps += [ "//chrome/android:chrome_public_base_module_java_for_test" ]
|
||||
|
@ -545,32 +552,48 @@ template("chrome_common_apk_or_module_tmpl") {
|
|||
shared_libraries += invoker.shared_libraries
|
||||
} else if (_is_test) {
|
||||
shared_libraries += [ "//chrome/android:libchromefortest" ]
|
||||
} else if (_is_monochrome) {
|
||||
srcjar_deps = [ "//chrome/android:libchromefortest__jni_registration($default_toolchain)" ]
|
||||
} else if (_is_monochrome || _is_trichrome) {
|
||||
# We are only doing the jni_registrations for Trichrome - the actual
|
||||
# native libraries will end up in the Trichrome library.
|
||||
if (android_64bit_target_cpu) {
|
||||
# Build //android_webview:monochrome with the opposite bitness that
|
||||
# Chrome runs in.
|
||||
if (_is_64_bit_browser) {
|
||||
shared_libraries += [ "//chrome/android:libmonochrome_64" ]
|
||||
if (_include_32_bit_webview) {
|
||||
secondary_abi_shared_libraries += [ "//android_webview:monochrome_64($android_secondary_abi_toolchain)" ]
|
||||
}
|
||||
if (build_hwasan_splits) {
|
||||
shared_libraries +=
|
||||
[ "//chrome/android:libmonochrome_64($_hwasan_toolchain)" ]
|
||||
srcjar_deps = [ "//chrome/android:libmonochrome_64__jni_registration($default_toolchain)" ]
|
||||
if (_is_monochrome) {
|
||||
shared_libraries += [ "//chrome/android:libmonochrome_64" ]
|
||||
if (_include_32_bit_webview) {
|
||||
secondary_abi_shared_libraries += [ "//android_webview:monochrome_64($android_secondary_abi_toolchain)" ]
|
||||
}
|
||||
if (build_hwasan_splits) {
|
||||
shared_libraries +=
|
||||
[ "//chrome/android:libmonochrome_64($_hwasan_toolchain)" ]
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (_include_64_bit_webview) {
|
||||
shared_libraries += [ "//android_webview:monochrome" ]
|
||||
srcjar_deps = [ "//chrome/android:libmonochrome__jni_registration($android_secondary_abi_toolchain)" ]
|
||||
if (_is_monochrome) {
|
||||
if (_include_64_bit_webview) {
|
||||
shared_libraries += [ "//android_webview:monochrome" ]
|
||||
}
|
||||
secondary_abi_shared_libraries += [ "//chrome/android:libmonochrome($android_secondary_abi_toolchain)" ]
|
||||
}
|
||||
secondary_abi_shared_libraries += [
|
||||
"//chrome/android:libmonochrome($android_secondary_abi_toolchain)",
|
||||
]
|
||||
}
|
||||
} else {
|
||||
shared_libraries += [ "//chrome/android:libmonochrome" ]
|
||||
srcjar_deps = [ "//chrome/android:libmonochrome__jni_registration($default_toolchain)" ]
|
||||
if (_is_monochrome) {
|
||||
shared_libraries += [ "//chrome/android:libmonochrome" ]
|
||||
}
|
||||
}
|
||||
} else if (!_is_trichrome) {
|
||||
shared_libraries += [ "//chrome/android:libchrome" ]
|
||||
srcjar_deps =
|
||||
[ "//chrome/android:libchrome__jni_registration($default_toolchain)" ]
|
||||
}
|
||||
|
||||
if (defined(invoker.srcjar_deps)) {
|
||||
srcjar_deps += invoker.srcjar_deps
|
||||
}
|
||||
|
||||
if (enable_arcore) {
|
||||
|
@ -719,6 +742,7 @@ template("chrome_common_apk_or_module_tmpl") {
|
|||
"secondary_abi_loadable_modules",
|
||||
"secondary_abi_shared_libraries",
|
||||
"shared_libraries",
|
||||
"srcjar_deps",
|
||||
"version_code",
|
||||
"version_name",
|
||||
])
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright 2023 The Chromium Authors and Alex313031. All rights reserved.
|
||||
// Copyright 2012 The Chromium Authors and Alex313031
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
|
@ -30,8 +30,8 @@
|
|||
#include "url/gurl.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
|
||||
#include "chrome/browser/supervised_user/supervised_user_service.h"
|
||||
#include "chrome/browser/supervised_user/supervised_user_service_factory.h"
|
||||
#include "components/supervised_user/core/browser/supervised_user_service.h"
|
||||
#include "components/supervised_user/core/browser/supervised_user_url_filter.h" // nogncheck
|
||||
#endif
|
||||
|
||||
|
@ -140,7 +140,7 @@ bool IsNTPOrRelatedURLHelper(const GURL& url, Profile* profile) {
|
|||
|
||||
bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) {
|
||||
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
|
||||
SupervisedUserService* supervised_user_service =
|
||||
supervised_user::SupervisedUserService* supervised_user_service =
|
||||
SupervisedUserServiceFactory::GetForProfile(profile);
|
||||
if (!supervised_user_service ||
|
||||
!supervised_user_service->IsURLFilteringEnabled()) {
|
||||
|
|
|
@ -600,9 +600,6 @@ CHAR_LIMIT guidelines:
|
|||
<message name="IDS_PASSWORDS_LEAK_DETECTION_SWITCH_TITLE" desc="Title for the switch toggling whether Thorium should check that entered credentials have been part of a leak.">
|
||||
Warn you if passwords are exposed in a data breach
|
||||
</message>
|
||||
<message name="IDS_PASSWORDS_LEAK_DETECTION_SWITCH_SIGNED_OUT_ENABLE_DESCRIPTION" desc="Description for the switch toggling whether Thorium should check that entered credentials have been part of a leak. Displayed for users who are not signed in and syncing.">
|
||||
When you sign in to your Google Account, this feature is turned on
|
||||
</message>
|
||||
<message name="IDS_PASSWORDS_CHECK_TITLE" desc="Title for the check passwords button which allows to check whether the user's passwords have been compromised.">
|
||||
Check passwords
|
||||
</message>
|
||||
|
@ -732,18 +729,25 @@ CHAR_LIMIT guidelines:
|
|||
<message name="IDS_PASSWORD_SETTINGS_EXPORT_ERROR_DETAILS" desc="A short prefix to introduce a technical error message passed to the user from Android after exporting passwords through a temporary file fails. Both the prefix and the error message are shown in the body of an alert dialog.">
|
||||
Details: <ph name="ERROR_DESCRIPTION">%1$s<ex>IOException: No space left on device</ex></ph>
|
||||
</message>
|
||||
<message name="IDS_UPM_ERROR_NOTIFICATION_TITLE" translateable="false" desc="The title of the UI surface telling the user that the new password manager backend has encountered an error.">
|
||||
Unified password manager error
|
||||
</message>
|
||||
<message name="IDS_UPM_ERROR_NOTIFICATION_CONTENTS" translateable="false" desc="The contents of the UI surface shown when the new password manager backend encounters an error, prompting the user to file a bug.">
|
||||
The unified password manager was automatically disabled. Please submit an issue via the bug app!
|
||||
</message>
|
||||
<message name="IDS_PASSWORDS_NOT_SECURE_FILLING" desc="The title of the dialog which is shown when the user attempts to enter obfuscated text to a regular text field.">
|
||||
Not secure
|
||||
</message>
|
||||
<message name="IDS_PASSWORDS_NOT_SECURE_FILLING_DETAILS" desc="The message of the dialog which is shown when the user attempts to enter obfuscated text to a regular text field.">
|
||||
To protect your privacy, Thorium will not autofill your password in this field.
|
||||
</message>
|
||||
<message name="IDS_PASSWORD_MIGRATION_WARNING_TITLE" desc="The title of the password migration warning sheet.">
|
||||
We’re changing how passwords are saved on this device
|
||||
</message>
|
||||
<message name="IDS_PASSWORD_MIGRATION_WARNING_SUBTITLE" desc="The subtitle of the password migration warning sheet." formatter_data="android_java">
|
||||
Your lists of saved passwords for Thorium and Thorium <ph name="ERROR_DESCRIPTION">%1$s<ex>Dev</ex></ph> will merge after version 121. You’ll be able to autofill all your saved passwords on both apps.
|
||||
</message>
|
||||
<message name="IDS_PASSWORD_MIGRATION_WARNING_ACKNOWLEDGE" desc="The text on the button that acknowledges the password migration warning.">
|
||||
Got it
|
||||
</message>
|
||||
<message name="IDS_PASSWORD_MIGRATION_WARNING_OTHER_OPTIONS" desc="The text on the button that leads to other options in the password migration warning sheet.">
|
||||
Other options
|
||||
</message>
|
||||
|
||||
|
||||
<!-- Lock Screen Fragment -->
|
||||
<message name="IDS_LOCKSCREEN_DESCRIPTION_COPY" desc="When a user attempts to copy a password for a particular website into clipboard in Thorium's settings, Thorium launches a lock screen to verify the user's identity and displays the following explanation.">
|
||||
|
@ -841,8 +845,8 @@ CHAR_LIMIT guidelines:
|
|||
<message name="IDS_CONTEXTUAL_SEARCH_SEE_BETTER_RESULTS_SUMMARY" desc="Summary for the see better results switch in Contextual Search preference.">
|
||||
By including more of a page’s text, you might see better results
|
||||
</message>
|
||||
<message name="IDS_DO_NOT_TRACK_TITLE" desc="Title for 'Do Not Track' preference">
|
||||
“Do Not Track”
|
||||
<message name="IDS_DO_NOT_TRACK_TITLE" desc="Title for the 'Do Not Track' preference. Please leave the 'Do Not Track' part in English according to the glossary.">
|
||||
Send a “Do Not Track” request
|
||||
</message>
|
||||
<message name="IDS_DO_NOT_TRACK_DESCRIPTION" desc="Description for 'Do Not Track' preference">
|
||||
Enabling “Do Not Track” means that a request will be included with your browsing traffic. Any effect depends on whether a website responds to the request, and how the request is interpreted.
|
||||
|
@ -866,6 +870,9 @@ For example, some websites may respond to this request by showing you ads that a
|
|||
<message name="IDS_PRIVACY_SANDBOX_SNACKBAR_MESSAGE" desc="The text displayed in the snackbar, which gives the user an option to navigate to the Privacy Sandbox settings page. 'Privacy sandbox' has TC ID 5753235213964358658.">
|
||||
Learn about and control new technologies that aim to replace third-party cookies
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_AD_PRIVACY_RESTRICTED_LINK_ROW_SUB_LABEL" desc="A string that describes 'Ad privacy', the label that appears just above it. This is the version of IDS_SETTINGS_AD_PRIVACY_PAGE_TOPICS_LINK_ROW_LABEL for restricted users.">
|
||||
Manage info used by sites to measure ad performance
|
||||
</message>
|
||||
|
||||
<message name="IDS_PRIVACY_SANDBOX_TRIALS_TITLE" desc="The title of the settings page on which the user can find all Privacy Sandbox trials. When launched, this page will appear at chrome://settings/privacySandbox. To get there: 1) go to Thorium settings 2) From the main menu (top left of the page) choose “Security and privacy” 3) At the bottom of the page, choose “Privacy Sandbox” There are 3 cards on this page that are presented as features. Only the first includes controls the user can manage, but we want to convey that Privacy Sandbox includes all of the things on this page.">
|
||||
Trials
|
||||
|
@ -1069,14 +1076,17 @@ Private state tokens improve privacy on the web and can’t be used to find out
|
|||
</message>
|
||||
|
||||
<!-- Privacy Sandbox v4 - Consent & Notice Flow -->
|
||||
<message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_EEA_BULLET_2" desc="* This is 2 of 2 bullets that site beneath the sentence: 'We’re launching new ways to limit what sites can learn about you when they show you personalized ads, for example:' * 'ad measurement' is the name of a new setting we're launching and that appears on the Ad privacy page of Thorium settings. * 'limited types of data': This setting helps an advertiser associate a user's actions on one site with their actions on another. For example, a user sees an ad on one site and then later buys that product from the company that sells the product. The ad measurement setting allows Thorium to help a company make the association between the two sites so that the first site can be fairly compensated for showing an ad. Compared with third-party cookies, very little info is shared between sites to support this functionality. **** CONTEXT PRIVACY SANDBOX **** Thorium’s Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** CONTEXT EEA NOTICE **** 1) This screen provides notice to Thorium users in the European Economic Area (EEA). It follows guidelines established by the GDPR. 2) This screen is the second of 2 screens. This second screen describes 2 settings: “Site-suggested ads” and “Ad measurement”. The first screen describes the “Ad topics” setting. " formatter_data="android_java">
|
||||
<message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_EEA_BULLET_2" desc="* This is 2 of 2 bullets that site beneath the sentence: 'We’re launching new ways to limit what sites can learn about you when they show you personalized ads, for example:' * 'ad measurement' is the name of a new setting we're launching and that appears on the Ad privacy page of Thorium settings. * 'limited types of data': This setting helps an advertiser associate a user's actions on one site with their actions on another. For example, a user sees an ad on one site and then later buys that product from the company that sells the product. The ad measurement setting allows Thorium to help a company make the association between the two sites so that the first site can be fairly compensated for showing an ad. Compared with third-party cookies, very little info is shared between sites to support this functionality. **** CONTEXT PRIVACY SANDBOX **** Thorium’s Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** CONTEXT EEA NOTICE **** 1) This screen provides notice to Thorium users in the European Economic Area (EEA). It follows guidelines established by the GDPR. 2) This screen is the second of 2 screens. This second screen describes 2 settings: “Site-suggested ads” and “Ad measurement”. The first screen describes the “Ad topics” setting. ">
|
||||
With ad measurement, limited types of data can be shared among sites and apps to measure the performance of their ads, such as the time of day an ad was shown to you.
|
||||
</message>
|
||||
<message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_ROW_DESCRIPTION_3" desc="A paragraph on the 'Enhanced ad privacy in Thorium' page that provides notice to Thorium users outside of the EEA. **** CONTEXT PRIVACY SANDBOX **** Thorium’s Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** CONTEXT ROW NOTICE **** 1) This screen provides notice to Thorium users outside of the European Economic Area (EEA) (we typically refer to this screen as “Rest of World” or “ROW”). It follows guidelines established by the GDPR. 2) We’re using similar but distinct content for EEA / ROW because legal requirements differ. For ROW, we can provide notice for all 3 settings, and so all 3 settings can appear on a single screen. ">
|
||||
To measure the performance of an ad, limited types of data can be shared among sites, such as the time of day an ad was shown to you.
|
||||
</message>
|
||||
<message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_DESCRIPTION_3" translateable="false" formatter_data="android_java">
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
<message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_DESCRIPTION_1_ANDROID" desc="First description in the restricted notice which applies to Android only">
|
||||
We’re launching a new ad privacy feature called ad measurement. Thorium shares only very limited information among sites and apps, such as when an ad was shown to you, to help measure the performance of ads.
|
||||
</message>
|
||||
<message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_DESCRIPTION_ANDROID" desc="Special description in the restricted notice which applies to Android only">
|
||||
Your Android device may include a similar setting. If this setting is turned on in Thorium and on your Android device, a company may be able to measure the effectiveness of an ad across websites you visit and apps you use.
|
||||
</message>
|
||||
<message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_EEA_LEARN_MORE_DESCRIPTION_ANDROID" desc="As part of Privacy Sandbox (see details below), both Thorium and Android devices will have a new setting called 'Ad measurement'. Some details are different, but these settings essentially do the same thing. The Thorium setting allows sites you visit to ask Thorium for information that helps them measure the performance of their ads, linking 1) an ad for site B the user sees on site A, with 2) a purchase or other action the user might take on site B. On Android, it's essentially the same story only it's between apps and not sites. The challenge is that on Android, Thorium is a browser but it's also an App. This paragraph helps the user understand that, if both settings are on, information about the user's actions on a site might be connected with actions the user takes in an app. **** CONTEXT PRIVACY SANDBOX **** Thorium’s Privacy Sandbox initiative 1) deprecates third-party cookies in Thorium, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com.">
|
||||
Your Android device may include a similar setting. If Ad measurement is turned on in Thorium and on your Android device, a company may be able to measure the effectiveness of an ad across web sites you visit and apps you use.
|
||||
|
@ -1347,9 +1357,6 @@ Your Google account may have other forms of browsing history like searches and a
|
|||
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_TITLE" desc="Label of the dropdown that selects the time range for which browsing data will be deleted.">
|
||||
Time range
|
||||
</message>
|
||||
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_15_MINUTES" desc="The option to delete browsing data from the last 15 minutes.">
|
||||
Last 15 minutes
|
||||
</message>
|
||||
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
|
||||
Last hour
|
||||
</message>
|
||||
|
@ -1488,7 +1495,7 @@ Your Google account may have other forms of browsing history like searches and a
|
|||
Privacy Sandbox trial
|
||||
</message>
|
||||
<message name="IDS_PRIVACY_GUIDE_PRIVACY_SANDBOX_DESCRIPTION" desc="Description for the Privacy Sandbox item on the final page of the privacy guide">
|
||||
See how Thorium plans to safeguard you from cross-site tracking while preserving the open web
|
||||
Thorium is exploring new features that allow sites to deliver the same browsing experience using less of your data
|
||||
</message>
|
||||
<message name="IDS_PRIVACY_GUIDE_WEB_APP_ACTIVITY_HEADING" desc="Title for the Web and App Activity item on the final page of the privacy guide">
|
||||
Web & App Activity
|
||||
|
@ -1726,9 +1733,6 @@ Your Google account may have other forms of browsing history like searches and a
|
|||
<message name="IDS_ADD_LANGUAGE" desc="Title for the screen that allows users to add languages to their preferred language list. [CHAR_LIMIT=32]">
|
||||
Add language
|
||||
</message>
|
||||
<message name="IDS_CHANGE_CHROME_LANG" desc="Title of page to select a language within Thorium's language settings. [CHAR_LIMIT=32]">
|
||||
Change language
|
||||
</message>
|
||||
<message name="IDS_LANGUAGES_SELECT" desc="Option in overflow menu on Language settings page to change Thorium’s user interface language. [CHAR_LIMIT=32]">
|
||||
Select language
|
||||
</message>
|
||||
|
@ -1959,30 +1963,6 @@ Your Google account may have other forms of browsing history like searches and a
|
|||
</message>
|
||||
|
||||
<!-- Child accounts -->
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_PARENTAL_SETTINGS" desc="Title of parental settings section of account page for child account.">
|
||||
Parental Settings
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_NO_PARENTAL_DATA" desc="String saying that we are waiting for family information.">
|
||||
Waiting for details of parents.
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_ONE_PARENT_NAME" desc="String for name of single parent for child account.">
|
||||
This browser is managed by <ph name="PARENT_NAME">%1$s<ex>parent1@gmail.com</ex></ph>.
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_TWO_PARENT_NAMES" desc="String for names of two parents for child account.">
|
||||
This browser is managed by <ph name="PARENT_NAME_1">%1$s<ex>parent1@gmail.com</ex></ph> and <ph name="PARENT_NAME_2">%2$s<ex>parent2@gmail.com</ex></ph>.
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_CHILD_CONTENT_TITLE" desc="Title of the Content setting, which controls which websites a child is allowed to visit.">
|
||||
Content
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_CHILD_CONTENT_APPROVED" desc="Setting that permits child accounts to visit only sites approved by their parents.">
|
||||
Only allow certain sites
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_CHILD_CONTENT_FILTER_MATURE" desc="Setting that permits child accounts to visit any websites that don't have mature contents. As the filter is not perfect, the browser can only attempt to block these sites.">
|
||||
Try to block mature sites
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_CHILD_CONTENT_ALL" desc="Setting that permits child accounts to visit any websites.">
|
||||
Allow all sites
|
||||
</message>
|
||||
<message name="IDS_ACCOUNT_MANAGEMENT_HEADER_NO_PARENTAL_DATA" desc="String saying that child should go to parent for help for child account.">
|
||||
If you need help, ask your parent
|
||||
</message>
|
||||
|
@ -2260,9 +2240,6 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_SYNC_NEEDS_VERIFICATION_TITLE" desc="Title of the error message shown when sync needs to verify the user.">
|
||||
Sync needs to verify it's you
|
||||
</message>
|
||||
<message name="IDS_HINT_SYNC_AUTH_ERROR" desc="Hint message to resolve sync auth error.">
|
||||
Sign in again to start sync
|
||||
</message>
|
||||
<message name="IDS_HINT_SYNC_AUTH_ERROR_MODERN" desc="Hint message to resolve sync auth error updated to align with the UPM error message.">
|
||||
Sign back in to start sync
|
||||
</message>
|
||||
|
@ -2864,6 +2841,12 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_DOWNLOAD_MANAGER_NO_DOWNLOADS" desc="Text appearing on an empty tab that indicates that downloaded files appear on this tab.">
|
||||
Files that you download appear here
|
||||
</message>
|
||||
<message name="IDS_DOWNLOAD_MANAGER_NO_DOWNLOADS_EMPTY_STATE" desc="Text appearing on an empty tab that indicates that downloaded files appear on this tab.">
|
||||
You’ll find your downloads here
|
||||
</message>
|
||||
<message name="IDS_DOWNLOAD_MANAGER_NO_DOWNLOADS_VIEW_OFFLINE_OR_SHARE" desc="Text appearing on an empty tab that indicates that users can save downloaded files to view offline or share in other apps.">
|
||||
You can save images and files to view offline or share in other apps
|
||||
</message>
|
||||
<message name="IDS_DOWNLOAD_MANAGER_OPEN_WITH" desc="Menu item to open an item with another app.">
|
||||
Open with…
|
||||
</message>
|
||||
|
@ -2914,6 +2897,12 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_HISTORY_MANAGER_EMPTY" desc="Indicates that there are no browsing history items.">
|
||||
Pages that you visit appear here
|
||||
</message>
|
||||
<message name="IDS_HISTORY_MANAGER_EMPTY_STATE" desc="Indicates that there are no browsing history items.">
|
||||
You’ll find your history here
|
||||
</message>
|
||||
<message name="IDS_HISTORY_MANAGER_EMPTY_STATE_VIEW_OR_CLEAR_PAGE_VISITED" desc="Indicates that users can view or clear page visited here">
|
||||
You can see the pages you’ve visited or clear them from your history
|
||||
</message>
|
||||
<message name="IDS_HISTORY_MANAGER_NO_RESULTS" desc="Text explaining that no browsing history items match a search query.">
|
||||
Can’t find that page. Check your spelling or try a search on <ph name="SEARCH_ENGINE">%1$s<ex>Google</ex></ph>.
|
||||
</message>
|
||||
|
@ -2976,10 +2965,10 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
Thorium First Run Experience
|
||||
</message>
|
||||
<message name="IDS_LIGHTWEIGHT_FRE_ASSOCIATED_APP_TOS" desc="Message explaining that use of Thorium is governed by Thorium's terms of service.">
|
||||
<ph name="APP_NAME">%1$s<ex>Google Maps</ex></ph> will open in Thorium. By continuing, you agree to the <ph name="BEGIN_LINK1"><LINK1></ph>Google Terms of Service<ph name="END_LINK1"></LINK1></ph>, and the <ph name="BEGIN_LINK2"><LINK2></ph>Google Thorium and ThoriumOS Additional Terms of Service<ph name="END_LINK2"></LINK2></ph>.
|
||||
<ph name="APP_NAME">%1$s<ex>Google Maps</ex></ph> will open in Thorium. By continuing, you agree to the <ph name="BEGIN_LINK1"><LINK1></ph>Google Terms of Service<ph name="END_LINK1"></LINK1></ph>, and the <ph name="BEGIN_LINK2"><LINK2></ph>Thorium and ThoriumOS Additional Terms of Service<ph name="END_LINK2"></LINK2></ph>.
|
||||
</message>
|
||||
<message name="IDS_LIGHTWEIGHT_FRE_ASSOCIATED_APP_TOS_AND_PRIVACY_CHILD_ACCOUNT" desc="Message explaining that use of Thorium is governed by Thorium's terms of service, and the Google Privacy Policy.">
|
||||
<ph name="APP_NAME">%1$s<ex>Google Maps</ex></ph> will open in Thorium. By continuing, you agree to the <ph name="BEGIN_LINK1"><LINK1></ph>Google Terms of Service<ph name="END_LINK1"></LINK1></ph>, and the <ph name="BEGIN_LINK2"><LINK2></ph>Google Thorium and ThoriumOS Additional Terms of Service<ph name="END_LINK2"></LINK2></ph>. The <ph name="BEGIN_LINK3"><LINK3></ph>Privacy Policy<ph name="END_LINK3"></LINK3></ph> also applies.
|
||||
<ph name="APP_NAME">%1$s<ex>Google Maps</ex></ph> will open in Thorium. By continuing, you agree to the <ph name="BEGIN_LINK1"><LINK1></ph>Google Terms of Service<ph name="END_LINK1"></LINK1></ph>, and the <ph name="BEGIN_LINK2"><LINK2></ph>Thorium and ThoriumOS Additional Terms of Service<ph name="END_LINK2"></LINK2></ph>. The <ph name="BEGIN_LINK3"><LINK3></ph>Privacy Policy<ph name="END_LINK3"></LINK3></ph> also applies.
|
||||
</message>
|
||||
<message name="IDS_FRE_ACCEPT_CONTINUE" desc="Text for first page accept and continue button [CHAR_LIMIT=20]">
|
||||
Accept & continue
|
||||
|
@ -3050,21 +3039,26 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
</message>
|
||||
|
||||
<!-- Strings for the Device Lock. -->
|
||||
<!-- TODO(crbug.com/1431577): Finalize strings and set to translateable -->
|
||||
<message name="IDS_DEVICE_LOCK_TITLE" translateable="false" desc="">
|
||||
Keep your data secure with profile lock
|
||||
<message name="IDS_DEVICE_LOCK_TITLE" desc="Title shown on the profile lock page prompting the user to set a profile lock.">
|
||||
Create a profile lock for your car
|
||||
</message>
|
||||
<message name="IDS_DEVICE_LOCK_DESCRIPTION" translateable="false" desc="">
|
||||
For your data security in the car, profile lock is required to sync and save your passwords, payments, and more.
|
||||
<message name="IDS_DEVICE_LOCK_EXISTING_LOCK_TITLE" desc="Title shown on the profile lock page if there is a pre-existing profile lock.">
|
||||
Your info is secured with a profile lock
|
||||
</message>
|
||||
<message name="IDS_DEVICE_LOCK_HIGHLIGHTED_NOTICE" translateable="false" desc="">
|
||||
Your saved data will be erased if profile lock is removed later
|
||||
<message name="IDS_DEVICE_LOCK_DESCRIPTION" desc="Text description explaining that a profile lock is required for automotive devices to protect data privacy. 'Sync' is short for synchronization.">
|
||||
To sync your info and keep your data secure in the car, you must create a profile lock. You’ll use a code or password every time you enter the car.
|
||||
</message>
|
||||
<message name="IDS_DEVICE_LOCK_CREATE_LOCK_BUTTON" translateable="false" desc="">
|
||||
Set up a profile lock
|
||||
<message name="IDS_DEVICE_LOCK_THROUGH_SETTINGS_DESCRIPTION" desc="Text description explaining that a profile lock is required for automotive devices to protect data privacy, and that such a lock can be created in the device's security settings. 'Sync' is short for synchronization.">
|
||||
To sync your info and keep your data secure in the car, you must create a profile lock in your security settings. You’ll use a code or password every time you enter the car.
|
||||
</message>
|
||||
<message name="IDS_DEVICE_LOCK_USER_UNDERSTANDS_BUTTON" translateable="false" desc="">
|
||||
I understand
|
||||
<message name="IDS_DEVICE_LOCK_EXISTING_LOCK_DESCRIPTION" desc="Text description explaining to users who have already set an existing lock that a profile lock is required for automotive devices to protect data privacy. 'Sync' is short for synchronization.">
|
||||
Your profile lock keeps your info secure in the car, including synced passwords, payments and more.
|
||||
</message>
|
||||
<message name="IDS_DEVICE_LOCK_NOTICE" desc="Notice appearing on the profile lock page informing users that data saved on Thorium will be erased if they remove the profile lock from the device.">
|
||||
Your saved info will be erased if you remove profile lock later.
|
||||
</message>
|
||||
<message name="IDS_DEVICE_LOCK_CREATE_LOCK_BUTTON" desc="Text for the button that navigates the user to create a profile lock on the device.">
|
||||
Create a profile lock
|
||||
</message>
|
||||
|
||||
<!-- Strings for Streamlined Signin and Unified Consent. -->
|
||||
|
@ -3156,6 +3150,14 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
Sign in to manage your preferences
|
||||
</message>
|
||||
|
||||
<!-- Cormorant Signin Strings -->
|
||||
<message name="IDS_SIGNIN_ACCOUNT_PICKER_BOTTOM_SHEET_TITLE_FOR_CORMORANT_SIGNIN" desc="The title for the bottom sheet that shows the list of accounts on the device and asks the user to select one of these accounts, when signin from Cormorant triggered the UI. [CHAR_LIMIT=27]">
|
||||
Get better suggestions
|
||||
</message>
|
||||
<message name="IDS_SIGNIN_ACCOUNT_PICKER_BOTTOM_SHEET_SUBTITLE_FOR_CORMORANT_SIGNIN" desc="The subtitle for the account picker bottom sheet that tells the user what happens if the Continue button is clicked, when signin from Cormorant triggered the UI.">
|
||||
Sync to get the most relevant content from Google
|
||||
</message>
|
||||
|
||||
<!-- Personalized Signin Promos Strings -->
|
||||
<message name="IDS_SYNC_PROMO_CONTINUE_AS" desc="Button to sign into Thorium with the displayed account and without having to reenter a password. ‘John’ is replaced with the user’s given name, or the user’s full name if the given name is not available. Ensure consistency with related OneGoogle sign-in buttons (see e.g. TC ID 5569230012177947065).">
|
||||
Continue as <ph name="USER_FULL_NAME">%1$s<ex>John</ex></ph>
|
||||
|
@ -3371,7 +3373,9 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_NTP_DISCOVER_OFF_BRANDED" desc="Title in the feed header when the feed is turned off and the default search engine is not Google. Please use the branded term for Discover, as listed under Product Names in the Google Glossary Manager (TC ID 1799975766543019278).">
|
||||
Discover by Google - off
|
||||
</message>
|
||||
<message name="IDS_NTP_FOLLOWING" desc="Title in the feed header for user-customized following feed.">Following</message>
|
||||
<message name="IDS_NTP_FOLLOWING"
|
||||
meaning="Title for content - e.g. Followed sites"
|
||||
desc="Title in the feed header for user-customized following feed. This feed is composed of articles and content from sites that the user has followed">Following</message>
|
||||
<message name="IDS_NTP_FEED_MENU_IPH" desc="In-product help that points at the menu icon for the news feed on Thorium's new tab page. This string instructs the user to open the menu for settings that let them control the content that appears on the feed.">
|
||||
Control your stories and activity here
|
||||
</message>
|
||||
|
@ -3433,71 +3437,6 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
Explore content to follow
|
||||
</message>
|
||||
|
||||
<!-- Video tutorials -->
|
||||
<message name="IDS_VIDEO_TUTORIALS_CARD_CHROME_INTRO" desc="Card text prompting user to learn about an introduction to chrome. Tapping on this card will open a video tutorial.">
|
||||
How to use Thorium
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_CARD_SEARCH" desc="Card text prompting user to learn about how to search using chrome. Tapping on this card will open a video tutorial.">
|
||||
How to search with Thorium
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_CARD_VOICE_SEARCH" desc="Card text prompting user to learn about how use voice search inside chrome. Tapping on this card will open a video tutorial.">
|
||||
How to search with your voice
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_CARD_DOWNLOAD" desc="Card text prompting user to learn about how to download content using chrome. Tapping on this card will open a video tutorial.">
|
||||
How to download content for later
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_CARD_ALL_VIDEOS" desc="Card text prompting user to tap on this card and explore videos on various aspects of chrome. Tapping on this card will open up a page listing all the available video tutorials.">
|
||||
Videos about how to use Thorium
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_LEARN_CHROME" desc="Header text for the video tutorials home page that lists all the video tutorials.">
|
||||
Learn Thorium
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_POPULAR_VIDEOS" desc="Header text for the video tutorials carousel on the help and feedback page.">
|
||||
Popular videos
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_TILE_CHROME_INTRO" desc="Text under image tile prompting user to learn about an introduction to chrome. Tapping on this image will open a video tutorial.">
|
||||
Navigate Thorium
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_TILE_SEARCH" desc="Text under image tile prompting user to learn about how to search using chrome. Tapping on this image will open a video tutorial.">
|
||||
Search the internet
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_TILE_VOICE_SEARCH" desc="Text under image tile prompting user to learn about how use voice search inside chrome. Tapping on this image will open a video tutorial.">
|
||||
Use voice search
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_TILE_DOWNLOAD" desc="Text under image tile prompting user to learn about how to download content using chrome. Tapping on this image will open a video tutorial.">
|
||||
Download content
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_LANGUAGE_PICKER_TITLE" desc="Label text in the video player prompting user to pick a language.">
|
||||
Pick your language
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_WATCH" desc="Button text in the video player prompting user to watch the video.">
|
||||
Watch
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_TRY_NOW" desc="Button text in the video player prompting user to try out the steps mentioned in the tutorial.">
|
||||
Try now
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_WATCH_NEXT_VIDEO" desc="Button text in the video player prompting user to watch the next video.">
|
||||
Watch next video
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_CHANGE_LANGUAGE" desc="Button text in the video player prompting user to change the language.">
|
||||
Change <ph name="LANGUAGE">%1$s<ex>Hindi</ex></ph>?
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_ACCESSIBILITY_SHARE" desc="Accessibility text in the video player describing that users can tap on this icon to share the video.">
|
||||
Share
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_ACCESSIBILITY_CLOSE" desc="Accessibility text in the video player describing that users can tap on this icon to close the video.">
|
||||
Close
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_IPH_TAP_HERE_TO_START" desc="In-product help bubble text prompting user to click on the search box to start.">
|
||||
Tap here to start
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_IPH_TAP_VOICE_ICON_TO_START" desc="In-product help bubble text prompting user to start typing on the search box or tap on the microphone icon to start a voice search.">
|
||||
Type here or tap the voice icon to start
|
||||
</message>
|
||||
<message name="IDS_VIDEO_TUTORIALS_LOADING" desc="Text on the loading animation screen indicating that the video loading is currently in progress.">
|
||||
Loading…
|
||||
</message>
|
||||
|
||||
<!-- Feature notification guide -->
|
||||
<message name="IDS_FEATURE_NOTIFICATION_GUIDE_NOTIFICATION_TITLE" desc="Notification title text educating user about tips and tricks in chrome.">
|
||||
Thorium tips
|
||||
|
@ -3680,10 +3619,15 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_MENU_FIND_IN_PAGE" desc="Menu item allowing users to find text within the current page. [CHAR_LIMIT=27]">
|
||||
Find in page
|
||||
</message>
|
||||
<message name="IDS_MENU_PAGE_INSIGHTS" desc="Menu item showing Page Insights hub. [CHAR_LIMIT=27]">
|
||||
View page insights
|
||||
</message>
|
||||
<message name="IDS_MENU_FOLLOW" desc="Menu item allowing users to follow the current website. [CHAR_LIMIT=27]">
|
||||
Follow
|
||||
</message>
|
||||
<message name="IDS_MENU_FOLLOWING" desc="Menu item indicating the current website is followed, allowing users to unfollow the current website. [CHAR_LIMIT=27]">
|
||||
<message name="IDS_MENU_FOLLOWING"
|
||||
meaning="Toggle button text for something that is being followed."
|
||||
desc="Menu item indicating the current website is followed, allowing users to unfollow the current website. [CHAR_LIMIT=27]">
|
||||
Following
|
||||
</message>
|
||||
<message name="IDS_FOLLOW_ACCELERATOR" desc="IPH text for letting a user know that a website can be followed with minimal context. [CHAR_LIMIT=50]">
|
||||
|
@ -3745,6 +3689,18 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_NO_BOOKMARKS" desc="Text describing that there is no bookmarks in a bookmark folder.">
|
||||
No bookmarks
|
||||
</message>
|
||||
<message name="IDS_BOOKMARK_MANAGER_EMPTY_STATE" desc="Text appearing on an empty tab that indicates that bookmarked page appear on this tab.">
|
||||
You’ll find your bookmarks here
|
||||
</message>
|
||||
<message name="IDS_BOOKMARK_MANAGER_BACK_TO_PAGE_BY_ADDING_BOOKMARK" desc="Text appearing on an empty tab that indicates that users can get back to pages in this tab by adding bookmark.">
|
||||
You can get back to a page that’s important to you by adding a bookmark
|
||||
</message>
|
||||
<message name="IDS_READING_LIST_MANAGER_EMPTY_STATE" desc="Text appearing on an empty tab that indicates that reading list page appear on this tab.">
|
||||
You’ll find your reading list here
|
||||
</message>
|
||||
<message name="IDS_READING_LIST_MANAGER_SAVE_PAGE_TO_READ_LATER" desc="Text appearing on an empty tab that indicates that users can save pages read later in this tab.">
|
||||
You can save pages to read later or offline
|
||||
</message>
|
||||
<message name="IDS_BOOKMARKS_COUNT" desc="Text describing the number of bookmarks in a bookmark folder [ICU Syntax]">
|
||||
{BOOKMARKS_COUNT, plural,
|
||||
=1 {<ph name="BOOKMARKS_COUNT_ONE">%1$d<ex>1</ex></ph> bookmark}
|
||||
|
@ -3893,9 +3849,6 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_IPH_SHOPPING_LIST_SAVE_FLOW" desc="In-product help text that notifies a user that they can organize their saved products from a folder in bookmarks.">
|
||||
Organize your tracked products in Bookmarks
|
||||
</message>
|
||||
<message name="IDS_IPH_SHOPPING_LIST_SAVE_FLOW_ACCESSIBILITY" is_accessibility_with_no_ui="true" desc="In-product help accessibility text that notifies a user that they can organize their saved products from a folder in bookmarks.">
|
||||
Organize your tracked products in Bookmarks from the folder icon
|
||||
</message>
|
||||
<message name="IDS_SORT_SUBMENU" desc="Sub-menu in the bookmarks manager for sort/view options. [CHAR_LIMIT=24]">
|
||||
Sort and view options
|
||||
</message>
|
||||
|
@ -3937,14 +3890,6 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_READING_LIST_MARK_AS_UNREAD" desc="The text for the action to mark the reading list as unread.">
|
||||
Mark as unread
|
||||
</message>
|
||||
<message name="IDS_READING_LIST_REMINDER_NOTIFICATION_TITLE" desc="The title of the reminder notification for reading list.">
|
||||
Catch up on your reading list
|
||||
</message>
|
||||
<message name="IDS_READING_LIST_REMINDER_NOTIFICATION_SUBTITLE" desc="The subtitle of the reminder notification for reading list.">
|
||||
{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE, plural,
|
||||
=1 {You have <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE">%1$d<ex>1</ex></ph> unread page}
|
||||
other {You have <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY">%1$d<ex>8</ex></ph> unread pages}}
|
||||
</message>
|
||||
<message name="IDS_READING_LIST_UNREAD_PAGE_COUNT" desc="Inform the user about the number of unread reading list items.">
|
||||
{READING_LIST_UNREAD_PAGE_COUNT, plural,
|
||||
=1 {<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE">%1$d<ex>1</ex></ph> unread page}
|
||||
|
@ -4517,15 +4462,6 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_TWA_CLEAR_DATA_SITE_SELECTION_TITLE" desc="Title of screen showing the sites linked to TWA, allowing the user to clean data in any of them.">
|
||||
Linked sites
|
||||
</message>
|
||||
<message name="IDS_TWA_QUALITY_ENFORCEMENT_VIOLATION_ERROR" desc="Text shown on a toast when TWA violation 404.">
|
||||
<ph name="ERROR_CODE">%1$s<ex>404</ex></ph> on <ph name="VIOLATED_URL">%2$s<ex>https://example.com/</ex></ph>
|
||||
</message>
|
||||
<message name="IDS_TWA_QUALITY_ENFORCEMENT_VIOLATION_ASSET_LINK" desc="Text shown on a toast when TWA violate the quality enforcement criteria: digital asset link verification failed.">
|
||||
Digital asset links verification failed on <ph name="VIOLATED_URL">%1$s<ex>https://example.com/</ex></ph>
|
||||
</message>
|
||||
<message name="IDS_TWA_QUALITY_ENFORCEMENT_VIOLATION_OFFLINE" desc="Text shown on a toast when TWA violate the quality enforcement criteria: page unavailable offline.">
|
||||
Page unavailable offline: <ph name="VIOLATED_URL">%1$s<ex>https://example.com/</ex></ph>
|
||||
</message>
|
||||
|
||||
<message name="IDS_WEBAPP_TAP_TO_COPY_URL" desc="Message on the notification that indicates that taping it will copy a Web App's URL into the clipboard.">
|
||||
Tap to copy the URL for this app
|
||||
|
@ -4598,14 +4534,14 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
<message name="IDS_KEYBOARD_SHORTCUT_RELOAD_NO_CACHE" desc="A text label that appears next to the keyboard shortcut that will reload the current page without a cache. The shortcut description is shown in a system dialog along with all other supported shortcuts. [CHAR_LIMIT=55]">
|
||||
Reload the current page, ignoring cached content
|
||||
</message>
|
||||
<message name="IDS_KEYBOARD_SHORTCUT_HELP_CENTER" desc="A text label that appears next to the keyboard shortcut that will open the Google Thorium Help Center in a new tab. The shortcut description is shown in a system dialog along with all other supported shortcuts. [CHAR_LIMIT=55]">
|
||||
<message name="IDS_KEYBOARD_SHORTCUT_HELP_CENTER" desc="A text label that appears next to the keyboard shortcut that will open the Thorium Help Center in a new tab. The shortcut description is shown in a system dialog along with all other supported shortcuts. [CHAR_LIMIT=55]">
|
||||
Open the Thorium Help Center in a new tab
|
||||
</message>
|
||||
<message name="IDS_KEYBOARD_SHORTCUT_TAB_GROUP_HEADER" desc="A text label that appears above a list of shortcuts that are related to the tab window. This group is part of several groups of keyboard shortcuts all shown in a dialog.">
|
||||
Tab and window shortcuts
|
||||
</message>
|
||||
<message name="IDS_KEYBOARD_SHORTCUT_CHROME_FEATURE_GROUP_HEADER" desc="A text label that appears above a list of shortcuts that are related to the Thorium app features. This group is part of several groups of keyboard shortcuts all shown in a dialog.">
|
||||
Google Thorium feature shortcuts
|
||||
Thorium feature shortcuts
|
||||
</message>
|
||||
<message name="IDS_KEYBOARD_SHORTCUT_WEBPAGE_GROUP_HEADER" desc="A text label that appears above a list of shortcuts that are related to manipulation of the current tab window. This group is part of several groups of keyboard shortcuts all shown in a dialog.">
|
||||
Webpage shortcuts
|
||||
|
@ -5059,7 +4995,7 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
|
||||
<message name="IDS_CABLEV2_ACTIVITY_TITLE"
|
||||
desc="The label of the Activity for using your phone as a security key. A 'security key' in this context is generally a small USB device that is used for logging into websites. This feature allows Thorium on an Android phone to act as a security key. A user may see it in Android permissions prompts (see screenshot).">
|
||||
Google Thorium as a Security Key
|
||||
Thorium as a Security Key
|
||||
</message>
|
||||
|
||||
<message name="IDS_CABLEV2_REGISTRATION_SUCCEEDED"
|
||||
|
@ -5315,6 +5251,10 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
Save to device
|
||||
</message>
|
||||
|
||||
<message name="IDS_SHARING_SEND_TAB_TO_SELF" desc="Label for the button in sharing hub for sending the current tab to other devices if user signed in (Send Tab to Self feature).">
|
||||
Send to devices
|
||||
</message>
|
||||
|
||||
<message name="IDS_SHARING_INCLUDE_LINK" desc="Label for the button in android share sheet to include a link to share along with highlighted text.">
|
||||
Include link
|
||||
</message>
|
||||
|
@ -5511,7 +5451,7 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
Save up to 60% data
|
||||
</message>
|
||||
<message name="IDS_CHROME_REENGAGEMENT_NOTIFICATION_2_DESCRIPTION" desc="The body text of a notification shown to suggest that users use Thorium. Users probably have not opened Thorium in a while. Promotes data savings.">
|
||||
Use Lite mode on Google Thorium
|
||||
Use Lite mode on Thorium
|
||||
</message>
|
||||
<message name="IDS_CHROME_REENGAGEMENT_NOTIFICATION_3_TITLE" desc="The title of a notification shown to suggest that users use Thorium. Users probably have not opened Thorium in a while.">
|
||||
Google recommends Thorium
|
||||
|
@ -5763,12 +5703,29 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
|||
Undo
|
||||
</message>
|
||||
|
||||
<!-- Partial Custom Tab accessibility -->
|
||||
<message name="IDS_ACCESSIBILITY_PARTIAL_CUSTOM_TAB_BOTTOM_SHEET" desc="Content description for partial custom tab of bottom sheet type">
|
||||
Bottom sheet
|
||||
</message>
|
||||
<message name="IDS_ACCESSIBILITY_PARTIAL_CUSTOM_TAB_SIDE_SHEET" desc="Content description for partial custom tab of side sheet type">
|
||||
Side sheet
|
||||
</message>
|
||||
<message name="IDS_ACCESSIBILITY_PARTIAL_CUSTOM_TAB_FULL_SHEET" desc="Content description for partial custom tab of full size type">
|
||||
Full-size sheet
|
||||
</message>
|
||||
|
||||
<!-- Quick Delete strings -->
|
||||
<message name="IDS_QUICK_DELETE_DIALOG_TITLE" desc="Title of the dialog when asking users to confirm deleting the last 15 minutes of browsing data.">
|
||||
Delete last 15 minutes?
|
||||
</message>
|
||||
<message name="IDS_QUICK_DELETE_DIALOG_DESCRIPTION" desc="Description of the dialog when asking users to confirm deleting the last 15 minutes of browsing data.">
|
||||
Following data from the last 15 minutes will be deleted:
|
||||
History from the last 15 minutes will be deleted:
|
||||
</message>
|
||||
<message name="IDS_QUICK_DELETE_DIALOG_TABS_CLOSED_TEXT" desc="Text indicating that the tabs which a user recently used to visit a website within 15 minutes would be closed.">
|
||||
{NUM_TABS, plural, =1 {1 tab on this device} other {# tabs on this device}}
|
||||
</message>
|
||||
<message name="IDS_QUICK_DELETE_DIALOG_COOKIES_CACHE_AND_OTHER_SITE_DATA_TEXT" desc="Text indicating that browsing data like cookies, cache, and other site data would be deleted.">
|
||||
Cookies, cache, and other site data
|
||||
</message>
|
||||
<message name="IDS_QUICK_DELETE_DIALOG_SEARCH_HISTORY_DISAMBIGUATION_TEXT" desc="Text for signed in users only in the Quick Delete dialog, that is shown when the user clicks on 'Delete last 15 minutes' option in the three dots menu, informing signed in users that search history and other forms of Activity saved in their Google account will not be deleted.">
|
||||
<ph name="BEGIN_LINK1"><link1></ph>Search history<ph name="END_LINK1"></link1></ph> and <ph name="BEGIN_LINK2"><link2></ph>other forms of activity<ph name="END_LINK2"></link2></ph> may be saved in your Google Account
|
||||
|
|
|
@ -990,7 +990,7 @@ Browser::DownloadCloseType Browser::OkToCloseWithInProgressDownloads(
|
|||
return DownloadCloseType::kOk;
|
||||
|
||||
int total_download_count =
|
||||
DownloadCoreService::NonMaliciousDownloadCountAllProfiles();
|
||||
DownloadCoreService::BlockingShutdownCountAllProfiles();
|
||||
if (total_download_count == 0)
|
||||
return DownloadCloseType::kOk; // No downloads; can definitely close.
|
||||
|
||||
|
@ -1023,10 +1023,9 @@ Browser::DownloadCloseType Browser::OkToCloseWithInProgressDownloads(
|
|||
DownloadCoreService* download_core_service =
|
||||
DownloadCoreServiceFactory::GetForBrowserContext(profile());
|
||||
if ((profile_window_count == 0) &&
|
||||
(download_core_service->NonMaliciousDownloadCount() > 0) &&
|
||||
(download_core_service->BlockingShutdownCount() > 0) &&
|
||||
(profile()->IsIncognitoProfile() || profile()->IsGuestSession())) {
|
||||
*num_downloads_blocking =
|
||||
download_core_service->NonMaliciousDownloadCount();
|
||||
*num_downloads_blocking = download_core_service->BlockingShutdownCount();
|
||||
return profile()->IsGuestSession()
|
||||
? DownloadCloseType::kLastWindowInGuestSession
|
||||
: DownloadCloseType::kLastWindowInIncognitoProfile;
|
||||
|
@ -3296,7 +3295,7 @@ BackgroundContents* Browser::CreateBackgroundContents(
|
|||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE)
|
||||
// TODO(https://1278249): Update function name (and trigger chain) when usage
|
||||
// TODO(crbug.com/1443349): Update function name (and trigger chain) when usage
|
||||
// is finalized.
|
||||
void Browser::RunScreenAIAnnotator() {
|
||||
screen_ai::AXScreenAIAnnotatorFactory::GetForBrowserContext(profile())
|
||||
|
|
|
@ -26,6 +26,10 @@
|
|||
|
||||
namespace {
|
||||
|
||||
// For ChromeOS only: If you plan on adding a new accelerator and want it
|
||||
// displayed in the Shortcuts app, please follow the instructions at:
|
||||
// `ash/webui/shortcut_customization_ui/backend/accelerator_layout_table.h`.
|
||||
|
||||
// NOTE: Between each ifdef block, keep the list in the same
|
||||
// (mostly-alphabetical) order as the Windows accelerators in
|
||||
// ../../app/chrome_dll.rc.
|
||||
|
|
|
@ -213,6 +213,7 @@ Tab::Tab(TabSlotController* controller)
|
|||
title_->SetAutoColorReadabilityEnabled(false);
|
||||
title_->SetText(CoreTabHelper::GetDefaultTitle());
|
||||
title_->SetFontList(tab_style_views_->GetFontList());
|
||||
title_->SetBackgroundColor(SK_ColorTRANSPARENT);
|
||||
// |title_| paints on top of an opaque region (the tab background) of a
|
||||
// non-opaque layer (the tabstrip's layer), which cannot currently be detected
|
||||
// by the subpixel-rendering opacity check.
|
||||
|
@ -820,6 +821,7 @@ bool Tab::IsActive() const {
|
|||
void Tab::ActiveStateChanged() {
|
||||
UpdateTabIconNeedsAttentionBlocked();
|
||||
UpdateForegroundColors();
|
||||
icon_->SetActiveState(IsActive());
|
||||
alert_indicator_button_->OnParentTabButtonColorChanged();
|
||||
title_->SetFontList(tab_style_views_->GetFontList());
|
||||
Layout();
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
#include "chrome/browser/ui/web_applications/app_browser_controller.h"
|
||||
#include "chrome/grit/generated_resources.h"
|
||||
#include "chrome/grit/theme_resources.h"
|
||||
#include "chromeos/constants/chromeos_features.h"
|
||||
#include "components/crash/core/common/crash_key.h"
|
||||
#include "components/tab_groups/tab_group_color.h"
|
||||
#include "components/tab_groups/tab_group_id.h"
|
||||
|
@ -178,7 +179,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext,
|
|||
}
|
||||
|
||||
bool OnMouseDragged(const ui::MouseEvent& event) override {
|
||||
ContinueDrag(this, event);
|
||||
(void)ContinueDrag(this, event);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -189,6 +190,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext,
|
|||
void OnMouseCaptureLost() override { EndDrag(END_DRAG_CAPTURE_LOST); }
|
||||
|
||||
void OnGestureEvent(ui::GestureEvent* event) override {
|
||||
Liveness tabstrip_alive = Liveness::kAlive;
|
||||
switch (event->type()) {
|
||||
case ui::ET_GESTURE_SCROLL_END:
|
||||
case ui::ET_SCROLL_FLING_START:
|
||||
|
@ -202,7 +204,8 @@ class TabStrip::TabDragContextImpl : public TabDragContext,
|
|||
}
|
||||
|
||||
case ui::ET_GESTURE_SCROLL_UPDATE:
|
||||
ContinueDrag(this, *event);
|
||||
// N.B. !! ContinueDrag may enter a nested run loop !!
|
||||
tabstrip_alive = ContinueDrag(this, *event);
|
||||
break;
|
||||
|
||||
case ui::ET_GESTURE_TAP_DOWN:
|
||||
|
@ -214,6 +217,12 @@ class TabStrip::TabDragContextImpl : public TabDragContext,
|
|||
}
|
||||
event->SetHandled();
|
||||
|
||||
// If tabstrip was destroyed (during ContinueDrag above), return early to
|
||||
// avoid UAF below.
|
||||
if (tabstrip_alive == Liveness::kDeleted) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TabDragContext gets event capture as soon as a drag session begins, which
|
||||
// precludes TabStrip from ever getting events like tap or long tap. Forward
|
||||
// this on to TabStrip so it can respond to those events.
|
||||
|
@ -302,20 +311,20 @@ class TabStrip::TabDragContextImpl : public TabDragContext,
|
|||
std::move(drag_controller_set_callback_).Run(drag_controller_.get());
|
||||
}
|
||||
|
||||
void ContinueDrag(views::View* view, const ui::LocatedEvent& event) {
|
||||
if (drag_controller_.get() &&
|
||||
drag_controller_->event_source() == EventSourceFromEvent(event)) {
|
||||
gfx::Point screen_location(event.location());
|
||||
views::View::ConvertPointToScreen(view, &screen_location);
|
||||
|
||||
// Note: |tab_strip_| can be destroyed during drag, also destroying
|
||||
// |this|.
|
||||
base::WeakPtr<TabDragContext> weak_ptr(weak_factory_.GetWeakPtr());
|
||||
drag_controller_->Drag(screen_location);
|
||||
|
||||
if (!weak_ptr)
|
||||
return;
|
||||
Liveness ContinueDrag(views::View* view, const ui::LocatedEvent& event) {
|
||||
if (!drag_controller_.get() ||
|
||||
drag_controller_->event_source() != EventSourceFromEvent(event)) {
|
||||
return Liveness::kAlive;
|
||||
}
|
||||
|
||||
gfx::Point screen_location(event.location());
|
||||
views::View::ConvertPointToScreen(view, &screen_location);
|
||||
|
||||
// Note: `tab_strip_` can be destroyed during drag, also destroying `this`.
|
||||
base::WeakPtr<TabDragContext> weak_ptr(weak_factory_.GetWeakPtr());
|
||||
drag_controller_->Drag(screen_location);
|
||||
|
||||
return weak_ptr ? Liveness::kAlive : Liveness::kDeleted;
|
||||
}
|
||||
|
||||
bool EndDrag(EndDragReason reason) {
|
||||
|
@ -604,7 +613,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext,
|
|||
int source_view_index = static_cast<int>(
|
||||
base::ranges::find(views, source_view) - views.begin());
|
||||
|
||||
const auto should_animate_tab = [=, &views, this](int index_in_views) {
|
||||
const auto should_animate_tab = [&](size_t index_in_views) {
|
||||
// If the tab at `index_in_views` is already animating, don't interrupt
|
||||
// it.
|
||||
if (bounds_animator_.IsAnimating(views[index_in_views]))
|
||||
|
@ -1163,6 +1172,12 @@ bool TabStrip::ShouldDrawStrokes() const {
|
|||
return false;
|
||||
}
|
||||
|
||||
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||
if (chromeos::features::IsJellyrollEnabled()) {
|
||||
return false;
|
||||
}
|
||||
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
|
||||
|
||||
// The tabstrip normally avoids strokes and relies on the active tab
|
||||
// contrasting sufficiently with the frame background. When there isn't
|
||||
// enough contrast, fall back to a stroke. Always compute the contrast ratio
|
||||
|
@ -1606,8 +1621,10 @@ void TabStrip::MaybeStartDrag(
|
|||
drag_context_->MaybeStartDrag(source, event, original_selection);
|
||||
}
|
||||
|
||||
void TabStrip::ContinueDrag(views::View* view, const ui::LocatedEvent& event) {
|
||||
drag_context_->ContinueDrag(view, event);
|
||||
TabSlotController::Liveness TabStrip::ContinueDrag(
|
||||
views::View* view,
|
||||
const ui::LocatedEvent& event) {
|
||||
return drag_context_->ContinueDrag(view, event);
|
||||
}
|
||||
|
||||
bool TabStrip::EndDrag(EndDragReason reason) {
|
||||
|
|
|
@ -39,9 +39,12 @@
|
|||
#include "chrome/browser/ui/global_error/global_error_service_factory.h"
|
||||
#include "chrome/browser/ui/intent_picker_tab_helper.h"
|
||||
#include "chrome/browser/ui/layout_constants.h"
|
||||
#include "chrome/browser/ui/side_panel/companion/companion_utils.h"
|
||||
#include "chrome/browser/ui/side_search/side_search_utils.h"
|
||||
#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
||||
#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
|
||||
#include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
|
||||
#include "chrome/browser/ui/toolbar/chrome_labs_utils.h"
|
||||
#include "chrome/browser/ui/ui_features.h"
|
||||
#include "chrome/browser/ui/view_ids.h"
|
||||
#include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h"
|
||||
|
@ -66,9 +69,7 @@
|
|||
#include "chrome/browser/ui/views/toolbar/app_menu.h"
|
||||
#include "chrome/browser/ui/views/toolbar/back_forward_button.h"
|
||||
#include "chrome/browser/ui/views/toolbar/browser_app_menu_button.h"
|
||||
#include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.h"
|
||||
#include "chrome/browser/ui/views/toolbar/chrome_labs_button.h"
|
||||
#include "chrome/browser/ui/views/toolbar/chrome_labs_utils.h"
|
||||
#include "chrome/browser/ui/views/toolbar/home_button.h"
|
||||
#include "chrome/browser/ui/views/toolbar/reload_button.h"
|
||||
#include "chrome/browser/ui/views/toolbar/side_panel_toolbar_button.h"
|
||||
|
@ -167,6 +168,8 @@ constexpr int kToolbarDividerWidth = 2;
|
|||
constexpr int kToolbarDividerHeight = 16;
|
||||
constexpr int kToolbarDividerCornerRadius = 1;
|
||||
constexpr int kToolbarDividerSpacing = 9;
|
||||
constexpr int kBrowserAppMenuRefreshExpandedMargin = 5;
|
||||
constexpr int kBrowserAppMenuRefreshCollapsedMargin = 2;
|
||||
|
||||
} // namespace
|
||||
|
||||
|
@ -316,8 +319,7 @@ void ToolbarView::Init() {
|
|||
std::unique_ptr<SidePanelToolbarContainer> side_panel_toolbar_container;
|
||||
if (browser_view_->unified_side_panel() &&
|
||||
!base::CommandLine::ForCurrentProcess()->HasSwitch("hide-sidepanel-button")) {
|
||||
if (base::FeatureList::IsEnabled(
|
||||
companion::features::kSidePanelCompanion)) {
|
||||
if (companion::IsCompanionFeatureEnabled()) {
|
||||
side_panel_toolbar_container =
|
||||
std::make_unique<SidePanelToolbarContainer>(browser_view_);
|
||||
} else {
|
||||
|
@ -343,11 +345,10 @@ void ToolbarView::Init() {
|
|||
}
|
||||
|
||||
if (base::FeatureList::IsEnabled(features::kChromeLabs)) {
|
||||
chrome_labs_model_ = std::make_unique<ChromeLabsBubbleViewModel>();
|
||||
chrome_labs_model_ = std::make_unique<ChromeLabsModel>();
|
||||
UpdateChromeLabsNewBadgePrefs(browser_->profile(),
|
||||
chrome_labs_model_.get());
|
||||
if (ChromeLabsButton::ShouldShowButton(chrome_labs_model_.get(),
|
||||
browser_->profile())) {
|
||||
if (ShouldShowChromeLabsUI(chrome_labs_model_.get(), browser_->profile())) {
|
||||
chrome_labs_button_ = AddChildView(std::make_unique<ChromeLabsButton>(
|
||||
browser_view_, chrome_labs_model_.get()));
|
||||
|
||||
|
@ -827,10 +828,26 @@ void ToolbarView::InitLayout() {
|
|||
void ToolbarView::LayoutCommon() {
|
||||
DCHECK(display_mode_ == DisplayMode::NORMAL);
|
||||
|
||||
const gfx::Insets interior_margin =
|
||||
gfx::Insets interior_margin =
|
||||
GetLayoutInsets(browser_view_->webui_tab_strip()
|
||||
? LayoutInset::WEBUI_TAB_STRIP_TOOLBAR_INTERIOR_MARGIN
|
||||
: LayoutInset::TOOLBAR_INTERIOR_MARGIN);
|
||||
|
||||
if (features::IsChromeRefresh2023() && !browser_view_->webui_tab_strip()) {
|
||||
if (app_menu_button_->IsLabelPresentAndVisible()) {
|
||||
// The interior margin in an expanded state should be more than in a
|
||||
// collapsed state.
|
||||
interior_margin.set_right(interior_margin.right() + 1);
|
||||
app_menu_button_->SetProperty(
|
||||
views::kMarginsKey,
|
||||
gfx::Insets::VH(0, kBrowserAppMenuRefreshExpandedMargin));
|
||||
} else {
|
||||
app_menu_button_->SetProperty(
|
||||
views::kMarginsKey,
|
||||
gfx::Insets::VH(0, kBrowserAppMenuRefreshCollapsedMargin));
|
||||
}
|
||||
}
|
||||
|
||||
layout_manager_->SetInteriorMargin(interior_margin);
|
||||
|
||||
// Extend buttons to the window edge if we're either in a maximized or
|
||||
|
|
|
@ -294,6 +294,9 @@
|
|||
<message name="IDS_QUICK_ANSWERS_VIEW_A11Y_RETRY_LABEL_NAME_TEMPLATE" desc="A11y retry label name template for the Quick Answers view.">
|
||||
<ph name="DESC_TEXT">$1<ex>Cannot connect to the internet. Click to try again.</ex></ph>: Retry
|
||||
</message>
|
||||
<message name="IDS_QUICK_ANSWERS_VIEW_EXPANSION_INDICATOR_LABEL" desc="Description text of the expansion affordance indicator for the Quick Answers view.">
|
||||
more
|
||||
</message>
|
||||
<message name="IDS_QUICK_ANSWERS_VIEW_REPORT_QUERY_INTERNAL_LABEL" desc="Description text of the report query button for the Quick Answers view.">
|
||||
Internal only
|
||||
</message>
|
||||
|
@ -308,7 +311,7 @@
|
|||
|
||||
<!-- Multitask Menu -->
|
||||
<message name="IDS_MULTITASK_MENU_HALF_BUTTON_NAME" desc="Title of the half button on the multitask menu.">
|
||||
Half
|
||||
Split
|
||||
</message>
|
||||
<message name="IDS_MULTITASK_MENU_PARTIAL_BUTTON_NAME" desc="Title and and accessible name of the partial button on the multitask menu.">
|
||||
Partial
|
||||
|
@ -441,7 +444,7 @@
|
|||
Use as a personal device
|
||||
</message>
|
||||
<message name="IDS_ASH_SHELF_OS_INSTALL_BUTTON" desc="Text shown on install ThoriumOS Flex button on login screen.">
|
||||
Install ThoriumOS
|
||||
Install ThoriumOS Flex
|
||||
</message>
|
||||
<message name="IDS_ASH_SHELF_APP_LIST_LAUNCHER_TITLE" desc="The title used for the Ash Launcher in the Shelf (not mentioning 'Apps' since this is a general launcher).">
|
||||
Launcher
|
||||
|
@ -648,6 +651,9 @@
|
|||
<message name="IDS_PRINT_MANAGEMENT_CLIENT_UNAUTHORIZED_ERROR_STATUS" desc="The error status displayed next to a print job to indicate to users that their print job failed because their authorization with printer has failed.">
|
||||
Failed - Authorization Failed
|
||||
</message>
|
||||
<message name="IDS_PRINT_MANAGEMENT_EXPIRED_CERTIFICATE_ERROR_STATUS" desc="The error status displayed next to a print job to indicate to users that their print job failed because their printer has an expired SSL certificate.">
|
||||
Failed - Certificate Expired
|
||||
</message>
|
||||
<message name="IDS_PRINT_MANAGEMENT_UNKNOWN_ERROR_STATUS" desc="The error status displayed next to a print job to indicate to users that their print job failed due to an unknown error.">
|
||||
Failed - Unknown error
|
||||
</message>
|
||||
|
@ -690,6 +696,15 @@
|
|||
<message name="IDS_PRINT_MANAGEMENT_COLLAPSE_PRINTING_STATUS" desc="A text that indicates to the user that the print job is currently printing. This text only appears if the width of the app's window is small and cannot display the entire ongoing printing status.">
|
||||
Printing
|
||||
</message>
|
||||
<message translateable="false" name="IDS_PRINT_MANAGEMENT_EMPTY_STATE_NO_JOBS_MESSAGE" desc="The message shown to users if they do not have any print jobs in progress i.e. being printed.">
|
||||
No printer jobs
|
||||
</message>
|
||||
<message translateable="false" name="IDS_PRINT_MANAGEMENT_EMPTY_STATE_PRINTER_SETTINGS_MESSAGE" desc="The message shown to users to suggest navigating to Printer settings when they do not have any print jobs.">
|
||||
Go to Printer settings to manage your printers
|
||||
</message>
|
||||
<message translateable="false" name="IDS_PRINT_MANAGEMENT_EMPTY_STATE_MANAGE_PRINTERS_LABEL" desc="The label for the button that opens Printer settings when they do not have any print jobs.">
|
||||
Manage printers
|
||||
</message>
|
||||
|
||||
<!-- Scanning App -->
|
||||
<message name="IDS_SCANNING_APP_TITLE" desc="The title of the scanning app.">
|
||||
|
@ -2479,7 +2494,7 @@
|
|||
Dawn to dark
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_AMBIENT_MODE_TOPIC_SOURCE_VIDEO_DESCRIPTION" desc="Description for the radio button to choose the topic source from video animation. The radio button allows the user to set which video to play for ambient mode.">
|
||||
Select Thoriumbook exclusive artwork
|
||||
Select <ph name="PRODUCT_NAME">$1<ex>Thoriumbook</ex></ph> exclusive artwork
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_AMBIENT_MODE_TOPIC_SOURCE_SELECTED_ROW" desc="A11y label for the selected topic source row in ambient mode.">
|
||||
<ph name="TOPIC_SOURCE">$1<ex>Google Photos</ex></ph> <ph name="TOPIC_SOURCE_DESC">$2<ex>Select your memories</ex></ph> selected, press Enter to select <ph name="TOPIC_SOURCE">$1<ex>Google Photos</ex></ph> albums
|
||||
|
@ -2679,13 +2694,16 @@
|
|||
Earth Flow
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_TIME_OF_DAY_VIDEO_ALBUM_DESCRIPTION" desc="Common description all videos in the ambient section of the hub.">
|
||||
Thoriumbook exclusive
|
||||
<ph name="PRODUCT_NAME">$1<ex>Thoriumbook</ex></ph> exclusive
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_TIME_OF_DAY_BANNER_TITLE" desc="Title for the Time of Day promo banner.">
|
||||
Exclusive Thoriumbook assets now available
|
||||
Exclusive <ph name="PRODUCT_NAME">$1<ex>Thoriumbook</ex></ph> assets now available
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_TIME_OF_DAY_BANNER_DESCRIPTION" desc="Description shown in the Time of Day promo banner.">
|
||||
You now have access to new <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE"><a href="chrome://personalization/wallpaper"></ph>wallpapers<ph name="END_LINK_WALLPAPER_SUBPAGE"></a></ph> and <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE"><a href="chrome://personalization/ambient"></ph>screen saver<ph name="END_LINK_SCREENSAVER_SUBPAGE"></a></ph>
|
||||
You now have access to new <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE"><a href="chrome://personalization/wallpaper/collection?id=_time_of_day_chromebook_collection"></ph>wallpapers<ph name="END_LINK_WALLPAPER_SUBPAGE"></a></ph> and <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE"><a href="chrome://personalization/ambient"></ph>screen saver<ph name="END_LINK_SCREENSAVER_SUBPAGE"></a></ph>
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_TIME_OF_DAY_BANNER_DESCRIPTION_NO_SCREENSAVER" desc="Description shown in the Time of Day promo banner without screen saver link.">
|
||||
You now have access to new <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE"><a href="chrome://personalization/wallpaper/collection?id=_time_of_day_chromebook_collection"></ph>wallpapers<ph name="END_LINK_WALLPAPER_SUBPAGE"></a></ph>
|
||||
</message>
|
||||
|
||||
<!-- Personalization App Search Results -->
|
||||
|
@ -2812,6 +2830,36 @@
|
|||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DARK_MODE_SCHEDULE_ALT4" desc="Text for search result item which, when clicked, navigates the user to personalization app dark mode settings, with a dropdown to select scheduling mode. Alternate phrase for: 'Dark theme schedule', 'Dark mode schedule', 'Automatic dark mode', 'Automatic light mode'">
|
||||
Automatic dark theme
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting.">
|
||||
Theme
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT1" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 1">
|
||||
Theme color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT2" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 2">
|
||||
Accent color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT3" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 3">
|
||||
System color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT4" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 4">
|
||||
Launcher color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT5" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 5">
|
||||
Wallpaper color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT6" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 6">
|
||||
Desktop color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT7" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 7">
|
||||
Background image
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT8" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 8">
|
||||
UI color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_DYNAMIC_COLOR_ALT9" desc="Text for search result item, which, when clicked, navigates the user to personalization app theme setting. Alternate phrase 9">
|
||||
Interface color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting.">
|
||||
Keyboard backlight
|
||||
</message>
|
||||
|
@ -2830,6 +2878,51 @@
|
|||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT5" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 5">
|
||||
backlit color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT6" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 6">
|
||||
keyboard underglow
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT7" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 7">
|
||||
keyboard light
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT8" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 8">
|
||||
keyboard multicolor
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT9" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 9">
|
||||
keyboard hue
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT10" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 10">
|
||||
keyboard customize
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT11" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 11">
|
||||
keyboard brighten
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT12" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 12">
|
||||
keyboard brighter
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT13" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 13">
|
||||
keyboard brightness
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT14" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 14">
|
||||
keyboard dim
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT15" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 15">
|
||||
keyboard dimming
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT16" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 16">
|
||||
keyboard darken
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT17" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 17">
|
||||
keyboard darker
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT18" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 18">
|
||||
key color
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT19" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 19">
|
||||
keyboard zone
|
||||
</message>
|
||||
<message name="IDS_PERSONALIZATION_APP_SEARCH_RESULT_KEYBOARD_BACKLIGHT_ALT20" desc="Text for search result item which, when clicked, navigates the user to personalization app keyboard backlight setting. Alternate phrase 20">
|
||||
rgb controls
|
||||
</message>
|
||||
|
||||
<!-- Traffic Counters UI -->
|
||||
<message name="IDS_TRAFFIC_COUNTERS_UNKNOWN" desc="Traffic counters related to an unknown source">
|
||||
|
@ -3862,21 +3955,24 @@
|
|||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SHORTCUT_WITH_CONFILICT_STATUS_MESSAGE" desc="The status message that displays when user clicks button to override an accelerator" translateable="false">
|
||||
Shortcut is used by <ph name="CONFLICT_ACCEL_NAME">$1<ex>BRIGHTNESS_UP</ex></ph>. Press a new shortcut or press the same one again to use it for this action instead.
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_NO_RESULTS" desc="Text description of a search that has no results." translateable="false">
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_NO_RESULTS" desc="Text description of a search that has no results.">
|
||||
No search results found
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_CLEAR_QUERY_LABEL" desc="The label for the button that clears search input, displayed when the user hovers over the button or when a screen reader describes that button." translateable="false">
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_CLEAR_QUERY_LABEL" desc="The label for the button that clears search input, displayed when the user hovers over the button or when a screen reader describes that button.">
|
||||
Clear search
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_PLACEHOLDER_LABEL" desc="Placeholder text shown in search input field before user has typed anything." translateable="false">
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_PLACEHOLDER_LABEL" desc="Placeholder text shown in search input field before user has typed anything.">
|
||||
Search shortcuts
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_ACCELERATOR_TEXT_DIVIDER" desc="The text shown between multiple shortcut keys in search results." translateable="false">
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_ACCELERATOR_TEXT_DIVIDER" desc="The text shown between multiple shortcut keys in search results.">
|
||||
or
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_RESULT_ROW_A11Y_RESULT_SELECTED" desc="ThoriumVox alert to indicate the position number of a selected result in a list of search results and the selected result text itself, and that the user can press enter to navigate to section described by the search result." translateable="false">
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_SEARCH_RESULT_ROW_A11Y_RESULT_SELECTED" desc="ThoriumVox alert to indicate the position number of a selected result in a list of search results and the selected result text itself, and that the user can press enter to navigate to section described by the search result.">
|
||||
Search result <ph name="LIST_POSITION">$1<ex>1</ex></ph> of <ph name="LIST_SIZE">$2<ex>2</ex></ph>: <ph name="SEARCH_RESULT_TEXT">$3<ex>Open new tab, ctrl T</ex></ph>. Press Enter to navigate to shortcut.
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_NO_SHORTCUT_ASSIGNED" desc="The text shown when no shortcut is enabled with the accelerator" translateable="false">
|
||||
No shortcut assigned
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_CATEGORY_GENERAL" desc="Category named 'General' shown on the navigation sidebar">
|
||||
General
|
||||
</message>
|
||||
|
@ -3991,8 +4087,8 @@
|
|||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_BROWSER_REFRESH" desc="The text read aloud by the screen reader describing the keyboard icon 'refresh'.">
|
||||
refresh
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_BROWSER_SEARCH" desc="The text read aloud by the screen reader describing the keyboard icon 'search'." translateable="false">
|
||||
search
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_BROWSER_SEARCH" desc="The text read aloud by the screen reader describing the keyboard icon 'browser search'.">
|
||||
browser search
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_TOGGLE_DICTATION" desc="The text read aloud by the screen reader describing the keyboard icon 'toggle dictation'.">
|
||||
toggle dictation
|
||||
|
@ -4045,8 +4141,11 @@
|
|||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_MODE_CHANGE" desc="The text read aloud by the screen reader describing the keyboard icon 'mode change'.">
|
||||
mode change
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_OPEN_LAUNCHER" desc="The text read aloud by the screen reader describing the keyboard icon 'launcher'." translateable="false">
|
||||
launcher
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_OPEN_LAUNCHER" desc="The text read aloud by the screen reader describing the keyboard icon 'open launcher'.">
|
||||
open launcher
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_OPEN_SEARCH" desc="The text read aloud by the screen reader describing the keyboard icon 'open search'.">
|
||||
open search
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_POWER" desc="The text read aloud by the screen reader describing the keyboard icon 'power'." translateable="false">
|
||||
power
|
||||
|
@ -4060,6 +4159,9 @@
|
|||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_SETTINGS" desc="The text read aloud by the screen reader describing the keyboard icon 'settings'.">
|
||||
settings
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_VIEW_ALL_APPS" desc="The text read aloud by the screen reader describing the keyboard icon 'view all apps'.">
|
||||
view all apps
|
||||
</message>
|
||||
<message name="IDS_SHORTCUT_CUSTOMIZATION_ICON_LABEL_ZOOM_TOGGLE" desc="The text read aloud by the screen reader describing the keyboard icon 'full screen'.">
|
||||
full screen
|
||||
</message>
|
||||
|
@ -4084,8 +4186,11 @@
|
|||
<message name="IDS_SETTINGS_APN_ZERO_STATE_DESCRIPTION" desc="Text explaining there is no APN information to show because the network has not been attempted to be connected with, and that the user might need to add a custom APN.">
|
||||
You are not connected yet. If your mobile carrier recommends a custom APN, enter the APN information by selecting "+ New APN"
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_APN_DATABASE_APNS_ERROR_MESSAGE" desc="Error message displayed when a cellular network fails to connect to any database APNs due to APN-related reasons.">
|
||||
Can’t connect to this network using automatically detected APNs. Contact your mobile carrier for more information.
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_APN_CUSTOM_APNS_ERROR_MESSAGE" desc="Error message displayed when a cellular network fails to connect due to APN-related reasons, informing the user that none of the enabled custom APNs were successful in being used to connect.">
|
||||
Can't connect to any enabled custom APNs. Contact your mobile carrier for more information.
|
||||
Can’t connect to this network using any enabled custom APNs. Contact your mobile carrier for more information.
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_APN_MENU_DETAILS" desc="Details button in three dotted menu for APNs">
|
||||
Details
|
||||
|
@ -4100,7 +4205,7 @@
|
|||
Remove
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_APN_MORE_ACTIONS_TITLE" desc="Description of the tree dotted menu for APNs">
|
||||
More actions
|
||||
More actions for <ph name="APN_NAME">$1<ex>vzwinternet</ex></ph>
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_ADD_APN_DIALOG_TITLE" desc="Title for the dialog that creates a new custom APN">
|
||||
Add a new APN
|
||||
|
@ -4157,7 +4262,7 @@
|
|||
Automatically detected
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_APN_WARNING_PROMPT_FOR_DISABLE_REMOVE" desc="Warning Prompt describing why the APN can't be disabled or removed.">
|
||||
Can't disable or remove this APN. Make sure enabled attached APNs are disabled or removed.
|
||||
Can't disable or remove this APN. Make sure enabled attach APNs are disabled or removed.
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_APN_DIALOG_ADD" desc="Text used for adding a new APN.">
|
||||
Add
|
||||
|
|
|
@ -715,7 +715,7 @@ void HistoryBackend::SetPageLanguageForVisitByVisitID(
|
|||
annotations.page_language = page_language;
|
||||
db_->AddContentAnnotationsForVisit(visit_id, annotations);
|
||||
}
|
||||
NotifyVisitUpdated(visit_row);
|
||||
NotifyVisitUpdated(visit_row, VisitUpdateReason::kSetPageLanguage);
|
||||
ScheduleCommit();
|
||||
}
|
||||
}
|
||||
|
@ -752,7 +752,7 @@ void HistoryBackend::SetPasswordStateForVisitByVisitID(
|
|||
annotations.password_state = password_state;
|
||||
db_->AddContentAnnotationsForVisit(visit_id, annotations);
|
||||
}
|
||||
NotifyVisitUpdated(visit_row);
|
||||
NotifyVisitUpdated(visit_row, VisitUpdateReason::kSetPasswordState);
|
||||
ScheduleCommit();
|
||||
}
|
||||
}
|
||||
|
@ -891,7 +891,7 @@ void HistoryBackend::UpdateVisitDuration(VisitID visit_id, const Time end_ts) {
|
|||
? end_ts - visit_row.visit_time
|
||||
: base::Microseconds(0);
|
||||
db_->UpdateVisitRow(visit_row);
|
||||
NotifyVisitUpdated(visit_row);
|
||||
NotifyVisitUpdated(visit_row, VisitUpdateReason::kUpdateVisitDuration);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1079,7 +1079,7 @@ void HistoryBackend::AddPage(const HistoryAddPageArgs& request) {
|
|||
visit_row.transition = ui::PageTransitionFromInt(
|
||||
visit_row.transition & ~ui::PAGE_TRANSITION_CHAIN_END);
|
||||
db_->UpdateVisitRow(visit_row);
|
||||
NotifyVisitUpdated(visit_row);
|
||||
NotifyVisitUpdated(visit_row, VisitUpdateReason::kUpdateTransition);
|
||||
}
|
||||
|
||||
extended_redirect_chain = GetCachedRecentRedirects(request.referrer);
|
||||
|
@ -1304,7 +1304,7 @@ void HistoryBackend::InitImpl(
|
|||
// Get the first item in our database.
|
||||
db_->GetStartDate(&first_recorded_time_);
|
||||
|
||||
// Start expiring old stuff if flag unset.
|
||||
// Start expiring old stuff if flag is unset.
|
||||
if (!base::CommandLine::ForCurrentProcess()->HasSwitch("keep-all-history"))
|
||||
expirer_.StartExpiringOldStuff(base::Days(kExpireDaysThreshold));
|
||||
}
|
||||
|
@ -1809,7 +1809,7 @@ VisitID HistoryBackend::UpdateSyncedVisit(
|
|||
content_annotations->password_state);
|
||||
}
|
||||
|
||||
NotifyVisitUpdated(updated_row);
|
||||
NotifyVisitUpdated(updated_row, VisitUpdateReason::kUpdateSyncedVisit);
|
||||
ScheduleCommit();
|
||||
return updated_row.visit_id;
|
||||
}
|
||||
|
@ -2149,7 +2149,7 @@ void HistoryBackend::AddContextAnnotationsForVisit(
|
|||
if (!db_ || !db_->GetRowForVisit(visit_id, &visit_row))
|
||||
return;
|
||||
db_->AddContextAnnotationsForVisit(visit_id, visit_context_annotations);
|
||||
NotifyVisitUpdated(visit_row);
|
||||
NotifyVisitUpdated(visit_row, VisitUpdateReason::kAddContextAnnotations);
|
||||
ScheduleCommit();
|
||||
}
|
||||
|
||||
|
@ -2171,7 +2171,8 @@ void HistoryBackend::SetOnCloseContextAnnotationsForVisit(
|
|||
} else {
|
||||
db_->AddContextAnnotationsForVisit(visit_id, visit_context_annotations);
|
||||
}
|
||||
NotifyVisitUpdated(visit_row);
|
||||
NotifyVisitUpdated(visit_row,
|
||||
VisitUpdateReason::kSetOnCloseContextAnnotations);
|
||||
ScheduleCommit();
|
||||
}
|
||||
|
||||
|
@ -3534,9 +3535,10 @@ void HistoryBackend::NotifyURLsDeleted(DeletionInfo deletion_info) {
|
|||
delegate_->NotifyURLsDeleted(std::move(deletion_info));
|
||||
}
|
||||
|
||||
void HistoryBackend::NotifyVisitUpdated(const VisitRow& visit) {
|
||||
void HistoryBackend::NotifyVisitUpdated(const VisitRow& visit,
|
||||
VisitUpdateReason reason) {
|
||||
for (HistoryBackendObserver& observer : observers_) {
|
||||
observer.OnVisitUpdated(visit);
|
||||
observer.OnVisitUpdated(visit, reason);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -120,7 +120,6 @@ source_set("browser") {
|
|||
"//components/viz/host",
|
||||
"//components/web_package",
|
||||
"//content:content_resources",
|
||||
"//content:dev_ui_content_resources",
|
||||
"//content/browser/aggregation_service:mojo_bindings",
|
||||
"//content/browser/aggregation_service/proto:aggregatable_report_proto",
|
||||
"//content/browser/attribution_reporting:attribution_reporting_proto",
|
||||
|
@ -448,6 +447,8 @@ source_set("browser") {
|
|||
"attribution_reporting/attribution_manager_impl.cc",
|
||||
"attribution_reporting/attribution_manager_impl.h",
|
||||
"attribution_reporting/attribution_observer.h",
|
||||
"attribution_reporting/attribution_os_level_manager.cc",
|
||||
"attribution_reporting/attribution_os_level_manager.h",
|
||||
"attribution_reporting/attribution_report.cc",
|
||||
"attribution_reporting/attribution_report.h",
|
||||
"attribution_reporting/attribution_report_network_sender.cc",
|
||||
|
@ -472,6 +473,10 @@ source_set("browser") {
|
|||
"attribution_reporting/common_source_info.h",
|
||||
"attribution_reporting/create_report_result.cc",
|
||||
"attribution_reporting/create_report_result.h",
|
||||
"attribution_reporting/destination_throttler.cc",
|
||||
"attribution_reporting/destination_throttler.h",
|
||||
"attribution_reporting/os_registration.cc",
|
||||
"attribution_reporting/os_registration.h",
|
||||
"attribution_reporting/rate_limit_result.h",
|
||||
"attribution_reporting/rate_limit_table.cc",
|
||||
"attribution_reporting/rate_limit_table.h",
|
||||
|
@ -647,10 +652,8 @@ source_set("browser") {
|
|||
"browsing_topics/browsing_topics_site_data_manager_impl.h",
|
||||
"browsing_topics/browsing_topics_site_data_storage.cc",
|
||||
"browsing_topics/browsing_topics_site_data_storage.h",
|
||||
"browsing_topics/browsing_topics_url_loader.cc",
|
||||
"browsing_topics/browsing_topics_url_loader.h",
|
||||
"browsing_topics/browsing_topics_url_loader_service.cc",
|
||||
"browsing_topics/browsing_topics_url_loader_service.h",
|
||||
"browsing_topics/browsing_topics_url_loader_interceptor.cc",
|
||||
"browsing_topics/browsing_topics_url_loader_interceptor.h",
|
||||
"browsing_topics/header_util.cc",
|
||||
"browsing_topics/header_util.h",
|
||||
"buckets/bucket_context.h",
|
||||
|
@ -903,6 +906,8 @@ source_set("browser") {
|
|||
"download/save_package_serialization_handler.h",
|
||||
"download/save_types.cc",
|
||||
"download/save_types.h",
|
||||
"environment_integrity/environment_integrity_service_impl.cc",
|
||||
"environment_integrity/environment_integrity_service_impl.h",
|
||||
"eye_dropper_chooser_impl.cc",
|
||||
"eye_dropper_chooser_impl.h",
|
||||
"feature_observer.cc",
|
||||
|
@ -1118,10 +1123,14 @@ source_set("browser") {
|
|||
"installedapp/installed_app_provider_impl.h",
|
||||
"interest_group/ad_auction_document_data.cc",
|
||||
"interest_group/ad_auction_document_data.h",
|
||||
"interest_group/ad_auction_page_data.cc",
|
||||
"interest_group/ad_auction_page_data.h",
|
||||
"interest_group/ad_auction_result_metrics.cc",
|
||||
"interest_group/ad_auction_result_metrics.h",
|
||||
"interest_group/ad_auction_service_impl.cc",
|
||||
"interest_group/ad_auction_service_impl.h",
|
||||
"interest_group/ad_auction_url_loader_interceptor.cc",
|
||||
"interest_group/ad_auction_url_loader_interceptor.h",
|
||||
"interest_group/auction_metrics_recorder.cc",
|
||||
"interest_group/auction_metrics_recorder.h",
|
||||
"interest_group/auction_process_manager.cc",
|
||||
|
@ -1209,12 +1218,16 @@ source_set("browser") {
|
|||
"loader/object_navigation_fallback_body_loader.h",
|
||||
"loader/prefetch_url_loader.cc",
|
||||
"loader/prefetch_url_loader.h",
|
||||
"loader/prefetch_url_loader_service.cc",
|
||||
"loader/prefetch_url_loader_service.h",
|
||||
"loader/prefetch_url_loader_service_context.cc",
|
||||
"loader/prefetch_url_loader_service_context.h",
|
||||
"loader/resource_cache_manager.cc",
|
||||
"loader/resource_cache_manager.h",
|
||||
"loader/shared_cors_origin_access_list_impl.cc",
|
||||
"loader/shared_cors_origin_access_list_impl.h",
|
||||
"loader/subresource_proxying_url_loader.cc",
|
||||
"loader/subresource_proxying_url_loader.h",
|
||||
"loader/subresource_proxying_url_loader_service.cc",
|
||||
"loader/subresource_proxying_url_loader_service.h",
|
||||
"loader/url_loader_throttles.cc",
|
||||
"locks/lock_manager.cc",
|
||||
"locks/lock_manager.h",
|
||||
|
@ -1321,6 +1334,8 @@ source_set("browser") {
|
|||
"message_port_provider.cc",
|
||||
"metrics/histogram_controller.cc",
|
||||
"metrics/histogram_controller.h",
|
||||
"metrics/histogram_shared_memory_config.cc",
|
||||
"metrics/histogram_shared_memory_config.h",
|
||||
"metrics/histogram_subscriber.h",
|
||||
"metrics/histogram_synchronizer.cc",
|
||||
"metrics/histogram_synchronizer.h",
|
||||
|
@ -1493,6 +1508,8 @@ source_set("browser") {
|
|||
"preloading/preloading_decider.h",
|
||||
"preloading/preloading_prediction.cc",
|
||||
"preloading/preloading_prediction.h",
|
||||
"preloading/prerender/devtools_prerender_attempt.cc",
|
||||
"preloading/prerender/devtools_prerender_attempt.h",
|
||||
"preloading/prerender/prerender_attributes.cc",
|
||||
"preloading/prerender/prerender_attributes.h",
|
||||
"preloading/prerender/prerender_commit_deferring_condition.cc",
|
||||
|
@ -1793,6 +1810,8 @@ source_set("browser") {
|
|||
"renderer_host/media/video_capture_provider_switcher.h",
|
||||
"renderer_host/media/virtual_video_capture_devices_changed_observer.cc",
|
||||
"renderer_host/media/virtual_video_capture_devices_changed_observer.h",
|
||||
"renderer_host/mixed_content_checker.cc",
|
||||
"renderer_host/mixed_content_checker.h",
|
||||
"renderer_host/mixed_content_navigation_throttle.cc",
|
||||
"renderer_host/mixed_content_navigation_throttle.h",
|
||||
"renderer_host/native_web_keyboard_event_aura.cc",
|
||||
|
@ -1908,6 +1927,7 @@ source_set("browser") {
|
|||
"renderer_host/stored_page.h",
|
||||
"renderer_host/subframe_history_navigation_throttle.cc",
|
||||
"renderer_host/subframe_history_navigation_throttle.h",
|
||||
"renderer_host/system_entropy_utils.h",
|
||||
"renderer_host/text_input_manager.cc",
|
||||
"renderer_host/text_input_manager.h",
|
||||
"renderer_host/transient_allow_popup.cc",
|
||||
|
@ -2248,6 +2268,8 @@ source_set("browser") {
|
|||
"webid/federated_provider_fetcher.h",
|
||||
"webid/flags.cc",
|
||||
"webid/flags.h",
|
||||
"webid/identity_registry.cc",
|
||||
"webid/identity_registry.h",
|
||||
"webid/idp_network_request_manager.cc",
|
||||
"webid/idp_network_request_manager.h",
|
||||
"webid/mdocs/mdoc_provider.cc",
|
||||
|
@ -2364,7 +2386,6 @@ source_set("browser") {
|
|||
"font_access/font_enumeration_data_source_linux.h",
|
||||
"font_service.cc",
|
||||
"font_service.h",
|
||||
"media/stable_video_decoder_factory.cc",
|
||||
"media/video_encode_accelerator_provider_launcher.cc",
|
||||
"media/video_encode_accelerator_provider_launcher.h",
|
||||
"memory/swap_metrics_driver_impl_linux.cc",
|
||||
|
@ -2383,11 +2404,15 @@ source_set("browser") {
|
|||
"//components/crash/content/browser/error_reporting",
|
||||
"//components/services/font:lib",
|
||||
"//content/common:sandbox_support_linux",
|
||||
"//media/mojo/mojom/stable:stable_video_decoder",
|
||||
"//third_party/blink/public/mojom:memory_usage_monitor_linux_mojo_bindings",
|
||||
]
|
||||
}
|
||||
|
||||
if (allow_oop_video_decoder) {
|
||||
sources += [ "media/stable_video_decoder_factory.cc" ]
|
||||
deps += [ "//media/mojo/mojom/stable:stable_video_decoder" ]
|
||||
}
|
||||
|
||||
if (is_chromeos) {
|
||||
sources += [
|
||||
"handwriting/handwriting_recognition_service_impl_cros.cc",
|
||||
|
@ -2488,7 +2513,6 @@ source_set("browser") {
|
|||
deps += [
|
||||
"//third_party/abseil-cpp:absl",
|
||||
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.accessibility.semantics:fuchsia.accessibility.semantics_cpp",
|
||||
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.accessibility.semantics:fuchsia.accessibility.semantics_cpp_hlcpp_conversion",
|
||||
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.mediacodec:fuchsia.mediacodec_hlcpp",
|
||||
"//third_party/fuchsia-sdk/sdk/pkg/inspect",
|
||||
"//third_party/fuchsia-sdk/sdk/pkg/sys_inspect_cpp",
|
||||
|
@ -2755,6 +2779,7 @@ source_set("browser") {
|
|||
]
|
||||
deps += [
|
||||
"//components/services/screen_ai/public/cpp:utilities",
|
||||
"//content/utility:delegate_data",
|
||||
"//third_party/blink/public/common:font_unique_name_table_proto",
|
||||
"//third_party/iaccessible2",
|
||||
"//third_party/isimpledom",
|
||||
|
@ -2977,6 +3002,8 @@ source_set("browser") {
|
|||
"android/gpu_process_callback.cc",
|
||||
"android/ime_adapter_android.cc",
|
||||
"android/ime_adapter_android.h",
|
||||
"android/impression_utils.cc",
|
||||
"android/impression_utils.h",
|
||||
"android/java/gin_java_bound_object.cc",
|
||||
"android/java/gin_java_bound_object.h",
|
||||
"android/java/gin_java_bound_object_delegate.cc",
|
||||
|
@ -3021,6 +3048,8 @@ source_set("browser") {
|
|||
"android/select_popup.h",
|
||||
"android/selection/composited_touch_handle_drawable.cc",
|
||||
"android/selection/composited_touch_handle_drawable.h",
|
||||
"android/selection/magnifier_surface_control.cc",
|
||||
"android/selection/magnifier_surface_control.h",
|
||||
"android/selection/selection_popup_controller.cc",
|
||||
"android/selection/selection_popup_controller.h",
|
||||
"android/selection/smart_selection_client.cc",
|
||||
|
@ -3039,11 +3068,8 @@ source_set("browser") {
|
|||
"android/web_contents_observer_proxy.h",
|
||||
"attribution_reporting/attribution_input_event_tracker_android.cc",
|
||||
"attribution_reporting/attribution_input_event_tracker_android.h",
|
||||
"attribution_reporting/attribution_os_level_manager.h",
|
||||
"attribution_reporting/attribution_os_level_manager_android.cc",
|
||||
"attribution_reporting/attribution_os_level_manager_android.h",
|
||||
"attribution_reporting/os_registration.cc",
|
||||
"attribution_reporting/os_registration.h",
|
||||
"child_process_launcher_helper_android.cc",
|
||||
"contacts/contacts_provider_android.cc",
|
||||
"contacts/contacts_provider_android.h",
|
||||
|
@ -3206,6 +3232,8 @@ source_set("browser") {
|
|||
"webauth/virtual_fido_discovery_factory.h",
|
||||
|
||||
# The Document Picture-in-Picture API is not implemented on Android.
|
||||
"picture_in_picture/document_picture_in_picture_navigation_throttle.cc",
|
||||
"picture_in_picture/document_picture_in_picture_navigation_throttle.h",
|
||||
"picture_in_picture/document_picture_in_picture_window_controller_impl.cc",
|
||||
"picture_in_picture/document_picture_in_picture_window_controller_impl.h",
|
||||
]
|
||||
|
|
|
@ -744,7 +744,7 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
|
|||
AVMasteringDisplayMetadata* metadata =
|
||||
reinterpret_cast<AVMasteringDisplayMetadata*>(side_data.data);
|
||||
if (metadata->has_primaries) {
|
||||
hdr_metadata.color_volume_metadata.primaries = {
|
||||
hdr_metadata.smpte_st_2086.primaries = {
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[0][0])),
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[0][1])),
|
||||
static_cast<float>(av_q2d(metadata->display_primaries[1][0])),
|
||||
|
@ -756,9 +756,9 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
|
|||
};
|
||||
}
|
||||
if (metadata->has_luminance) {
|
||||
hdr_metadata.color_volume_metadata.luminance_max =
|
||||
hdr_metadata.smpte_st_2086.luminance_max =
|
||||
av_q2d(metadata->max_luminance);
|
||||
hdr_metadata.color_volume_metadata.luminance_min =
|
||||
hdr_metadata.smpte_st_2086.luminance_min =
|
||||
av_q2d(metadata->min_luminance);
|
||||
}
|
||||
}
|
||||
|
@ -914,26 +914,6 @@ VideoPixelFormat AVPixelFormatToVideoPixelFormat(AVPixelFormat pixel_format) {
|
|||
return PIXEL_FORMAT_UNKNOWN;
|
||||
}
|
||||
|
||||
VideoColorSpace AVColorSpaceToColorSpace(AVColorSpace color_space,
|
||||
AVColorRange color_range) {
|
||||
// TODO(hubbe): make this better
|
||||
if (color_range == AVCOL_RANGE_JPEG)
|
||||
return VideoColorSpace::JPEG();
|
||||
|
||||
switch (color_space) {
|
||||
case AVCOL_SPC_UNSPECIFIED:
|
||||
break;
|
||||
case AVCOL_SPC_BT709:
|
||||
return VideoColorSpace::REC709();
|
||||
case AVCOL_SPC_SMPTE170M:
|
||||
case AVCOL_SPC_BT470BG:
|
||||
return VideoColorSpace::REC601();
|
||||
default:
|
||||
DVLOG(1) << "Unknown AVColorSpace: " << color_space;
|
||||
}
|
||||
return VideoColorSpace();
|
||||
}
|
||||
|
||||
std::string AVErrorToString(int errnum) {
|
||||
char errbuf[AV_ERROR_MAX_STRING_SIZE] = {0};
|
||||
av_strerror(errnum, errbuf, AV_ERROR_MAX_STRING_SIZE);
|
||||
|
|
|
@ -110,6 +110,10 @@ declare_args() {
|
|||
# with hardware acceleration assist. Enabled by default for fuzzer builds,
|
||||
# ChromeOS builds with protected content support, Windows, Mac, and Android.
|
||||
enable_hevc_parser_and_hw_decoder = true
|
||||
|
||||
# Enable inclusion of VVC/H.266 parser/demuxer, and also enable VVC/H.266 decoding
|
||||
# with hardware acceleration provided by platform. Disabled by default for all builds.
|
||||
enable_platform_vvc = false
|
||||
}
|
||||
|
||||
# Use another declare_args() to allow dependence on args defined above.
|
||||
|
|
|
@ -38,6 +38,7 @@ generate_grd("build_grdp") {
|
|||
"throbber_small_dark.svg",
|
||||
"throbber_small.svg",
|
||||
"tree_triangle.svg",
|
||||
|
||||
"2x/checkbox_black.png",
|
||||
"2x/checkbox_white.png",
|
||||
"2x/check.png",
|
||||
|
@ -55,6 +56,7 @@ generate_grd("build_grdp") {
|
|||
"icon_arrow_back.svg",
|
||||
"icon_arrow_dropdown.svg",
|
||||
"icon_bookmark.svg",
|
||||
"icon_checkmark.svg",
|
||||
"icon_clear.svg",
|
||||
"icon_clock.svg",
|
||||
"icon_delete_gray.svg",
|
||||
|
|
Loading…
Reference in a new issue