Work on GN build, mostly in //ui

This fills out a number of ui targets and does some changes to the resources to match the GYP build. In particular, we had a number of different ui/resources targets that were depended on independently. The GYP build has only one, so I combined them into a meta "ui/resources" target.

Adds a grit repack template.

TBR=ajwong

Review URL: https://codereview.chromium.org/369603004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281087 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/BUILD.gn b/BUILD.gn
index afade88..94e851d3 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -90,11 +90,14 @@
     "//ui/events",
     "//ui/gfx",
     "//ui/gl",
+    "//ui/keyboard",
     "//ui/native_theme",
     "//ui/resources",
     "//ui/snapshot",
     "//ui/strings",
     "//ui/surface",
+    "//ui/web_dialogs",
+    "//ui/wm",
     "//url",
     "//v8:v8",
     "//webkit/browser:storage",
@@ -146,6 +149,7 @@
       "//ppapi:ppapi_c",
       "//sandbox",
       "//third_party/libusb",
+      "//ui/keyboard",  # Blocked on content.
 
       # Seems to not be compiled on Android. Otherwise it will need a config.h.
       "//third_party/libxslt",
@@ -163,6 +167,8 @@
       # Not tested on Android yet:
       "//third_party/libaddressinput",
       "//third_party/ffmpeg",
+      "//ui/web_dialogs",
+      "//ui/wm",
       "//webkit/browser:storage",
       "//webkit/child",
     ]
diff --git a/build/repack_action.gypi b/build/repack_action.gypi
index be91ac7..04b982a3 100644
--- a/build/repack_action.gypi
+++ b/build/repack_action.gypi
@@ -6,9 +6,10 @@
 # consistent manner. To use this the following variables need to be
 # defined:
 #   pak_inputs: list: paths of pak files that need to be combined.
