1# Copyright 2010-2018, Google Inc.
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are
6# met:
7#
8#     * Redistributions of source code must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10#     * Redistributions in binary form must reproduce the above
11# copyright notice, this list of conditions and the following disclaimer
12# in the documentation and/or other materials provided with the
13# distribution.
14#     * Neither the name of Google Inc. nor the names of its
15# contributors may be used to endorse or promote products derived from
16# this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30{
31  'variables': {
32    'relative_dir': 'chrome/nacl',
33    'gen_out_dir': '<(SHARED_INTERMEDIATE_DIR)/<(relative_dir)',
34    'dummy_input_file': 'nacl_extension.gyp',
35    # You should get browser_tester file from following URL to run end-to-end
36    # test.
37    # http://src.chromium.org/viewvc/chrome/trunk/src/ppapi/native_client/tools/
38    'browser_tester_dir': '../../third_party/browser_tester',
39    'nacl_mozc_files': [
40      '<(gen_out_dir)/nacl_mozc/_locales/en/messages.json',
41      '<(gen_out_dir)/nacl_mozc/_locales/ja/messages.json',
42      '<(gen_out_dir)/nacl_mozc/credits_en.html',
43      '<(gen_out_dir)/nacl_mozc/dictionary_tool.js',
44      '<(gen_out_dir)/nacl_mozc/key_translator.js',
45      '<(gen_out_dir)/nacl_mozc/manifest.json',
46      '<(gen_out_dir)/nacl_mozc/nacl_mozc.html',
47      '<(gen_out_dir)/nacl_mozc/nacl_mozc.js',
48      '<(gen_out_dir)/nacl_mozc/nacl_mozc_init.js',
49      '<(gen_out_dir)/nacl_mozc/nacl_mozc_version.js',
50      '<(gen_out_dir)/nacl_mozc/nacl_session_handler.nmf',
51      '<(gen_out_dir)/nacl_mozc/nacl_session_handler_x86_32.nexe',
52      '<(gen_out_dir)/nacl_mozc/nacl_session_handler_x86_64.nexe',
53      '<(gen_out_dir)/nacl_mozc/nacl_session_handler_arm.nexe',
54      '<(gen_out_dir)/nacl_mozc/product_icon_32bpp-128.png',
55      '<(gen_out_dir)/nacl_mozc/option_page.js',
56      '<(gen_out_dir)/nacl_mozc/options.css',
57      '<(gen_out_dir)/nacl_mozc/options.html',
58      '<(gen_out_dir)/nacl_mozc/options.js',
59      '<(gen_out_dir)/nacl_mozc/inputview/config/jp.js',
60      '<(gen_out_dir)/nacl_mozc/inputview/config/us.js',
61      '<(gen_out_dir)/nacl_mozc/inputview/images/backspace.png',
62      '<(gen_out_dir)/nacl_mozc/inputview/images/compact.png',
63      '<(gen_out_dir)/nacl_mozc/inputview/images/down.png',
64      '<(gen_out_dir)/nacl_mozc/inputview/images/enter.png',
65      '<(gen_out_dir)/nacl_mozc/inputview/images/error.png',
66      '<(gen_out_dir)/nacl_mozc/inputview/images/globe.png',
67      '<(gen_out_dir)/nacl_mozc/inputview/images/hide_candidates.png',
68      '<(gen_out_dir)/nacl_mozc/inputview/images/hidekeyboard.png',
69      '<(gen_out_dir)/nacl_mozc/inputview/images/hide.png',
70      '<(gen_out_dir)/nacl_mozc/inputview/images/keydots.png',
71      '<(gen_out_dir)/nacl_mozc/inputview/images/left.png',
72      '<(gen_out_dir)/nacl_mozc/inputview/images/modifier-hold.png',
73      '<(gen_out_dir)/nacl_mozc/inputview/images/modifier-off.png',
74      '<(gen_out_dir)/nacl_mozc/inputview/images/modifier-on.png',
75      '<(gen_out_dir)/nacl_mozc/inputview/images/regular_size.png',
76      '<(gen_out_dir)/nacl_mozc/inputview/images/right.png',
77      '<(gen_out_dir)/nacl_mozc/inputview/images/setting.png',
78      '<(gen_out_dir)/nacl_mozc/inputview/images/shift.png',
79      '<(gen_out_dir)/nacl_mozc/inputview/images/show_candidates.png',
80      '<(gen_out_dir)/nacl_mozc/inputview/images/tab.png',
81      '<(gen_out_dir)/nacl_mozc/inputview/images/up.png',
82      '<(gen_out_dir)/nacl_mozc/inputview.html',
83      '<(gen_out_dir)/nacl_mozc/inputview.js',
84      '<(gen_out_dir)/nacl_mozc/inputview_css.css',
85      '<(gen_out_dir)/nacl_mozc/inputview/inputview_layouts/101kbd.js',
86      '<(gen_out_dir)/nacl_mozc/inputview/inputview_layouts/compactkbd.js',
87    ],
88    'partial_supported_messages': [
89      '<(gen_out_dir)/nacl_mozc/_locales/am/messages.json',
90      '<(gen_out_dir)/nacl_mozc/_locales/ar/messages.json',
91      '<(gen_out_dir)/nacl_mozc/_locales/bg/messages.json',
92      '<(gen_out_dir)/nacl_mozc/_locales/bn/messages.json',
93      '<(gen_out_dir)/nacl_mozc/_locales/ca/messages.json',
94      '<(gen_out_dir)/nacl_mozc/_locales/cs/messages.json',
95      '<(gen_out_dir)/nacl_mozc/_locales/da/messages.json',
96      '<(gen_out_dir)/nacl_mozc/_locales/de/messages.json',
97      '<(gen_out_dir)/nacl_mozc/_locales/el/messages.json',
98      '<(gen_out_dir)/nacl_mozc/_locales/en_GB/messages.json',
99      '<(gen_out_dir)/nacl_mozc/_locales/es_419/messages.json',
100      '<(gen_out_dir)/nacl_mozc/_locales/es/messages.json',
101      '<(gen_out_dir)/nacl_mozc/_locales/et/messages.json',
102      '<(gen_out_dir)/nacl_mozc/_locales/fa/messages.json',
103      '<(gen_out_dir)/nacl_mozc/_locales/fil/messages.json',
104      '<(gen_out_dir)/nacl_mozc/_locales/fi/messages.json',
105      '<(gen_out_dir)/nacl_mozc/_locales/fr/messages.json',
106      '<(gen_out_dir)/nacl_mozc/_locales/gu/messages.json',
107      '<(gen_out_dir)/nacl_mozc/_locales/hi/messages.json',
108      '<(gen_out_dir)/nacl_mozc/_locales/hr/messages.json',
109      '<(gen_out_dir)/nacl_mozc/_locales/hu/messages.json',
110      '<(gen_out_dir)/nacl_mozc/_locales/id/messages.json',
111      '<(gen_out_dir)/nacl_mozc/_locales/it/messages.json',
112      '<(gen_out_dir)/nacl_mozc/_locales/iw/messages.json',
113      '<(gen_out_dir)/nacl_mozc/_locales/kn/messages.json',
114      '<(gen_out_dir)/nacl_mozc/_locales/ko/messages.json',
115      '<(gen_out_dir)/nacl_mozc/_locales/lt/messages.json',
116      '<(gen_out_dir)/nacl_mozc/_locales/lv/messages.json',
117      '<(gen_out_dir)/nacl_mozc/_locales/ml/messages.json',
118      '<(gen_out_dir)/nacl_mozc/_locales/mr/messages.json',
119      '<(gen_out_dir)/nacl_mozc/_locales/ms/messages.json',
120      '<(gen_out_dir)/nacl_mozc/_locales/nl/messages.json',
121      '<(gen_out_dir)/nacl_mozc/_locales/no/messages.json',
122      '<(gen_out_dir)/nacl_mozc/_locales/pl/messages.json',
123      '<(gen_out_dir)/nacl_mozc/_locales/pt_BR/messages.json',
124      '<(gen_out_dir)/nacl_mozc/_locales/pt_PT/messages.json',
125      '<(gen_out_dir)/nacl_mozc/_locales/ro/messages.json',
126      '<(gen_out_dir)/nacl_mozc/_locales/ru/messages.json',
127      '<(gen_out_dir)/nacl_mozc/_locales/sk/messages.json',
128      '<(gen_out_dir)/nacl_mozc/_locales/sl/messages.json',
129      '<(gen_out_dir)/nacl_mozc/_locales/sr/messages.json',
130      '<(gen_out_dir)/nacl_mozc/_locales/sv/messages.json',
131      '<(gen_out_dir)/nacl_mozc/_locales/sw/messages.json',
132      '<(gen_out_dir)/nacl_mozc/_locales/ta/messages.json',
133      '<(gen_out_dir)/nacl_mozc/_locales/te/messages.json',
134      '<(gen_out_dir)/nacl_mozc/_locales/th/messages.json',
135      '<(gen_out_dir)/nacl_mozc/_locales/tr/messages.json',
136      '<(gen_out_dir)/nacl_mozc/_locales/uk/messages.json',
137      '<(gen_out_dir)/nacl_mozc/_locales/vi/messages.json',
138      '<(gen_out_dir)/nacl_mozc/_locales/zh_CN/messages.json',
139      '<(gen_out_dir)/nacl_mozc/_locales/zh_TW/messages.json',
140    ],
141    'conditions': [
142      ['branding=="GoogleJapaneseInput"', {
143        'nacl_mozc_files': [
144          '<(gen_out_dir)/nacl_mozc/zipped_data_chromeos',
145          '<@(partial_supported_messages)',
146        ],
147      }],
148      ['branding=="Mozc"', {
149        'nacl_mozc_files': [
150          '<(gen_out_dir)/nacl_mozc/mozc.data',
151        ],
152      }],
153    ],
154  },
155  'targets': [
156    {
157      'target_name': 'translate_nacl_session_handler',
158      'sources': [
159        '<(PRODUCT_DIR)/nacl_session_handler',
160      ],
161      'includes': ['pnacl_translate.gypi'],
162    },
163    {
164      'target_name': 'nacl_session_handler',
165      'type': 'executable',
166      'sources': [
167        'nacl_session_handler.cc',
168      ],
169      'dependencies': [
170        'dictionary_downloader',
171        '../../base/base.gyp:base',
172        '../../composer/composer.gyp:key_parser',
173        '../../config/config.gyp:config_handler',
174        '../../data_manager/data_manager_base.gyp:data_manager',
175        '../../dictionary/dictionary_base.gyp:user_dictionary',
176        '../../dictionary/dictionary_base.gyp:user_pos',
177        '../../engine/engine.gyp:engine',
178        '../../net/net.gyp:http_client',
179        '../../net/net.gyp:json_util',
180        '../../protocol/protocol.gyp:commands_proto',
181        '../../protocol/protocol.gyp:config_proto',
182        '../../session/session.gyp:session',
183        '../../session/session.gyp:session_handler',
184        '../../session/session.gyp:session_usage_observer',
185        '../../usage_stats/usage_stats.gyp:usage_stats_uploader',
186        '../../usage_stats/usage_stats_base.gyp:usage_stats',
187      ],
188    },
189    {
190      'target_name': 'dictionary_downloader',
191      'type': 'static_library',
192      'sources': [
193        'dictionary_downloader.cc',
194      ],
195      'dependencies': [
196        'url_loader_util',
197        '../../base/base.gyp:base',
198        '../../net/net.gyp:http_client',
199      ],
200    },
201    {
202      'target_name': 'url_loader_util',
203      'type': 'static_library',
204      'sources': [
205        'url_loader_util.cc',
206      ],
207      'dependencies': [
208        '../../base/base.gyp:base',
209      ],
210    },
211    {
212      'target_name': 'gather_nacl_net_test_files',
213      'type': 'none',
214      'copies': [{
215        'destination': '<(gen_out_dir)/nacl_net_test',
216        'files': [
217          '<(PRODUCT_DIR)/nacl_net_test_module_x86_64.nexe',
218          'browser_test/nacl_net_test/nacl_net_test_module.html',
219          'browser_test/nacl_net_test/nacl_net_test_module.nmf',
220          'browser_test/nacl_net_test/manifest.json',
221        ],
222      }],
223    },
224    {
225      'target_name': 'run_nacl_net_test',
226      'type': 'none',
227      'actions': [
228        {
229          'action_name': 'run_nacl_net_test',
230          'inputs': [
231            'nacl_net_test_server.py',
232            '<(gen_out_dir)/nacl_net_test/nacl_net_test_module_x86_64.nexe',
233            '<(gen_out_dir)/nacl_net_test/nacl_net_test_module.html',
234            '<(gen_out_dir)/nacl_net_test/nacl_net_test_module.nmf',
235            '<(gen_out_dir)/nacl_net_test/manifest.json',
236          ],
237          'outputs': ['dummy_run_nacl_net_test'],
238          'action': [
239            'xvfb-run',
240            '--auto-servernum',
241            '/usr/local/bin/python3.8',
242            'nacl_net_test_server.py',
243            '--browser_path=/usr/bin/google-chrome',
244            '--load_extension=<(gen_out_dir)/nacl_net_test',
245            '--timeout=100',
246          ],
247        },
248      ],
249      'dependencies': [
250        'translate_nacl_net_test_module',
251      ],
252    },
253    {
254      'target_name': 'translate_nacl_net_test_module',
255      'sources': [
256        '<(PRODUCT_DIR)/nacl_net_test_module',
257      ],
258      'includes': ['pnacl_translate.gypi'],
259    },
260    {
261      'target_name': 'nacl_net_test_module',
262      'type': 'executable',
263      'sources': [
264        '../../base/file_util_test.cc',
265        'nacl_net_test_module.cc',
266      ],
267      'dependencies': [
268        'dictionary_downloader',
269        '../../base/base.gyp:base',
270        '../../net/net.gyp:http_client',
271        '../../net/net.gyp:json_util',
272        '../../testing/testing.gyp:nacl_mock_module',
273      ],
274    },
275    {
276      'target_name': 'nacl_mozc_crx',
277      'type': 'none',
278      'copies': [
279        {
280          'destination': '<(PRODUCT_DIR)',
281          'files': [
282            '<(gen_out_dir)/nacl_mozc.crx',
283            '<(gen_out_dir)/nacl_mozc.pem',
284          ],
285        },
286      ],
287    },
288    {
289      'target_name': 'pack_nacl_mozc_crx',
290      'type': 'none',
291      'actions': [
292        {
293          'action_name': 'pack_nacl_mozc_crx',
294          'inputs': [
295            '<@(nacl_mozc_files)',
296          ],
297          'outputs': [
298            '<(gen_out_dir)/nacl_mozc.crx',
299            '<(gen_out_dir)/nacl_mozc.pem',
300          ],
301          'action': [
302            'xvfb-run',
303            '--auto-servernum',
304            'google-chrome',
305            '--pack-extension=<(gen_out_dir)/nacl_mozc',
306            # With --pack-extension-key=nacl_mozc.pem option, we should use the
307            # same private key to sign the extension. Otherwise, a new packed
308            # extension looks a different extension.
309            # Of course, the private key must be placed in a secure manner.
310            '--no-message-box',
311          ],
312        },
313      ],
314    },
315    {
316      'target_name': 'nacl_mozc_versioning',
317      'type': 'none',
318      'actions': [
319        {
320          'action_name': 'nacl_mozc_versioning',
321          'inputs': [
322            '../../mozc_version.txt',
323            '../../build_tools/versioning_files.py',
324            '<(PRODUCT_DIR)/nacl_mozc.zip',
325            '<(PRODUCT_DIR)/nacl-mozc.tgz',
326          ],
327          'outputs': [
328            '<(PRODUCT_DIR)/nacl_mozc_versioning_dummy',
329          ],
330          'action': [
331            '/usr/local/bin/python3.8',
332            '../../build_tools/versioning_files.py',
333            '--version_file', '../../mozc_version.txt',
334            '--configuration', '<(CONFIGURATION_NAME)',
335            '<(PRODUCT_DIR)/nacl_mozc.zip',
336            '<(PRODUCT_DIR)/nacl-mozc.tgz',
337          ],
338          'dependencies': [
339            'nacl_mozc',
340          ],
341        },
342      ],
343    },
344    {
345      'target_name': 'nacl_mozc',
346      'type': 'none',
347      'copies': [
348        {
349          'destination': '<(PRODUCT_DIR)',
350          'files': [
351            '<(gen_out_dir)/nacl_mozc.zip',
352            '<(gen_out_dir)/nacl-mozc.tgz',
353          ],
354        },
355      ],
356    },
357    {
358      'target_name': 'archive_nacl_mozc_files',
359      'type': 'none',
360      'actions': [
361        {
362          'action_name': 'archive_nacl_mozc_files',
363          'inputs': [
364            '../../mozc_version.txt',
365            'archive_files.py',
366            '<@(nacl_mozc_files)',
367          ],
368          'outputs': [
369            '<(gen_out_dir)/nacl_mozc.zip',
370            '<(gen_out_dir)/nacl-mozc.tgz',
371          ],
372          'action': [
373            '/usr/local/bin/python3.8',
374            'archive_files.py',
375            '--zip_output=<(gen_out_dir)/nacl_mozc.zip',
376            '--tgz_output=<(gen_out_dir)/nacl-mozc.tgz',
377            '--version_file', '../../mozc_version.txt',
378            '--top_dir_base', 'nacl-mozc',
379            '--base_path=<(gen_out_dir)/nacl_mozc/',
380            '<@(nacl_mozc_files)',
381          ],
382        },
383      ],
384    },
385    {
386      'target_name': 'gather_nacl_mozc_files',
387      'type': 'none',
388      'copies': [
389        {
390          'destination': '<(gen_out_dir)/nacl_mozc',
391          'files': [
392            '../../data/images/product_icon_32bpp-128.png',
393            '../../data/installer/credits_en.html',
394            '<(gen_out_dir)/manifest.json',
395            '<(gen_out_dir)/nacl_mozc_version.js',
396            '<(PRODUCT_DIR)/nacl_session_handler_x86_32.nexe',
397            '<(PRODUCT_DIR)/nacl_session_handler_x86_64.nexe',
398            '<(PRODUCT_DIR)/nacl_session_handler_arm.nexe',
399            'dictionary_tool.js',
400            'key_translator.js',
401            'nacl_mozc.html',
402            'nacl_mozc.js',
403            'nacl_mozc_init.js',
404            'nacl_session_handler.nmf',
405            'option_page.js',
406            'options.css',
407            'options.html',
408            'options.js',
409            'inputview/inputview.html',
410            'inputview/inputview.js',
411            'inputview/inputview_css.css',
412          ],
413          'conditions': [
414            ['branding=="GoogleJapaneseInput"', {
415              'files': [
416                '<(SHARED_INTERMEDIATE_DIR)/data_manager/chromeos/zipped_data_chromeos',
417              ],
418            }],
419            ['branding=="Mozc"', {
420              'files': [
421                '<(SHARED_INTERMEDIATE_DIR)/data_manager/oss/mozc.data',
422              ],
423            }],
424          ],
425        },
426        {
427          'destination': '<(gen_out_dir)/nacl_mozc/inputview/config',
428          'files': [
429            'inputview/config/jp.js',
430            'inputview/config/us.js',
431          ],
432        },
433        {
434          'destination': '<(gen_out_dir)/nacl_mozc/inputview/images',
435          'files': [
436            'inputview/images/backspace.png',
437            'inputview/images/compact.png',
438            'inputview/images/down.png',
439            'inputview/images/enter.png',
440            'inputview/images/error.png',
441            'inputview/images/globe.png',
442            'inputview/images/hide_candidates.png',
443            'inputview/images/hidekeyboard.png',
444            'inputview/images/hide.png',
445            'inputview/images/keydots.png',
446            'inputview/images/left.png',
447            'inputview/images/modifier-hold.png',
448            'inputview/images/modifier-off.png',
449            'inputview/images/modifier-on.png',
450            'inputview/images/regular_size.png',
451            'inputview/images/right.png',
452            'inputview/images/setting.png',
453            'inputview/images/shift.png',
454            'inputview/images/show_candidates.png',
455            'inputview/images/tab.png',
456            'inputview/images/up.png',
457          ],
458        },
459        {
460          'destination': '<(gen_out_dir)/nacl_mozc/inputview/inputview_layouts',
461          'files': [
462            'inputview/inputview_layouts/101kbd.js',
463            'inputview/inputview_layouts/compactkbd.js',
464          ],
465        },
466      ],
467    },
468    {
469      'target_name': 'gen_manifest_and_messages',
470      'type': 'none',
471      'toolsets': ['host'],
472      'actions': [
473        {
474          'action_name': 'gen_manifest',
475          'inputs': [
476            '../../mozc_version.txt',
477            '../../build_tools/replace_version.py',
478            'manifest/manifest_template.json',
479          ],
480          'outputs': [
481            '<(gen_out_dir)/manifest.json',
482          ],
483          'action': [
484            '/usr/local/bin/python3.8', '../../build_tools/replace_version.py',
485            '--version_file', '../../mozc_version.txt',
486            '--input', 'manifest/manifest_template.json',
487            '--output', '<(gen_out_dir)/manifest.json',
488            '--branding', '<(branding)',
489          ],
490        },
491        {
492          'action_name': 'gen_nacl_mozc_version',
493          'inputs': [
494            '../../mozc_version.txt',
495            '../../build_tools/replace_version.py',
496            'nacl_mozc_version_template.js',
497          ],
498          'outputs': [
499            '<(gen_out_dir)/nacl_mozc_version.js',
500          ],
501          'action': [
502            '/usr/local/bin/python3.8', '../../build_tools/replace_version.py',
503            '--version_file', '../../mozc_version.txt',
504            '--input', 'nacl_mozc_version_template.js',
505            '--output', '<(gen_out_dir)/nacl_mozc_version.js',
506            '--branding', '<(branding)',
507          ],
508        },
509        {
510          'action_name': 'gen_en_messages',
511          'inputs': [
512            '../../mozc_version.txt',
513            '../../build_tools/replace_version.py',
514            '_locales/en/messages_template.json',
515          ],
516          'outputs': [
517            '<(gen_out_dir)/nacl_mozc/_locales/en/messages.json',
518          ],
519          'action': [
520            '/usr/local/bin/python3.8', '../../build_tools/replace_version.py',
521            '--version_file', '../../mozc_version.txt',
522            '--input', '_locales/en/messages_template.json',
523            '--output',
524            '<(gen_out_dir)/nacl_mozc/_locales/en/messages.json',
525            '--branding', '<(branding)',
526          ],
527        },
528        {
529          'action_name': 'gen_ja_messages',
530          'inputs': [
531            '../../mozc_version.txt',
532            '../../build_tools/replace_version.py',
533            '_locales/ja/messages_template.json',
534          ],
535          'outputs': [
536            '<(gen_out_dir)/nacl_mozc/_locales/ja/messages.json',
537          ],
538          'action': [
539            '/usr/local/bin/python3.8', '../../build_tools/replace_version.py',
540            '--version_file', '../../mozc_version.txt',
541            '--input', '_locales/ja/messages_template.json',
542            '--output',
543            '<(gen_out_dir)/nacl_mozc/_locales/ja/messages.json',
544            '--branding', '<(branding)',
545          ],
546        },
547      ],
548      'conditions': [
549        ['branding=="GoogleJapaneseInput"', {
550          'actions': [
551            {
552              'action_name': 'gen_partial_supported_messages',
553              'inputs': [
554                '../../mozc_version.txt',
555                'gen_partial_supported_messages.py',
556              ],
557              'outputs': [
558                '<@(partial_supported_messages)',
559              ],
560              'action': [
561                '/usr/local/bin/python3.8', 'gen_partial_supported_messages.py',
562                '--version_file', '../../mozc_version.txt',
563                '--outdir', '<(gen_out_dir)/nacl_mozc/_locales/',
564              ],
565            },
566          ],
567        }],
568      ],
569    },
570    {
571      'target_name': 'run_nacl_test',
572      'type': 'none',
573      'hard_dependency': 1,
574      'dependencies': [
575        'build_nacl_test',
576      ],
577      'export_dependent_settings': [
578        'build_nacl_test',
579      ],
580      'actions': [
581        {
582          'action_name': 'run_nacl_test',
583          'inputs': ['<(dummy_input_file)'],
584          'outputs': ['dummy_run_nacl_test'],
585          'action': [
586            '/usr/local/bin/python3.8', 'run_nacl_test.py',
587            '--nacl_sdk_root=<(nacl_sdk_root)',
588            '--test_bin_dir=<(PRODUCT_DIR)',
589          ],
590        },
591      ],
592    },
593    {
594      'target_name': 'build_nacl_test',
595      'sources': [
596        '<(PRODUCT_DIR)/base_test',
597        '<(PRODUCT_DIR)/rewriter_test',
598        '<(PRODUCT_DIR)/session_handler_test',
599      ],
600      'includes': ['pnacl_translate.gypi'],
601    },
602    # This test doesn't works well on general environment since it depends on
603    # external source code.
604    {
605      'target_name': 'run_nacl_end_to_end_test_target',
606      'type': 'none',
607      'actions': [
608        {
609          'action_name': 'run_nacl_end_to_end_test',
610          'inputs': [
611            '<(gen_out_dir)/nacl_mozc/key_translator.js',
612            '<(gen_out_dir)/nacl_mozc/manifest.json',
613            '<(gen_out_dir)/nacl_mozc/nacl_mozc.html',
614            '<(gen_out_dir)/nacl_mozc/nacl_mozc.js',
615            '<(gen_out_dir)/nacl_mozc/nacl_mozc_version.js',
616            '<(gen_out_dir)/nacl_mozc/nacl_session_handler.nmf',
617            '<(gen_out_dir)/nacl_mozc/nacl_session_handler_x86_32.nexe',
618            '<(gen_out_dir)/nacl_mozc/nacl_session_handler_x86_64.nexe',
619            'browser_test/nacl_mozc_test.html',
620            'browser_test/nacl_mozc_test_util.js',
621          ],
622          'outputs': ['dummy_run_nacl_end_to_end_test'],
623          'action': [
624            'xvfb-run',
625            '--auto-servernum',
626            '/usr/local/bin/python3.8',
627            '<(browser_tester_dir)/browser_tester.py',
628            '--browser_path=/usr/bin/google-chrome',
629            '--file=<(browser_tester_dir)/nacltest.js',
630            '--serving_dir=<(gen_out_dir)/nacl_mozc',
631            '--serving_dir=browser_test',
632            '--url=nacl_mozc_test.html',
633            '--timeout=15',
634          ],
635        },
636      ],
637      'dependencies': [
638        'gather_nacl_mozc_files',
639      ],
640    },
641  ],
642}
643