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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 23618036: Merge NOTIFICATION_RENDER_VIEW_HOST_CHANGED into NOTIFICATION_WEB_CONTENTS_SWAPPED. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 2848 matching lines...) Expand 10 before | Expand all | Expand 10 after
2859 std::pair<NavigationEntry*, bool> details = 2859 std::pair<NavigationEntry*, bool> details =
2860 std::make_pair(entry, explicit_set); 2860 std::make_pair(entry, explicit_set);
2861 NotificationService::current()->Notify( 2861 NotificationService::current()->Notify(
2862 NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED, 2862 NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED,
2863 Source<WebContents>(this), 2863 Source<WebContents>(this),
2864 Details<std::pair<NavigationEntry*, bool> >(&details)); 2864 Details<std::pair<NavigationEntry*, bool> >(&details));
2865 2865
2866 return true; 2866 return true;
2867 } 2867 }
2868 2868
2869 void WebContentsImpl::NotifySwapped(RenderViewHost* old_render_view_host) { 2869 void WebContentsImpl::NotifySwapped(RenderViewHost* old_host,
2870 RenderViewHost* new_host) {
2870 // After sending out a swap notification, we need to send a disconnect 2871 // After sending out a swap notification, we need to send a disconnect
2871 // notification so that clients that pick up a pointer to |this| can NULL the 2872 // notification so that clients that pick up a pointer to |this| can NULL the
2872 // pointer. See Bug 1230284. 2873 // pointer. See Bug 1230284.
2873 notify_disconnection_ = true; 2874 notify_disconnection_ = true;
2874 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2875 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
2875 RenderViewHostSwapped(old_render_view_host)); 2876 RenderViewHostChanged(old_host, new_host));
2876 2877
2877 // TODO(avi): Remove. http://crbug.com/170921 2878 // TODO(avi): Remove. http://crbug.com/170921
2879 std::pair<RenderViewHost*, RenderViewHost*> details =
2880 std::make_pair(old_host, new_host);
2878 NotificationService::current()->Notify( 2881 NotificationService::current()->Notify(
2879 NOTIFICATION_WEB_CONTENTS_SWAPPED, 2882 NOTIFICATION_RENDER_VIEW_HOST_CHANGED,
2880 Source<WebContents>(this), 2883 Source<WebContents>(this),
2881 Details<RenderViewHost>(old_render_view_host)); 2884 Details<std::pair<RenderViewHost*, RenderViewHost*> >(&details));
2882 2885
2883 // Ensure that the associated embedder gets cleared after a RenderViewHost 2886 // Ensure that the associated embedder gets cleared after a RenderViewHost
2884 // gets swapped, so we don't reuse the same embedder next time a 2887 // gets swapped, so we don't reuse the same embedder next time a
2885 // RenderViewHost is attached to this WebContents. 2888 // RenderViewHost is attached to this WebContents.
2886 RemoveBrowserPluginEmbedder(); 2889 RemoveBrowserPluginEmbedder();
2887 } 2890 }
2888 2891
2889 // TODO(avi): Remove this entire function because this notification is already 2892 // TODO(avi): Remove this entire function because this notification is already
2890 // covered by two observer functions. http://crbug.com/170921 2893 // covered by two observer functions. http://crbug.com/170921
2891 void WebContentsImpl::NotifyDisconnected() { 2894 void WebContentsImpl::NotifyDisconnected() {
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
3673 view_->SizeContents(size); 3676 view_->SizeContents(size);
3674 } 3677 }
3675 3678
3676 void WebContentsImpl::CancelModalDialogsForRenderManager() { 3679 void WebContentsImpl::CancelModalDialogsForRenderManager() {
3677 // We need to cancel modal dialogs when doing a process swap, since the load 3680 // We need to cancel modal dialogs when doing a process swap, since the load
3678 // deferrer would prevent us from swapping out. 3681 // deferrer would prevent us from swapping out.
3679 if (dialog_manager_) 3682 if (dialog_manager_)
3680 dialog_manager_->CancelActiveAndPendingDialogs(this); 3683 dialog_manager_->CancelActiveAndPendingDialogs(this);
3681 } 3684 }
3682 3685
3683 void WebContentsImpl::NotifySwappedFromRenderManager(RenderViewHost* rvh) { 3686 void WebContentsImpl::NotifySwappedFromRenderManager(RenderViewHost* old_host,
3684 NotifySwapped(rvh); 3687 RenderViewHost* new_host) {
3688 NotifySwapped(old_host, new_host);
3685 3689
3686 // Make sure the visible RVH reflects the new delegate's preferences. 3690 // Make sure the visible RVH reflects the new delegate's preferences.
3687 if (delegate_) 3691 if (delegate_)
3688 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent()); 3692 view_->SetOverscrollControllerEnabled(delegate_->CanOverscrollContent());
3689 3693
3690 view_->RenderViewSwappedIn(render_manager_.current_host()); 3694 view_->RenderViewSwappedIn(new_host);
3691 3695
3692 FrameTreeNode* root = NULL; 3696 FrameTreeNode* root = NULL;
3693 RenderViewHostImpl* new_rvh = static_cast<RenderViewHostImpl*>( 3697 RenderViewHostImpl* new_rvh = static_cast<RenderViewHostImpl*>(new_host);
3694 render_manager_.current_host());
3695 3698
3696 // We are doing a cross-site navigation and swapping processes. Since frame 3699 // We are doing a cross-site navigation and swapping processes. Since frame
3697 // ids are unique to a process, we need to recreate the frame tree with the 3700 // ids are unique to a process, we need to recreate the frame tree with the
3698 // proper main frame id. 3701 // proper main frame id.
3699 // Note that it is possible for this method to be called before the new RVH 3702 // Note that it is possible for this method to be called before the new RVH
3700 // has committed a navigation (if RenderViewHostManager short-circuits the 3703 // has committed a navigation (if RenderViewHostManager short-circuits the
3701 // CommitPending call because the current RVH is dead). In that case, we 3704 // CommitPending call because the current RVH is dead). In that case, we
3702 // haven't heard a valid frame id to use to initialize the root node, so clear 3705 // haven't heard a valid frame id to use to initialize the root node, so clear
3703 // out the root node and the first subsequent navigation message will set it 3706 // out the root node and the first subsequent navigation message will set it
3704 // correctly. 3707 // correctly.
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
3873 gfx::Size WebContentsImpl::GetSizeForNewRenderView() const { 3876 gfx::Size WebContentsImpl::GetSizeForNewRenderView() const {
3874 gfx::Size size; 3877 gfx::Size size;
3875 if (delegate_) 3878 if (delegate_)
3876 size = delegate_->GetSizeForNewRenderView(this); 3879 size = delegate_->GetSizeForNewRenderView(this);
3877 if (size.IsEmpty()) 3880 if (size.IsEmpty())
3878 size = view_->GetContainerSize(); 3881 size = view_->GetContainerSize();
3879 return size; 3882 return size;
3880 } 3883 }
3881 3884
3882 } // namespace content 3885 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/browser/web_contents/web_drag_source_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698