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

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

Issue 1454883006: Revert of Reland #1 of: Move WebUI ownership from the RenderFrameHostManager to the RenderFrameHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 | « content/browser/web_contents/web_contents_impl.h ('k') | content/browser/webui/web_ui_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 WebContentsImpl::~WebContentsImpl() { 417 WebContentsImpl::~WebContentsImpl() {
418 is_being_destroyed_ = true; 418 is_being_destroyed_ = true;
419 419
420 rwh_input_event_router_.reset(); 420 rwh_input_event_router_.reset();
421 421
422 // Delete all RFH pending shutdown, which will lead the corresponding RVH to 422 // Delete all RFH pending shutdown, which will lead the corresponding RVH to
423 // shutdown and be deleted as well. 423 // shutdown and be deleted as well.
424 frame_tree_.ForEach( 424 frame_tree_.ForEach(
425 base::Bind(&RenderFrameHostManager::ClearRFHsPendingShutdown)); 425 base::Bind(&RenderFrameHostManager::ClearRFHsPendingShutdown));
426 426
427 // Destroy all WebUI instances.
428 frame_tree_.ForEach(base::Bind(&RenderFrameHostManager::ClearWebUIInstances));
429
430 ClearAllPowerSaveBlockers(); 427 ClearAllPowerSaveBlockers();
431 428
432 for (std::set<RenderWidgetHostImpl*>::iterator iter = 429 for (std::set<RenderWidgetHostImpl*>::iterator iter =
433 created_widgets_.begin(); iter != created_widgets_.end(); ++iter) { 430 created_widgets_.begin(); iter != created_widgets_.end(); ++iter) {
434 (*iter)->DetachDelegate(); 431 (*iter)->DetachDelegate();
435 } 432 }
436 created_widgets_.clear(); 433 created_widgets_.clear();
437 434
438 // Clear out any JavaScript state. 435 // Clear out any JavaScript state.
439 if (dialog_manager_) 436 if (dialog_manager_)
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 GetMainFrame()->RequestAXTreeSnapshot(callback); 839 GetMainFrame()->RequestAXTreeSnapshot(callback);
843 } 840 }
844 841
845 WebUI* WebContentsImpl::CreateSubframeWebUI(const GURL& url, 842 WebUI* WebContentsImpl::CreateSubframeWebUI(const GURL& url,
846 const std::string& frame_name) { 843 const std::string& frame_name) {
847 DCHECK(!frame_name.empty()); 844 DCHECK(!frame_name.empty());
848 return CreateWebUI(url, frame_name); 845 return CreateWebUI(url, frame_name);
849 } 846 }
850 847
851 WebUI* WebContentsImpl::GetWebUI() const { 848 WebUI* WebContentsImpl::GetWebUI() const {
852 WebUI* commited_web_ui = GetCommittedWebUI(); 849 return GetRenderManager()->web_ui() ? GetRenderManager()->web_ui()
853 return commited_web_ui ? commited_web_ui 850 : GetRenderManager()->pending_web_ui();
854 : GetRenderManager()->GetNavigatingWebUI();
855 } 851 }
856 852
857 WebUI* WebContentsImpl::GetCommittedWebUI() const { 853 WebUI* WebContentsImpl::GetCommittedWebUI() const {
858 return frame_tree_.root()->current_frame_host()->web_ui(); 854 return GetRenderManager()->web_ui();
859 } 855 }
860 856
861 void WebContentsImpl::SetUserAgentOverride(const std::string& override) { 857 void WebContentsImpl::SetUserAgentOverride(const std::string& override) {
862 if (GetUserAgentOverride() == override) 858 if (GetUserAgentOverride() == override)
863 return; 859 return;
864 860
865 renderer_preferences_.user_agent_override = override; 861 renderer_preferences_.user_agent_override = override;
866 862
867 // Send the new override string to the renderer. 863 // Send the new override string to the renderer.
868 RenderViewHost* host = GetRenderViewHost(); 864 RenderViewHost* host = GetRenderViewHost();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 const base::string16& WebContentsImpl::GetTitle() const { 911 const base::string16& WebContentsImpl::GetTitle() const {
916 // Transient entries take precedence. They are used for interstitial pages 912 // Transient entries take precedence. They are used for interstitial pages
917 // that are shown on top of existing pages. 913 // that are shown on top of existing pages.
918 NavigationEntry* entry = controller_.GetTransientEntry(); 914 NavigationEntry* entry = controller_.GetTransientEntry();
919 std::string accept_languages = 915 std::string accept_languages =
920 GetContentClient()->browser()->GetAcceptLangs( 916 GetContentClient()->browser()->GetAcceptLangs(
921 GetBrowserContext()); 917 GetBrowserContext());
922 if (entry) { 918 if (entry) {
923 return entry->GetTitleForDisplay(accept_languages); 919 return entry->GetTitleForDisplay(accept_languages);
924 } 920 }
925 921 WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ?
926 WebUI* navigating_web_ui = GetRenderManager()->GetNavigatingWebUI(); 922 GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui();
927 WebUI* our_web_ui = navigating_web_ui
928 ? navigating_web_ui
929 : GetRenderManager()->current_frame_host()->web_ui();
930
931 if (our_web_ui) { 923 if (our_web_ui) {
932 // Don't override the title in view source mode. 924 // Don't override the title in view source mode.
933 entry = controller_.GetVisibleEntry(); 925 entry = controller_.GetVisibleEntry();
934 if (!(entry && entry->IsViewSourceMode())) { 926 if (!(entry && entry->IsViewSourceMode())) {
935 // Give the Web UI the chance to override our title. 927 // Give the Web UI the chance to override our title.
936 const base::string16& title = our_web_ui->GetOverriddenTitle(); 928 const base::string16& title = our_web_ui->GetOverriddenTitle();
937 if (!title.empty()) 929 if (!title.empty())
938 return title; 930 return title;
939 } 931 }
940 } 932 }
(...skipping 2914 matching lines...) Expand 10 before | Expand all | Expand 10 after
3855 return; 3847 return;
3856 3848
3857 if (delegate_) 3849 if (delegate_)
3858 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); 3850 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
3859 3851
3860 NotificationService::current()->Notify( 3852 NotificationService::current()->Notify(
3861 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, 3853 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED,
3862 Source<WebContents>(this), 3854 Source<WebContents>(this),
3863 Details<RenderViewHost>(render_view_host)); 3855 Details<RenderViewHost>(render_view_host));
3864 3856
3857 // When we're creating views, we're still doing initial setup, so we always
3858 // use the pending Web UI rather than any possibly existing committed one.
3859 if (GetRenderManager()->pending_web_ui())
3860 GetRenderManager()->pending_web_ui()->RenderViewCreated(render_view_host);
3861
3862 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
3863 switches::kEnableBrowserSideNavigation) &&
3864 GetRenderManager()->speculative_web_ui()) {
3865 GetRenderManager()->speculative_web_ui()->RenderViewCreated(
3866 render_view_host);
3867 }
3868
3865 NavigationEntry* entry = controller_.GetPendingEntry(); 3869 NavigationEntry* entry = controller_.GetPendingEntry();
3866 if (entry && entry->IsViewSourceMode()) { 3870 if (entry && entry->IsViewSourceMode()) {
3867 // Put the renderer in view source mode. 3871 // Put the renderer in view source mode.
3868 render_view_host->Send( 3872 render_view_host->Send(
3869 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); 3873 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID()));
3870 } 3874 }
3871 3875
3872 view_->RenderViewCreated(render_view_host); 3876 view_->RenderViewCreated(render_view_host);
3873 3877
3874 FOR_EACH_OBSERVER( 3878 FOR_EACH_OBSERVER(
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
4269 source_id); 4273 source_id);
4270 } 4274 }
4271 4275
4272 int WebContentsImpl::CreateSwappedOutRenderView( 4276 int WebContentsImpl::CreateSwappedOutRenderView(
4273 SiteInstance* instance) { 4277 SiteInstance* instance) {
4274 int render_view_routing_id = MSG_ROUTING_NONE; 4278 int render_view_routing_id = MSG_ROUTING_NONE;
4275 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { 4279 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) {
4276 GetRenderManager()->CreateRenderFrameProxy(instance); 4280 GetRenderManager()->CreateRenderFrameProxy(instance);
4277 } else { 4281 } else {
4278 GetRenderManager()->CreateRenderFrame( 4282 GetRenderManager()->CreateRenderFrame(
4279 instance, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, 4283 instance, nullptr, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN,
4280 &render_view_routing_id); 4284 &render_view_routing_id);
4281 } 4285 }
4282 return render_view_routing_id; 4286 return render_view_routing_id;
4283 } 4287 }
4284 4288
4285 void WebContentsImpl::OnUserGesture(RenderWidgetHostImpl* render_widget_host) { 4289 void WebContentsImpl::OnUserGesture(RenderWidgetHostImpl* render_widget_host) {
4286 if (render_widget_host != GetRenderViewHost()->GetWidget()) 4290 if (render_widget_host != GetRenderViewHost()->GetWidget())
4287 return; 4291 return;
4288 4292
4289 // Notify observers. 4293 // Notify observers.
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
4443 void WebContentsImpl::NotifyMainFrameSwappedFromRenderManager( 4447 void WebContentsImpl::NotifyMainFrameSwappedFromRenderManager(
4444 RenderViewHost* old_host, 4448 RenderViewHost* old_host,
4445 RenderViewHost* new_host) { 4449 RenderViewHost* new_host) {
4446 NotifyViewSwapped(old_host, new_host); 4450 NotifyViewSwapped(old_host, new_host);
4447 } 4451 }
4448 4452
4449 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { 4453 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() {
4450 return GetController(); 4454 return GetController();
4451 } 4455 }
4452 4456
4453 scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderFrameHost( 4457 scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderManager(
4454 const GURL& url) { 4458 const GURL& url) {
4455 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI( 4459 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI(
4456 url, std::string()))); 4460 url, std::string())));
4457 } 4461 }
4458 4462
4459 NavigationEntry* 4463 NavigationEntry*
4460 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { 4464 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() {
4461 return controller_.GetLastCommittedEntry(); 4465 return controller_.GetLastCommittedEntry();
4462 } 4466 }
4463 4467
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
4760 return NULL; 4764 return NULL;
4761 } 4765 }
4762 4766
4763 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { 4767 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) {
4764 force_disable_overscroll_content_ = force_disable; 4768 force_disable_overscroll_content_ = force_disable;
4765 if (view_) 4769 if (view_)
4766 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); 4770 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
4767 } 4771 }
4768 4772
4769 } // namespace content 4773 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/browser/webui/web_ui_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698