Support for getWindow() on FakeDialog
diff --git a/src/com/xtremelabs/droidsugar/fakes/FakeActivity.java b/src/com/xtremelabs/droidsugar/fakes/FakeActivity.java
index 1ee94a2..c503536 100644
--- a/src/com/xtremelabs/droidsugar/fakes/FakeActivity.java
+++ b/src/com/xtremelabs/droidsugar/fakes/FakeActivity.java
@@ -2,13 +2,10 @@
 
 import android.app.Activity;
 import android.app.Application;
-import android.content.Context;
 import android.content.Intent;
-import android.content.res.Configuration;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
 import com.xtremelabs.droidsugar.util.Implements;
 
 @SuppressWarnings({"UnusedDeclaration"})
@@ -24,7 +21,7 @@
     public Activity parent;
     public static Application application;
     private Activity realActivity;
-    private FakeActivity.TestWindow window;
+    private TestWindow window;
 
     public FakeActivity(Activity realActivity) {
         this.realActivity = realActivity;
@@ -90,144 +87,4 @@
         return window;
     }
 
-    public class TestWindow extends Window {
-        public int flags;
-
-        private TestWindow(Context context) {
-            super(context);
-        }
-
-        @Override public void setFlags(int flags, int mask) {
-            this.flags = (flags&~mask) | (flags&mask);
-        }
-
-        @Override public void addFlags(int flags) {
-            setFlags(flags, flags);
-        }
-
-        @Override public boolean isFloating() {
-            return false;
-        }
-
-        @Override public void setContentView(int layoutResID) {
-        }
-
-        @Override public void setContentView(View view) {
-        }
-
-        @Override public void setContentView(View view, ViewGroup.LayoutParams params) {
-        }
-
-        @Override public void addContentView(View view, ViewGroup.LayoutParams params) {
-        }
-
-        @Override public View getCurrentFocus() {
-            return null;
-        }
-
-        @Override public LayoutInflater getLayoutInflater() {
-            return null;
-        }
-
-        @Override public void setTitle(CharSequence title) {
-        }
-
-        @Override public void setTitleColor(int textColor) {
-        }
-
-        @Override public void openPanel(int featureId, KeyEvent event) {
-        }
-
-        @Override public void closePanel(int featureId) {
-        }
-
-        @Override public void togglePanel(int featureId, KeyEvent event) {
-        }
-
-        @Override public boolean performPanelShortcut(int featureId, int keyCode, KeyEvent event, int flags) {
-            return false;
-        }
-
-        @Override public boolean performPanelIdentifierAction(int featureId, int id, int flags) {
-            return false;
-        }
-
-        @Override public void closeAllPanels() {
-        }
-
-        @Override public boolean performContextMenuIdentifierAction(int id, int flags) {
-            return false;
-        }
-
-        @Override public void onConfigurationChanged(Configuration newConfig) {
-        }
-
-        @Override public void setBackgroundDrawable(Drawable drawable) {
-        }
-
-        @Override public void setFeatureDrawableResource(int featureId, int resId) {
-        }
-
-        @Override public void setFeatureDrawableUri(int featureId, Uri uri) {
-        }
-
-        @Override public void setFeatureDrawable(int featureId, Drawable drawable) {
-        }
-
-        @Override public void setFeatureDrawableAlpha(int featureId, int alpha) {
-        }
-
-        @Override public void setFeatureInt(int featureId, int value) {
-        }
-
-        @Override public void takeKeyEvents(boolean get) {
-        }
-
-        @Override public boolean superDispatchKeyEvent(KeyEvent event) {
-            return false;
-        }
-
-        @Override public boolean superDispatchTouchEvent(MotionEvent event) {
-            return false;
-        }
-
-        @Override public boolean superDispatchTrackballEvent(MotionEvent event) {
-            return false;
-        }
-
-        @Override public View getDecorView() {
-            return null;
-        }
-
-        @Override public View peekDecorView() {
-            return null;
-        }
-
-        @Override public Bundle saveHierarchyState() {
-            return null;
-        }
-
-        @Override public void restoreHierarchyState(Bundle savedInstanceState) {
-        }
-
-        @Override protected void onActive() {
-        }
-
-        @Override public void setChildDrawable(int featureId, Drawable drawable) {
-        }
-
-        @Override public void setChildInt(int featureId, int value) {
-        }
-
-        @Override public boolean isShortcutKey(int keyCode, KeyEvent event) {
-            return false;
-        }
-
-        @Override public void setVolumeControlStream(int streamType) {
-        }
-
-        @Override public int getVolumeControlStream() {
-            return 0;
-        }
-    }
 }
diff --git a/src/com/xtremelabs/droidsugar/fakes/FakeDialog.java b/src/com/xtremelabs/droidsugar/fakes/FakeDialog.java
index 6eaf441..e958b99 100644
--- a/src/com/xtremelabs/droidsugar/fakes/FakeDialog.java
+++ b/src/com/xtremelabs/droidsugar/fakes/FakeDialog.java
@@ -5,6 +5,7 @@
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.view.View;
+import android.view.Window;
 import com.xtremelabs.droidsugar.util.Implements;
 
 import java.lang.reflect.Method;
