Home | History | Annotate | Download | only in views
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
      6 #include "chrome/browser/ui/browser_dialogs.h"
      7 #include "chrome/browser/ui/webui/chrome_web_contents_handler.h"
      8 #include "ui/views/controls/webview/web_dialog_view.h"
      9 #include "ui/views/widget/widget.h"
     10 
     11 namespace chrome {
     12 
     13 // Declared in browser_dialogs.h so that others don't need to depend on our .h.
     14 gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent,
     15                                 content::BrowserContext* context,
     16                                 ui::WebDialogDelegate* delegate) {
     17   views::Widget* widget = NULL;
     18   views::WebDialogView* view =
     19       new views::WebDialogView(context, delegate, new ChromeWebContentsHandler);
     20   if (parent) {
     21     widget = views::Widget::CreateWindowWithParent(view, parent);
     22   } else {
     23     // We shouldn't be called with a NULL parent, but sometimes are.
     24     widget = views::Widget::CreateWindow(view);
     25   }
     26 
     27   // Observer is needed for ChromeVox extension to send messages between content
     28   // and background scripts.
     29   extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
     30       view->web_contents());
     31 
     32   widget->Show();
     33   return widget->GetNativeWindow();
     34 }
     35 
     36 }  // namespace chrome
     37