Introduce browser-agnostic web contents modal dialog positioning abstraction and implement for Views

Support positioning of the web contents modal dialog on a host window,
independent of the type of the host window. Also, support repositioning
the window when the host window geometry changes.

Implement the abstraction for the Views browser window and Views
web contents modal dialog.  The implementation moves the dialog to
the top overlapping the browser chrome and is enabled behind the
--enable-new-dialog-style flag.

Before/after screenshots at
https://code.google.com/p/chromium/issues/detail?id=157161#c46.  Visual
artifacts/incorrect layout within the client area are a result of the new style
dialog being a work in progress and will be addressed separately.

BUG=157161

Review URL: https://chromiumcodereview.appspot.com/13212007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191735 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h
index 534fd0d..133556a 100644
--- a/chrome/browser/ui/browser_window.h
+++ b/chrome/browser/ui/browser_window.h
@@ -28,6 +28,7 @@
 #if !defined(OS_MACOSX)
 class ToolbarView;
 #endif
+class WebContentsModalDialogHost;
 
 namespace autofill {
 class PasswordGenerator;
@@ -321,11 +322,9 @@
   // Construct a FindBar implementation for the |browser|.
   virtual FindBar* CreateFindBar() = 0;
 
-  // Updates the |top_y| where the top of the constrained window should be
-  // positioned. When implemented, the method returns true and the value of
-  // |top_y| is non-negative. When not implemented, the method returns false and
-  // the value of |top_y| is not defined.
-  virtual bool GetConstrainedWindowTopY(int* top_y) = 0;
+  // Return the WebContentsModalDialogHost for use in positioning web contents
+  // modal dialogs within the browser window.
+  virtual WebContentsModalDialogHost* GetWebContentsModalDialogHost() = 0;
 
   // Invoked when the preferred size of the contents in current tab has been
   // changed. We might choose to update the window size to accomodate this