| OLD | NEW |
| 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/crash_logging.h" | 10 #include "base/debug/crash_logging.h" |
| (...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 834 GetMainFrame()->RequestAXTreeSnapshot(callback); | 834 GetMainFrame()->RequestAXTreeSnapshot(callback); |
| 835 } | 835 } |
| 836 | 836 |
| 837 WebUI* WebContentsImpl::CreateSubframeWebUI(const GURL& url, | 837 WebUI* WebContentsImpl::CreateSubframeWebUI(const GURL& url, |
| 838 const std::string& frame_name) { | 838 const std::string& frame_name) { |
| 839 DCHECK(!frame_name.empty()); | 839 DCHECK(!frame_name.empty()); |
| 840 return CreateWebUI(url, frame_name); | 840 return CreateWebUI(url, frame_name); |
| 841 } | 841 } |
| 842 | 842 |
| 843 WebUI* WebContentsImpl::GetWebUI() const { | 843 WebUI* WebContentsImpl::GetWebUI() const { |
| 844 return GetRenderManager()->web_ui() ? GetRenderManager()->web_ui() | 844 return GetRenderManager()->web_ui() |
| 845 : GetRenderManager()->pending_web_ui(); | 845 ? GetRenderManager()->web_ui() |
| 846 : GetRenderManager()->GetNavigatingWebUI(); |
| 846 } | 847 } |
| 847 | 848 |
| 848 WebUI* WebContentsImpl::GetCommittedWebUI() const { | 849 WebUI* WebContentsImpl::GetCommittedWebUI() const { |
| 849 return GetRenderManager()->web_ui(); | 850 return GetRenderManager()->web_ui(); |
| 850 } | 851 } |
| 851 | 852 |
| 852 void WebContentsImpl::SetUserAgentOverride(const std::string& override) { | 853 void WebContentsImpl::SetUserAgentOverride(const std::string& override) { |
| 853 if (GetUserAgentOverride() == override) | 854 if (GetUserAgentOverride() == override) |
| 854 return; | 855 return; |
| 855 | 856 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 906 const base::string16& WebContentsImpl::GetTitle() const { | 907 const base::string16& WebContentsImpl::GetTitle() const { |
| 907 // Transient entries take precedence. They are used for interstitial pages | 908 // Transient entries take precedence. They are used for interstitial pages |
| 908 // that are shown on top of existing pages. | 909 // that are shown on top of existing pages. |
| 909 NavigationEntry* entry = controller_.GetTransientEntry(); | 910 NavigationEntry* entry = controller_.GetTransientEntry(); |
| 910 std::string accept_languages = | 911 std::string accept_languages = |
| 911 GetContentClient()->browser()->GetAcceptLangs( | 912 GetContentClient()->browser()->GetAcceptLangs( |
| 912 GetBrowserContext()); | 913 GetBrowserContext()); |
| 913 if (entry) { | 914 if (entry) { |
| 914 return entry->GetTitleForDisplay(accept_languages); | 915 return entry->GetTitleForDisplay(accept_languages); |
| 915 } | 916 } |
| 916 WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ? | 917 WebUI* our_web_ui = GetRenderManager()->GetNavigatingWebUI() |
| 917 GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui(); | 918 ? GetRenderManager()->GetNavigatingWebUI() |
| 919 : GetRenderManager()->web_ui(); |
| 918 if (our_web_ui) { | 920 if (our_web_ui) { |
| 919 // Don't override the title in view source mode. | 921 // Don't override the title in view source mode. |
| 920 entry = controller_.GetVisibleEntry(); | 922 entry = controller_.GetVisibleEntry(); |
| 921 if (!(entry && entry->IsViewSourceMode())) { | 923 if (!(entry && entry->IsViewSourceMode())) { |
| 922 // Give the Web UI the chance to override our title. | 924 // Give the Web UI the chance to override our title. |
| 923 const base::string16& title = our_web_ui->GetOverriddenTitle(); | 925 const base::string16& title = our_web_ui->GetOverriddenTitle(); |
| 924 if (!title.empty()) | 926 if (!title.empty()) |
| 925 return title; | 927 return title; |
| 926 } | 928 } |
| 927 } | 929 } |
| (...skipping 2855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3783 return; | 3785 return; |
| 3784 | 3786 |
| 3785 if (delegate_) | 3787 if (delegate_) |
| 3786 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); | 3788 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
| 3787 | 3789 |
| 3788 NotificationService::current()->Notify( | 3790 NotificationService::current()->Notify( |
| 3789 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, | 3791 NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED, |
| 3790 Source<WebContents>(this), | 3792 Source<WebContents>(this), |
| 3791 Details<RenderViewHost>(render_view_host)); | 3793 Details<RenderViewHost>(render_view_host)); |
| 3792 | 3794 |
| 3793 // When we're creating views, we're still doing initial setup, so we always | |
| 3794 // use the pending Web UI rather than any possibly existing committed one. | |
| 3795 if (GetRenderManager()->pending_web_ui()) | |
| 3796 GetRenderManager()->pending_web_ui()->RenderViewCreated(render_view_host); | |
| 3797 | |
| 3798 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 3799 switches::kEnableBrowserSideNavigation) && | |
| 3800 GetRenderManager()->speculative_web_ui()) { | |
| 3801 GetRenderManager()->speculative_web_ui()->RenderViewCreated( | |
| 3802 render_view_host); | |
| 3803 } | |
| 3804 | |
| 3805 NavigationEntry* entry = controller_.GetPendingEntry(); | 3795 NavigationEntry* entry = controller_.GetPendingEntry(); |
| 3806 if (entry && entry->IsViewSourceMode()) { | 3796 if (entry && entry->IsViewSourceMode()) { |
| 3807 // Put the renderer in view source mode. | 3797 // Put the renderer in view source mode. |
| 3808 render_view_host->Send( | 3798 render_view_host->Send( |
| 3809 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); | 3799 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); |
| 3810 } | 3800 } |
| 3811 | 3801 |
| 3812 view_->RenderViewCreated(render_view_host); | 3802 view_->RenderViewCreated(render_view_host); |
| 3813 | 3803 |
| 3814 FOR_EACH_OBSERVER( | 3804 FOR_EACH_OBSERVER( |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4248 source_id); | 4238 source_id); |
| 4249 } | 4239 } |
| 4250 | 4240 |
| 4251 int WebContentsImpl::CreateSwappedOutRenderView( | 4241 int WebContentsImpl::CreateSwappedOutRenderView( |
| 4252 SiteInstance* instance) { | 4242 SiteInstance* instance) { |
| 4253 int render_view_routing_id = MSG_ROUTING_NONE; | 4243 int render_view_routing_id = MSG_ROUTING_NONE; |
| 4254 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { | 4244 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
| 4255 GetRenderManager()->CreateRenderFrameProxy(instance); | 4245 GetRenderManager()->CreateRenderFrameProxy(instance); |
| 4256 } else { | 4246 } else { |
| 4257 GetRenderManager()->CreateRenderFrame( | 4247 GetRenderManager()->CreateRenderFrame( |
| 4258 instance, nullptr, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, | 4248 instance, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, |
| 4259 &render_view_routing_id); | 4249 &render_view_routing_id); |
| 4260 } | 4250 } |
| 4261 return render_view_routing_id; | 4251 return render_view_routing_id; |
| 4262 } | 4252 } |
| 4263 | 4253 |
| 4264 void WebContentsImpl::OnUserGesture() { | 4254 void WebContentsImpl::OnUserGesture() { |
| 4265 // Notify observers. | 4255 // Notify observers. |
| 4266 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); | 4256 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); |
| 4267 | 4257 |
| 4268 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); | 4258 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4415 void WebContentsImpl::NotifyMainFrameSwappedFromRenderManager( | 4405 void WebContentsImpl::NotifyMainFrameSwappedFromRenderManager( |
| 4416 RenderViewHost* old_host, | 4406 RenderViewHost* old_host, |
| 4417 RenderViewHost* new_host) { | 4407 RenderViewHost* new_host) { |
| 4418 NotifyViewSwapped(old_host, new_host); | 4408 NotifyViewSwapped(old_host, new_host); |
| 4419 } | 4409 } |
| 4420 | 4410 |
| 4421 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { | 4411 NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { |
| 4422 return GetController(); | 4412 return GetController(); |
| 4423 } | 4413 } |
| 4424 | 4414 |
| 4425 scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderManager( | 4415 scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderFrameHost( |
| 4426 const GURL& url) { | 4416 const GURL& url) { |
| 4427 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI( | 4417 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI( |
| 4428 url, std::string()))); | 4418 url, std::string()))); |
| 4429 } | 4419 } |
| 4430 | 4420 |
| 4431 NavigationEntry* | 4421 NavigationEntry* |
| 4432 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { | 4422 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { |
| 4433 return controller_.GetLastCommittedEntry(); | 4423 return controller_.GetLastCommittedEntry(); |
| 4434 } | 4424 } |
| 4435 | 4425 |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4732 return NULL; | 4722 return NULL; |
| 4733 } | 4723 } |
| 4734 | 4724 |
| 4735 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { | 4725 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { |
| 4736 force_disable_overscroll_content_ = force_disable; | 4726 force_disable_overscroll_content_ = force_disable; |
| 4737 if (view_) | 4727 if (view_) |
| 4738 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); | 4728 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
| 4739 } | 4729 } |
| 4740 | 4730 |
| 4741 } // namespace content | 4731 } // namespace content |
| OLD | NEW |