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

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

Issue 974723002: OOPIF: Replicate dynamic window.name updates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Nasko's nits Created 5 years, 9 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
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 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 const GURL& url, 468 const GURL& url,
469 const std::string& error_type) { 469 const std::string& error_type) {
470 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); 470 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
471 args->SetBoolean(guestview::kIsTopLevel, is_top_level); 471 args->SetBoolean(guestview::kIsTopLevel, is_top_level);
472 args->SetString(guestview::kUrl, url.possibly_invalid_spec()); 472 args->SetString(guestview::kUrl, url.possibly_invalid_spec());
473 args->SetString(guestview::kReason, error_type); 473 args->SetString(guestview::kReason, error_type);
474 DispatchEventToView( 474 DispatchEventToView(
475 new GuestViewBase::Event(webview::kEventLoadAbort, args.Pass())); 475 new GuestViewBase::Event(webview::kEventLoadAbort, args.Pass()));
476 } 476 }
477 477
478 void WebViewGuest::OnFrameNameChanged(bool is_top_level,
479 const std::string& name) {
480 if (!is_top_level)
481 return;
482
483 if (name_ == name)
484 return;
485
486 ReportFrameNameChange(name);
487 }
488
489 void WebViewGuest::CreateNewGuestWebViewWindow( 478 void WebViewGuest::CreateNewGuestWebViewWindow(
490 const content::OpenURLParams& params) { 479 const content::OpenURLParams& params) {
491 GuestViewManager* guest_manager = 480 GuestViewManager* guest_manager =
492 GuestViewManager::FromBrowserContext(browser_context()); 481 GuestViewManager::FromBrowserContext(browser_context());
493 // Set the attach params to use the same partition as the opener. 482 // Set the attach params to use the same partition as the opener.
494 // We pull the partition information from the site's URL, which is of the 483 // We pull the partition information from the site's URL, which is of the
495 // form guest://site/{persist}?{partition_name}. 484 // form guest://site/{persist}?{partition_name}.
496 const GURL& site_url = web_contents()->GetSiteInstance()->GetSiteURL(); 485 const GURL& site_url = web_contents()->GetSiteInstance()->GetSiteURL();
497 const std::string storage_partition_id = 486 const std::string storage_partition_id =
498 GetStoragePartitionIdFromSiteURL(site_url); 487 GetStoragePartitionIdFromSiteURL(site_url);
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 DispatchEventToView( 707 DispatchEventToView(
719 new GuestViewBase::Event(webview::kEventLoadStart, args.Pass())); 708 new GuestViewBase::Event(webview::kEventLoadStart, args.Pass()));
720 } 709 }
721 710
722 void WebViewGuest::DocumentLoadedInFrame( 711 void WebViewGuest::DocumentLoadedInFrame(
723 content::RenderFrameHost* render_frame_host) { 712 content::RenderFrameHost* render_frame_host) {
724 if (web_view_guest_delegate_) 713 if (web_view_guest_delegate_)
725 web_view_guest_delegate_->OnDocumentLoadedInFrame(render_frame_host); 714 web_view_guest_delegate_->OnDocumentLoadedInFrame(render_frame_host);
726 } 715 }
727 716
728 bool WebViewGuest::OnMessageReceived(const IPC::Message& message,
729 RenderFrameHost* render_frame_host) {
730 bool handled = true;
731 IPC_BEGIN_MESSAGE_MAP(WebViewGuest, message)
732 IPC_MESSAGE_HANDLER(ExtensionHostMsg_FrameNameChanged, OnFrameNameChanged)
733 IPC_MESSAGE_UNHANDLED(handled = false)
734 IPC_END_MESSAGE_MAP()
735 return handled;
736 }
737
738 void WebViewGuest::RenderProcessGone(base::TerminationStatus status) { 717 void WebViewGuest::RenderProcessGone(base::TerminationStatus status) {
739 // Cancel all find sessions in progress. 718 // Cancel all find sessions in progress.
740 find_helper_.CancelAllFindSessions(); 719 find_helper_.CancelAllFindSessions();
741 720
742 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); 721 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
743 args->SetInteger(webview::kProcessId, 722 args->SetInteger(webview::kProcessId,
744 web_contents()->GetRenderProcessHost()->GetID()); 723 web_contents()->GetRenderProcessHost()->GetID());
745 args->SetString(webview::kReason, TerminationStatusToString(status)); 724 args->SetString(webview::kReason, TerminationStatusToString(status));
746 DispatchEventToView( 725 DispatchEventToView(
747 new GuestViewBase::Event(webview::kEventExit, args.Pass())); 726 new GuestViewBase::Event(webview::kEventExit, args.Pass()));
748 } 727 }
749 728
750 void WebViewGuest::UserAgentOverrideSet(const std::string& user_agent) { 729 void WebViewGuest::UserAgentOverrideSet(const std::string& user_agent) {
751 content::NavigationController& controller = web_contents()->GetController(); 730 content::NavigationController& controller = web_contents()->GetController();
752 content::NavigationEntry* entry = controller.GetVisibleEntry(); 731 content::NavigationEntry* entry = controller.GetVisibleEntry();
753 if (!entry) 732 if (!entry)
754 return; 733 return;
755 entry->SetIsOverridingUserAgent(!user_agent.empty()); 734 entry->SetIsOverridingUserAgent(!user_agent.empty());
756 web_contents()->GetController().Reload(false); 735 web_contents()->GetController().Reload(false);
757 } 736 }
758 737
738 void WebViewGuest::FrameNameChanged(RenderFrameHost* render_frame_host,
739 const std::string& name) {
740 if (render_frame_host->GetParent())
741 return;
742
743 if (name_ == name)
744 return;
745
746 ReportFrameNameChange(name);
747 }
748
759 void WebViewGuest::ReportFrameNameChange(const std::string& name) { 749 void WebViewGuest::ReportFrameNameChange(const std::string& name) {
760 name_ = name; 750 name_ = name;
761 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); 751 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
762 args->SetString(webview::kName, name); 752 args->SetString(webview::kName, name);
763 DispatchEventToView( 753 DispatchEventToView(
764 new GuestViewBase::Event(webview::kEventFrameNameChanged, args.Pass())); 754 new GuestViewBase::Event(webview::kEventFrameNameChanged, args.Pass()));
765 } 755 }
766 756
767 void WebViewGuest::LoadHandlerCalled() { 757 void WebViewGuest::LoadHandlerCalled() {
768 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); 758 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
1269 WebViewGuest::From(owner_web_contents()->GetRenderProcessHost()->GetID(), 1259 WebViewGuest::From(owner_web_contents()->GetRenderProcessHost()->GetID(),
1270 new_window_instance_id); 1260 new_window_instance_id);
1271 if (!guest) 1261 if (!guest)
1272 return; 1262 return;
1273 1263
1274 if (!allow) 1264 if (!allow)
1275 guest->Destroy(); 1265 guest->Destroy();
1276 } 1266 }
1277 1267
1278 } // namespace extensions 1268 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/guest_view/web_view/web_view_guest.h ('k') | extensions/common/extension_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698