WebApp: Extract web_applications source sets in GN.

This CL reflects the existing dependencies and dependency
cycles we have.

Also, we want to establish the following folders in web_applications/:
1) components/
Any independent components which are shared between extensions/
and web_applications/

2) extensions/
A code which is thematically part of chrome/browser/extensions/
E.g. an upcoming BookmarkAppInstaller will be used by extensions.

3) bookmark_apps/
Any extension-based high-level helpers which are used by chrome/browser/

Note that web_applications/policy content will be moved to
web_applications/bookmark_apps/policy/

Bug: 860581
Change-Id: Ib89f0e327759cfab050caceae5818c8e72f40f08
Reviewed-on: https://chromium-review.googlesource.com/1128665
Commit-Queue: Alexey Baskakov <[email protected]>
Reviewed-by: Trent Apted <[email protected]>
Reviewed-by: Devlin <[email protected]>
Reviewed-by: Dominick Ng <[email protected]>
Cr-Commit-Position: refs/heads/master@{#574448}
diff --git a/chrome/browser/web_applications/BUILD.gn b/chrome/browser/web_applications/BUILD.gn
index 8b49ffa..2deb4ad 100644
--- a/chrome/browser/web_applications/BUILD.gn
+++ b/chrome/browser/web_applications/BUILD.gn
@@ -4,25 +4,32 @@
 
 import("//extensions/buildflags/buildflags.gni")
 
-assert(enable_extensions)
-
 source_set("web_applications") {
   sources = [
-    "extensions/pending_bookmark_app_manager.cc",
-    "extensions/pending_bookmark_app_manager.h",
-    "policy/web_app_policy_constants.cc",
-    "policy/web_app_policy_constants.h",
-    "policy/web_app_policy_manager.cc",
-    "policy/web_app_policy_manager.h",
-    "policy/web_app_policy_manager_factory.cc",
-    "policy/web_app_policy_manager_factory.h",
+    "web_app.cc",
+    "web_app.h",
+    "web_app_chromeos.cc",
+    "web_app_mac.h",
+    "web_app_mac.mm",
+    "web_app_win.cc",
+    "web_app_win.h",
   ]
 
+  if (is_desktop_linux) {
+    # Desktop linux, doesn't count ChromeOS.
+    sources += [ "web_app_linux.cc" ]
+  }
+
   configs += [ "//build/config/compiler:wexit_time_destructors" ]
 
+  # TODO(loyso): Break this dependency cycle.
+  allow_circular_includes_from = [ "//chrome/browser/extensions" ]
+
   deps = [
     "//base",
     "//chrome/browser/extensions",
+    "//chrome/browser/web_applications/bookmark_apps",
+    "//chrome/browser/web_applications/components",
     "//chrome/common",
     "//components/keyed_service/content",
     "//components/prefs",
@@ -30,3 +37,28 @@
     "//url",
   ]
 }
+
+source_set("web_applications_unit_tests") {
+  testonly = true
+
+  sources = [
+    "web_app_mac_unittest.mm",
+    "web_app_unittest.cc",
+  ]
+
+  deps = [
+    ":web_applications",
+    "//chrome/browser/extensions",
+    "//extensions/browser",
+    "//skia",
+    "//testing/gmock",
+  ]
+}
+
+source_set("unit_tests") {
+  testonly = true
+  deps = [
+    ":web_applications_unit_tests",
+    "//chrome/browser/web_applications/bookmark_apps:unit_tests",
+  ]
+}