exo: Allow a shell surface to act as an overlay

Set up an overlay manager that allows an exo::ShellSurface to become an
overlay on top of a different window.

The initial use case is for a Android Play Billing popup to overlay a
Trusted Web App, when the app invokes a Payments API.

The shell surface must use the revised
aura_shell_surface::set_client_surface_str_id request to set a valid
overlay token.

The code to have the payment component hook into the overlay manager is
in a followup CL.

Bug: b:172592701
Test: Test Payment app shows the Play Store overlay

Change-Id: I7929b0a28ac4f4dd6e069632ada3419062f1b794
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2519929
Commit-Queue: Daniel Nicoara <[email protected]>
Auto-Submit: Lloyd Pique <[email protected]>
Reviewed-by: Daniel Nicoara <[email protected]>
Reviewed-by: Mitsuru Oshima <[email protected]>
Cr-Commit-Position: refs/heads/master@{#826508}
diff --git a/chrome/browser/exo_parts.h b/chrome/browser/exo_parts.h
index 26de8da..26a9de57 100644
--- a/chrome/browser/exo_parts.h
+++ b/chrome/browser/exo_parts.h
@@ -9,6 +9,10 @@
 
 #include "base/macros.h"
 
+namespace ash {
+class ArcOverlayManager;
+}
+
 namespace exo {
 class WaylandServerController;
 }
@@ -23,6 +27,7 @@
  private:
   ExoParts();
 
+  std::unique_ptr<ash::ArcOverlayManager> arc_overlay_manager_;
   std::unique_ptr<exo::WaylandServerController> wayland_server_;
 
   DISALLOW_COPY_AND_ASSIGN(ExoParts);