Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: extensions/browser/guest_view/web_view/web_view_guest.cc

Issue 584713002: Browser Plugin: Remove dependency on NPAPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_content_window
Patch Set: Updated histograms.xml Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/guest_view/web_view/web_view_guest.cc
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc
index d7afe16ea47a01312c45f9498b739d538c2c38f5..deb840e58ff34fcee684fa906eb28de17358b1f3 100644
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -18,6 +18,7 @@
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/resource_request_details.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/storage_partition.h"
@@ -244,7 +245,7 @@ void WebViewGuest::DidAttachToEmbedder() {
SetUpAutoSize();
std::string name;
- if (attach_params()->GetString(webview::kName, &name)) {
+ if (attach_params()->GetString(webview::kAttributeName, &name)) {
// If the guest window's name is empty, then the WebView tag's name is
// assigned. Otherwise, the guest window's name takes precedence over the
// WebView tag's name.
@@ -262,7 +263,7 @@ void WebViewGuest::DidAttachToEmbedder() {
}
std::string src;
- if (attach_params()->GetString("src", &src) && !src.empty())
+ if (attach_params()->GetString(webview::kAttributeSrc, &src) && !src.empty())
NavigateGuest(src);
if (GetOpener()) {
@@ -284,6 +285,13 @@ void WebViewGuest::DidAttachToEmbedder() {
// lifetime of the new guest is no longer managed by the opener guest.
GetOpener()->pending_new_windows_.erase(this);
}
+
+ bool allow_transparency = false;
+ attach_params()->GetBoolean(webview::kAttributeAllowTransparency,
+ &allow_transparency);
+ // We need to set the background opaque flag after navigation to ensure that
+ // there is a RenderWidgetHostView available.
+ SetAllowTransparency(allow_transparency);
}
void WebViewGuest::DidInitialize() {
@@ -331,6 +339,13 @@ void WebViewGuest::GuestReady() {
// The guest RenderView should always live in an isolated guest process.
CHECK(web_contents()->GetRenderProcessHost()->IsIsolatedGuest());
Send(new ExtensionMsg_SetFrameName(web_contents()->GetRoutingID(), name_));
+
+ // We don't want to accidentally set the opacity of an interstitial page.
+ // WebContents::GetRenderWidgetHostView will return the RWHV of an
+ // interstitial page if one is showing at this time. We only want opacity
+ // to apply to web pages.
+ web_contents()->GetRenderViewHost()->GetView()->
+ SetBackgroundOpaque(guest_opaque_);
}
void WebViewGuest::GuestSizeChangedDueToAutoSize(const gfx::Size& old_size,
@@ -618,6 +633,7 @@ WebViewGuest::WebViewGuest(content::BrowserContext* browser_context,
: GuestView<WebViewGuest>(browser_context, guest_instance_id),
find_helper_(this),
is_overriding_user_agent_(false),
+ guest_opaque_(true),
javascript_dialog_helper_(this) {
web_view_guest_delegate_.reset(
ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this));
@@ -955,6 +971,17 @@ void WebViewGuest::SetZoom(double zoom_factor) {
web_view_guest_delegate_->OnSetZoom(zoom_factor);
}
+void WebViewGuest::SetAllowTransparency(bool allow) {
+ if (guest_opaque_ != allow)
+ return;
+
+ guest_opaque_ = !allow;
+ if (!web_contents()->GetRenderViewHost()->GetView())
+ return;
+
+ web_contents()->GetRenderViewHost()->GetView()->SetBackgroundOpaque(!allow);
+}
+
void WebViewGuest::AddNewContents(content::WebContents* source,
content::WebContents* new_contents,
WindowOpenDisposition disposition,
« no previous file with comments | « extensions/browser/guest_view/web_view/web_view_guest.h ('k') | extensions/common/api/web_view_internal.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698