Fix Windows delta updates (#31937)
Chromium 142 broke delta updates on Windows. This commit fixes them by reverting upstream commits 13ca199c and a4d120da with a few patches, vendored code and chromium_src overrides. The changes should affect the browser Windows installer only, and not the Omaha update client. Co-authored-by: Max Karolinskiy <max@brave.com>
This commit is contained in:
co-authored by
Max Karolinskiy
parent
d34a60dc3c
commit
49faa97bb6
@@ -17,6 +17,7 @@ import os.path
|
||||
import sys
|
||||
import glob
|
||||
from lib.l10n.grd_utils import (braveify_grd_in_place, braveify_grd_tree,
|
||||
INSTALLER_STRINGS,
|
||||
GOOGLE_CHROME_STRINGS_MIGRATION_MAP,
|
||||
get_override_file_path, textify,
|
||||
write_xml_file_from_tree)
|
||||
@@ -108,6 +109,61 @@ def migrate_google_chrome_strings(brave_strings_xml_tree,
|
||||
return migrate_google_chrome_xtb_translations_for_messages(message_ids)
|
||||
|
||||
|
||||
def add_installer_strings_xtb_translations_for_messages(message_ids):
|
||||
installer_xtb_files = glob.glob(
|
||||
os.path.join(
|
||||
BRAVE_SOURCE_ROOT,
|
||||
'chromium_src/chrome/installer/setup/resources/setup_resources_*.xtb'
|
||||
))
|
||||
for installer_xtb_path in installer_xtb_files:
|
||||
installer_xtb_xml_tree = etree.parse(installer_xtb_path)
|
||||
lang = os.path.basename(installer_xtb_path).replace(
|
||||
'setup_resources_', '').replace('.xtb', '')
|
||||
if not lang:
|
||||
print(
|
||||
'Skipping file {} because unable to determine language'.format(
|
||||
installer_xtb_path))
|
||||
continue
|
||||
brave_xtb_path = os.path.join(
|
||||
BRAVE_SOURCE_ROOT,
|
||||
'app/resources/brave_strings_{}.xtb'.format(lang))
|
||||
if not os.path.exists(brave_xtb_path):
|
||||
print('Unable to find brave translation file {}'.format(
|
||||
brave_xtb_path))
|
||||
return False
|
||||
messages = [(message_id,
|
||||
installer_xtb_xml_tree.xpath('//translation[@id="' +
|
||||
message_id + '"]')[0].text)
|
||||
for message_id in message_ids]
|
||||
|
||||
write_new_translations_to_xtb(brave_xtb_path, messages)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def add_installer_strings(brave_strings_xml_tree, installer_strings):
|
||||
print('Adding installer strings...')
|
||||
installer_strings_grd_path = os.path.join(
|
||||
BRAVE_SOURCE_ROOT,
|
||||
'chromium_src/chrome/installer/setup/resources/setup_resources.grd')
|
||||
installer_strings_xml_tree = etree.parse(installer_strings_grd_path)
|
||||
message_ids = []
|
||||
messages_element = brave_strings_xml_tree.xpath('//messages')[0]
|
||||
if_element = etree.SubElement(messages_element, 'if')
|
||||
if_element.set('expr', 'is_win')
|
||||
for item in installer_strings:
|
||||
message_elem = installer_strings_xml_tree.xpath(
|
||||
'//message[@name="{}"]'.format(item))[0]
|
||||
message_text = message_elem.text.lstrip().rstrip()
|
||||
message_id = tclib.GenerateMessageId(message_text)
|
||||
message_ids.append(message_id)
|
||||
new_element = etree.SubElement(if_element, 'message')
|
||||
new_element.set('name', item)
|
||||
new_element.text = message_elem.text
|
||||
new_element.set('desc', message_elem.get('desc'))
|
||||
return add_installer_strings_xtb_translations_for_messages(message_ids)
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Rebase strings/l10n on the current Chromium version.')
|
||||
@@ -234,6 +290,8 @@ def main():
|
||||
if not migrate_google_chrome_strings(
|
||||
xml_tree, GOOGLE_CHROME_STRINGS_MIGRATION_MAP):
|
||||
return 1
|
||||
if not add_installer_strings(xml_tree, INSTALLER_STRINGS):
|
||||
return 1
|
||||
elem1 = xml_tree.xpath('//message[@name="IDS_SXS_SHORTCUT_NAME"]')[0]
|
||||
elem1.text = 'Brave Nightly'
|
||||
elem1.attrib.pop('desc')
|
||||
|
||||
@@ -28,6 +28,10 @@ GOOGLE_CHROME_STRINGS_MIGRATION_MAP = {
|
||||
'IDS_SHORTCUT_NAME_DEV': 'IDS_CHROME_SHORTCUT_NAME_DEV'
|
||||
}
|
||||
|
||||
# Installer strings that need to be in brave_strings.grd until we move Windows
|
||||
# to Omaha 4.
|
||||
INSTALLER_STRINGS = ['IDS_SETUP_PATCH_FAILED']
|
||||
|
||||
|
||||
def braveify_grd_text(text, is_main_text, branding_replacements_only):
|
||||
"""Replaces text string to Brave wording"""
|
||||
@@ -168,9 +172,12 @@ def update_xtbs_locally(grd_file_path, brave_source_root, only_for_lang):
|
||||
brave_strings_string_ids = []
|
||||
if os.path.basename(grd_file_path) == 'brave_strings.grd':
|
||||
assert len(grd_strings) == len(chromium_grd_strings) + \
|
||||
len(GOOGLE_CHROME_STRINGS_MIGRATION_MAP)
|
||||
brave_strings_string_ids = remove_google_chrome_strings(
|
||||
grd_strings, GOOGLE_CHROME_STRINGS_MIGRATION_MAP)
|
||||
len(GOOGLE_CHROME_STRINGS_MIGRATION_MAP) + \
|
||||
len(INSTALLER_STRINGS)
|
||||
brave_strings_string_ids = remove_installer_strings(
|
||||
remove_google_chrome_strings(grd_strings,
|
||||
GOOGLE_CHROME_STRINGS_MIGRATION_MAP),
|
||||
INSTALLER_STRINGS)
|
||||
assert len(grd_strings) == len(chromium_grd_strings), (
|
||||
f'String count in {grd_file_path} and in {chromium_grd_file_path} do' +
|
||||
f'not match: {len(grd_strings)} vs {len(chromium_grd_strings)}.')
|
||||
@@ -403,6 +410,24 @@ def remove_google_chrome_strings(brave_grd_strings, google_chrome_strings_map):
|
||||
return string_ids
|
||||
|
||||
|
||||
def remove_installer_strings(brave_grd_strings, installer_string):
|
||||
string_ids = []
|
||||
string_names = [
|
||||
string_name[4:].lower() for string_name in installer_string
|
||||
]
|
||||
to_remove = []
|
||||
for string_tuple in brave_grd_strings:
|
||||
if string_tuple[0] in string_names:
|
||||
to_remove.append(string_tuple)
|
||||
string_ids.append(string_tuple[2])
|
||||
assert len(to_remove) == len(installer_string)
|
||||
|
||||
for string_tuple in to_remove:
|
||||
brave_grd_strings.remove(string_tuple)
|
||||
|
||||
return string_ids
|
||||
|
||||
|
||||
def add_google_chrome_translations(brave_strings_xtb_file, xml_tree,
|
||||
string_ids):
|
||||
brave_xtb_tree = lxml.etree.parse(brave_strings_xtb_file)
|
||||
|
||||
Reference in New Issue
Block a user