Don't show supervised user as "already on this device" while they're being imported.
[chromium-blink-merge.git] / remoting / webapp / build_template.gni
blobc47eae7314878a99f82b37a4c2d7387bd2c45f4a
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 # Keep in sync with 'remoting_webapp' target in remoting/remoting_client.gypi.
7 import("//build/config/chrome_build.gni")
8 import("//remoting/remoting_locales.gni")
9 import("//remoting/remoting_options.gni")
10 import("//remoting/remoting_version.gni")
11 import("//remoting/webapp/files.gni")
13 # The base remoting directory that is used as the root directory for file
14 # references. Many of the scripts rely on the files being specified relative
15 # to this directory.
16 remoting_dir = "//remoting"
18 buildtype = "Dev"
19 if (!is_debug) {
20   if (is_official_build) {
21     buildtype = "Official"
22   } else {
23     buildtype = "Release"
24   }
27 template("build_locales_listfile") {
28   action(target_name) {
29     locales_listfile_output = invoker.locales_listfile_output
31     script = "../tools/build/remoting_localize.py"
33     inputs = []
34     outputs = [
35       locales_listfile_output,
36     ]
38     args = [
39       "--locale_output",
40       rebase_path(webapp_locale_dir, root_build_dir) +
41           "/@{json_suffix}/messages.json",
42       "--locales_listfile",
43       rebase_path(locales_listfile_output, root_build_dir),
44     ]
45     args += remoting_locales
46   }
49 template("build_webapp_html") {
50   target_jscompile = "${target_name}_jscompile"
51   target_jscompile_stamp = "$target_gen_dir/${target_jscompile}.stamp"
52   action(target_jscompile) {
53     js_files = remoting_webapp_js_proto_files + invoker.js_files
55     script = "../../third_party/closure_compiler/compile.py"
56     inputs = js_files
57     outputs = [
58       target_jscompile_stamp,
59     ]
61     args = [
62              "--strict",
63              "--no-single-file",
64              "--externs",
65              "../../third_party/closure_compiler/externs/chrome_extensions.js",
66              "--success-stamp",
67              rebase_path(target_jscompile_stamp, root_build_dir),
68            ] + rebase_path(js_files, root_build_dir)
69   }
71   action(target_name) {
72     html_template_file = invoker.html_template_file
73     html_template_include_files = invoker.html_template_include_files
74     js_files = invoker.js_files
75     html_output = invoker.html_output
77     script = "build-html.py"
79     inputs = [ html_template_file ] + html_template_include_files + js_files
81     outputs = [
82       html_output,
83     ]
85     if (run_jscompile) {
86       deps = [
87         ":$target_jscompile",
88       ]
89     }
91     args = [
92       rebase_path(html_output, root_build_dir),
93       rebase_path(html_template_file, root_build_dir),
94     ]
95     args += [
96       "--template-dir",
97       rebase_path(remoting_dir, root_build_dir),
98     ]
99     args += [ "--templates" ] + html_template_include_files
100     args += [ "--js" ] + rebase_path(js_files, remoting_dir)
101   }
104 template("desktop_remoting_webapp") {
105   locales_listfile = target_name + "_locales"
106   locales_listfile_output = "$target_gen_dir/${target_name}_locales.txt"
108   build_locales_listfile(locales_listfile) {
109     # Template uses locales_listfile_output from outer scope.
110   }
112   background_html = target_name + "_background_html"
113   background_html_output = "$target_gen_dir/html/$target_name/background.html"
115   build_webapp_html(background_html) {
116     html_template_file = remoting_webapp_template_background
117     html_template_include_files = []
118     js_files = remoting_webapp_background_html_all_js_files
119     html_output = background_html_output
120   }
122   message_window_html = target_name + "_message_window_html"
123   message_window_html_output =
124       "$target_gen_dir/html/$target_name/message_window.html"
126   build_webapp_html(message_window_html) {
127     html_template_file = remoting_webapp_template_message_window
128     html_template_include_files = []
129     js_files = remoting_webapp_message_window_html_all_js_files
130     html_output = message_window_html_output
131   }
133   wcs_sandbox_html = target_name + "_wcs_sandbox_html"
134   wcs_sandbox_html_output = "$target_gen_dir/html/$target_name/wcs_sandbox.html"
136   build_webapp_html(wcs_sandbox_html) {
137     html_template_file = remoting_webapp_template_wcs_sandbox
138     html_template_include_files = []
139     js_files = remoting_webapp_wcs_sandbox_html_all_js_files
140     html_output = wcs_sandbox_html_output
141   }
143   main_html = target_name + "_main_html"
144   main_html_output = "$target_gen_dir/html/$target_name/main.html"
146   build_webapp_html(main_html) {
147     html_template_file = remoting_webapp_template_main
148     html_template_include_files = remoting_webapp_template_files
149     js_files = remoting_webapp_crd_main_html_all_js_files
150     html_output = main_html_output
151   }
153   action(target_name) {
154     script = "build-webapp.py"
156     webapp_type = invoker.webapp_type
157     output_dir = invoker.output_dir
158     zip_path = invoker.zip_path
159     extra_files = invoker.extra_files
161     inputs =
162         [ rebase_path("crd/manifest.json.jinja2", root_build_dir) ] +
163         remoting_version_files +
164         rebase_path(remoting_webapp_crd_files, root_build_dir) + extra_files
166     outputs = [
167       "$target_gen_dir/$zip_path",
168     ]
170     deps = [
171       ":$locales_listfile",
172       ":$background_html",
173       ":$message_window_html",
174       ":$wcs_sandbox_html",
175       ":$main_html",
176       "//remoting/resources",
177     ]
179     dr_generated_html_files = [
180       background_html_output,
181       message_window_html_output,
182       wcs_sandbox_html_output,
183       main_html_output,
184     ]
186     # Create a file that contains a list of all the resource files needed
187     # to build the webapp. This is needed to avoid problems on platforms that
188     # limit the size of a command line.
189     file_list = "$target_gen_dir/${target_name}_files.txt"
190     files = []
191     files += rebase_path(dr_generated_html_files, root_build_dir)
192     files += rebase_path(remoting_webapp_crd_files, root_build_dir)
193     files += rebase_path(extra_files, root_build_dir)
194     write_file(file_list, files)
196     args = [
197       buildtype,
198       version_full,
199       output_dir,
200       zip_path,
201       rebase_path("crd/manifest.json.jinja2", root_build_dir),
202       webapp_type,
203     ]
204     args += [
205       "--files_listfile",
206       rebase_path(file_list, root_build_dir),
207     ]
208     args += [
209       "--locales_listfile",
210       rebase_path(locales_listfile_output, root_build_dir),
211     ]
212     args += [
213       "--use_gcd",
214       "$remoting_use_gcd",
215     ]
216   }
219 template("app_remoting_webapp") {
220   locales_listfile = target_name + "_locales"
221   locales_listfile_output = "$target_gen_dir/${target_name}_locales.txt"
223   build_locales_listfile(locales_listfile) {
224     # Template uses locales_listfile_output from outer scope.
225   }
227   feedback_consent_html = target_name + "_feedback_consent_html"
228   feedback_consent_html_output =
229       "$target_gen_dir/html/$target_name/feedback_consent.html"
231   build_webapp_html(feedback_consent_html) {
232     html_template_file = ar_feedback_consent_template
233     html_template_include_files = []
234     js_files = ar_feedback_consent_html_all_js_files
235     html_output = feedback_consent_html_output
236   }
238   loading_window_html = target_name + "_loading_window_html"
239   loading_window_html_output =
240       "$target_gen_dir/html/$target_name/loading_window.html"
242   build_webapp_html(loading_window_html) {
243     html_template_file = ar_loading_window_template
244     html_template_include_files = []
246     # The loading window is just a reskin of the message window -- all JS code
247     # is shared.
248     js_files = remoting_webapp_message_window_html_all_js_files
249     html_output = loading_window_html_output
250   }
252   message_window_html = target_name + "_message_window_html"
253   message_window_html_output =
254       "$target_gen_dir/html/$target_name/message_window.html"
256   build_webapp_html(message_window_html) {
257     html_template_file = remoting_webapp_template_message_window
258     html_template_include_files = []
259     js_files = remoting_webapp_message_window_html_all_js_files
260     html_output = message_window_html_output
261   }
263   wcs_sandbox_html = target_name + "_wcs_sandbox_html"
264   wcs_sandbox_html_output = "$target_gen_dir/html/$target_name/wcs_sandbox.html"
266   build_webapp_html(wcs_sandbox_html) {
267     html_template_file = remoting_webapp_template_wcs_sandbox
268     html_template_include_files = []
269     js_files = remoting_webapp_wcs_sandbox_html_all_js_files
270     html_output = wcs_sandbox_html_output
271   }
273   main_html = target_name + "_main_html"
274   main_html_output = "$target_gen_dir/html/$target_name/main.html"
276   build_webapp_html(main_html) {
277     html_template_file = ar_main_template
278     html_template_include_files = ar_main_template_files
279     js_files = ar_main_js_files
280     html_output = main_html_output
281   }
283   action(target_name) {
284     script = "build-webapp.py"
286     app_key = invoker.app_key
287     app_id = invoker.app_id
288     app_client_id = invoker.app_client_id
289     app_name = invoker.app_name
290     app_description = invoker.app_description
291     app_capabilities = invoker.app_capabilities
292     manifest_key = invoker.manifest_key
294     # These asserts are so that these variables get marked as being used so
295     # that GN doesn't complain about them.
296     assert(app_key != "" || app_key == "")
297     assert(app_id != "" || app_id == "")
299     # TODO(garykac) For internal targets, we need to extract the vendor and app
300     # name from the target.
301     ar_app_name = "sample_app"  #target_name
302     ar_app_path = "app_remoting/apps/$ar_app_name"
303     ar_app_manifest = "$ar_app_path/manifest.json.jinja2"
304     ar_app_manifest_common = "app_remoting/manifest_common.json.jinja2"
306     output_dir = "remoting/app_remoting/$ar_service_environment/$target_name"
307     zip_path = "remoting/app_remoting/$ar_service_environment/$target_name.zip"
309     ar_app_specific_files = [
310       "$ar_app_path/icon16.png",
311       "$ar_app_path/icon48.png",
312       "$ar_app_path/icon128.png",
313       "$ar_app_path/loading_splash.png",
314     ]
316     ar_generated_html_files = [
317       feedback_consent_html_output,
318       loading_window_html_output,
319       message_window_html_output,
320       wcs_sandbox_html_output,
321       main_html_output,
322     ]
324     ar_webapp_files =
325         ar_app_specific_files + ar_shared_resource_files + ar_all_js_files
327     inputs = [
328                rebase_path(ar_app_manifest, root_build_dir),
329                rebase_path(ar_app_manifest_common, root_build_dir),
330              ] + remoting_version_files + ar_webapp_files
332     outputs = [
333       "$target_gen_dir/$zip_path",
334     ]
336     deps = [
337       ":$locales_listfile",
338       ":$feedback_consent_html",
339       ":$loading_window_html",
340       ":$message_window_html",
341       ":$wcs_sandbox_html",
342       ":$main_html",
343       "//remoting/resources",
344     ]
346     # Create a file that contains a list of all the resource files needed
347     # to build the webapp. This is needed to avoid problems on platforms that
348     # limit the size of a command line.
349     file_list = "$target_gen_dir/${target_name}_files.txt"
350     files = []
351     files += rebase_path(ar_generated_html_files, root_build_dir)
352     files += rebase_path(ar_webapp_files, root_build_dir)
353     write_file(file_list, files)
355     args = [
356       buildtype,
357       version_full,
358       output_dir,
359       zip_path,
360       rebase_path(ar_app_manifest, root_build_dir),
361       "app_remoting",  # Web app type
362     ]
363     args += [
364       "--files_listfile",
365       rebase_path(file_list, root_build_dir),
366     ]
367     args += [
368       "--locales_listfile",
369       rebase_path(locales_listfile_output, root_build_dir),
370     ]
371     args += [
372       "--jinja_paths",
373       rebase_path("app_remoting", root_build_dir),
374     ]
376     if (is_debug) {
377       # Normally, the app-id for the orchestrator is automatically extracted
378       # from the webapp's extension id, but that approach doesn't work for
379       # dev webapp builds (since they all share the same dev extension id).
380       # The --appid arg will create a webapp that registers the given app-id
381       # rather than using the extension id.
382       # This is only done for Dev apps because the app-id for Release apps
383       # *must* match the extension id.
384       args += [
385         "--appid",
386         app_id,
387       ]
388     }
390     args += [
391       "--app_name",
392       app_name,
393     ]
394     args += [
395       "--app_description",
396       app_description,
397     ]
398     args += [ "--app_capabilities" ] + app_capabilities
399     args += [
400       "--service_environment",
401       ar_service_environment,
402     ]
403     args += [
404       "--manifest_key",
405       manifest_key,
406     ]
407     args += [
408       "--app_client_id",
409       app_client_id,
410     ]
411   }