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

Side by Side Diff: extensions/browser/guest_view/web_view/web_view_guest.cc

Issue 1065413002: <webview>: Don't reset allowtransparency and allowscaling between createGuest and attachGuest (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « extensions/browser/guest_view/web_view/web_view_guest.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/guest_view/web_view/web_view_guest.h" 5 #include "extensions/browser/guest_view/web_view/web_view_guest.h"
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "content/public/browser/browser_context.h" 10 #include "content/public/browser/browser_context.h"
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 415
416 void WebViewGuest::GuestReady() { 416 void WebViewGuest::GuestReady() {
417 // The guest RenderView should always live in an isolated guest process. 417 // The guest RenderView should always live in an isolated guest process.
418 CHECK(web_contents()->GetRenderProcessHost()->IsIsolatedGuest()); 418 CHECK(web_contents()->GetRenderProcessHost()->IsIsolatedGuest());
419 Send(new ExtensionMsg_SetFrameName(web_contents()->GetRoutingID(), name_)); 419 Send(new ExtensionMsg_SetFrameName(web_contents()->GetRoutingID(), name_));
420 420
421 // We don't want to accidentally set the opacity of an interstitial page. 421 // We don't want to accidentally set the opacity of an interstitial page.
422 // WebContents::GetRenderWidgetHostView will return the RWHV of an 422 // WebContents::GetRenderWidgetHostView will return the RWHV of an
423 // interstitial page if one is showing at this time. We only want opacity 423 // interstitial page if one is showing at this time. We only want opacity
424 // to apply to web pages. 424 // to apply to web pages.
425 if (guest_opaque_) { 425 if (allow_transparency_) {
426 web_contents()->GetRenderViewHost()->GetView()->SetBackgroundColor(
427 SK_ColorTRANSPARENT);
428 } else {
426 web_contents() 429 web_contents()
427 ->GetRenderViewHost() 430 ->GetRenderViewHost()
428 ->GetView() 431 ->GetView()
429 ->SetBackgroundColorToDefault(); 432 ->SetBackgroundColorToDefault();
430 } else {
431 web_contents()->GetRenderViewHost()->GetView()->SetBackgroundColor(
432 SK_ColorTRANSPARENT);
433 } 433 }
434 } 434 }
435 435
436 void WebViewGuest::GuestSizeChangedDueToAutoSize(const gfx::Size& old_size, 436 void WebViewGuest::GuestSizeChangedDueToAutoSize(const gfx::Size& old_size,
437 const gfx::Size& new_size) { 437 const gfx::Size& new_size) {
438 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); 438 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
439 args->SetInteger(webview::kOldHeight, old_size.height()); 439 args->SetInteger(webview::kOldHeight, old_size.height());
440 args->SetInteger(webview::kOldWidth, old_size.width()); 440 args->SetInteger(webview::kOldWidth, old_size.width());
441 args->SetInteger(webview::kNewHeight, new_size.height()); 441 args->SetInteger(webview::kNewHeight, new_size.height());
442 args->SetInteger(webview::kNewWidth, new_size.width()); 442 args->SetInteger(webview::kNewWidth, new_size.width());
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 714
715 ClearDataInternal(remove_since, removal_mask, callback); 715 ClearDataInternal(remove_since, removal_mask, callback);
716 return true; 716 return true;
717 } 717 }
718 718
719 WebViewGuest::WebViewGuest(content::WebContents* owner_web_contents) 719 WebViewGuest::WebViewGuest(content::WebContents* owner_web_contents)
720 : GuestView<WebViewGuest>(owner_web_contents), 720 : GuestView<WebViewGuest>(owner_web_contents),
721 rules_registry_id_(RulesRegistryService::kInvalidRulesRegistryID), 721 rules_registry_id_(RulesRegistryService::kInvalidRulesRegistryID),
722 find_helper_(this), 722 find_helper_(this),
723 is_overriding_user_agent_(false), 723 is_overriding_user_agent_(false),
724 guest_opaque_(true), 724 allow_transparency_(false),
725 javascript_dialog_helper_(this), 725 javascript_dialog_helper_(this),
726 allow_scaling_(false), 726 allow_scaling_(false),
727 is_guest_fullscreen_(false), 727 is_guest_fullscreen_(false),
728 is_embedder_fullscreen_(false), 728 is_embedder_fullscreen_(false),
729 last_fullscreen_permission_was_allowed_by_embedder_(false), 729 last_fullscreen_permission_was_allowed_by_embedder_(false),
730 weak_ptr_factory_(this) { 730 weak_ptr_factory_(this) {
731 web_view_guest_delegate_.reset( 731 web_view_guest_delegate_.reset(
732 ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this)); 732 ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this));
733 } 733 }
734 734
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 SetName(name); 1011 SetName(name);
1012 } 1012 }
1013 if (attached()) 1013 if (attached())
1014 ReportFrameNameChange(name_); 1014 ReportFrameNameChange(name_);
1015 1015
1016 std::string user_agent_override; 1016 std::string user_agent_override;
1017 params.GetString(webview::kParameterUserAgentOverride, &user_agent_override); 1017 params.GetString(webview::kParameterUserAgentOverride, &user_agent_override);
1018 SetUserAgentOverride(user_agent_override); 1018 SetUserAgentOverride(user_agent_override);
1019 1019
1020 bool allow_transparency = false; 1020 bool allow_transparency = false;
1021 params.GetBoolean(webview::kAttributeAllowTransparency, &allow_transparency); 1021 if (params.GetBoolean(webview::kAttributeAllowTransparency,
1022 // We need to set the background opaque flag after navigation to ensure that 1022 &allow_transparency)) {
1023 // there is a RenderWidgetHostView available. 1023 // We need to set the background opaque flag after navigation to ensure that
1024 SetAllowTransparency(allow_transparency); 1024 // there is a RenderWidgetHostView available.
1025 SetAllowTransparency(allow_transparency);
1026 }
1025 1027
1026 bool allow_scaling = false; 1028 bool allow_scaling = false;
1027 params.GetBoolean(webview::kAttributeAllowScaling, &allow_scaling); 1029 if (params.GetBoolean(webview::kAttributeAllowScaling, &allow_scaling))
1028 SetAllowScaling(allow_scaling); 1030 SetAllowScaling(allow_scaling);
1029 1031
1030 bool is_pending_new_window = false; 1032 bool is_pending_new_window = false;
1031 if (GetOpener()) { 1033 if (GetOpener()) {
1032 // We need to do a navigation here if the target URL has changed between 1034 // We need to do a navigation here if the target URL has changed between
1033 // the time the WebContents was created and the time it was attached. 1035 // the time the WebContents was created and the time it was attached.
1034 // We also need to do an initial navigation if a RenderView was never 1036 // We also need to do an initial navigation if a RenderView was never
1035 // created for the new window in cases where there is no referrer. 1037 // created for the new window in cases where there is no referrer.
1036 auto it = GetOpener()->pending_new_windows_.find(this); 1038 auto it = GetOpener()->pending_new_windows_.find(this);
1037 if (it != GetOpener()->pending_new_windows_.end()) { 1039 if (it != GetOpener()->pending_new_windows_.end()) {
1038 const NewWindowInfo& new_window_info = it->second; 1040 const NewWindowInfo& new_window_info = it->second;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 DCHECK(zoom_controller); 1077 DCHECK(zoom_controller);
1076 double zoom_level = content::ZoomFactorToZoomLevel(zoom_factor); 1078 double zoom_level = content::ZoomFactorToZoomLevel(zoom_factor);
1077 zoom_controller->SetZoomLevel(zoom_level); 1079 zoom_controller->SetZoomLevel(zoom_level);
1078 } 1080 }
1079 1081
1080 void WebViewGuest::SetZoomMode(ZoomController::ZoomMode zoom_mode) { 1082 void WebViewGuest::SetZoomMode(ZoomController::ZoomMode zoom_mode) {
1081 ZoomController::FromWebContents(web_contents())->SetZoomMode(zoom_mode); 1083 ZoomController::FromWebContents(web_contents())->SetZoomMode(zoom_mode);
1082 } 1084 }
1083 1085
1084 void WebViewGuest::SetAllowTransparency(bool allow) { 1086 void WebViewGuest::SetAllowTransparency(bool allow) {
1085 if (guest_opaque_ != allow) 1087 if (allow_transparency_ == allow)
1086 return; 1088 return;
1087 1089
1088 guest_opaque_ = !allow; 1090 allow_transparency_ = allow;
1089 if (!web_contents()->GetRenderViewHost()->GetView()) 1091 if (!web_contents()->GetRenderViewHost()->GetView())
1090 return; 1092 return;
1091 1093
1092 if (guest_opaque_) { 1094 if (allow_transparency_) {
1095 web_contents()->GetRenderViewHost()->GetView()->SetBackgroundColor(
1096 SK_ColorTRANSPARENT);
1097 } else {
1093 web_contents() 1098 web_contents()
1094 ->GetRenderViewHost() 1099 ->GetRenderViewHost()
1095 ->GetView() 1100 ->GetView()
1096 ->SetBackgroundColorToDefault(); 1101 ->SetBackgroundColorToDefault();
1097 } else {
1098 web_contents()->GetRenderViewHost()->GetView()->SetBackgroundColor(
1099 SK_ColorTRANSPARENT);
1100 } 1102 }
1101 } 1103 }
1102 1104
1103 void WebViewGuest::SetAllowScaling(bool allow) { 1105 void WebViewGuest::SetAllowScaling(bool allow) {
1104 allow_scaling_ = allow; 1106 allow_scaling_ = allow;
1105 } 1107 }
1106 1108
1107 bool WebViewGuest::LoadDataWithBaseURL(const std::string& data_url, 1109 bool WebViewGuest::LoadDataWithBaseURL(const std::string& data_url,
1108 const std::string& base_url, 1110 const std::string& base_url,
1109 const std::string& virtual_url, 1111 const std::string& virtual_url,
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); 1398 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
1397 DispatchEventToView( 1399 DispatchEventToView(
1398 new GuestViewBase::Event(webview::kEventExitFullscreen, args.Pass())); 1400 new GuestViewBase::Event(webview::kEventExitFullscreen, args.Pass()));
1399 } 1401 }
1400 // Since we changed fullscreen state, sending a Resize message ensures that 1402 // Since we changed fullscreen state, sending a Resize message ensures that
1401 // renderer/ sees the change. 1403 // renderer/ sees the change.
1402 web_contents()->GetRenderViewHost()->WasResized(); 1404 web_contents()->GetRenderViewHost()->WasResized();
1403 } 1405 }
1404 1406
1405 } // namespace extensions 1407 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/guest_view/web_view/web_view_guest.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698