| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import sys |
| |
| import search_engine_icons_utils |
| |
| |
| def generate_icon_path_map(output_filename, engine_keywords): |
| """Generates the `kSearchEngineIconPathMap` map. |
| |
| The code is generated in `search_engine_choice/generated_icon_utils-inc.cc`. |
| """ |
| with open(output_filename, 'w', encoding='utf-8', newline='') as utils_file: |
| utils_file.write('constexpr auto kSearchEngineIconPathMap =\n') |
| utils_file.write( |
| '\tbase::MakeFixedFlatMap<std::u16string_view, std::string_view>({\n') |
| |
| for engine_keyword in engine_keywords: |
| resource_name = search_engine_icons_utils.keyword_to_resource_name( |
| engine_keyword) |
| utils_file.write('\t\t{') |
| utils_file.write(f'u"{engine_keyword}", "chrome://theme/{resource_name}"') |
| utils_file.write('},\n') |
| |
| # Add Google to the map |
| utils_file.write('\t\t{u"google.com",\n') |
| utils_file.write('#if BUILDFLAG(GOOGLE_CHROME_BRANDING)\n') |
| utils_file.write('\t\t "chrome://theme/IDR_GOOGLE_COM_PNG"\n') |
| utils_file.write('#else\n') |
| utils_file.write('\t\t "chrome://theme/IDR_DEFAULT_FAVICON"\n') |
| utils_file.write('#endif\n') |
| utils_file.write('\t}});\n') |
| |
| |
| def generate_icon_resource_id_map(output_filename, engine_keywords): |
| """Generates the `kSearchEngineResourceIdMap` map. |
| |
| The code is generated in |
| `components/search_engines/generated_search_engine_resource_ids-inc.cc`. |
| """ |
| with open(output_filename, 'w', encoding='utf-8', newline='') as utils_file: |
| utils_file.write('constexpr auto kSearchEngineResourceIdMap =\n') |
| utils_file.write('\tbase::MakeFixedFlatMap<std::u16string_view, int>({\n') |
| |
| for engine_keyword in engine_keywords: |
| resource_name = search_engine_icons_utils.keyword_to_resource_name( |
| engine_keyword) |
| utils_file.write('\t\t{') |
| utils_file.write(f'u"{engine_keyword}", {resource_name}') |
| utils_file.write('},\n') |
| |
| # Add Google to the map |
| utils_file.write('\t\t{u"google.com",\n') |
| utils_file.write('#if BUILDFLAG(GOOGLE_CHROME_BRANDING)\n') |
| utils_file.write('\t\t IDR_GOOGLE_COM_PNG\n') |
| utils_file.write('#else\n') |
| utils_file.write('\t\t IDR_DEFAULT_FAVICON\n') |
| utils_file.write('#endif\n') |
| utils_file.write('\t}});\n\n') |
| |
| |
| if len(sys.argv) >= 3: |
| src_dir = sys.argv[1] |
| generated_search_engine_resource_ids_file = sys.argv[2] |
| generated_icon_utils_file = sys.argv[3] |
| |
| engine_keywords = { |
| keyword |
| for (engine, keyword |
| ) in search_engine_icons_utils.get_used_engines_with_keywords(src_dir) |
| } |
| # Sort the engines so that the order of the engines in the generated files is |
| # deterministic. |
| engine_keywords = sorted(engine_keywords) |
| generate_icon_path_map(generated_icon_utils_file, engine_keywords) |
| generate_icon_resource_id_map(generated_search_engine_resource_ids_file, |
| engine_keywords) |