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

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

Issue 334923002: Remove ContentBrowserClient::GuestWebContentsAttached (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_adview
Patch Set: Added missing file Created 6 years, 6 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: chrome/browser/guest_view/web_view/web_view_guest.cc
diff --git a/chrome/browser/guest_view/web_view/web_view_guest.cc b/chrome/browser/guest_view/web_view/web_view_guest.cc
index 0faf2bafa9b1990664fd47147d36cda21dab5aa0..a50cb468edaf94e006457bc3e6bd437491cf3d2b 100644
--- a/chrome/browser/guest_view/web_view/web_view_guest.cc
+++ b/chrome/browser/guest_view/web_view/web_view_guest.cc
@@ -186,9 +186,7 @@ void AttachWebViewHelpers(WebContents* contents) {
WebViewGuest::WebViewGuest(int guest_instance_id,
WebContents* guest_web_contents,
const std::string& embedder_extension_id)
- : GuestView<WebViewGuest>(guest_instance_id,
- guest_web_contents,
- embedder_extension_id),
+ : GuestView<WebViewGuest>(guest_instance_id),
script_executor_(new extensions::ScriptExecutor(guest_web_contents,
&script_observers_)),
pending_context_menu_request_id_(0),
@@ -199,6 +197,7 @@ WebViewGuest::WebViewGuest(int guest_instance_id,
chromevox_injected_(false),
find_helper_(this),
javascript_dialog_helper_(this) {
+ Init(guest_web_contents, embedder_extension_id);
notification_registrar_.Add(
this, content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
content::Source<WebContents>(guest_web_contents));
@@ -384,28 +383,49 @@ scoped_ptr<base::ListValue> WebViewGuest::MenuModelToValue(
return items.Pass();
}
-void WebViewGuest::Attach(WebContents* embedder_web_contents,
- const base::DictionaryValue& args) {
+void WebViewGuest::DidAttach() {
+ AddWebViewToExtensionRendererState();
+
std::string name;
- args.GetString(webview::kName, &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.
- if (name_.empty())
- name_ = name;
+ if (extra_params()->GetString(webview::kName, &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.
+ if (name_.empty())
+ name_ = name;
+ }
ReportFrameNameChange(name_);
std::string user_agent_override;
- if (args.GetString(webview::kParameterUserAgentOverride,
- &user_agent_override)) {
+ if (extra_params()->GetString(webview::kParameterUserAgentOverride,
+ &user_agent_override)) {
SetUserAgentOverride(user_agent_override);
} else {
SetUserAgentOverride("");
}
- GuestViewBase::Attach(embedder_web_contents, args);
+ std::string src;
+ if (extra_params()->GetString("src", &src) && !src.empty())
+ NavigateGuest(src);
- AddWebViewToExtensionRendererState();
+ if (GetOpener()) {
+ // We need to do a navigation here if the target URL has changed between
+ // the time the WebContents was created and the time it was attached.
+ // We also need to do an initial navigation if a RenderView was never
+ // created for the new window in cases where there is no referrer.
+ PendingWindowMap::iterator it =
+ GetOpener()->pending_new_windows_.find(this);
+ if (it != GetOpener()->pending_new_windows_.end()) {
+ const NewWindowInfo& new_window_info = it->second;
+ NavigateGuest(new_window_info.url.spec());
+ } else {
+ NOTREACHED();
+ }
+
+ // Once a new guest is attached to the DOM of the embedder page, then the
+ // lifetime of the new guest is no longer managed by the opener guest.
+ GetOpener()->pending_new_windows_.erase(this);
+ }
}
void WebViewGuest::DidStopLoading() {
@@ -472,36 +492,6 @@ void WebViewGuest::CloseContents(WebContents* source) {
DispatchEvent(new GuestViewBase::Event(webview::kEventClose, args.Pass()));
}
-void WebViewGuest::DidAttach(const base::DictionaryValue& extra_params) {
- std::string src;
- if (extra_params.GetString("src", &src) && !src.empty())
- NavigateGuest(src);
-
- if (GetOpener()) {
- // We need to do a navigation here if the target URL has changed between
- // the time the WebContents was created and the time it was attached.
- // We also need to do an initial navigation if a RenderView was never
- // created for the new window in cases where there is no referrer.
- PendingWindowMap::iterator it =
- GetOpener()->pending_new_windows_.find(this);
- if (it != GetOpener()->pending_new_windows_.end()) {
- const NewWindowInfo& new_window_info = it->second;
- NavigateGuest(new_window_info.url.spec());
- } else {
- NOTREACHED();
- }
-
- // Once a new guest is attached to the DOM of the embedder page, then the
- // lifetime of the new guest is no longer managed by the opener guest.
- GetOpener()->pending_new_windows_.erase(this);
- }
-
- if (pending_reload_on_attachment_) {
- pending_reload_on_attachment_ = false;
- guest_web_contents()->GetController().Reload(false);
- }
-}
-
void WebViewGuest::FindReply(WebContents* source,
int request_id,
int number_of_matches,
@@ -843,6 +833,8 @@ WebViewGuest::SetPermissionResult WebViewGuest::SetPermission(
void WebViewGuest::SetUserAgentOverride(
const std::string& user_agent_override) {
+ if (!attached())
+ return;
is_overriding_user_agent_ = !user_agent_override.empty();
if (is_overriding_user_agent_) {
content::RecordAction(UserMetricsAction("WebView.Guest.OverrideUA"));
@@ -1056,12 +1048,6 @@ void WebViewGuest::UserAgentOverrideSet(const std::string& user_agent) {
if (!entry)
return;
entry->SetIsOverridingUserAgent(!user_agent.empty());
- if (!attached()) {
- // We cannot reload now because all resource loads are suspended until
- // attachment.
- pending_reload_on_attachment_ = true;
- return;
- }
guest_web_contents()->GetController().Reload(false);
}

Powered by Google App Engine
This is Rietveld 408576698