@@ -24,6 +25,7 @@
     private DialogInterface.OnDismissListener onDismissListener;
     public CharSequence title;
     private DialogInterface.OnCancelListener onCancelListener;
+    private Window window;
 
     public static void reset() {
         latestDialog = null;
@@ -116,4 +118,11 @@
     public void setOnCancelListener(final DialogInterface.OnCancelListener listener) {
         this.onCancelListener = listener;
     }
+
+    public Window getWindow() {
+        if(window == null) {
+            window = new TestWindow(realDialog.getContext());
+        }
+        return window;
+    }
 }
diff --git a/src/com/xtremelabs/droidsugar/fakes/TestWindow.java b/src/com/xtremelabs/droidsugar/fakes/TestWindow.java
new file mode 100644
index 0000000..f72fa53
--- /dev/null
+++ b/src/com/xtremelabs/droidsugar/fakes/TestWindow.java
@@ -0,0 +1,159 @@
+package com.xtremelabs.droidsugar.fakes;
+
+import android.content.Context;
+import android.content.res.Configuration;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.*;
+
+public class TestWindow extends Window {
+    public int flags;
+    public int requestedFeatureId;
+    public int featureDrawableResourceFeatureId;
+    public int featureDrawableResourceResId;
+
+    TestWindow(Context context) {
+        super(context);
+    }
+
+    @Override public boolean requestFeature(int featureId) {
+        this.requestedFeatureId = featureId;
+        return true;
+    }
+
+    @Override public void setFlags(int flags, int mask) {
+        this.flags = (flags&~mask) | (flags&mask);
+    }
+
+    @Override public void addFlags(int flags) {
+        setFlags(flags, flags);
+    }
+
+    @Override public boolean isFloating() {
+        return false;
+    }
+
+    @Override public void setContentView(int layoutResID) {
+    }
+
+    @Override public void setContentView(View view) {
+    }
+
+    @Override public void setContentView(View view, ViewGroup.LayoutParams params) {
+    }
+
+    @Override public void addContentView(View view, ViewGroup.LayoutParams params) {
+    }
+
+    @Override public View getCurrentFocus() {
+        return null;
+    }
+
+    @Override public LayoutInflater getLayoutInflater() {
+        return null;
+    }
+
+    @Override public void setTitle(CharSequence title) {
+    }
+
+    @Override public void setTitleColor(int textColor) {
+    }
+
+    @Override public void openPanel(int featureId, KeyEvent event) {
+    }
+
+    @Override public void closePanel(int featureId) {
+    }
+
+    @Override public void togglePanel(int featureId, KeyEvent event) {
+    }
+
+    @Override public boolean performPanelShortcut(int featureId, int keyCode, KeyEvent event, int flags) {
+        return false;
+    }
+
+    @Override public boolean performPanelIdentifierAction(int featureId, int id, int flags) {
+        return false;
+    }
+
+    @Override public void closeAllPanels() {
+    }
+
+    @Override public boolean performContextMenuIdentifierAction(int id, int flags) {
+        return false;
+    }
+
+    @Override public void onConfigurationChanged(Configuration newConfig) {
+    }
+
+    @Override public void setBackgroundDrawable(Drawable drawable) {
+    }
+
+    @Override public void setFeatureDrawableResource(int featureId, int resId) {
+        featureDrawableResourceFeatureId = featureId;
+        featureDrawableResourceResId = resId;
+    }
+
+    @Override public void setFeatureDrawableUri(int featureId, Uri uri) {
+    }
+
+    @Override public void setFeatureDrawable(int featureId, Drawable drawable) {
+    }
+
+    @Override public void setFeatureDrawableAlpha(int featureId, int alpha) {
+    }
+
+    @Override public void setFeatureInt(int featureId, int value) {
+    }
+
+    @Override public void takeKeyEvents(boolean get) {
+    }
+
+    @Override public boolean superDispatchKeyEvent(KeyEvent event) {
+        return false;
+    }
+
+    @Override public boolean superDispatchTouchEvent(MotionEvent event) {
+        return false;
+    }
+
+    @Override public boolean superDispatchTrackballEvent(MotionEvent event) {
+        return false;
+    }
+
+    @Override public View getDecorView() {
+        return null;
+    }
+
+    @Override public View peekDecorView() {
+        return null;
+    }
+
+    @Override public Bundle saveHierarchyState() {
+        return null;
+    }
+
+    @Override public void restoreHierarchyState(Bundle savedInstanceState) {
+    }
+
+    @Override protected void onActive() {
+    }
+
+    @Override public void setChildDrawable(int featureId, Drawable drawable) {
+    }
+
+    @Override public void setChildInt(int featureId, int value) {
+    }
+
+    @Override public boolean isShortcutKey(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override public void setVolumeControlStream(int streamType) {
+    }
+
+    @Override public int getVolumeControlStream() {
+        return 0;
+    }
+}