First pass of the Launcher Overlay interface / impl

-> Added simple reference launcher extension
-> Make launcher able to handle a null qsb

Change-Id: Ib1575243cac800a335e95bbf00cdc394bb4741c3
diff --git a/src/com/android/launcher3/LauncherCallbacks.java b/src/com/android/launcher3/LauncherCallbacks.java
index aef2adc..e0cfa27 100644
--- a/src/com/android/launcher3/LauncherCallbacks.java
+++ b/src/com/android/launcher3/LauncherCallbacks.java
@@ -6,6 +6,7 @@
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.View;
+import android.view.ViewGroup;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -86,4 +87,22 @@
     public boolean overrideWallpaperDimensions();
     public boolean isLauncherPreinstalled();
 
+    /**
+     * Returning true will immediately result in a call to {@link #setLauncherOverlayView(ViewGroup,
+     * com.android.launcher3.Launcher.LauncherOverlayCallbacks)}.
+     *
+     * @return true if this launcher extension will provide an overlay
+     */
+    public boolean hasLauncherOverlay();
+
+    /**
+     * Handshake to establish an overlay relationship
+     *
+     * @param overlayView Full screen overlay ViewGroup into which custom views can be placed.
+     * @param callbacks A set of callbacks provided by Launcher in relation to the overlay
+     * @return an interface used to make requests and notify the Launcher in relation to the overlay
+     */
+    public Launcher.LauncherOverlay setLauncherOverlayView(ViewGroup overlayView,
+            Launcher.LauncherOverlayCallbacks callbacks);
+
 }