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/tab_contents/tab_contents.h" | 5 #include "content/browser/tab_contents/tab_contents.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 content::NOTIFICATION_WEB_CONTENTS_DESTROYED, | 290 content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
291 content::Source<WebContents>(this), | 291 content::Source<WebContents>(this), |
292 content::NotificationService::NoDetails()); | 292 content::NotificationService::NoDetails()); |
293 | 293 |
294 // TODO(brettw) this should be moved to the view. | 294 // TODO(brettw) this should be moved to the view. |
295 #if defined(OS_WIN) && !defined(USE_AURA) | 295 #if defined(OS_WIN) && !defined(USE_AURA) |
296 // If we still have a window handle, destroy it. GetNativeView can return | 296 // If we still have a window handle, destroy it. GetNativeView can return |
297 // NULL if this contents was part of a window that closed. | 297 // NULL if this contents was part of a window that closed. |
298 if (GetNativeView()) { | 298 if (GetNativeView()) { |
299 RenderViewHost* host = GetRenderViewHost(); | 299 RenderViewHost* host = GetRenderViewHost(); |
300 if (host && host->view()) | 300 if (host && host->GetView()) |
301 RenderWidgetHostViewPort::FromRWHV(host->view())->WillWmDestroy(); | 301 RenderWidgetHostViewPort::FromRWHV(host->GetView())->WillWmDestroy(); |
302 } | 302 } |
303 #endif | 303 #endif |
304 | 304 |
305 // OnCloseStarted isn't called in unit tests. | 305 // OnCloseStarted isn't called in unit tests. |
306 if (!tab_close_start_time_.is_null()) { | 306 if (!tab_close_start_time_.is_null()) { |
307 UMA_HISTOGRAM_TIMES("Tab.Close", | 307 UMA_HISTOGRAM_TIMES("Tab.Close", |
308 base::TimeTicks::Now() - tab_close_start_time_); | 308 base::TimeTicks::Now() - tab_close_start_time_); |
309 } | 309 } |
310 | 310 |
311 FOR_EACH_OBSERVER(WebContentsObserver, observers_, TabContentsDestroyed()); | 311 FOR_EACH_OBSERVER(WebContentsObserver, observers_, TabContentsDestroyed()); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 // Accelerated video and animation are slower than regular when using a | 438 // Accelerated video and animation are slower than regular when using a |
439 // software 3d rasterizer. 3D CSS may also be too slow to be worthwhile. | 439 // software 3d rasterizer. 3D CSS may also be too slow to be worthwhile. |
440 if (gpu_data_manager->ShouldUseSoftwareRendering()) { | 440 if (gpu_data_manager->ShouldUseSoftwareRendering()) { |
441 prefs.accelerated_video_enabled = false; | 441 prefs.accelerated_video_enabled = false; |
442 prefs.accelerated_animation_enabled = false; | 442 prefs.accelerated_animation_enabled = false; |
443 prefs.accelerated_layers_enabled = false; | 443 prefs.accelerated_layers_enabled = false; |
444 } | 444 } |
445 } | 445 } |
446 | 446 |
447 if (ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( | 447 if (ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( |
448 rvh->process()->GetID())) { | 448 rvh->GetProcess()->GetID())) { |
449 prefs.loads_images_automatically = true; | 449 prefs.loads_images_automatically = true; |
450 prefs.javascript_enabled = true; | 450 prefs.javascript_enabled = true; |
451 } | 451 } |
452 | 452 |
453 prefs.is_online = !net::NetworkChangeNotifier::IsOffline(); | 453 prefs.is_online = !net::NetworkChangeNotifier::IsOffline(); |
454 | 454 |
455 // Force accelerated compositing and 2d canvas off for chrome:, about: and | 455 // Force accelerated compositing and 2d canvas off for chrome:, about: and |
456 // chrome-devtools: pages (unless it's specifically allowed). | 456 // chrome-devtools: pages (unless it's specifically allowed). |
457 if ((url.SchemeIs(chrome::kChromeDevToolsScheme) || | 457 if ((url.SchemeIs(chrome::kChromeDevToolsScheme) || |
458 url.SchemeIs(chrome::kChromeUIScheme) || | 458 url.SchemeIs(chrome::kChromeUIScheme) || |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 return; | 591 return; |
592 if (delegate_) | 592 if (delegate_) |
593 delegate_->Detach(this); | 593 delegate_->Detach(this); |
594 delegate_ = delegate; | 594 delegate_ = delegate; |
595 if (delegate_) | 595 if (delegate_) |
596 delegate_->Attach(this); | 596 delegate_->Attach(this); |
597 } | 597 } |
598 | 598 |
599 content::RenderProcessHost* TabContents::GetRenderProcessHost() const { | 599 content::RenderProcessHost* TabContents::GetRenderProcessHost() const { |
600 if (render_manager_.current_host()) | 600 if (render_manager_.current_host()) |
601 return render_manager_.current_host()->process(); | 601 return render_manager_.current_host()->GetProcess(); |
602 else | 602 else |
603 return NULL; | 603 return NULL; |
604 } | 604 } |
605 | 605 |
606 RenderViewHost* TabContents::GetRenderViewHost() const { | 606 RenderViewHost* TabContents::GetRenderViewHost() const { |
607 return render_manager_.current_host(); | 607 return render_manager_.current_host(); |
608 } | 608 } |
609 | 609 |
610 RenderWidgetHostView* TabContents::GetRenderWidgetHostView() const { | 610 RenderWidgetHostView* TabContents::GetRenderWidgetHostView() const { |
611 return render_manager_.GetRenderWidgetHostView(); | 611 return render_manager_.GetRenderWidgetHostView(); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 SiteInstance* site_instance, int32 page_id) { | 697 SiteInstance* site_instance, int32 page_id) { |
698 if (GetMaxPageIDForSiteInstance(site_instance) < page_id) | 698 if (GetMaxPageIDForSiteInstance(site_instance) < page_id) |
699 max_page_ids_[site_instance->GetId()] = page_id; | 699 max_page_ids_[site_instance->GetId()] = page_id; |
700 } | 700 } |
701 | 701 |
702 void TabContents::CopyMaxPageIDsFrom(TabContents* tab_contents) { | 702 void TabContents::CopyMaxPageIDsFrom(TabContents* tab_contents) { |
703 max_page_ids_ = tab_contents->max_page_ids_; | 703 max_page_ids_ = tab_contents->max_page_ids_; |
704 } | 704 } |
705 | 705 |
706 SiteInstance* TabContents::GetSiteInstance() const { | 706 SiteInstance* TabContents::GetSiteInstance() const { |
707 return render_manager_.current_host()->site_instance(); | 707 return render_manager_.current_host()->GetSiteInstance(); |
708 } | 708 } |
709 | 709 |
710 SiteInstance* TabContents::GetPendingSiteInstance() const { | 710 SiteInstance* TabContents::GetPendingSiteInstance() const { |
711 RenderViewHost* dest_rvh = render_manager_.pending_render_view_host() ? | 711 RenderViewHost* dest_rvh = render_manager_.pending_render_view_host() ? |
712 render_manager_.pending_render_view_host() : | 712 render_manager_.pending_render_view_host() : |
713 render_manager_.current_host(); | 713 render_manager_.current_host(); |
714 return dest_rvh->site_instance(); | 714 return dest_rvh->GetSiteInstance(); |
715 } | 715 } |
716 | 716 |
717 bool TabContents::IsLoading() const { | 717 bool TabContents::IsLoading() const { |
718 return is_loading_; | 718 return is_loading_; |
719 } | 719 } |
720 | 720 |
721 bool TabContents::IsWaitingForResponse() const { | 721 bool TabContents::IsWaitingForResponse() const { |
722 return waiting_for_response_; | 722 return waiting_for_response_; |
723 } | 723 } |
724 | 724 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
788 rwhv->SetActive(true); | 788 rwhv->SetActive(true); |
789 #endif | 789 #endif |
790 } | 790 } |
791 | 791 |
792 last_selected_time_ = base::TimeTicks::Now(); | 792 last_selected_time_ = base::TimeTicks::Now(); |
793 | 793 |
794 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidBecomeSelected()); | 794 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidBecomeSelected()); |
795 | 795 |
796 // The resize rect might have changed while this was inactive -- send the new | 796 // The resize rect might have changed while this was inactive -- send the new |
797 // one to make sure it's up to date. | 797 // one to make sure it's up to date. |
798 RenderViewHost* rvh = GetRenderViewHost(); | 798 RenderViewHostImpl* rvh = |
| 799 static_cast<RenderViewHostImpl*>(GetRenderViewHost()); |
799 if (rvh) { | 800 if (rvh) { |
800 rvh->ResizeRectChanged(GetRootWindowResizerRect()); | 801 rvh->ResizeRectChanged(GetRootWindowResizerRect()); |
801 } | 802 } |
802 } | 803 } |
803 | 804 |
804 | 805 |
805 base::TimeTicks TabContents::GetLastSelectedTime() const { | 806 base::TimeTicks TabContents::GetLastSelectedTime() const { |
806 return last_selected_time_; | 807 return last_selected_time_; |
807 } | 808 } |
808 | 809 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
840 // here practically impossible to understand, this also means we end up | 841 // here practically impossible to understand, this also means we end up |
841 // calling TabContents::WasHidden() twice if callers call both versions of | 842 // calling TabContents::WasHidden() twice if callers call both versions of |
842 // HideContents() on a TabContents. | 843 // HideContents() on a TabContents. |
843 WasHidden(); | 844 WasHidden(); |
844 } | 845 } |
845 | 846 |
846 bool TabContents::NeedToFireBeforeUnload() { | 847 bool TabContents::NeedToFireBeforeUnload() { |
847 // TODO(creis): Should we fire even for interstitial pages? | 848 // TODO(creis): Should we fire even for interstitial pages? |
848 return WillNotifyDisconnection() && | 849 return WillNotifyDisconnection() && |
849 !ShowingInterstitialPage() && | 850 !ShowingInterstitialPage() && |
850 !GetRenderViewHost()->SuddenTerminationAllowed(); | 851 !static_cast<RenderViewHostImpl*>( |
| 852 GetRenderViewHost())->SuddenTerminationAllowed(); |
851 } | 853 } |
852 | 854 |
853 void TabContents::Stop() { | 855 void TabContents::Stop() { |
854 render_manager_.Stop(); | 856 render_manager_.Stop(); |
855 FOR_EACH_OBSERVER(WebContentsObserver, observers_, StopNavigation()); | 857 FOR_EACH_OBSERVER(WebContentsObserver, observers_, StopNavigation()); |
856 } | 858 } |
857 | 859 |
858 WebContents* TabContents::Clone() { | 860 WebContents* TabContents::Clone() { |
859 // We create a new SiteInstance so that the new tab won't share processes | 861 // We create a new SiteInstance so that the new tab won't share processes |
860 // with the old one. This can be changed in the future if we need it to share | 862 // with the old one. This can be changed in the future if we need it to share |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 } | 1006 } |
1005 | 1007 |
1006 bool TabContents::NavigateToEntry( | 1008 bool TabContents::NavigateToEntry( |
1007 const NavigationEntryImpl& entry, | 1009 const NavigationEntryImpl& entry, |
1008 NavigationController::ReloadType reload_type) { | 1010 NavigationController::ReloadType reload_type) { |
1009 // The renderer will reject IPC messages with URLs longer than | 1011 // The renderer will reject IPC messages with URLs longer than |
1010 // this limit, so don't attempt to navigate with a longer URL. | 1012 // this limit, so don't attempt to navigate with a longer URL. |
1011 if (entry.GetURL().spec().size() > content::kMaxURLChars) | 1013 if (entry.GetURL().spec().size() > content::kMaxURLChars) |
1012 return false; | 1014 return false; |
1013 | 1015 |
1014 RenderViewHost* dest_render_view_host = render_manager_.Navigate(entry); | 1016 RenderViewHostImpl* dest_render_view_host = |
| 1017 static_cast<RenderViewHostImpl*>(render_manager_.Navigate(entry)); |
1015 if (!dest_render_view_host) | 1018 if (!dest_render_view_host) |
1016 return false; // Unable to create the desired render view host. | 1019 return false; // Unable to create the desired render view host. |
1017 | 1020 |
1018 // For security, we should never send non-Web-UI URLs to a Web UI renderer. | 1021 // For security, we should never send non-Web-UI URLs to a Web UI renderer. |
1019 // Double check that here. | 1022 // Double check that here. |
1020 int enabled_bindings = dest_render_view_host->enabled_bindings(); | 1023 int enabled_bindings = dest_render_view_host->GetEnabledBindings(); |
1021 WebUIControllerFactory* factory = | 1024 WebUIControllerFactory* factory = |
1022 content::GetContentClient()->browser()->GetWebUIControllerFactory(); | 1025 content::GetContentClient()->browser()->GetWebUIControllerFactory(); |
1023 bool is_allowed_in_web_ui_renderer = | 1026 bool is_allowed_in_web_ui_renderer = |
1024 factory && | 1027 factory && |
1025 factory->IsURLAcceptableForWebUI(GetBrowserContext(), entry.GetURL()); | 1028 factory->IsURLAcceptableForWebUI(GetBrowserContext(), entry.GetURL()); |
1026 #if defined(OS_CHROMEOS) | 1029 #if defined(OS_CHROMEOS) |
1027 is_allowed_in_web_ui_renderer |= entry.GetURL().SchemeIs(chrome::kDataScheme); | 1030 is_allowed_in_web_ui_renderer |= entry.GetURL().SchemeIs(chrome::kDataScheme); |
1028 #endif | 1031 #endif |
1029 CHECK(!(enabled_bindings & content::BINDINGS_POLICY_WEB_UI) || | 1032 CHECK(!(enabled_bindings & content::BINDINGS_POLICY_WEB_UI) || |
1030 is_allowed_in_web_ui_renderer); | 1033 is_allowed_in_web_ui_renderer); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1068 void TabContents::SetHistoryLengthAndPrune( | 1071 void TabContents::SetHistoryLengthAndPrune( |
1069 const SiteInstance* site_instance, | 1072 const SiteInstance* site_instance, |
1070 int history_length, | 1073 int history_length, |
1071 int32 minimum_page_id) { | 1074 int32 minimum_page_id) { |
1072 // SetHistoryLengthAndPrune doesn't work when there are pending cross-site | 1075 // SetHistoryLengthAndPrune doesn't work when there are pending cross-site |
1073 // navigations. Callers should ensure that this is the case. | 1076 // navigations. Callers should ensure that this is the case. |
1074 if (render_manager_.pending_render_view_host()) { | 1077 if (render_manager_.pending_render_view_host()) { |
1075 NOTREACHED(); | 1078 NOTREACHED(); |
1076 return; | 1079 return; |
1077 } | 1080 } |
1078 RenderViewHost* rvh = GetRenderViewHost(); | 1081 RenderViewHostImpl* rvh = GetRenderViewHostImpl(); |
1079 if (!rvh) { | 1082 if (!rvh) { |
1080 NOTREACHED(); | 1083 NOTREACHED(); |
1081 return; | 1084 return; |
1082 } | 1085 } |
1083 if (site_instance && rvh->site_instance() != site_instance) { | 1086 if (site_instance && rvh->GetSiteInstance() != site_instance) { |
1084 NOTREACHED(); | 1087 NOTREACHED(); |
1085 return; | 1088 return; |
1086 } | 1089 } |
1087 rvh->Send(new ViewMsg_SetHistoryLengthAndPrune(rvh->routing_id(), | 1090 rvh->Send(new ViewMsg_SetHistoryLengthAndPrune(rvh->GetRoutingID(), |
1088 history_length, | 1091 history_length, |
1089 minimum_page_id)); | 1092 minimum_page_id)); |
1090 } | 1093 } |
1091 | 1094 |
1092 void TabContents::FocusThroughTabTraversal(bool reverse) { | 1095 void TabContents::FocusThroughTabTraversal(bool reverse) { |
1093 if (ShowingInterstitialPage()) { | 1096 if (ShowingInterstitialPage()) { |
1094 render_manager_.interstitial_page()->FocusThroughTabTraversal(reverse); | 1097 render_manager_.interstitial_page()->FocusThroughTabTraversal(reverse); |
1095 return; | 1098 return; |
1096 } | 1099 } |
1097 GetRenderViewHost()->SetInitialFocus(reverse); | 1100 GetRenderViewHostImpl()->SetInitialFocus(reverse); |
1098 } | 1101 } |
1099 | 1102 |
1100 bool TabContents::ShowingInterstitialPage() const { | 1103 bool TabContents::ShowingInterstitialPage() const { |
1101 return render_manager_.interstitial_page() != NULL; | 1104 return render_manager_.interstitial_page() != NULL; |
1102 } | 1105 } |
1103 | 1106 |
1104 InterstitialPage* TabContents::GetInterstitialPage() const { | 1107 InterstitialPage* TabContents::GetInterstitialPage() const { |
1105 return render_manager_.interstitial_page(); | 1108 return render_manager_.interstitial_page(); |
1106 } | 1109 } |
1107 | 1110 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1163 const std::string& TabContents::GetContentsMimeType() const { | 1166 const std::string& TabContents::GetContentsMimeType() const { |
1164 return contents_mime_type_; | 1167 return contents_mime_type_; |
1165 } | 1168 } |
1166 | 1169 |
1167 bool TabContents::WillNotifyDisconnection() const { | 1170 bool TabContents::WillNotifyDisconnection() const { |
1168 return notify_disconnection_; | 1171 return notify_disconnection_; |
1169 } | 1172 } |
1170 | 1173 |
1171 void TabContents::SetOverrideEncoding(const std::string& encoding) { | 1174 void TabContents::SetOverrideEncoding(const std::string& encoding) { |
1172 SetEncoding(encoding); | 1175 SetEncoding(encoding); |
1173 GetRenderViewHost()->Send(new ViewMsg_SetPageEncoding( | 1176 GetRenderViewHostImpl()->Send(new ViewMsg_SetPageEncoding( |
1174 GetRenderViewHost()->routing_id(), encoding)); | 1177 GetRenderViewHost()->GetRoutingID(), encoding)); |
1175 } | 1178 } |
1176 | 1179 |
1177 void TabContents::ResetOverrideEncoding() { | 1180 void TabContents::ResetOverrideEncoding() { |
1178 encoding_.clear(); | 1181 encoding_.clear(); |
1179 GetRenderViewHost()->Send(new ViewMsg_ResetPageEncodingToDefault( | 1182 GetRenderViewHostImpl()->Send(new ViewMsg_ResetPageEncodingToDefault( |
1180 GetRenderViewHost()->routing_id())); | 1183 GetRenderViewHost()->GetRoutingID())); |
1181 } | 1184 } |
1182 | 1185 |
1183 content::RendererPreferences* TabContents::GetMutableRendererPrefs() { | 1186 content::RendererPreferences* TabContents::GetMutableRendererPrefs() { |
1184 return &renderer_preferences_; | 1187 return &renderer_preferences_; |
1185 } | 1188 } |
1186 | 1189 |
1187 void TabContents::SetNewTabStartTime(const base::TimeTicks& time) { | 1190 void TabContents::SetNewTabStartTime(const base::TimeTicks& time) { |
1188 new_tab_start_time_ = time; | 1191 new_tab_start_time_ = time; |
1189 } | 1192 } |
1190 | 1193 |
(...skipping 13 matching lines...) Expand all Loading... |
1204 if (delegate_ && delegate_->IsPopupOrPanel(this)) | 1207 if (delegate_ && delegate_->IsPopupOrPanel(this)) |
1205 return false; | 1208 return false; |
1206 return true; | 1209 return true; |
1207 #else | 1210 #else |
1208 return true; | 1211 return true; |
1209 #endif | 1212 #endif |
1210 } | 1213 } |
1211 | 1214 |
1212 void TabContents::SystemDragEnded() { | 1215 void TabContents::SystemDragEnded() { |
1213 if (GetRenderViewHost()) | 1216 if (GetRenderViewHost()) |
1214 GetRenderViewHost()->DragSourceSystemDragEnded(); | 1217 GetRenderViewHostImpl()->DragSourceSystemDragEnded(); |
1215 if (delegate_) | 1218 if (delegate_) |
1216 delegate_->DragEnded(); | 1219 delegate_->DragEnded(); |
1217 } | 1220 } |
1218 | 1221 |
1219 void TabContents::SetClosedByUserGesture(bool value) { | 1222 void TabContents::SetClosedByUserGesture(bool value) { |
1220 closed_by_user_gesture_ = value; | 1223 closed_by_user_gesture_ = value; |
1221 } | 1224 } |
1222 | 1225 |
1223 bool TabContents::GetClosedByUserGesture() const { | 1226 bool TabContents::GetClosedByUserGesture() const { |
1224 return closed_by_user_gesture_; | 1227 return closed_by_user_gesture_; |
1225 } | 1228 } |
1226 | 1229 |
1227 double TabContents::GetZoomLevel() const { | 1230 double TabContents::GetZoomLevel() const { |
1228 HostZoomMapImpl* zoom_map = static_cast<HostZoomMapImpl*>( | 1231 HostZoomMapImpl* zoom_map = static_cast<HostZoomMapImpl*>( |
1229 HostZoomMap::GetForBrowserContext(GetBrowserContext())); | 1232 HostZoomMap::GetForBrowserContext(GetBrowserContext())); |
1230 if (!zoom_map) | 1233 if (!zoom_map) |
1231 return 0; | 1234 return 0; |
1232 | 1235 |
1233 double zoom_level; | 1236 double zoom_level; |
1234 if (temporary_zoom_settings_) { | 1237 if (temporary_zoom_settings_) { |
1235 zoom_level = zoom_map->GetTemporaryZoomLevel( | 1238 zoom_level = zoom_map->GetTemporaryZoomLevel( |
1236 GetRenderProcessHost()->GetID(), GetRenderViewHost()->routing_id()); | 1239 GetRenderProcessHost()->GetID(), GetRenderViewHost()->GetRoutingID()); |
1237 } else { | 1240 } else { |
1238 GURL url; | 1241 GURL url; |
1239 NavigationEntry* active_entry = GetController().GetActiveEntry(); | 1242 NavigationEntry* active_entry = GetController().GetActiveEntry(); |
1240 // Since zoom map is updated using rewritten URL, use rewritten URL | 1243 // Since zoom map is updated using rewritten URL, use rewritten URL |
1241 // to get the zoom level. | 1244 // to get the zoom level. |
1242 url = active_entry ? active_entry->GetURL() : GURL::EmptyGURL(); | 1245 url = active_entry ? active_entry->GetURL() : GURL::EmptyGURL(); |
1243 zoom_level = zoom_map->GetZoomLevel(net::GetHostOrSpecFromURL(url)); | 1246 zoom_level = zoom_map->GetZoomLevel(net::GetHostOrSpecFromURL(url)); |
1244 } | 1247 } |
1245 return zoom_level; | 1248 return zoom_level; |
1246 } | 1249 } |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1335 // -> Use committed Web UI. | 1338 // -> Use committed Web UI. |
1336 if (controller_.GetPendingEntry() && | 1339 if (controller_.GetPendingEntry() && |
1337 (controller_.GetLastCommittedEntry() || | 1340 (controller_.GetLastCommittedEntry() || |
1338 render_manager_.pending_web_ui())) | 1341 render_manager_.pending_web_ui())) |
1339 return render_manager_.pending_web_ui(); | 1342 return render_manager_.pending_web_ui(); |
1340 return render_manager_.web_ui(); | 1343 return render_manager_.web_ui(); |
1341 } | 1344 } |
1342 | 1345 |
1343 bool TabContents::GotResponseToLockMouseRequest(bool allowed) { | 1346 bool TabContents::GotResponseToLockMouseRequest(bool allowed) { |
1344 return GetRenderViewHost() ? | 1347 return GetRenderViewHost() ? |
1345 GetRenderViewHost()->GotResponseToLockMouseRequest(allowed) : false; | 1348 GetRenderViewHostImpl()->GotResponseToLockMouseRequest(allowed) : false; |
1346 } | 1349 } |
1347 | 1350 |
1348 bool TabContents::FocusLocationBarByDefault() { | 1351 bool TabContents::FocusLocationBarByDefault() { |
1349 content::WebUI* web_ui = GetWebUIForCurrentState(); | 1352 content::WebUI* web_ui = GetWebUIForCurrentState(); |
1350 if (web_ui) | 1353 if (web_ui) |
1351 return web_ui->ShouldFocusLocationBarByDefault(); | 1354 return web_ui->ShouldFocusLocationBarByDefault(); |
1352 NavigationEntry* entry = controller_.GetActiveEntry(); | 1355 NavigationEntry* entry = controller_.GetActiveEntry(); |
1353 if (entry && entry->GetURL() == GURL(chrome::kAboutBlankURL)) | 1356 if (entry && entry->GetURL() == GURL(chrome::kAboutBlankURL)) |
1354 return true; | 1357 return true; |
1355 return false; | 1358 return false; |
(...skipping 19 matching lines...) Expand all Loading... |
1375 new WebIntentsDispatcherImpl(this, intent, intent_id); | 1378 new WebIntentsDispatcherImpl(this, intent, intent_id); |
1376 delegate_->WebIntentDispatch(this, intents_dispatcher); | 1379 delegate_->WebIntentDispatch(this, intents_dispatcher); |
1377 } | 1380 } |
1378 | 1381 |
1379 void TabContents::OnDidStartProvisionalLoadForFrame(int64 frame_id, | 1382 void TabContents::OnDidStartProvisionalLoadForFrame(int64 frame_id, |
1380 bool is_main_frame, | 1383 bool is_main_frame, |
1381 const GURL& opener_url, | 1384 const GURL& opener_url, |
1382 const GURL& url) { | 1385 const GURL& url) { |
1383 bool is_error_page = (url.spec() == chrome::kUnreachableWebDataURL); | 1386 bool is_error_page = (url.spec() == chrome::kUnreachableWebDataURL); |
1384 GURL validated_url(url); | 1387 GURL validated_url(url); |
1385 GetRenderViewHost()->FilterURL(ChildProcessSecurityPolicyImpl::GetInstance(), | 1388 GetRenderViewHostImpl()->FilterURL( |
1386 GetRenderProcessHost()->GetID(), &validated_url); | 1389 ChildProcessSecurityPolicyImpl::GetInstance(), |
| 1390 GetRenderProcessHost()->GetID(), |
| 1391 &validated_url); |
1387 | 1392 |
1388 RenderViewHost* rvh = | 1393 RenderViewHost* rvh = |
1389 render_manager_.pending_render_view_host() ? | 1394 render_manager_.pending_render_view_host() ? |
1390 render_manager_.pending_render_view_host() : GetRenderViewHost(); | 1395 render_manager_.pending_render_view_host() : GetRenderViewHost(); |
1391 // Notify observers about the start of the provisional load. | 1396 // Notify observers about the start of the provisional load. |
1392 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 1397 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
1393 DidStartProvisionalLoadForFrame(frame_id, is_main_frame, | 1398 DidStartProvisionalLoadForFrame(frame_id, is_main_frame, |
1394 validated_url, is_error_page, rvh)); | 1399 validated_url, is_error_page, rvh)); |
1395 | 1400 |
1396 if (is_main_frame) { | 1401 if (is_main_frame) { |
(...skipping 27 matching lines...) Expand all Loading... |
1424 void TabContents::OnDidFailProvisionalLoadWithError( | 1429 void TabContents::OnDidFailProvisionalLoadWithError( |
1425 const ViewHostMsg_DidFailProvisionalLoadWithError_Params& params) { | 1430 const ViewHostMsg_DidFailProvisionalLoadWithError_Params& params) { |
1426 VLOG(1) << "Failed Provisional Load: " << params.url.possibly_invalid_spec() | 1431 VLOG(1) << "Failed Provisional Load: " << params.url.possibly_invalid_spec() |
1427 << ", error_code: " << params.error_code | 1432 << ", error_code: " << params.error_code |
1428 << ", error_description: " << params.error_description | 1433 << ", error_description: " << params.error_description |
1429 << ", is_main_frame: " << params.is_main_frame | 1434 << ", is_main_frame: " << params.is_main_frame |
1430 << ", showing_repost_interstitial: " << | 1435 << ", showing_repost_interstitial: " << |
1431 params.showing_repost_interstitial | 1436 params.showing_repost_interstitial |
1432 << ", frame_id: " << params.frame_id; | 1437 << ", frame_id: " << params.frame_id; |
1433 GURL validated_url(params.url); | 1438 GURL validated_url(params.url); |
1434 GetRenderViewHost()->FilterURL(ChildProcessSecurityPolicyImpl::GetInstance(), | 1439 GetRenderViewHostImpl()->FilterURL( |
1435 GetRenderProcessHost()->GetID(), &validated_url); | 1440 ChildProcessSecurityPolicyImpl::GetInstance(), |
| 1441 GetRenderProcessHost()->GetID(), |
| 1442 &validated_url); |
1436 | 1443 |
1437 if (net::ERR_ABORTED == params.error_code) { | 1444 if (net::ERR_ABORTED == params.error_code) { |
1438 // EVIL HACK ALERT! Ignore failed loads when we're showing interstitials. | 1445 // EVIL HACK ALERT! Ignore failed loads when we're showing interstitials. |
1439 // This means that the interstitial won't be torn down properly, which is | 1446 // This means that the interstitial won't be torn down properly, which is |
1440 // bad. But if we have an interstitial, go back to another tab type, and | 1447 // bad. But if we have an interstitial, go back to another tab type, and |
1441 // then load the same interstitial again, we could end up getting the first | 1448 // then load the same interstitial again, we could end up getting the first |
1442 // interstitial's "failed" message (as a result of the cancel) when we're on | 1449 // interstitial's "failed" message (as a result of the cancel) when we're on |
1443 // the second one. | 1450 // the second one. |
1444 // | 1451 // |
1445 // We can't tell this apart, so we think we're tearing down the current page | 1452 // We can't tell this apart, so we think we're tearing down the current page |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1643 int active_match_ordinal, | 1650 int active_match_ordinal, |
1644 bool final_update) { | 1651 bool final_update) { |
1645 delegate_->FindReply(this, request_id, number_of_matches, selection_rect, | 1652 delegate_->FindReply(this, request_id, number_of_matches, selection_rect, |
1646 active_match_ordinal, final_update); | 1653 active_match_ordinal, final_update); |
1647 // Send a notification to the renderer that we are ready to receive more | 1654 // Send a notification to the renderer that we are ready to receive more |
1648 // results from the scoping effort of the Find operation. The FindInPage | 1655 // results from the scoping effort of the Find operation. The FindInPage |
1649 // scoping is asynchronous and periodically sends results back up to the | 1656 // scoping is asynchronous and periodically sends results back up to the |
1650 // browser using IPC. In an effort to not spam the browser we have the | 1657 // browser using IPC. In an effort to not spam the browser we have the |
1651 // browser send an ACK for each FindReply message and have the renderer | 1658 // browser send an ACK for each FindReply message and have the renderer |
1652 // queue up the latest status message while waiting for this ACK. | 1659 // queue up the latest status message while waiting for this ACK. |
1653 GetRenderViewHost()->Send( | 1660 GetRenderViewHostImpl()->Send( |
1654 new ViewMsg_FindReplyACK(GetRenderViewHost()->routing_id())); | 1661 new ViewMsg_FindReplyACK(GetRenderViewHost()->GetRoutingID())); |
1655 } | 1662 } |
1656 | 1663 |
1657 void TabContents::OnCrashedPlugin(const FilePath& plugin_path) { | 1664 void TabContents::OnCrashedPlugin(const FilePath& plugin_path) { |
1658 delegate_->CrashedPlugin(this, plugin_path); | 1665 delegate_->CrashedPlugin(this, plugin_path); |
1659 } | 1666 } |
1660 | 1667 |
1661 void TabContents::OnAppCacheAccessed(const GURL& manifest_url, | 1668 void TabContents::OnAppCacheAccessed(const GURL& manifest_url, |
1662 bool blocked_by_policy) { | 1669 bool blocked_by_policy) { |
1663 // Notify observers about navigation. | 1670 // Notify observers about navigation. |
1664 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 1671 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1755 } | 1762 } |
1756 | 1763 |
1757 void TabContents::UpdateMaxPageIDIfNecessary(RenderViewHost* rvh) { | 1764 void TabContents::UpdateMaxPageIDIfNecessary(RenderViewHost* rvh) { |
1758 // If we are creating a RVH for a restored controller, then we need to make | 1765 // If we are creating a RVH for a restored controller, then we need to make |
1759 // sure the RenderView starts with a next_page_id_ larger than the number | 1766 // sure the RenderView starts with a next_page_id_ larger than the number |
1760 // of restored entries. This must be called before the RenderView starts | 1767 // of restored entries. This must be called before the RenderView starts |
1761 // navigating (to avoid a race between the browser updating max_page_id and | 1768 // navigating (to avoid a race between the browser updating max_page_id and |
1762 // the renderer updating next_page_id_). Because of this, we only call this | 1769 // the renderer updating next_page_id_). Because of this, we only call this |
1763 // from CreateRenderView and allow that to notify the RenderView for us. | 1770 // from CreateRenderView and allow that to notify the RenderView for us. |
1764 int max_restored_page_id = controller_.GetMaxRestoredPageID(); | 1771 int max_restored_page_id = controller_.GetMaxRestoredPageID(); |
1765 if (max_restored_page_id > GetMaxPageIDForSiteInstance(rvh->site_instance())) | 1772 if (max_restored_page_id > |
1766 UpdateMaxPageIDForSiteInstance(rvh->site_instance(), max_restored_page_id); | 1773 GetMaxPageIDForSiteInstance(rvh->GetSiteInstance())) |
| 1774 UpdateMaxPageIDForSiteInstance(rvh->GetSiteInstance(), |
| 1775 max_restored_page_id); |
1767 } | 1776 } |
1768 | 1777 |
1769 bool TabContents::UpdateTitleForEntry(NavigationEntryImpl* entry, | 1778 bool TabContents::UpdateTitleForEntry(NavigationEntryImpl* entry, |
1770 const string16& title) { | 1779 const string16& title) { |
1771 // For file URLs without a title, use the pathname instead. In the case of a | 1780 // For file URLs without a title, use the pathname instead. In the case of a |
1772 // synthesized title, we don't want the update to count toward the "one set | 1781 // synthesized title, we don't want the update to count toward the "one set |
1773 // per page of the title to history." | 1782 // per page of the title to history." |
1774 string16 final_title; | 1783 string16 final_title; |
1775 bool explicit_set; | 1784 bool explicit_set; |
1776 if (entry && entry->GetURL().SchemeIsFile() && title.empty()) { | 1785 if (entry && entry->GetURL().SchemeIsFile() && title.empty()) { |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1876 if (!entry) | 1885 if (!entry) |
1877 return; | 1886 return; |
1878 | 1887 |
1879 // When we're creating views, we're still doing initial setup, so we always | 1888 // When we're creating views, we're still doing initial setup, so we always |
1880 // use the pending Web UI rather than any possibly existing committed one. | 1889 // use the pending Web UI rather than any possibly existing committed one. |
1881 if (render_manager_.pending_web_ui()) | 1890 if (render_manager_.pending_web_ui()) |
1882 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); | 1891 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); |
1883 | 1892 |
1884 if (entry->IsViewSourceMode()) { | 1893 if (entry->IsViewSourceMode()) { |
1885 // Put the renderer in view source mode. | 1894 // Put the renderer in view source mode. |
1886 render_view_host->Send( | 1895 static_cast<RenderViewHostImpl*>(render_view_host)->Send( |
1887 new ViewMsg_EnableViewSourceMode(render_view_host->routing_id())); | 1896 new ViewMsg_EnableViewSourceMode(render_view_host->GetRoutingID())); |
1888 } | 1897 } |
1889 | 1898 |
1890 GetView()->RenderViewCreated(render_view_host); | 1899 GetView()->RenderViewCreated(render_view_host); |
1891 | 1900 |
1892 FOR_EACH_OBSERVER( | 1901 FOR_EACH_OBSERVER( |
1893 WebContentsObserver, observers_, RenderViewCreated(render_view_host)); | 1902 WebContentsObserver, observers_, RenderViewCreated(render_view_host)); |
1894 } | 1903 } |
1895 | 1904 |
1896 void TabContents::RenderViewReady(RenderViewHost* rvh) { | 1905 void TabContents::RenderViewReady(RenderViewHost* rvh) { |
1897 if (rvh != GetRenderViewHost()) { | 1906 if (rvh != GetRenderViewHost()) { |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2013 // the swapped out RVHs. We don't expect to hear from any other RVHs. | 2022 // the swapped out RVHs. We don't expect to hear from any other RVHs. |
2014 DCHECK(rvh == GetRenderViewHost() || render_manager_.IsSwappedOut(rvh)); | 2023 DCHECK(rvh == GetRenderViewHost() || render_manager_.IsSwappedOut(rvh)); |
2015 | 2024 |
2016 // We must be prepared to handle state updates for any page, these occur | 2025 // We must be prepared to handle state updates for any page, these occur |
2017 // when the user is scrolling and entering form data, as well as when we're | 2026 // when the user is scrolling and entering form data, as well as when we're |
2018 // leaving a page, in which case our state may have already been moved to | 2027 // leaving a page, in which case our state may have already been moved to |
2019 // the next page. The navigation controller will look up the appropriate | 2028 // the next page. The navigation controller will look up the appropriate |
2020 // NavigationEntry and update it when it is notified via the delegate. | 2029 // NavigationEntry and update it when it is notified via the delegate. |
2021 | 2030 |
2022 int entry_index = controller_.GetEntryIndexWithPageID( | 2031 int entry_index = controller_.GetEntryIndexWithPageID( |
2023 rvh->site_instance(), page_id); | 2032 rvh->GetSiteInstance(), page_id); |
2024 if (entry_index < 0) | 2033 if (entry_index < 0) |
2025 return; | 2034 return; |
2026 NavigationEntry* entry = controller_.GetEntryAtIndex(entry_index); | 2035 NavigationEntry* entry = controller_.GetEntryAtIndex(entry_index); |
2027 | 2036 |
2028 if (state == entry->GetContentState()) | 2037 if (state == entry->GetContentState()) |
2029 return; // Nothing to update. | 2038 return; // Nothing to update. |
2030 entry->SetContentState(state); | 2039 entry->SetContentState(state); |
2031 controller_.NotifyEntryChanged(entry, entry_index); | 2040 controller_.NotifyEntryChanged(entry, entry_index); |
2032 } | 2041 } |
2033 | 2042 |
2034 void TabContents::UpdateTitle(RenderViewHost* rvh, | 2043 void TabContents::UpdateTitle(RenderViewHost* rvh, |
2035 int32 page_id, | 2044 int32 page_id, |
2036 const string16& title, | 2045 const string16& title, |
2037 base::i18n::TextDirection title_direction) { | 2046 base::i18n::TextDirection title_direction) { |
2038 // If we have a title, that's a pretty good indication that we've started | 2047 // If we have a title, that's a pretty good indication that we've started |
2039 // getting useful data. | 2048 // getting useful data. |
2040 SetNotWaitingForResponse(); | 2049 SetNotWaitingForResponse(); |
2041 | 2050 |
2042 // Try to find the navigation entry, which might not be the current one. | 2051 // Try to find the navigation entry, which might not be the current one. |
2043 // For example, it might be from a pending RVH for the pending entry. | 2052 // For example, it might be from a pending RVH for the pending entry. |
2044 NavigationEntryImpl* entry = controller_.GetEntryWithPageID( | 2053 NavigationEntryImpl* entry = controller_.GetEntryWithPageID( |
2045 rvh->site_instance(), page_id); | 2054 rvh->GetSiteInstance(), page_id); |
2046 | 2055 |
2047 // We can handle title updates when we don't have an entry in | 2056 // We can handle title updates when we don't have an entry in |
2048 // UpdateTitleForEntry, but only if the update is from the current RVH. | 2057 // UpdateTitleForEntry, but only if the update is from the current RVH. |
2049 if (!entry && rvh != GetRenderViewHost()) | 2058 if (!entry && rvh != GetRenderViewHost()) |
2050 return; | 2059 return; |
2051 | 2060 |
2052 // TODO(evan): make use of title_direction. | 2061 // TODO(evan): make use of title_direction. |
2053 // http://code.google.com/p/chromium/issues/detail?id=27094 | 2062 // http://code.google.com/p/chromium/issues/detail?id=27094 |
2054 if (!UpdateTitleForEntry(entry, title)) | 2063 if (!UpdateTitleForEntry(entry, title)) |
2055 return; | 2064 return; |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2224 const string16& message, | 2233 const string16& message, |
2225 const string16& default_prompt, | 2234 const string16& default_prompt, |
2226 const GURL& frame_url, | 2235 const GURL& frame_url, |
2227 ui::JavascriptMessageType javascript_message_type, | 2236 ui::JavascriptMessageType javascript_message_type, |
2228 IPC::Message* reply_msg, | 2237 IPC::Message* reply_msg, |
2229 bool* did_suppress_message) { | 2238 bool* did_suppress_message) { |
2230 // Suppress JavaScript dialogs when requested. Also suppress messages when | 2239 // Suppress JavaScript dialogs when requested. Also suppress messages when |
2231 // showing an interstitial as it's shown over the previous page and we don't | 2240 // showing an interstitial as it's shown over the previous page and we don't |
2232 // want the hidden page's dialogs to interfere with the interstitial. | 2241 // want the hidden page's dialogs to interfere with the interstitial. |
2233 bool suppress_this_message = | 2242 bool suppress_this_message = |
2234 rvh->is_swapped_out() || | 2243 static_cast<RenderViewHostImpl*>(rvh)->is_swapped_out() || |
2235 ShowingInterstitialPage() || | 2244 ShowingInterstitialPage() || |
2236 !delegate_ || | 2245 !delegate_ || |
2237 delegate_->ShouldSuppressDialogs() || | 2246 delegate_->ShouldSuppressDialogs() || |
2238 !delegate_->GetJavaScriptDialogCreator(); | 2247 !delegate_->GetJavaScriptDialogCreator(); |
2239 | 2248 |
2240 if (!suppress_this_message) { | 2249 if (!suppress_this_message) { |
2241 std::string accept_lang = content::GetContentClient()->browser()-> | 2250 std::string accept_lang = content::GetContentClient()->browser()-> |
2242 GetAcceptLangs(GetBrowserContext()); | 2251 GetAcceptLangs(GetBrowserContext()); |
2243 dialog_creator_ = delegate_->GetJavaScriptDialogCreator(); | 2252 dialog_creator_ = delegate_->GetJavaScriptDialogCreator(); |
2244 dialog_creator_->RunJavaScriptDialog( | 2253 dialog_creator_->RunJavaScriptDialog( |
(...skipping 14 matching lines...) Expand all Loading... |
2259 OnDialogClosed(rvh, reply_msg, false, string16()); | 2268 OnDialogClosed(rvh, reply_msg, false, string16()); |
2260 } | 2269 } |
2261 | 2270 |
2262 *did_suppress_message = suppress_this_message; | 2271 *did_suppress_message = suppress_this_message; |
2263 } | 2272 } |
2264 | 2273 |
2265 void TabContents::RunBeforeUnloadConfirm(RenderViewHost* rvh, | 2274 void TabContents::RunBeforeUnloadConfirm(RenderViewHost* rvh, |
2266 const string16& message, | 2275 const string16& message, |
2267 bool is_reload, | 2276 bool is_reload, |
2268 IPC::Message* reply_msg) { | 2277 IPC::Message* reply_msg) { |
| 2278 RenderViewHostImpl* rvhi = static_cast<RenderViewHostImpl*>(rvh); |
2269 if (delegate_) | 2279 if (delegate_) |
2270 delegate_->WillRunBeforeUnloadConfirm(); | 2280 delegate_->WillRunBeforeUnloadConfirm(); |
2271 | 2281 |
2272 bool suppress_this_message = | 2282 bool suppress_this_message = |
2273 rvh->is_swapped_out() || | 2283 rvhi->is_swapped_out() || |
2274 !delegate_ || | 2284 !delegate_ || |
2275 delegate_->ShouldSuppressDialogs() || | 2285 delegate_->ShouldSuppressDialogs() || |
2276 !delegate_->GetJavaScriptDialogCreator(); | 2286 !delegate_->GetJavaScriptDialogCreator(); |
2277 if (suppress_this_message) { | 2287 if (suppress_this_message) { |
2278 // The reply must be sent to the RVH that sent the request. | 2288 // The reply must be sent to the RVH that sent the request. |
2279 rvh->JavaScriptDialogClosed(reply_msg, true, string16()); | 2289 rvhi->JavaScriptDialogClosed(reply_msg, true, string16()); |
2280 return; | 2290 return; |
2281 } | 2291 } |
2282 | 2292 |
2283 is_showing_before_unload_dialog_ = true; | 2293 is_showing_before_unload_dialog_ = true; |
2284 dialog_creator_ = delegate_->GetJavaScriptDialogCreator(); | 2294 dialog_creator_ = delegate_->GetJavaScriptDialogCreator(); |
2285 dialog_creator_->RunBeforeUnloadDialog( | 2295 dialog_creator_->RunBeforeUnloadDialog( |
2286 this, message, is_reload, | 2296 this, message, is_reload, |
2287 base::Bind(&TabContents::OnDialogClosed, base::Unretained(this), rvh, | 2297 base::Bind(&TabContents::OnDialogClosed, base::Unretained(this), rvh, |
2288 reply_msg)); | 2298 reply_msg)); |
2289 } | 2299 } |
(...skipping 15 matching lines...) Expand all Loading... |
2305 // Notify observers. | 2315 // Notify observers. |
2306 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetIgnoredUIEvent()); | 2316 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetIgnoredUIEvent()); |
2307 } | 2317 } |
2308 | 2318 |
2309 void TabContents::RendererUnresponsive(RenderViewHost* rvh, | 2319 void TabContents::RendererUnresponsive(RenderViewHost* rvh, |
2310 bool is_during_unload) { | 2320 bool is_during_unload) { |
2311 // Don't show hung renderer dialog for a swapped out RVH. | 2321 // Don't show hung renderer dialog for a swapped out RVH. |
2312 if (rvh != GetRenderViewHost()) | 2322 if (rvh != GetRenderViewHost()) |
2313 return; | 2323 return; |
2314 | 2324 |
| 2325 RenderViewHostImpl* rvhi = static_cast<RenderViewHostImpl*>(rvh); |
| 2326 |
2315 // Ignore renderer unresponsive event if debugger is attached to the tab | 2327 // Ignore renderer unresponsive event if debugger is attached to the tab |
2316 // since the event may be a result of the renderer sitting on a breakpoint. | 2328 // since the event may be a result of the renderer sitting on a breakpoint. |
2317 // See http://crbug.com/65458 | 2329 // See http://crbug.com/65458 |
2318 DevToolsAgentHost* agent = | 2330 DevToolsAgentHost* agent = |
2319 content::DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh); | 2331 content::DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh); |
2320 if (agent && | 2332 if (agent && |
2321 DevToolsManagerImpl::GetInstance()->GetDevToolsClientHostFor(agent)) | 2333 DevToolsManagerImpl::GetInstance()->GetDevToolsClientHostFor(agent)) |
2322 return; | 2334 return; |
2323 | 2335 |
2324 if (is_during_unload) { | 2336 if (is_during_unload) { |
2325 // Hang occurred while firing the beforeunload/unload handler. | 2337 // Hang occurred while firing the beforeunload/unload handler. |
2326 // Pretend the handler fired so tab closing continues as if it had. | 2338 // Pretend the handler fired so tab closing continues as if it had. |
2327 rvh->set_sudden_termination_allowed(true); | 2339 rvhi->set_sudden_termination_allowed(true); |
2328 | 2340 |
2329 if (!render_manager_.ShouldCloseTabOnUnresponsiveRenderer()) | 2341 if (!render_manager_.ShouldCloseTabOnUnresponsiveRenderer()) |
2330 return; | 2342 return; |
2331 | 2343 |
2332 // If the tab hangs in the beforeunload/unload handler there's really | 2344 // If the tab hangs in the beforeunload/unload handler there's really |
2333 // nothing we can do to recover. Pretend the unload listeners have | 2345 // nothing we can do to recover. Pretend the unload listeners have |
2334 // all fired and close the tab. If the hang is in the beforeunload handler | 2346 // all fired and close the tab. If the hang is in the beforeunload handler |
2335 // then the user will not have the option of cancelling the close. | 2347 // then the user will not have the option of cancelling the close. |
2336 Close(rvh); | 2348 Close(rvh); |
2337 return; | 2349 return; |
2338 } | 2350 } |
2339 | 2351 |
2340 if (!GetRenderViewHost() || !GetRenderViewHost()->IsRenderViewLive()) | 2352 if (!GetRenderViewHostImpl() || !GetRenderViewHostImpl()->IsRenderViewLive()) |
2341 return; | 2353 return; |
2342 | 2354 |
2343 if (delegate_) | 2355 if (delegate_) |
2344 delegate_->RendererUnresponsive(this); | 2356 delegate_->RendererUnresponsive(this); |
2345 } | 2357 } |
2346 | 2358 |
2347 void TabContents::RendererResponsive(RenderViewHost* render_view_host) { | 2359 void TabContents::RendererResponsive(RenderViewHost* render_view_host) { |
2348 if (delegate_) | 2360 if (delegate_) |
2349 delegate_->RendererResponsive(this); | 2361 delegate_->RendererResponsive(this); |
2350 } | 2362 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2423 // Can be NULL during tests. | 2435 // Can be NULL during tests. |
2424 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host); | 2436 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host); |
2425 | 2437 |
2426 // Now that the RenderView has been created, we need to tell it its size. | 2438 // Now that the RenderView has been created, we need to tell it its size. |
2427 if (rwh_view) | 2439 if (rwh_view) |
2428 rwh_view->SetSize(view_->GetContainerSize()); | 2440 rwh_view->SetSize(view_->GetContainerSize()); |
2429 | 2441 |
2430 // Make sure we use the correct starting page_id in the new RenderView. | 2442 // Make sure we use the correct starting page_id in the new RenderView. |
2431 UpdateMaxPageIDIfNecessary(render_view_host); | 2443 UpdateMaxPageIDIfNecessary(render_view_host); |
2432 int32 max_page_id = | 2444 int32 max_page_id = |
2433 GetMaxPageIDForSiteInstance(render_view_host->site_instance()); | 2445 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); |
2434 | 2446 |
2435 if (!render_view_host->CreateRenderView(string16(), max_page_id)) | 2447 if (!static_cast<RenderViewHostImpl*>( |
| 2448 render_view_host)->CreateRenderView(string16(), max_page_id)) |
2436 return false; | 2449 return false; |
2437 | 2450 |
2438 #if defined(OS_LINUX) || defined(OS_OPENBSD) | 2451 #if defined(OS_LINUX) || defined(OS_OPENBSD) |
2439 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on | 2452 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on |
2440 // linux. See crbug.com/83941. | 2453 // linux. See crbug.com/83941. |
2441 if (rwh_view) { | 2454 if (rwh_view) { |
2442 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) | 2455 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) |
2443 render_widget_host->WasResized(); | 2456 render_widget_host->WasResized(); |
2444 } | 2457 } |
2445 #endif | 2458 #endif |
2446 | 2459 |
2447 return true; | 2460 return true; |
2448 } | 2461 } |
2449 | 2462 |
2450 void TabContents::OnDialogClosed(RenderViewHost* rvh, | 2463 void TabContents::OnDialogClosed(RenderViewHost* rvh, |
2451 IPC::Message* reply_msg, | 2464 IPC::Message* reply_msg, |
2452 bool success, | 2465 bool success, |
2453 const string16& user_input) { | 2466 const string16& user_input) { |
2454 if (is_showing_before_unload_dialog_ && !success) { | 2467 if (is_showing_before_unload_dialog_ && !success) { |
2455 // If a beforeunload dialog is canceled, we need to stop the throbber from | 2468 // If a beforeunload dialog is canceled, we need to stop the throbber from |
2456 // spinning, since we forced it to start spinning in Navigate. | 2469 // spinning, since we forced it to start spinning in Navigate. |
2457 DidStopLoading(); | 2470 DidStopLoading(); |
2458 | 2471 |
2459 tab_close_start_time_ = base::TimeTicks(); | 2472 tab_close_start_time_ = base::TimeTicks(); |
2460 } | 2473 } |
2461 is_showing_before_unload_dialog_ = false; | 2474 is_showing_before_unload_dialog_ = false; |
2462 rvh->JavaScriptDialogClosed(reply_msg, success, user_input); | 2475 static_cast<RenderViewHostImpl*>( |
| 2476 rvh)->JavaScriptDialogClosed(reply_msg, success, user_input); |
2463 } | 2477 } |
2464 | 2478 |
2465 void TabContents::SetEncoding(const std::string& encoding) { | 2479 void TabContents::SetEncoding(const std::string& encoding) { |
2466 encoding_ = content::GetContentClient()->browser()-> | 2480 encoding_ = content::GetContentClient()->browser()-> |
2467 GetCanonicalEncodingNameByAliasName(encoding); | 2481 GetCanonicalEncodingNameByAliasName(encoding); |
2468 } | 2482 } |
2469 | 2483 |
2470 void TabContents::SaveURL(const GURL& url, | 2484 void TabContents::SaveURL(const GURL& url, |
2471 const GURL& referrer, | 2485 const GURL& referrer, |
2472 bool is_main_frame) { | 2486 bool is_main_frame) { |
(...skipping 16 matching lines...) Expand all Loading... |
2489 save_info, | 2503 save_info, |
2490 this); | 2504 this); |
2491 } | 2505 } |
2492 | 2506 |
2493 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { | 2507 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { |
2494 RenderWidgetHostView* rwh_view = GetView()->CreateViewForWidget(rvh); | 2508 RenderWidgetHostView* rwh_view = GetView()->CreateViewForWidget(rvh); |
2495 // Can be NULL during tests. | 2509 // Can be NULL during tests. |
2496 if (rwh_view) | 2510 if (rwh_view) |
2497 rwh_view->SetSize(GetView()->GetContainerSize()); | 2511 rwh_view->SetSize(GetView()->GetContainerSize()); |
2498 } | 2512 } |
| 2513 |
| 2514 RenderViewHostImpl* TabContents::GetRenderViewHostImpl() { |
| 2515 return static_cast<RenderViewHostImpl*>(GetRenderViewHost()); |
| 2516 } |
OLD | NEW |