-#   pak_output: string: the output pak file path. 
+#   pak_output: string: the output pak file path.
 
 {
+  # GYP version: //tools/grit/repack.gni
   'variables': {
     'repack_path': '<(DEPTH)/tools/grit/grit/format/repack.py',
     'repack_options%': [],
diff --git a/build/secondary/tools/grit/repack.gni b/build/secondary/tools/grit/repack.gni
new file mode 100644
index 0000000..0dd60b3
--- /dev/null
+++ b/build/secondary/tools/grit/repack.gni
@@ -0,0 +1,45 @@
+# Copyright 2014 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.
+
+# This file defines a template to invoke grit repack in a consistent manner.
+#
+# Parameters:
+#   sources  [required]
+#       List of pak files that need to be combined.
+#
+#   output  [required]
+#       File name (single string) of the output file.
+#
+#   repack_options  [optional]
+#       List of extra arguments to pass.
+#
+#   deps  [optional]
+#   visibility  [optional]
+#       Normal meaning.
+template("repack") {
+  action(target_name) {
+    assert(defined(invoker.sources), "Need sources for $target_name")
+    assert(defined(invoker.output), "Need output for $target_name")
+
+    if (defined(invoker.visibility)) {
+      visibility = invoker.visibility
+    }
+
+    script = "//tools/grit/grit/format/repack.py"
+
+    source_prereqs = invoker.sources
+    outputs = [ invoker.output ]
+
+    args = []
+    if (defined(invoker.repack_options)) {
+      args += invoker.repack_options
+    }
+    args += [ rebase_path(invoker.output, root_build_dir) ]
+    args += rebase_path(invoker.sources, root_build_dir)
+
+    if (defined(invoker.deps)) {
+      deps = invoker.deps
+    }
+  }
+}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 852cf11..3336e3f 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -40,6 +40,7 @@
     "//chrome/browser/search/suggestions/proto",
     "//chrome/common",
     "//chrome/common/net",
+    "//components/autofill/core/browser",
     "//components/cloud_devices/common",
     "//components/metrics:net",
     "//components/navigation_metrics",
@@ -52,7 +53,9 @@
     "//components/user_prefs",
     "//content/public/browser",
     "//content/public/common",
+    "//courgette:courgette_lib",
     "//crypto",
+    "//google_apis",
     "//skia",
     "//sql",
     "//sync",
@@ -75,7 +78,6 @@
     #"chrome_resources.gyp:platform_locale_settings",
     #"in_memory_url_index_cache_proto",
     #"../components/components.gyp:autocomplete",
-    #"../components/components.gyp:autofill_core_browser",
     #"../components/components.gyp:bookmarks_browser",
     #"../components/components.gyp:captive_portal",
     #"../components/components.gyp:data_reduction_proxy_browser",
@@ -102,8 +104,6 @@
     #"../components/components.gyp:sync_driver",
     #"../components/components.gyp:url_fixer",
     #"../components/components.gyp:webdata_common",
-    #"../courgette/courgette.gyp:courgette_lib",
-    #"../google_apis/google_apis.gyp:google_apis",
     #"../jingle/jingle.gyp:notifier",
     #"../third_party/libjingle/libjingle.gyp:libjingle",
     #"../ui/message_center/message_center.gyp:message_center",
@@ -142,10 +142,15 @@
     deps += [
       "//cc",
       "//chrome/browser/performance_monitor",
+      "//chrome/common/extensions/api:api",
       "//components/keyed_service/content",
       "//components/url_matcher",
       "//components/visitedlink/browser",
       "//components/visitedlink/common",
+      "//mojo/environment:chromium",
+      "//mojo/public/cpp/bindings",
+      "//mojo/public/js/bindings",
+      "//mojo/system",
       "//net:net_with_v8",
       "//third_party/adobe/flash:flapper_version_h",
       "//third_party/expat",
@@ -157,6 +162,7 @@
       "//third_party/smhasher:cityhash",
       "//ui/gl",
       "//ui/surface",
+      "//ui/web_dialogs",
       "//v8",
       "//webkit:resources",
       "//webkit/browser:storage",
@@ -165,7 +171,6 @@
       # TODO(GYP)
       #"apps",
       #"browser_extensions",
-      #"common/extensions/api/api.gyp:chrome_api",
       #"debugger",
       #"installer_util",
       #"sync_file_system_drive_proto",
@@ -182,15 +187,10 @@
       #"../components/components.gyp:web_modal",
       #"../media/cast/cast.gyp:cast_transport",
       #"../media/media.gyp:media",
-      #"../mojo/mojo.gyp:mojo_cpp_bindings",
-      #"../mojo/mojo.gyp:mojo_environment_chromium",
-      #"../mojo/mojo.gyp:mojo_js_bindings",
-      #"../mojo/mojo.gyp:mojo_system_impl",
       ## TODO(tonyg): Remove this dependency (crbug.com/280157).
       #"../testing/perf/perf_test.gyp:*",
       # Note: for this one also remove the webrtc_stub_config
       #"../third_party/webrtc/modules/modules.gyp:desktop_capture",
-      #"../ui/web_dialogs/web_dialogs.gyp:web_dialogs",
     ]
   } else {  # iOS
     sources += rebase_path(gypi_values.chrome_browser_ios_sources,
@@ -270,8 +270,8 @@
         gypi_values.chrome_browser_policy_shared_with_ios_sources,
         ".", "//chrome")
     deps += [
+      "//components/policy",
       "//components/policy/proto",
-      #"../components/components.gyp:policy",  TODO(GYP)
     ]
     if (!is_ios) {
       sources += rebase_path(
@@ -350,7 +350,7 @@
   }
 
   if (use_cups) {
-    #deps += [ "../printing/printing.gyp:cups" ]  TODO(GYP)
+    configs += [ "//printing:cups" ]
   }
   if (is_desktop_linux) {
     sources += rebase_path(gypi_values.chrome_browser_gnome_keyring_sources,
@@ -363,7 +363,7 @@
     deps += [
       "//ui/aura",
       "//ui/compositor",
-      #"../ui/keyboard/keyboard.gyp:keyboard",  TODO(GYP)
+      "//ui/keyboard",
     ]
   }
   if (ui_compositor_image_transport) {
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 166038d..cd215e5 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -100,7 +100,6 @@
       "//third_party/libyuv",
       "//ui/resources",
       "//ui/surface",
-      "//ui/webui/resources",
       "//webkit:resources",
       "//webkit:strings",
       "//webkit/browser:storage",
diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn
index 79bc90f..9e71c5c 100644
--- a/ui/aura/BUILD.gn
+++ b/ui/aura/BUILD.gn
@@ -140,7 +140,7 @@
   }
 }
 
-source_set("aura_test_support") {
+source_set("test_support") {
   sources = [
     "test/aura_test_base.cc",
     "test/aura_test_base.h",
diff --git a/ui/aura/aura.gyp b/ui/aura/aura.gyp
index dae920e4..306345a3 100644
--- a/ui/aura/aura.gyp
+++ b/ui/aura/aura.gyp
@@ -8,6 +8,7 @@
   },
   'targets': [
     {
+      # GN version: //ui/aura
       'target_name': 'aura',
       'type': '<(component)',
       'dependencies': [
@@ -139,6 +140,7 @@
       ],
     },
     {
+      # GN version: //ui/aura:test_support
       'target_name': 'aura_test_support',
       'type': 'static_library',
       'dependencies': [
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
index 97e8118..94ccf31 100644
--- a/ui/base/BUILD.gn
+++ b/ui/base/BUILD.gn
@@ -279,9 +279,7 @@
     "//third_party/icu",
     "//ui/events:events_base",
     "//ui/resources",
-    "//ui/resources:unscaled_resources",
     "//ui/strings",
-    "//ui/webui/resources",
     "//url",
   ]
 
diff --git a/ui/keyboard/BUILD.gn b/ui/keyboard/BUILD.gn
new file mode 100644
index 0000000..1b3c87b
--- /dev/null
+++ b/ui/keyboard/BUILD.gn
@@ -0,0 +1,89 @@
+# Copyright 2014 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("//tools/grit/grit_rule.gni")
+
+component("keyboard") {
+  sources = [
+    "keyboard.cc",
+    "keyboard.h",
+    "keyboard_constants.cc",
+    "keyboard_constants.h",
+    "keyboard_controller.cc",
+    "keyboard_controller.h",
+    "keyboard_controller_observer.h",
+    "keyboard_controller_proxy.cc",
+    "keyboard_controller_proxy.h",
+    "keyboard_layout_manager.h",
+    "keyboard_layout_manager.cc",
+    "keyboard_export.h",
+    "keyboard_switches.cc",
+    "keyboard_switches.h",
+    "keyboard_util.cc",
+    "keyboard_util.h",
+  ]
+
+  defines = [ "KEYBOARD_IMPLEMENTATION" ]
+
+  deps = [
+    ":resources",
+    "//base",
+    "//base/third_party/dynamic_annotations",
+    "//content/public/browser",
+    "//ipc",
+    "//skia",
+    "//url",
+    "//ui/aura",
+    "//ui/base",
+    "//ui/compositor",
+    "//ui/events",
+    "//ui/gfx",
+    "//ui/gfx/geometry",
+    "//ui/wm",
+  ]
+}
+
+grit("resources_grit") {
+  source = "keyboard_resources.grd"
+}
+
+copy("resources") {
+  sources = [ "$target_gen_dir/keyboard_resources.pak" ]
+  outputs = [ "$root_out_dir/keyboard_resources.pak" ]
+  deps = [ ":resources_grit" ]
+  forward_dependent_configs_from = deps
+}
+
+# TODO(GYP) enable this when all dependencies are resolved. Some transitive
+# deps aren't done yet.
+if (false) {
+
+test("keyboard_unittests") {
+  sources = [
+    "test/run_all_unittests.cc",
+    "keyboard_controller_unittest.cc",
+  ]
+
+  deps = [
+    ":keyboard",
+    "//base",
+    "//base/allocator",
+    "//base/test:test_support",
+    "//content",
+    "//skia",
+    "//testing/gtest",
+    "//ui/aura",
+    "//ui/aura:test_support",
+    "//ui/base",
+    "//ui/compositor",
+    "//ui/compositor:test_support",
+    "//ui/gfx",
+    "//ui/gfx/geometry",
+    "//ui/resources:ui_test_pak",
+    "//ui/wm",
+    "//url",
+  ]
+}
+
+}
diff --git a/ui/keyboard/keyboard.gyp b/ui/keyboard/keyboard.gyp
index e780048..34c265d 100644
--- a/ui/keyboard/keyboard.gyp
+++ b/ui/keyboard/keyboard.gyp
@@ -8,6 +8,7 @@
   },
   'targets': [
     {
+      # GN version: //ui/keyboard:resources
       'target_name': 'keyboard_resources',
       'type': 'none',
       'variables': {
@@ -33,6 +34,7 @@
       ],
     },
     {
+      # GN version: //ui/keyboard
       'target_name': 'keyboard',
       'type': '<(component)',
       'dependencies': [
diff --git a/ui/resources/BUILD.gn b/ui/resources/BUILD.gn
index 96ee870f..a0584d64 100644
--- a/ui/resources/BUILD.gn
+++ b/ui/resources/BUILD.gn
@@ -3,13 +3,78 @@
 # found in the LICENSE file.
 
 import("//tools/grit/grit_rule.gni")
+import("//tools/grit/repack.gni")
 
-grit("resources") {
-  output_name = "ui_resources"
+# GYP version: ui/resources/ui_resources.gyp:ui_resources
+group("resources") {
+  deps = [
+    ":ui_resources_grd",
+    ":ui_unscaled_resources_grd",
+    ":webui_resources_grd",
+  ]
+}
+
+grit("ui_resources_grd") {
+  visibility = ":resources"
   source = "ui_resources.grd"
 }
 
-grit("unscaled_resources") {
-  output_name = "ui_unscaled_resources"
+grit("ui_unscaled_resources_grd") {
+  visibility = ":resources"
   source = "ui_unscaled_resources.grd"
 }
+
+grit("webui_resources_grd") {
+  visibility = ":resources"
+  source = "../webui/resources/webui_resources.grd"
+}
+
+if (!is_mac) {
+  copy("copy_ui_resources_100_percent") {
+    sources = [ "$root_gen_dir/ui/resources/ui_resources_100_percent.pak" ]
+    outputs = [ "$root_out_dir/ui_resources_100_percent.pak" ]
+    deps = [ "//ui/resources" ]
+  }
+}
+
+# On iOS the output needs to additionally be copied to another location, so
+# we have this intermediate step.
+#
+# GYP version: ui/resources/ui_resources.gyp:ui_test_pak
+#              (copy_ui_test_pak action)
+if (is_ios) {
+  copy("ui_test_pak") {
+    sources = [ "$root_out_dir/ui_test.pak" ]
+    outputs = [ "$root_out_dir/ui/en.lproj/locale.pak" ]
+    deps = [ ":repack_ui_test_pak" ]
+  }
+} else {
+  group("ui_test_pak") {
+    deps = [ ":repack_ui_test_pak" ]
+  }
+}
+
+# GYP version: ui/resources/ui_resources.gyp:ui_test_pak
+repack("repack_ui_test_pak") {
+  # Depend on ui_test_pak instead of this one.
+  visibility = ":ui_test_pak"
+
+  sources = [ 
+    "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
+    "$root_gen_dir/ui/resources/webui_resources.pak",
+    "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
+    "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
+  ]
+
+  output = "$root_out_dir/ui_test.pak"
+
+  deps = [
+    "//ui/resources",
+    "//ui/strings",
+  ]
+
+  if (!is_mac) {
+    deps += [ ":copy_ui_resources_100_percent" ]
+  }
+}
+
diff --git a/ui/resources/ui_resources.gyp b/ui/resources/ui_resources.gyp
index 34b3c14..427870f 100644
--- a/ui/resources/ui_resources.gyp
+++ b/ui/resources/ui_resources.gyp
@@ -5,6 +5,7 @@
 {
   'targets': [
     {
+      # GN version: //ui/resources
       'target_name': 'ui_resources',
       'type': 'none',
       'variables': {
@@ -38,6 +39,8 @@
     {
       # This creates a pak file that contains the resources in src/ui.
       # This pak file can be used by tests.
+      #
+      # GN version: //ui/resources:ui_test_pak
       'target_name': 'ui_test_pak',
       'type': 'none',
       'dependencies': [
@@ -63,6 +66,7 @@
         ['OS != "mac"', {
           'copies': [
             {
+              # GN version //ui/resources:copy_ui_resources_100_percent
               'destination': '<(PRODUCT_DIR)/ui',
               'files': [
                 '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak',
@@ -73,6 +77,7 @@
         ['OS == "ios"', {
           'actions': [
             {
+              # GN version: //ui/resources:copy_ui_test_pak
               'action_name': 'copy_ui_test_pak',
               'message': 'Copying ui_test.pak into locale.pak',
               'inputs': [
diff --git a/ui/web_dialogs/BUILD.gn b/ui/web_dialogs/BUILD.gn
new file mode 100644
index 0000000..d9e8e13
--- /dev/null
+++ b/ui/web_dialogs/BUILD.gn
@@ -0,0 +1,40 @@
+# Copyright 2014 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.
+
+component("web_dialogs") {
+  sources = [
+    "web_dialog_delegate.cc",
+    "web_dialog_delegate.h",
+    "web_dialog_ui.cc",
+    "web_dialog_ui.h",
+    "web_dialog_web_contents_delegate.cc",
+    "web_dialog_web_contents_delegate.h",
+    "web_dialogs_export.h",
+  ]
+
+  defines = [ "WEB_DIALOGS_IMPLEMENTATION" ]
+
+  deps = [
+    "//base",
+    "//base/third_party/dynamic_annotations",
+    "//content/public/browser",
+    "//skia",
+  ]
+}
+
+static_library("test_support") {
+  sources = [
+    "test/test_web_contents_handler.cc",
+    "test/test_web_contents_handler.h",
+    "test/test_web_dialog_delegate.cc",
+    "test/test_web_dialog_delegate.h",
+  ]
+
+  deps = [
+    ":web_dialogs",
+    "//base",
+    "//content/public/browser",
+    "//skia",
+  ]
+}
diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn
deleted file mode 100644
index 7b0001bb..0000000
--- a/ui/webui/resources/BUILD.gn
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright 2014 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("//tools/grit/grit_rule.gni")
-
-grit("resources") {
-  output_name = "webui_resources"
-  source = "webui_resources.grd"
-}
diff --git a/ui/wm/BUILD.gn b/ui/wm/BUILD.gn
new file mode 100644
index 0000000..23b7792
--- /dev/null
+++ b/ui/wm/BUILD.gn
@@ -0,0 +1,143 @@
+# Copyright 2014 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.
+
+component("wm") {
+  sources = [
+    "core/accelerator_delegate.h",
+    "core/accelerator_filter.cc",
+    "core/accelerator_filter.h",
+    "core/base_focus_rules.h",
+    "core/base_focus_rules.cc",
+    "core/base_focus_rules.h",
+    "core/capture_controller.cc",
+    "core/capture_controller.h",
+    "core/compound_event_filter.cc",
+    "core/compound_event_filter.h",
+    "core/cursor_manager.cc",
+    "core/cursor_manager.h",
+    "core/default_activation_client.cc",
+    "core/default_activation_client.h",
+    "core/easy_resize_window_targeter.cc",
+    "core/easy_resize_window_targeter.h",
+    "core/focus_controller.cc",
+    "core/focus_controller.h",
+    "core/focus_rules.h",
+    "core/image_grid.cc",
+    "core/image_grid.h",
+    "core/input_method_event_filter.cc",
+    "core/input_method_event_filter.h",
+    "core/masked_window_targeter.cc",
+    "core/masked_window_targeter.h",
+    "core/native_cursor_manager.h",
+    "core/native_cursor_manager_delegate.h",
+    "core/nested_accelerator_dispatcher_linux.cc",
+    "core/nested_accelerator_dispatcher_win.cc",
+    "core/nested_accelerator_dispatcher.cc",
+    "core/nested_accelerator_dispatcher.h",
+    "core/nested_accelerator_delegate.h",
+    "core/nested_accelerator_controller.cc",
+    "core/nested_accelerator_controller.h",
+    "core/shadow.cc",
+    "core/shadow.h",
+    "core/shadow_controller.cc",
+    "core/shadow_controller.h",
+    "core/shadow_types.cc",
+    "core/shadow_types.h",
+    "core/transient_window_controller.cc",
+    "core/transient_window_controller.h",
+    "core/transient_window_manager.cc",
+    "core/transient_window_manager.h",
+    "core/transient_window_observer.h",
+    "core/transient_window_stacking_client.cc",
+    "core/transient_window_stacking_client.h",
+    "core/user_activity_detector.cc",
+    "core/user_activity_detector.h",
+    "core/user_activity_observer.h",
+    "core/visibility_controller.cc",
+    "core/visibility_controller.h",
+    "core/window_animations.cc",
+    "core/window_animations.h",
+    "core/window_modality_controller.cc",
+    "core/window_modality_controller.h",
+    "core/window_util.cc",
+    "core/window_util.h",
+    "core/wm_core_switches.cc",
+    "core/wm_core_switches.h",
+    "core/wm_state.cc",
+    "core/wm_state.h",
+    "public/window_types.h",
+    "wm_export.h",
+  ]
+
+  defines = [ "WM_IMPLEMENTATION" ]
+
+  deps = [
+    "//base",
+    "//skia",
+    "//ui/aura",
+    "//ui/base",
+    "//ui/compositor",
+    "//ui/events",
+    "//ui/events:events_base",
+    "//ui/gfx",
+    "//ui/gfx/geometry",
+    "//ui/resources",
+  ]
+}
+
+static_library("test_support") {
+  sources = [
+    "test/wm_test_helper.cc",
+    "test/wm_test_helper.h",
+  ]
+
+  deps = [
+    "//skia",
+    "//ui/aura",
+    "//ui/base",
+    "//ui/events",
+    "//ui/events:events_base",
+  ]
+}
+
+# TODO(GYP) enable the wm_unittests target when all dependencies have been
+# resolved. Some transitive deps aren't converted yet.
+if (false) {
+
+test("wm_unittests") {
+  sources = [
+    "test/run_all_unittests.cc",
+    "core/compound_event_filter_unittest.cc",
+    "core/cursor_manager_unittest.cc",
+    "core/focus_controller_unittest.cc",
+    "core/input_method_event_filter_unittest.cc",
+    "core/image_grid_unittest.cc",
+    "core/nested_accelerator_controller_unittest.cc",
+    "core/shadow_controller_unittest.cc",
+    "core/transient_window_manager_unittest.cc",
+    "core/transient_window_stacking_client_unittest.cc",
+    "core/user_activity_detector_unittest.cc",
+    "core/visibility_controller_unittest.cc",
+    "core/window_animations_unittest.cc",
+  ]
+
+  deps = [
+    ":test_support",
+    ":wm",
+    "//base",
+    "//base/test:test_support",
+    "//skia",
+    "//testing/gtest",
+    "//ui/aura",
+    "//ui/aura:test_support",
+    "//ui/base",
+    "//ui/compositor",
+    "//ui/events",
+    "//ui/events:events_base",
+    "//ui/gfx",
+    "//ui/gfx/geometry",
+  ]
+}
+
+}
diff --git a/ui/wm/wm.gyp b/ui/wm/wm.gyp
index 10f1883..11688d7 100644
--- a/ui/wm/wm.gyp
+++ b/ui/wm/wm.gyp
@@ -8,6 +8,7 @@
   },
   'targets': [
     {
+      # GN version: //ui/wm
       'target_name': 'wm',
       'type': '<(component)',
       'dependencies': [
@@ -93,6 +94,7 @@
       ],
     },
     {
+      # GN version: //ui/wm:test_support
       'target_name': 'wm_test_support',
       'type': 'static_library',
       'dependencies': [
@@ -108,6 +110,7 @@
       ],
     },
     {
+      # GN version: //ui/wm:wm_unittests
       'target_name': 'wm_unittests',
       'type': 'executable',
       'dependencies': [