Index: chrome/browser/ui/views/extensions/native_app_window_views.cc |
diff --git a/chrome/browser/ui/views/extensions/native_app_window_views.cc b/chrome/browser/ui/views/extensions/native_app_window_views.cc |
index e84b7ac0321ffe19ba6e04e0eb563507d3576d9b..4a066f60ddd913d0c695dc34408558d3bd7eff6b 100644 |
--- a/chrome/browser/ui/views/extensions/native_app_window_views.cc |
+++ b/chrome/browser/ui/views/extensions/native_app_window_views.cc |
@@ -46,7 +46,9 @@ NativeAppWindowViews::NativeAppWindowViews( |
web_view_(NULL), |
window_(NULL), |
is_fullscreen_(false), |
- frameless_(create_params.frame == ShellWindow::FRAME_NONE) { |
+ frameless_(create_params.frame == ShellWindow::FRAME_NONE), |
+ transparent_background_(create_params.transparent_background) { |
+ Observe(shell_window_->web_contents()); |
minimum_size_ = create_params.minimum_size; |
maximum_size_ = create_params.maximum_size; |
@@ -391,6 +393,23 @@ void NativeAppWindowViews::OnWidgetActivationChanged(views::Widget* widget, |
shell_window_->OnNativeWindowChanged(); |
} |
+// WebContentsObserver implementation. |
+ |
+void NativeAppWindowViews::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); |
+ } |
+} |
+ |
// views::View implementation. |
void NativeAppWindowViews::Layout() { |