summaryrefslogtreecommitdiff
path: root/chromium/chromeos/components/camera_app_ui
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/chromeos/components/camera_app_ui
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chromeos/components/camera_app_ui')
-rw-r--r--chromium/chromeos/components/camera_app_ui/BUILD.gn51
-rw-r--r--chromium/chromeos/components/camera_app_ui/camera_app_helper.mojom64
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/BUILD.gn248
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/BUILD.gn158
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/browser_proxy/BUILD.gn28
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/device/BUILD.gn44
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/externs/BUILD.gn17
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/lib/BUILD.gn13
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/models/BUILD.gn44
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/mojo/BUILD.gn39
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/views/BUILD.gn67
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/js/views/camera/BUILD.gn77
-rw-r--r--chromium/chromeos/components/camera_app_ui/resources/src/strings/BUILD.gn71
13 files changed, 921 insertions, 0 deletions
diff --git a/chromium/chromeos/components/camera_app_ui/BUILD.gn b/chromium/chromeos/components/camera_app_ui/BUILD.gn
new file mode 100644
index 00000000000..44365f15485
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/BUILD.gn
@@ -0,0 +1,51 @@
+# Copyright 2020 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//mojo/public/tools/bindings/mojom.gni")
+import("//third_party/closure_compiler/compile_js.gni")
+
+assert(is_chromeos, "Camera App is Chrome OS only")
+
+static_library("camera_app_ui") {
+ sources = [
+ "camera_app_helper_impl.cc",
+ "camera_app_helper_impl.h",
+ "camera_app_ui.cc",
+ "camera_app_ui.h",
+ "url_constants.cc",
+ "url_constants.h",
+ ]
+
+ deps = [
+ ":mojo_bindings",
+ ":mojo_bindings_js",
+ "//ash/public/cpp",
+ "//chromeos/components/web_applications",
+ "//chromeos/constants",
+ "//chromeos/resources:camera_app_resources",
+ "//chromeos/strings",
+ "//chromeos/system",
+ "//content/public/browser",
+ "//content/public/common",
+ "//media/capture:capture_lib",
+ "//mojo/public/cpp/bindings",
+ "//mojo/public/cpp/platform",
+ "//mojo/public/js:resources_grit",
+ "//ui/resources:webui_resources_grd_grit",
+ "//ui/webui",
+ ]
+}
+
+group("closure_compile") {
+ testonly = true
+ deps = [
+ "resources:closure_compile",
+ ]
+}
+
+mojom("mojo_bindings") {
+ sources = [ "camera_app_helper.mojom" ]
+
+ deps = [ "//components/arc/mojom:camera_intent" ]
+}
diff --git a/chromium/chromeos/components/camera_app_ui/camera_app_helper.mojom b/chromium/chromeos/components/camera_app_ui/camera_app_helper.mojom
new file mode 100644
index 00000000000..73605b72f0f
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/camera_app_helper.mojom
@@ -0,0 +1,64 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module chromeos_camera.mojom;
+
+import "components/arc/mojom/camera_intent.mojom";
+
+// Interface for monitoring tablet mode state of device. The state is detected
+// from Chrome browser process and is notified to Chrome Camera App in renderer
+// process.
+interface TabletModeMonitor {
+ // Updates with the latest changed tablet mode state.
+ Update(bool is_tablet_mode);
+};
+
+// Screen backlight state.
+// Reference from ash/public/cpp/screen_backlight_type.h
+enum ScreenState {
+ ON,
+ OFF,
+ OFF_AUTO,
+};
+
+// Interface for monitoring screen state of device. The state is detected from
+// Chrome browser process and is notified to Chrome Camera App in renderer
+// process.
+interface ScreenStateMonitor {
+ // Updates with the latest changed screen state.
+ Update(ScreenState state);
+};
+
+// Interface for communication between Chrome Camera App (Remote) and Chrome
+// (Receiver).
+interface CameraAppHelper {
+ // Sends the captured result |data| for corresponding intent recognized by
+ // |intent_id| back to ARC. The handler should handle |data| and may notify
+ // the intent caller according to the intention of the |action|. |is_success|
+ // will be set to true if the ARC received the result and set to false for
+ // invalid input.
+ HandleCameraResult(uint32 intent_id,
+ arc.mojom.CameraIntentAction action,
+ array<uint8> data) => (bool is_success);
+
+ // Checks if device is under tablet mode currently.
+ IsTabletMode() => (bool is_tablet_mode);
+
+ // Triggers the begin of event tracing for given |event|.
+ StartPerfEventTrace(string event);
+
+ // Triggers the end of event tracing for given |event|.
+ StopPerfEventTrace(string event);
+
+ // Registers a TabletModeMonitor instance and returns the tablet mode
+ // initial state. Calling the Update() whenever the tablet mode state
+ // changes.
+ SetTabletMonitor(pending_remote<TabletModeMonitor> monitor)
+ => (bool is_tablet_mode);
+
+ // Registers a ScreenStateMonitor instance and returns the initial screen
+ // state. Calling the Update() whenever the screen state changes.
+ SetScreenStateMonitor(pending_remote<ScreenStateMonitor> monitor)
+ => (ScreenState initial_state);
+};
diff --git a/chromium/chromeos/components/camera_app_ui/resources/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/BUILD.gn
new file mode 100644
index 00000000000..8dba78c89f1
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/BUILD.gn
@@ -0,0 +1,248 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+chrome_camera_app_dir = "$root_out_dir/resources/chromeos/camera"
+
+group("closure_compile") {
+ deps = [ "src/js:closure_compile" ]
+}
+
+group("chrome_camera_app") {
+ # According to crbug.com/855747, we should list all the files we want to copy
+ # rather than list only the folders to avoid potential building issue and ease
+ # the difficulty to diagnose.
+ deps = [ "src/strings:camera_strings" ]
+
+ data_deps = [
+ ":chrome_camera_app_base",
+ ":chrome_camera_app_css",
+ ":chrome_camera_app_images",
+ ":chrome_camera_app_js",
+ ":chrome_camera_app_js_browser_proxy",
+ ":chrome_camera_app_js_device",
+ ":chrome_camera_app_js_lib",
+ ":chrome_camera_app_js_models",
+ ":chrome_camera_app_js_mojo",
+ ":chrome_camera_app_js_views",
+ ":chrome_camera_app_js_views_camera",
+ ":chrome_camera_app_mojo_generated",
+ ":chrome_camera_app_sounds",
+ ":chrome_camera_app_views",
+ ]
+}
+
+copy("chrome_camera_app_base") {
+ sources = [ "src/manifest.json" ]
+
+ outputs = [ "$chrome_camera_app_dir/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_css") {
+ sources = [ "src/css/main.css" ]
+
+ outputs = [ "$chrome_camera_app_dir/css/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_images") {
+ sources = [
+ "src/images/camera_app_icons_128.png",
+ "src/images/camera_app_icons_48.png",
+ "src/images/camera_button_fps_30.svg",
+ "src/images/camera_button_fps_60.svg",
+ "src/images/camera_button_grid_off.svg",
+ "src/images/camera_button_grid_on.svg",
+ "src/images/camera_button_mic_off.svg",
+ "src/images/camera_button_mic_on.svg",
+ "src/images/camera_button_mirror_off.svg",
+ "src/images/camera_button_mirror_on.svg",
+ "src/images/camera_button_settings.svg",
+ "src/images/camera_button_switch_device.svg",
+ "src/images/camera_button_switch_photo.svg",
+ "src/images/camera_button_switch_video.svg",
+ "src/images/camera_button_timer_off.svg",
+ "src/images/camera_button_timer_on_10s.svg",
+ "src/images/camera_button_timer_on_3s.svg",
+ "src/images/camera_focus_aim.svg",
+ "src/images/camera_intent_play_video.svg",
+ "src/images/camera_intent_result_cancel.svg",
+ "src/images/camera_intent_result_confirm.svg",
+ "src/images/camera_mode_photo.svg",
+ "src/images/camera_mode_portrait.svg",
+ "src/images/camera_mode_square.svg",
+ "src/images/camera_mode_video.svg",
+ "src/images/camera_shutter_photo_start.svg",
+ "src/images/camera_shutter_photo_start_active.svg",
+ "src/images/camera_shutter_photo_start_hover.svg",
+ "src/images/camera_shutter_photo_stop.svg",
+ "src/images/camera_shutter_photo_stop_hover.svg",
+ "src/images/camera_shutter_video_pause.svg",
+ "src/images/settings_button_back.svg",
+ "src/images/settings_button_expand.svg",
+ "src/images/settings_feedback.svg",
+ "src/images/settings_grid_type.svg",
+ "src/images/settings_help.svg",
+ "src/images/settings_resolution.svg",
+ "src/images/settings_timer_duration.svg",
+ "src/images/spinner.svg",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/images/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js") {
+ sources = [
+ "src/js/async_job_queue.js",
+ "src/js/background.js",
+ "src/js/background_ops.js",
+ "src/js/chrome_util.js",
+ "src/js/error.js",
+ "src/js/gallerybutton.js",
+ "src/js/intent.js",
+ "src/js/main.js",
+ "src/js/metrics.js",
+ "src/js/nav.js",
+ "src/js/perf.js",
+ "src/js/sound.js",
+ "src/js/state.js",
+ "src/js/toast.js",
+ "src/js/tooltip.js",
+ "src/js/type.js",
+ "src/js/util.js",
+ "src/js/waitable_event.js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js_browser_proxy") {
+ sources = [
+ # TODO(b/129956426): Remove dependency used only in closure compiler check.
+ "src/js/browser_proxy/browser_proxy.js",
+ "src/js/browser_proxy/browser_proxy_interface.js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/browser_proxy/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js_device") {
+ sources = [
+ "src/js/device/camera3_device_info.js",
+ "src/js/device/constraints_preferrer.js",
+ "src/js/device/device_info_updater.js",
+ "src/js/device/error.js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/device/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js_lib") {
+ sources = [
+ "src/js/lib/analytics.js",
+ "src/js/lib/comlink.js",
+ "src/js/lib/ffmpeg.js",
+ "src/js/lib/ffmpeg.wasm",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/lib/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js_models") {
+ sources = [
+ "src/js/models/async_writer.js",
+ "src/js/models/filenamer.js",
+ "src/js/models/filesystem.js",
+ "src/js/models/mp4_video_processor.js",
+ "src/js/models/nop_video_processor.js",
+ "src/js/models/result_saver.js",
+ "src/js/models/video_saver.js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/models/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js_mojo") {
+ sources = [
+ "src/js/mojo/chrome_helper.js",
+ "src/js/mojo/device_operator.js",
+ "src/js/mojo/image_capture.js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/mojo/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js_views") {
+ sources = [
+ "src/js/views/camera.js",
+ "src/js/views/camera_intent.js",
+ "src/js/views/dialog.js",
+ "src/js/views/settings.js",
+ "src/js/views/view.js",
+ "src/js/views/warning.js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/views/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_js_views_camera") {
+ sources = [
+ "src/js/views/camera/layout.js",
+ "src/js/views/camera/modes.js",
+ "src/js/views/camera/options.js",
+ "src/js/views/camera/preview.js",
+ "src/js/views/camera/recordtime.js",
+ "src/js/views/camera/review_result.js",
+ "src/js/views/camera/timertick.js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/views/camera/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_sounds") {
+ sources = [
+ "src/sounds/record_end.ogg",
+ "src/sounds/record_pause.ogg",
+ "src/sounds/record_start.ogg",
+ "src/sounds/shutter.ogg",
+ "src/sounds/tick_final.ogg",
+ "src/sounds/tick_inc.ogg",
+ "src/sounds/tick_start.ogg",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/sounds/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_views") {
+ sources = [
+ "src/views/background.html",
+ "src/views/main.html",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/views/{{source_file_part}}" ]
+}
+
+copy("chrome_camera_app_mojo_generated") {
+ sources = [
+ "$root_gen_dir/chromeos/components/camera_app_ui/camera_app_helper.mojom-lite.js",
+ "$root_gen_dir/components/arc/mojom/camera_intent.mojom-lite.js",
+ "$root_gen_dir/media/capture/mojom/image_capture.mojom-lite.js",
+ "$root_gen_dir/media/capture/video/chromeos/mojom/camera_app.mojom-lite.js",
+ "$root_gen_dir/media/capture/video/chromeos/mojom/camera_common.mojom-lite.js",
+ "$root_gen_dir/media/capture/video/chromeos/mojom/camera_metadata.mojom-lite.js",
+ "$root_gen_dir/media/capture/video/chromeos/mojom/camera_metadata_tags.mojom-lite.js",
+ "$root_gen_dir/mojo/public/js/mojo_bindings_lite.js",
+ "$root_gen_dir/mojo/public/mojom/base/time.mojom-lite.js",
+ "$root_gen_dir/third_party/blink/public/mojom/idle/idle_manager.mojom-lite.js",
+ "$root_gen_dir/ui/gfx/geometry/mojom/geometry.mojom-lite.js",
+ "$root_gen_dir/ui/gfx/range/mojom/range.mojom-lite.js",
+ ]
+
+ deps = [
+ "//chromeos/components/camera_app_ui:mojo_bindings_js",
+ "//media/capture/video/chromeos/mojom:cros_camera_js",
+ "//mojo/public/js:bindings_lite",
+ "//third_party/blink/public/mojom:mojom_platform_js",
+ ]
+
+ outputs = [ "$chrome_camera_app_dir/js/mojo/{{source_file_part}}" ]
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/BUILD.gn
new file mode 100644
index 00000000000..19cb7f9d981
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/BUILD.gn
@@ -0,0 +1,158 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+group("closure_compile") {
+ deps = [
+ ":compile_resources",
+ "browser_proxy:closure_compile",
+ "device:closure_compile",
+ "models:closure_compile",
+ "mojo:closure_compile",
+ "views:closure_compile",
+ ]
+}
+
+js_type_check("compile_resources") {
+ deps = [
+ ":async_job_queue",
+ ":background",
+ ":background_ops",
+ ":chrome_util",
+ ":error",
+ ":gallerybutton",
+ ":intent",
+ ":main",
+ ":metrics",
+ ":nav",
+ ":perf",
+ ":sound",
+ ":state",
+ ":toast",
+ ":tooltip",
+ ":type",
+ ":util",
+ ":waitable_event",
+ ]
+}
+
+js_library("async_job_queue") {
+}
+
+js_library("chrome_util") {
+}
+
+js_library("error") {
+ deps = [ ":metrics" ]
+}
+
+js_library("intent") {
+ deps = [
+ ":chrome_util",
+ ":metrics",
+ ":type",
+ "mojo:chrome_helper",
+ ]
+}
+
+js_library("gallerybutton") {
+ deps = [
+ ":chrome_util",
+ "models:filesystem",
+ "models:result_saver",
+ "models:video_saver",
+ ]
+ externs_list = [
+ "$externs_path/file_manager_private.js",
+ "$externs_path/file_system_provider.js",
+ ]
+}
+
+js_library("metrics") {
+ deps = [
+ ":state",
+ "externs:universal_analytics_api",
+ ]
+}
+
+js_library("sound") {
+}
+
+js_library("type") {
+}
+
+js_library("main") {
+ deps = [
+ ":background_ops",
+ ":chrome_util",
+ ":gallerybutton",
+ ":intent",
+ ":state",
+ ":type",
+ "device:constraints_preferrer",
+ "device:device_info_updater",
+ "views:camera",
+ "views:camera_intent",
+ "views:dialog",
+ "views:settings",
+ "views:warning",
+ ]
+}
+
+js_library("nav") {
+ deps = [
+ "mojo:device_operator",
+ "views:view",
+ ]
+}
+
+js_library("perf") {
+}
+
+js_library("state") {
+ deps = [
+ ":perf",
+ ":type",
+ ]
+}
+
+js_library("background") {
+ deps = [
+ ":background_ops",
+ ":intent",
+ ]
+}
+
+js_library("background_ops") {
+ deps = [
+ ":chrome_util",
+ ":error",
+ ":intent",
+ ":perf",
+ ]
+}
+
+js_library("toast") {
+ deps = [ ":util" ]
+}
+
+js_library("tooltip") {
+ deps = [ ":chrome_util" ]
+}
+
+js_library("util") {
+ deps = [
+ ":state",
+ ":tooltip",
+ ":type",
+ "browser_proxy:browser_proxy",
+ "externs:w3c_api",
+ "mojo:chrome_helper",
+ ]
+ externs_list = [ "$externs_path/chrome_extensions.js" ]
+}
+
+js_library("waitable_event") {
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/browser_proxy/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/browser_proxy/BUILD.gn
new file mode 100644
index 00000000000..909b9b4aea2
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/browser_proxy/BUILD.gn
@@ -0,0 +1,28 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_type_check("closure_compile") {
+ deps = [ ":browser_proxy" ]
+}
+
+js_library("browser_proxy") {
+ deps = [
+ "..:chrome_util",
+ "../mojo:chrome_helper",
+ ]
+ sources = [
+ "browser_proxy.js",
+ "browser_proxy_interface.js",
+ "webui_browser_proxy.js",
+ ]
+ externs_list = [
+ "../externs/chrome.js",
+ "$externs_path/chrome_extensions.js",
+ "$externs_path/file_manager_private.js",
+ "$externs_path/file_system_provider.js",
+ "$externs_path/metrics_private.js",
+ ]
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/device/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/device/BUILD.gn
new file mode 100644
index 00000000000..f4b59b69732
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/device/BUILD.gn
@@ -0,0 +1,44 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_type_check("closure_compile") {
+ deps = [
+ ":camera3_device_info",
+ ":constraints_preferrer",
+ ":device_info_updater",
+ ":error",
+ ]
+}
+
+js_library("camera3_device_info") {
+ deps = [
+ "..:type",
+ "../mojo:image_capture",
+ ]
+}
+
+js_library("constraints_preferrer") {
+ deps = [
+ ":camera3_device_info",
+ "..:chrome_util",
+ "..:state",
+ "..:type",
+ "../browser_proxy:browser_proxy",
+ ]
+}
+
+js_library("device_info_updater") {
+ deps = [
+ ":camera3_device_info",
+ ":constraints_preferrer",
+ ":error",
+ "..:state",
+ "..:type",
+ ]
+}
+
+js_library("error") {
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/externs/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/externs/BUILD.gn
new file mode 100644
index 00000000000..cae1c53cb2d
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/externs/BUILD.gn
@@ -0,0 +1,17 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_library("universal_analytics_api") {
+ sources = []
+
+ externs_list = [ "universal_analytics_api.js" ]
+}
+
+js_library("w3c_api") {
+ sources = []
+
+ externs_list = [ "w3c_api.js" ]
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/lib/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/lib/BUILD.gn
new file mode 100644
index 00000000000..67207741560
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/lib/BUILD.gn
@@ -0,0 +1,13 @@
+# Copyright 2020 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_library("comlink") {
+ sources = [ "comlink.js" ]
+}
+
+js_library("ffmpeg") {
+ sources = [ "ffmpeg.js" ]
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/models/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/models/BUILD.gn
new file mode 100644
index 00000000000..87d69aee82c
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/models/BUILD.gn
@@ -0,0 +1,44 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_type_check("closure_compile") {
+ deps = [
+ ":filenamer",
+ ":filesystem",
+ ":result_saver",
+ ":video_saver",
+ ]
+}
+
+js_library("filenamer") {
+}
+
+js_library("filesystem") {
+ deps = [
+ ":filenamer",
+ "../browser_proxy:browser_proxy",
+ ]
+}
+
+js_library("result_saver") {
+}
+
+js_library("video_saver") {
+ sources = [
+ "async_writer.js",
+ "mp4_video_processor.js",
+ "nop_video_processor.js",
+ "video_saver.js",
+ ]
+ deps = [
+ "..:async_job_queue",
+ "..:intent",
+ "..:waitable_event",
+ "../externs:w3c_api",
+ "../lib:comlink",
+ "../lib:ffmpeg",
+ ]
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/mojo/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/mojo/BUILD.gn
new file mode 100644
index 00000000000..39e91ba7cb5
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/mojo/BUILD.gn
@@ -0,0 +1,39 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_type_check("closure_compile") {
+ deps = [
+ ":chrome_helper",
+ ":device_operator",
+ ":image_capture",
+ ]
+}
+
+js_library("chrome_helper") {
+ deps = [
+ "//chromeos/components/camera_app_ui:mojo_bindings_js_library_for_compile",
+ "//components/arc/mojom:camera_intent_js_library_for_compile",
+ "//third_party/blink/public/mojom:mojom_platform_js_library_for_compile",
+ ]
+ externs_list = [ "$externs_path/pending.js" ]
+}
+
+js_library("device_operator") {
+ deps = [
+ "..:type",
+ "//media/capture/video/chromeos/mojom:cros_camera_js_library_for_compile",
+ ]
+ externs_list = [ "$externs_path/pending.js" ]
+}
+
+js_library("image_capture") {
+ deps = [
+ ":device_operator",
+ "..:util",
+ "//media/capture/mojom:image_capture_js_library_for_compile",
+ ]
+ externs_list = [ "$externs_path/pending.js" ]
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/views/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/views/BUILD.gn
new file mode 100644
index 00000000000..6cfbb72e337
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/views/BUILD.gn
@@ -0,0 +1,67 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+group("closure_compile") {
+ deps = [
+ ":compile_resources",
+ "camera:compile_resources",
+ ]
+}
+
+js_type_check("compile_resources") {
+ deps = [
+ ":camera",
+ ":camera_intent",
+ ":dialog",
+ ":settings",
+ ":view",
+ ":warning",
+ ]
+}
+
+js_library("camera") {
+ deps = [
+ "..:background_ops",
+ "..:chrome_util",
+ "..:metrics",
+ "..:type",
+ "../models:result_saver",
+ "camera:layout",
+ "camera:modes",
+ "camera:options",
+ "camera:preview",
+ "camera:timertick",
+ ]
+}
+
+js_library("dialog") {
+}
+
+js_library("camera_intent") {
+ deps = [
+ ":camera",
+ "..:chrome_util",
+ "../models:video_saver",
+ "camera:review_result",
+ ]
+}
+
+js_library("settings") {
+ deps = [
+ ":view",
+ "..:nav",
+ "..:type",
+ "../device:camera3_device_info",
+ "../device:device_info_updater",
+ ]
+}
+
+js_library("view") {
+ deps = [ "..:toast" ]
+}
+
+js_library("warning") {
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/js/views/camera/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/js/views/camera/BUILD.gn
new file mode 100644
index 00000000000..e1b3817be17
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/js/views/camera/BUILD.gn
@@ -0,0 +1,77 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+group("closure_compile") {
+ deps = [ ":compile_resources" ]
+}
+
+js_type_check("compile_resources") {
+ deps = [
+ ":layout",
+ ":modes",
+ ":options",
+ ":preview",
+ ":recordtime",
+ ":review_result",
+ ":timertick",
+ "../../mojo:device_operator",
+ ]
+}
+
+js_library("layout") {
+ deps = [
+ "../..:chrome_util",
+ "../..:type",
+ ]
+}
+
+js_library("modes") {
+ deps = [
+ ":recordtime",
+ "../../:async_job_queue",
+ "../..:sound",
+ "../..:toast",
+ "../..:type",
+ "../..:util",
+ "../../device:constraints_preferrer",
+ "../../models:filenamer",
+ "../../models:filesystem",
+ "../../models:video_saver",
+ "../../mojo:image_capture",
+ "//media/capture/video/chromeos/mojom:cros_camera_js_library_for_compile",
+ ]
+}
+
+js_library("options") {
+ deps = [
+ "../..:nav",
+ "../..:type",
+ "../..:util",
+ "../../device:device_info_updater",
+ ]
+}
+
+js_library("preview") {
+ deps = [
+ "../..:chrome_util",
+ "../..:nav",
+ "../..:type",
+ "//media/capture/video/chromeos/mojom:cros_camera_js_library_for_compile",
+ ]
+}
+
+js_library("recordtime") {
+}
+
+js_library("review_result") {
+ deps = [
+ "../..:state",
+ "../..:util",
+ ]
+}
+
+js_library("timertick") {
+}
diff --git a/chromium/chromeos/components/camera_app_ui/resources/src/strings/BUILD.gn b/chromium/chromeos/components/camera_app_ui/resources/src/strings/BUILD.gn
new file mode 100644
index 00000000000..6535e9e8673
--- /dev/null
+++ b/chromium/chromeos/components/camera_app_ui/resources/src/strings/BUILD.gn
@@ -0,0 +1,71 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//chrome/common/features.gni")
+import("//tools/grit/grit_rule.gni")
+
+chrome_camera_app_dir = "$root_out_dir/resources/chromeos/camera"
+
+grit("camera_strings") {
+ source = "camera_strings.grd"
+ defines = chrome_grit_defines
+ outputs = [
+ "_locales/am/messages.json",
+ "_locales/ar/messages.json",
+ "_locales/bg/messages.json",
+ "_locales/bn/messages.json",
+ "_locales/ca/messages.json",
+ "_locales/cs/messages.json",
+ "_locales/da/messages.json",
+ "_locales/de/messages.json",
+ "_locales/el/messages.json",
+ "_locales/en_GB/messages.json",
+ "_locales/en/messages.json",
+ "_locales/es/messages.json",
+ "_locales/es_419/messages.json",
+ "_locales/et/messages.json",
+ "_locales/fa/messages.json",
+ "_locales/fi/messages.json",
+ "_locales/fil/messages.json",
+ "_locales/fr/messages.json",
+ "_locales/gu/messages.json",
+ "_locales/he/messages.json",
+ "_locales/hi/messages.json",
+ "_locales/hr/messages.json",
+ "_locales/hu/messages.json",
+ "_locales/id/messages.json",
+ "_locales/it/messages.json",
+ "_locales/ja/messages.json",
+ "_locales/kn/messages.json",
+ "_locales/ko/messages.json",
+ "_locales/lt/messages.json",
+ "_locales/lv/messages.json",
+ "_locales/ml/messages.json",
+ "_locales/mr/messages.json",
+ "_locales/ms/messages.json",
+ "_locales/nl/messages.json",
+ "_locales/nb/messages.json",
+ "_locales/pl/messages.json",
+ "_locales/pt_BR/messages.json",
+ "_locales/pt_PT/messages.json",
+ "_locales/ro/messages.json",
+ "_locales/ru/messages.json",
+ "_locales/sk/messages.json",
+ "_locales/sl/messages.json",
+ "_locales/sr/messages.json",
+ "_locales/sv/messages.json",
+ "_locales/sw/messages.json",
+ "_locales/ta/messages.json",
+ "_locales/te/messages.json",
+ "_locales/th/messages.json",
+ "_locales/tr/messages.json",
+ "_locales/uk/messages.json",
+ "_locales/vi/messages.json",
+ "_locales/zh_CN/messages.json",
+ "_locales/zh_TW/messages.json",
+ ]
+ output_dir = chrome_camera_app_dir
+
+ resource_ids = ""
+}