summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-07 23:49:48 +0000
committerxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-07 23:49:48 +0000
commit9a2c26235dda5f54a8af490b19213233b05da57e (patch)
tree038a3b6e19d660acb1aee86323a6d309a4fd8c31 /chrome
parent7b947813dafb0ad5e6e2eee08fd207e048a11eb2 (diff)
downloadchromium_src-9a2c26235dda5f54a8af490b19213233b05da57e.zip
chromium_src-9a2c26235dda5f54a8af490b19213233b05da57e.tar.gz
chromium_src-9a2c26235dda5f54a8af490b19213233b05da57e.tar.bz2
Use BubbleWindow for ChromeOS windows/dialogs.
BUG=chromium-os:7216 TEST=Verify all windows/dialogs use new bubble design, e.g. JS dialog, page info window, certificate view, extension install confirmation, save as dialog etc. Review URL: http://codereview.chromium.org/3538012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61885 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/external_protocol_dialog.cc3
-rw-r--r--chrome/browser/chromeos/login/eula_view.cc3
-rw-r--r--chrome/browser/chromeos/login/existing_user_controller.cc9
-rw-r--r--chrome/browser/chromeos/native_dialog_window.cc4
-rw-r--r--chrome/browser/chromeos/network_message_observer.cc3
-rw-r--r--chrome/browser/chromeos/options/internet_page_view.cc3
-rw-r--r--chrome/browser/chromeos/options/language_config_view.cc5
-rw-r--r--chrome/browser/chromeos/options/options_window_view.cc7
-rw-r--r--chrome/browser/chromeos/status/network_menu.cc15
-rw-r--r--chrome/browser/views/about_chrome_view.cc3
-rw-r--r--chrome/browser/views/extensions/extension_install_prompt2.cc3
-rw-r--r--chrome/browser/views/frame/browser_view.cc5
-rw-r--r--chrome/browser/views/html_dialog_view.cc3
-rw-r--r--chrome/browser/views/js_modal_dialog_views.cc13
-rw-r--r--chrome/browser/views/modal_dialog_delegate.cc5
-rw-r--r--chrome/browser/views/page_info_window_view.cc3
-rw-r--r--chrome/browser/views/window.cc26
-rw-r--r--chrome/browser/views/window.h29
-rw-r--r--chrome/chrome_browser.gypi4
19 files changed, 106 insertions, 40 deletions
diff --git a/chrome/browser/chromeos/external_protocol_dialog.cc b/chrome/browser/chromeos/external_protocol_dialog.cc
index 2c53a29..e0d799f 100644
--- a/chrome/browser/chromeos/external_protocol_dialog.cc
+++ b/chrome/browser/chromeos/external_protocol_dialog.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_contents_view.h"
#include "chrome/browser/tab_contents/tab_util.h"
+#include "chrome/browser/views/window.h"
#include "googleurl/src/gurl.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -107,5 +108,5 @@ ExternalProtocolDialog::ExternalProtocolDialog(TabContents* tab_contents,
// Dialog is top level if we don't have a tab_contents associated with us.
parent_window = NULL;
}
- views::Window::CreateChromeWindow(parent_window, gfx::Rect(), this)->Show();
+ browser::CreateViewsWindow(parent_window, gfx::Rect(), this)->Show();
}
diff --git a/chrome/browser/chromeos/login/eula_view.cc b/chrome/browser/chromeos/login/eula_view.cc
index bcb2778..13738ea 100644
--- a/chrome/browser/chromeos/login/eula_view.cc
+++ b/chrome/browser/chromeos/login/eula_view.cc
@@ -25,6 +25,7 @@
#include "chrome/browser/renderer_host/site_instance.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/views/dom_view.h"
+#include "chrome/browser/views/window.h"
#include "chrome/common/native_web_keyboard_event.h"
#include "chrome/common/url_constants.h"
#include "cros/chromeos_cryptohome.h"
@@ -372,7 +373,7 @@ void EulaView::LinkActivated(views::Link* source, int event_flags) {
chromeos::CryptohomeTpmGetPassword(&password)) {
TpmInfoView* view = new TpmInfoView(ASCIIToWide(password));
view->Init();
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetNativeWindow(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc
index d317e7b..269f4d7 100644
--- a/chrome/browser/chromeos/login/existing_user_controller.cc
+++ b/chrome/browser/chromeos/login/existing_user_controller.cc
@@ -28,6 +28,7 @@
#include "chrome/browser/chromeos/login/message_bubble.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/chromeos/wm_ipc.h"
+#include "chrome/browser/views/window.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/net/gaia/google_service_auth_error.h"
#include "gfx/native_widget_types.h"
@@ -394,7 +395,7 @@ void ExistingUserController::OnLoginFailure(const LoginFailure& failure) {
CaptchaView* view =
new CaptchaView(failure.error().captcha().image_url);
view->set_delegate(this);
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetNativeWindow(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
@@ -509,9 +510,9 @@ void ExistingUserController::OnPasswordChangeDetected(
}
PasswordChangedView* view = new PasswordChangedView(this);
- views::Window* window = views::Window::CreateChromeWindow(GetNativeWindow(),
- gfx::Rect(),
- view);
+ views::Window* window = browser::CreateViewsWindow(GetNativeWindow(),
+ gfx::Rect(),
+ view);
window->SetIsAlwaysOnTop(true);
window->Show();
}
diff --git a/chrome/browser/chromeos/native_dialog_window.cc b/chrome/browser/chromeos/native_dialog_window.cc
index 200dd62..003912e 100644
--- a/chrome/browser/chromeos/native_dialog_window.cc
+++ b/chrome/browser/chromeos/native_dialog_window.cc
@@ -10,6 +10,7 @@
#include "base/logging.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/chromeos/frame/bubble_window.h"
+#include "chrome/browser/views/window.h"
#include "views/controls/native/native_view_host.h"
#include "views/window/dialog_delegate.h"
#include "views/window/non_client_view.h"
@@ -218,6 +219,7 @@ void NativeDialogHost::Init() {
gtk_widget_show_all(contents);
contents_view_ = new views::NativeViewHost();
+ // TODO(xiyuan): Find a better way to get proper background.
contents_view_->set_background(views::Background::CreateSolidBackground(
BubbleWindow::kBackgroundColor));
AddChildView(contents_view_);
@@ -265,7 +267,7 @@ void ShowNativeDialog(gfx::NativeWindow parent,
const gfx::Size& min_size) {
NativeDialogHost* native_dialog_host =
new NativeDialogHost(native_dialog, flags, size, min_size);
- BubbleWindow::Create(parent, gfx::Rect(), native_dialog_host);
+ browser::CreateViewsWindow(parent, gfx::Rect(), native_dialog_host);
native_dialog_host->window()->Show();
}
diff --git a/chrome/browser/chromeos/network_message_observer.cc b/chrome/browser/chromeos/network_message_observer.cc
index 733545d..e0bc9d9 100644
--- a/chrome/browser/chromeos/network_message_observer.cc
+++ b/chrome/browser/chromeos/network_message_observer.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/cros/network_library.h"
#include "chrome/browser/chromeos/options/network_config_view.h"
+#include "chrome/browser/views/window.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "views/window/dialog_delegate.h"
@@ -48,7 +49,7 @@ void NetworkMessageObserver::CreateModalPopup(views::WindowDelegate* view) {
true);
}
DCHECK(browser);
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
browser->window()->GetNativeHandle(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
diff --git a/chrome/browser/chromeos/options/internet_page_view.cc b/chrome/browser/chromeos/options/internet_page_view.cc
index a095f3b..c22e1c5 100644
--- a/chrome/browser/chromeos/options/internet_page_view.cc
+++ b/chrome/browser/chromeos/options/internet_page_view.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/chromeos/options/network_config_view.h"
#include "chrome/browser/chromeos/options/options_window_view.h"
#include "chrome/browser/chromeos/status/network_menu.h"
+#include "chrome/browser/views/window.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "views/controls/button/native_button.h"
@@ -216,7 +217,7 @@ void NetworkSection::AddNetwork(int id, const SkBitmap& icon,
}
void NetworkSection::CreateModalPopup(views::WindowDelegate* view) {
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetOptionsViewParent(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
diff --git a/chrome/browser/chromeos/options/language_config_view.cc b/chrome/browser/chromeos/options/language_config_view.cc
index 1ee7845..95e0aa9 100644
--- a/chrome/browser/chromeos/options/language_config_view.cc
+++ b/chrome/browser/chromeos/options/language_config_view.cc
@@ -20,6 +20,7 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/views/restart_message_box.h"
+#include "chrome/browser/views/window.h"
#include "chrome/common/notification_type.h"
#include "chrome/common/pref_names.h"
#include "gfx/font.h"
@@ -161,7 +162,7 @@ void LanguageConfigView::ButtonPressed(
DLOG(FATAL) << "Config view not found: " << button->input_method_id();
return;
}
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetOptionsViewParent(), gfx::Rect(), config_view);
window->SetIsAlwaysOnTop(true);
window->Show();
@@ -323,7 +324,7 @@ void LanguageConfigView::InitControlLayout() {
void LanguageConfigView::Show(Profile* profile, gfx::NativeWindow parent) {
UserMetrics::RecordAction(UserMetricsAction("LanguageConfigView_Open"));
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
parent, gfx::Rect(), new LanguageConfigView(profile));
window->SetIsAlwaysOnTop(true);
window->Show();
diff --git a/chrome/browser/chromeos/options/options_window_view.cc b/chrome/browser/chromeos/options/options_window_view.cc
index b9602f21..3247430 100644
--- a/chrome/browser/chromeos/options/options_window_view.cc
+++ b/chrome/browser/chromeos/options/options_window_view.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/views/accessible_view_helper.h"
+#include "chrome/browser/views/window.h"
#include "chrome/browser/window_sizer.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/pref_names.h"
@@ -379,9 +380,9 @@ void ShowOptionsWindow(OptionsPage page,
chromeos::CloseOptionsWindow();
OptionsWindowView::instance_ = new OptionsWindowView(profile);
- views::Window::CreateChromeWindow(chromeos::GetOptionsViewParent(),
- gfx::Rect(),
- OptionsWindowView::instance_);
+ browser::CreateViewsWindow(chromeos::GetOptionsViewParent(),
+ gfx::Rect(),
+ OptionsWindowView::instance_);
OptionsWindowView::instance_->ShowOptionsPage(page, highlight_group);
}
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc
index c90ad02..11b7aed 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/url_constants.h"
+#include "chrome/browser/views/window.h"
#include "gfx/canvas_skia.h"
#include "gfx/skbitmap_operations.h"
#include "grit/generated_resources.h"
@@ -106,9 +107,9 @@ void NetworkMenu::ActivatedAt(int index) {
} else if (flags & FLAG_OTHER_NETWORK) {
NetworkConfigView* view = new NetworkConfigView();
view->set_browser_mode(IsBrowserMode());
- views::Window* window = views::Window::CreateChromeWindow(GetNativeWindow(),
- gfx::Rect(),
- view);
+ views::Window* window = browser::CreateViewsWindow(GetNativeWindow(),
+ gfx::Rect(),
+ view);
window->SetIsAlwaysOnTop(true);
window->Show();
view->SetLoginTextfieldFocus();
@@ -121,7 +122,7 @@ void NetworkMenu::ActivatedAt(int index) {
NetworkConfigView* view =
new NetworkConfigView(cros->ethernet_network());
view->set_browser_mode(IsBrowserMode());
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetNativeWindow(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
@@ -144,7 +145,7 @@ void NetworkMenu::ActivatedAt(int index) {
// If we are already connected, open the config dialog.
NetworkConfigView* view = new NetworkConfigView(wifi, false);
view->set_browser_mode(IsBrowserMode());
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetNativeWindow(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
@@ -161,7 +162,7 @@ void NetworkMenu::ActivatedAt(int index) {
} else {
NetworkConfigView* view = new NetworkConfigView(wifi, true);
view->set_browser_mode(IsBrowserMode());
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetNativeWindow(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
@@ -187,7 +188,7 @@ void NetworkMenu::ActivatedAt(int index) {
} else {
NetworkConfigView* view = new NetworkConfigView(cellular);
view->set_browser_mode(IsBrowserMode());
- views::Window* window = views::Window::CreateChromeWindow(
+ views::Window* window = browser::CreateViewsWindow(
GetNativeWindow(), gfx::Rect(), view);
window->SetIsAlwaysOnTop(true);
window->Show();
diff --git a/chrome/browser/views/about_chrome_view.cc b/chrome/browser/views/about_chrome_view.cc
index 03f96206..160cbf4 100644
--- a/chrome/browser/views/about_chrome_view.cc
+++ b/chrome/browser/views/about_chrome_view.cc
@@ -20,6 +20,7 @@
#include "chrome/browser/platform_util.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/views/accessible_view_helper.h"
+#include "chrome/browser/views/window.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_version_info.h"
#include "chrome/common/pref_names.h"
@@ -81,7 +82,7 @@ namespace browser {
views::Window* ShowAboutChromeView(gfx::NativeWindow parent,
Profile* profile) {
views::Window* about_chrome_window =
- views::Window::CreateChromeWindow(parent,
+ browser::CreateViewsWindow(parent,
gfx::Rect(),
new AboutChromeView(profile));
about_chrome_window->Show();
diff --git a/chrome/browser/views/extensions/extension_install_prompt2.cc b/chrome/browser/views/extensions/extension_install_prompt2.cc
index 5b0ed3a..467ae20 100644
--- a/chrome/browser/views/extensions/extension_install_prompt2.cc
+++ b/chrome/browser/views/extensions/extension_install_prompt2.cc
@@ -9,6 +9,7 @@
#include "chrome/browser/browser_window.h"
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/common/extensions/extension.h"
+#include "chrome/browser/views/window.h"
#include "grit/generated_resources.h"
#include "views/controls/image_view.h"
#include "views/controls/label.h"
@@ -312,7 +313,7 @@ void ExtensionInstallUI::ShowExtensionInstallUIPrompt2Impl(
return;
}
- views::Window::CreateChromeWindow(window->GetNativeHandle(), gfx::Rect(),
+ browser::CreateViewsWindow(window->GetNativeHandle(), gfx::Rect(),
new InstallDialogContent2(delegate, extension, icon, permissions))
->Show();
}
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index 4cd42ba..a459999 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -53,6 +53,7 @@
#include "chrome/browser/views/theme_install_bubble_view.h"
#include "chrome/browser/views/toolbar_view.h"
#include "chrome/browser/views/update_recommended_message_box.h"
+#include "chrome/browser/views/window.h"
#include "chrome/browser/window_sizer.h"
#include "chrome/browser/wrench_menu_model.h"
#include "chrome/common/chrome_switches.h"
@@ -1163,8 +1164,8 @@ void BrowserView::ShowThemeInstallBubble() {
void BrowserView::ConfirmBrowserCloseWithPendingDownloads() {
DownloadInProgressConfirmDialogDelegate* delegate =
new DownloadInProgressConfirmDialogDelegate(browser_.get());
- views::Window::CreateChromeWindow(GetNativeHandle(), gfx::Rect(),
- delegate)->Show();
+ browser::CreateViewsWindow(GetNativeHandle(), gfx::Rect(),
+ delegate)->Show();
}
void BrowserView::ShowHTMLDialog(HtmlDialogUIDelegate* delegate,
diff --git a/chrome/browser/views/html_dialog_view.cc b/chrome/browser/views/html_dialog_view.cc
index d2f4c04..7d12d78 100644
--- a/chrome/browser/views/html_dialog_view.cc
+++ b/chrome/browser/views/html_dialog_view.cc
@@ -7,6 +7,7 @@
#include "app/keyboard_codes.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/views/window.h"
#include "chrome/common/native_web_keyboard_event.h"
#include "views/widget/root_view.h"
#include "views/widget/widget.h"
@@ -23,7 +24,7 @@ void ShowHtmlDialogView(gfx::NativeWindow parent, Profile* profile,
HtmlDialogUIDelegate* delegate) {
HtmlDialogView* html_view =
new HtmlDialogView(profile, delegate);
- views::Window::CreateChromeWindow(parent, gfx::Rect(), html_view);
+ browser::CreateViewsWindow(parent, gfx::Rect(), html_view);
html_view->InitDialog();
html_view->window()->Show();
}
diff --git a/chrome/browser/views/js_modal_dialog_views.cc b/chrome/browser/views/js_modal_dialog_views.cc
index b8ee8cc..a60f943 100644
--- a/chrome/browser/views/js_modal_dialog_views.cc
+++ b/chrome/browser/views/js_modal_dialog_views.cc
@@ -8,14 +8,11 @@
#include "app/l10n_util.h"
#include "app/message_box_flags.h"
#include "chrome/browser/app_modal_dialog.h"
+#include "chrome/browser/views/window.h"
#include "grit/generated_resources.h"
#include "views/controls/message_box_view.h"
#include "views/window/window.h"
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/frame/bubble_window.h"
-#endif // defined(OS_CHROMEOS)
-
////////////////////////////////////////////////////////////////////////////////
// JSModalDialogViews, public:
@@ -153,12 +150,6 @@ NativeAppModalDialog* NativeAppModalDialog::CreateNativeJavaScriptPrompt(
gfx::NativeWindow parent_window) {
JSModalDialogViews* d = new JSModalDialogViews(dialog);
-#if defined(OS_CHROMEOS)
- // Use bubble frame for JS dialog on ChromeOS.
- chromeos::BubbleWindow::Create(parent_window, gfx::Rect(), d);
-#else
- views::Window::CreateChromeWindow(parent_window, gfx::Rect(), d);
-#endif
-
+ browser::CreateViewsWindow(parent_window, gfx::Rect(), d);
return d;
}
diff --git a/chrome/browser/views/modal_dialog_delegate.cc b/chrome/browser/views/modal_dialog_delegate.cc
index a0f91ba..a08d611 100644
--- a/chrome/browser/views/modal_dialog_delegate.cc
+++ b/chrome/browser/views/modal_dialog_delegate.cc
@@ -1,10 +1,11 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/views/modal_dialog_delegate.h"
#include "base/logging.h"
+#include "chrome/browser/views/window.h"
#include "views/window/window.h"
void ModalDialogDelegate::ShowModalDialog() {
@@ -14,7 +15,7 @@ void ModalDialogDelegate::ShowModalDialog() {
if (!root_hwnd) {
Cancel();
} else {
- dialog_ = views::Window::CreateChromeWindow(root_hwnd, gfx::Rect(), this);
+ dialog_ = browser::CreateViewsWindow(root_hwnd, gfx::Rect(), this);
dialog_->Show();
}
}
diff --git a/chrome/browser/views/page_info_window_view.cc b/chrome/browser/views/page_info_window_view.cc
index 4e6057b..eee48ce 100644
--- a/chrome/browser/views/page_info_window_view.cc
+++ b/chrome/browser/views/page_info_window_view.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/certificate_viewer.h"
#include "chrome/browser/page_info_model.h"
#include "chrome/browser/page_info_window.h"
+#include "chrome/browser/views/window.h"
#include "chrome/common/pref_names.h"
#include "grit/locale_settings.h"
#include "grit/generated_resources.h"
@@ -179,7 +180,7 @@ void PageInfoWindowView::Init(gfx::NativeWindow parent) {
}
}
- views::Window::CreateChromeWindow(parent, gfx::Rect(), this);
+ browser::CreateViewsWindow(parent, gfx::Rect(), this);
}
gfx::Size PageInfoWindowView::GetPreferredSize() {
diff --git a/chrome/browser/views/window.cc b/chrome/browser/views/window.cc
new file mode 100644
index 0000000..bd8a304
--- /dev/null
+++ b/chrome/browser/views/window.cc
@@ -0,0 +1,26 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/views/window.h"
+
+#include "gfx/rect.h"
+#include "views/window/window.h"
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/frame/bubble_window.h"
+#endif // defined(OS_CHROMEOS)
+
+namespace browser {
+
+views::Window* CreateViewsWindow(gfx::NativeWindow parent,
+ const gfx::Rect& bounds,
+ views::WindowDelegate* delegate) {
+#if defined(OS_CHROMEOS)
+ return chromeos::BubbleWindow::Create(parent, gfx::Rect(), delegate);
+#else
+ return views::Window::CreateChromeWindow(parent, gfx::Rect(), delegate);
+#endif
+}
+
+} // namespace browser
diff --git a/chrome/browser/views/window.h b/chrome/browser/views/window.h
new file mode 100644
index 0000000..c2f2bb4
--- /dev/null
+++ b/chrome/browser/views/window.h
@@ -0,0 +1,29 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_VIEWS_WINDOW_H_
+#define CHROME_BROWSER_VIEWS_WINDOW_H_
+#pragma once
+
+#include "gfx/native_widget_types.h"
+
+namespace gfx {
+class Rect;
+}
+
+namespace views {
+class Window;
+class WindowDelegate;
+}
+
+namespace browser {
+
+// Create a window for given |delegate| using default frame view.
+views::Window* CreateViewsWindow(gfx::NativeWindow parent,
+ const gfx::Rect& bounds,
+ views::WindowDelegate* delegate);
+
+} // namespace browser
+
+#endif // CHROME_BROWSER_VIEWS_WINDOW_H_
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index fb12b6f..7b44bf8 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -3196,6 +3196,8 @@
'browser/views/update_recommended_message_box.h',
'browser/views/user_data_dir_dialog.cc',
'browser/views/user_data_dir_dialog.h',
+ 'browser/views/window.cc',
+ 'browser/views/window.h',
'browser/views/wrench_menu.cc',
'browser/views/wrench_menu.h',
'browser/visitedlink_master.cc',
@@ -3815,6 +3817,8 @@
['include', '^browser/views/unhandled_keyboard_event_handler.h'],
['include', '^browser/views/view_text_utils.cc'],
['include', '^browser/views/view_text_utils.h'],
+ ['include', '^browser/views/window.cc'],
+ ['include', '^browser/views/window.h'],
['include', '^browser/views/wrench_menu.cc'],
['include', '^browser/views/wrench_menu.h'],
['include', '^browser/window_sizer.cc'],