# 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("//build/config/chrome_build.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//tools/grit/grit_rule.gni") assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos/ash") mojom("mojo_bindings") { sources = [ "emoji_search.mojom", "tenor_types.mojom", ] public_deps = [ "//mojo/public/mojom/base", "//ui/gfx/geometry/mojom", "//url/mojom:url_mojom_gurl", ] webui_module_path = "/" } source_set("unit_tests") { testonly = true deps = [ ":emoji", ":resources", "//base/test:test_support", "//build:branding_buildflags", "//components/endpoint_fetcher", "//content/test:test_support", "//services/data_decoder/public/cpp:test_support", "//services/network:test_support", "//testing/gtest", "//ui/base:test_support", "//url", ] sources = [ "emoji_search_unittest.cc", "gif_tenor_api_fetcher_unittest.cc", ] } action_foreach("emoji_data") { script = "tools/emoji_data.py" metadata_json = [ "//third_party/emoji-metadata/src/emoji_15_0_ordering.json", "./emoji_test_ordering.json", ] keyword_xmls = [ # later keywords will override earlier keywords for a particular emoji. "//third_party/cldr/src/common/annotations/en.xml", "//third_party/cldr/src/common/annotations/en_001.xml", "//third_party/cldr/src/common/annotationsDerived/en.xml", "//third_party/cldr/src/common/annotationsDerived/en_001.xml", ] merged_json = "$target_gen_dir/{{source_name_part}}_start.json" sources = metadata_json inputs = keyword_xmls outputs = [ merged_json ] args = [ "--firstgroup", "True", "--metadata", "{{source}}", "--output", rebase_path(merged_json, root_build_dir), "--keywords", ] + rebase_path(keyword_xmls, root_build_dir) } action_foreach("emoji_data_remaining") { script = "tools/emoji_data.py" metadata_json = [ "//third_party/emoji-metadata/src/emoji_15_0_ordering.json", "./emoji_test_ordering.json", ] keyword_xmls = [ # later keywords will override earlier keywords for a particular emoji. "//third_party/cldr/src/common/annotations/en.xml", "//third_party/cldr/src/common/annotations/en_001.xml", "//third_party/cldr/src/common/annotationsDerived/en.xml", "//third_party/cldr/src/common/annotationsDerived/en_001.xml", ] merged_json = "$target_gen_dir/{{source_name_part}}_remaining.json" sources = metadata_json inputs = keyword_xmls outputs = [ merged_json ] args = [ "--firstgroup", "False", "--metadata", "{{source}}", "--output", rebase_path(merged_json, root_build_dir), "--keywords", ] + rebase_path(keyword_xmls, root_build_dir) } action_foreach("emoticon_data") { script = "tools/emoticon_data.py" merged_json = "$target_gen_dir/{{source_name_part}}.json" sources = [ "./emoticon_test_ordering.json", "//third_party/emoji-metadata/src/emoticon_ordering.json", ] outputs = [ merged_json ] args = [ "--metadata", "{{source}}", "--output", rebase_path(merged_json, root_build_dir), ] } action("symbol_data") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbol_ordering.json" ] deps = [ ":emoji_data", ":emoji_data_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_remaining"), root_build_dir) } copy("symbol_test_data") { sources = [ "./symbol_test_ordering.json" ] outputs = [ "$target_gen_dir/symbol_test_ordering.json" ] } # I18n emoji data. # TODO(b/346457889): Use a script to loop through languages. # This is used to generate the emoji in a specific order emoji_metadata = [ "//third_party/emoji-metadata/src/emoji_15_0_ordering.json" ] emoji_script = "tools/emoji_data.py" # German emoji keywords de_keyword_xmls = [ "//third_party/cldr/src/common/annotations/de.xml", "//third_party/cldr/src/common/annotationsDerived/de.xml", ] action("emoji_data_de") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_de_start.json" ] inputs = de_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_de_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_de_remaining.json" ] inputs = de_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_de") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_de.json" ] deps = [ ":emoji_data_de", ":emoji_data_de_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_de"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_de_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(de_keyword_xmls, root_build_dir) } # Japanese keywords. ja_keyword_xmls = [ "//third_party/cldr/src/common/annotations/ja.xml", "//third_party/cldr/src/common/annotationsDerived/ja.xml", ] action("emoji_data_ja") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_ja_start.json" ] inputs = ja_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_ja_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_ja_remaining.json" ] inputs = ja_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_ja") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_ja.json" ] deps = [ ":emoji_data_ja", ":emoji_data_ja_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_ja"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_ja_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(ja_keyword_xmls, root_build_dir) } # Spanish keywords. es_keyword_xmls = [ "//third_party/cldr/src/common/annotations/es.xml", "//third_party/cldr/src/common/annotationsDerived/es.xml", ] action("emoji_data_es") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_es_start.json" ] inputs = es_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_es_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_es_remaining.json" ] inputs = es_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_es") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_es.json" ] deps = [ ":emoji_data_es", ":emoji_data_es_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_es"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_es_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(es_keyword_xmls, root_build_dir) } # Swedish keywords. sv_keyword_xmls = [ "//third_party/cldr/src/common/annotations/sv.xml", "//third_party/cldr/src/common/annotationsDerived/sv.xml", ] action("emoji_data_sv") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_sv_start.json" ] inputs = sv_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_sv_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_sv_remaining.json" ] inputs = sv_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_sv") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_sv.json" ] deps = [ ":emoji_data_sv", ":emoji_data_sv_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_sv"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_sv_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(sv_keyword_xmls, root_build_dir) } # Norwegian keywords. no_keyword_xmls = [ "//third_party/cldr/src/common/annotations/no.xml", "//third_party/cldr/src/common/annotationsDerived/no.xml", ] action("emoji_data_no") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_no_start.json" ] inputs = no_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_no_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_no_remaining.json" ] inputs = no_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_no") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_no.json" ] deps = [ ":emoji_data_no", ":emoji_data_no_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_no"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_no_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(no_keyword_xmls, root_build_dir) } # Finnish keywords. fi_keyword_xmls = [ "//third_party/cldr/src/common/annotations/fi.xml", "//third_party/cldr/src/common/annotationsDerived/fi.xml", ] action("emoji_data_fi") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_fi_start.json" ] inputs = fi_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_fi_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_fi_remaining.json" ] inputs = fi_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_fi") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_fi.json" ] deps = [ ":emoji_data_fi", ":emoji_data_fi_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_fi"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_fi_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(fi_keyword_xmls, root_build_dir) } # Danish keywords. da_keyword_xmls = [ "//third_party/cldr/src/common/annotations/da.xml", "//third_party/cldr/src/common/annotationsDerived/da.xml", ] action("emoji_data_da") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_da_start.json" ] inputs = da_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_da_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_da_remaining.json" ] inputs = da_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_da") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_da.json" ] deps = [ ":emoji_data_da", ":emoji_data_da_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_da"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_da_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(da_keyword_xmls, root_build_dir) } # French keywords. fr_keyword_xmls = [ "//third_party/cldr/src/common/annotations/fr.xml", "//third_party/cldr/src/common/annotationsDerived/fr.xml", ] action("emoji_data_fr") { firstgroup = "True" outputs = [ "$target_gen_dir/emoji_fr_start.json" ] inputs = fr_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("emoji_data_fr_remaining") { firstgroup = "False" outputs = [ "$target_gen_dir/emoji_fr_remaining.json" ] inputs = fr_keyword_xmls # Shared for all emoji scripts script = emoji_script sources = emoji_metadata args = [ "--firstgroup", firstgroup, "--output", ] + rebase_path(outputs, root_build_dir) args += [ "--metadata" ] + rebase_path(sources, root_build_dir) args += [ "--keywords" ] + rebase_path(inputs, root_build_dir) } action("symbol_data_fr") { script = "tools/symbol_data.py" outputs = [ "$target_gen_dir/symbols_fr.json" ] deps = [ ":emoji_data_fr", ":emoji_data_fr_remaining", ] args = [ "--output", rebase_path(outputs[0], root_build_dir), ] args += [ "--filter-data-paths" ] + rebase_path(get_target_outputs(":emoji_data_fr"), root_build_dir) + rebase_path(get_target_outputs(":emoji_data_fr_remaining"), root_build_dir) args += [ "--cldr_data_path" ] + rebase_path(fr_keyword_xmls, root_build_dir) } # Resources used by chrome://picker. grit("resources") { source = "emoji.grd" deps = [ ":emoji_data", ":emoji_data_da", ":emoji_data_da_remaining", ":emoji_data_de", ":emoji_data_de_remaining", ":emoji_data_es", ":emoji_data_es_remaining", ":emoji_data_fi", ":emoji_data_fi_remaining", ":emoji_data_fr", ":emoji_data_fr_remaining", ":emoji_data_ja", ":emoji_data_ja_remaining", ":emoji_data_no", ":emoji_data_no_remaining", ":emoji_data_remaining", ":emoji_data_sv", ":emoji_data_sv_remaining", ":emoticon_data", ":symbol_data", ":symbol_data_da", ":symbol_data_de", ":symbol_data_es", ":symbol_data_fi", ":symbol_data_fr", ":symbol_data_ja", ":symbol_data_no", ":symbol_data_sv", ":symbol_test_data", ] inputs = [ "$target_gen_dir/emoji_15_0_ordering_remaining.json", "$target_gen_dir/emoji_15_0_ordering_start.json", "$target_gen_dir/emoji_da_remaining.json", "$target_gen_dir/emoji_da_start.json", "$target_gen_dir/emoji_de_remaining.json", "$target_gen_dir/emoji_de_start.json", "$target_gen_dir/emoji_es_remaining.json", "$target_gen_dir/emoji_es_start.json", "$target_gen_dir/emoji_fi_remaining.json", "$target_gen_dir/emoji_fi_start.json", "$target_gen_dir/emoji_fr_remaining.json", "$target_gen_dir/emoji_fr_start.json", "$target_gen_dir/emoji_ja_remaining.json", "$target_gen_dir/emoji_ja_start.json", "$target_gen_dir/emoji_no_remaining.json", "$target_gen_dir/emoji_no_start.json", "$target_gen_dir/emoji_sv_remaining.json", "$target_gen_dir/emoji_sv_start.json", "$target_gen_dir/emoji_test_ordering_remaining.json", "$target_gen_dir/emoji_test_ordering_start.json", "$target_gen_dir/emoticon_ordering.json", "$target_gen_dir/emoticon_test_ordering.json", "$target_gen_dir/symbol_ordering.json", "$target_gen_dir/symbol_test_ordering.json", "$target_gen_dir/symbols_da.json", "$target_gen_dir/symbols_de.json", "$target_gen_dir/symbols_es.json", "$target_gen_dir/symbols_fi.json", "$target_gen_dir/symbols_fr.json", "$target_gen_dir/symbols_ja.json", "$target_gen_dir/symbols_no.json", "$target_gen_dir/symbols_sv.json", ] if (is_chrome_branded) { inputs += [ "//chromeos/ash/resources/internal/emoji-search-da-keywords.json", "//chromeos/ash/resources/internal/emoji-search-de-keywords.json", "//chromeos/ash/resources/internal/emoji-search-en-keywords.json", "//chromeos/ash/resources/internal/emoji-search-es-keywords.json", "//chromeos/ash/resources/internal/emoji-search-fi-keywords.json", "//chromeos/ash/resources/internal/emoji-search-fr-keywords.json", "//chromeos/ash/resources/internal/emoji-search-ja-keywords.json", "//chromeos/ash/resources/internal/emoji-search-no-keywords.json", "//chromeos/ash/resources/internal/emoji-search-sv-keywords.json", ] } outputs = [ "grit/emoji.h", "grit/emoji_map.cc", "grit/emoji_map.h", "emoji.pak", ] } source_set("emoji") { deps = [ ":resources", "//base/version_info", "//build:branding_buildflags", "//chromeos/ash/components/channel", "//components/endpoint_fetcher", "//services/network/public/cpp", "//ui/base", "//url", ] sources = [ "emoji_search.cc", "emoji_search.h", "gif_tenor_api_fetcher.cc", "gif_tenor_api_fetcher.h", ] public_deps = [ ":mojo_bindings", "//base", "//services/data_decoder/public/cpp", ] }