Index: chrome/browser/ui/views/extensions/shell_window_views.cc |
diff --git a/chrome/browser/ui/views/extensions/shell_window_views.cc b/chrome/browser/ui/views/extensions/shell_window_views.cc |
index cadd16b9102eb652df7c30bb8d7e872938162c53..4ee7994b024112ed2727b5f3c3d2e7f5c066869a 100644 |
--- a/chrome/browser/ui/views/extensions/shell_window_views.cc |
+++ b/chrome/browser/ui/views/extensions/shell_window_views.cc |
@@ -394,7 +394,9 @@ ShellWindowViews::ShellWindowViews(ShellWindow* shell_window, |
: shell_window_(shell_window), |
web_view_(NULL), |
is_fullscreen_(false), |
- frameless_(win_params.frame == ShellWindow::CreateParams::FRAME_NONE) { |
+ frameless_(win_params.frame == ShellWindow::CreateParams::FRAME_NONE), |
+ transparent_background_(win_params.transparent_background) { |
+ Observe(shell_window_->web_contents()); |
window_ = new views::Widget; |
views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
params.delegate = this; |
@@ -690,6 +692,21 @@ void ShellWindowViews::OnWidgetMove() { |
shell_window_->SaveWindowPosition(); |
} |
+void ShellWindowViews::RenderViewCreated( |
+ content::RenderViewHost* render_view_host) { |
+ if (transparent_background_) { |
+ // Use a background with transparency to trigger transparency in Webkit. |
+ SkBitmap background; |
+ background.setConfig(SkBitmap::kARGB_8888_Config, 1, 1); |
+ background.allocPixels(); |
+ background.eraseARGB(0x00, 0x00, 0x00, 0x00); |
+ |
+ content::RenderWidgetHostView* view = render_view_host->GetView(); |
+ DCHECK(view); |
+ view->SetBackground(background); |
+ } |
+} |
+ |
void ShellWindowViews::Layout() { |
DCHECK(web_view_); |
web_view_->SetBounds(0, 0, width(), height()); |