OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
905 if (!entry || entry->url() != source_url) | 905 if (!entry || entry->url() != source_url) |
906 return; | 906 return; |
907 | 907 |
908 // Notify observers about the provisional change in the main frame URL. | 908 // Notify observers about the provisional change in the main frame URL. |
909 FOR_EACH_OBSERVER(TabContentsObserver, observers_, | 909 FOR_EACH_OBSERVER(TabContentsObserver, observers_, |
910 ProvisionalChangeToMainFrameUrl(target_url, | 910 ProvisionalChangeToMainFrameUrl(target_url, |
911 has_opener_set)); | 911 has_opener_set)); |
912 } | 912 } |
913 | 913 |
914 void TabContents::OnDidFailProvisionalLoadWithError( | 914 void TabContents::OnDidFailProvisionalLoadWithError( |
915 int64 frame_id, | 915 const ViewHostMsg_DidFailProvisionalLoadWithError_Params& params) { |
916 bool is_main_frame, | 916 VLOG(1) << "Failed Provisional Load: " << params.url.possibly_invalid_spec() |
917 int error_code, | 917 << ", error_code: " << params.error_code |
918 const GURL& url, | 918 << ", error_description: " << params.error_description |
919 bool showing_repost_interstitial) { | 919 << ", is_main_frame: " << params.is_main_frame |
920 VLOG(1) << "Failed Provisional Load: " << url.possibly_invalid_spec() | 920 << ", showing_repost_interstitial: " << |
921 << ", error_code: " << error_code | 921 params.showing_repost_interstitial |
922 << " is_main_frame: " << is_main_frame | 922 << ", frame_id: " << params.frame_id; |
923 << " showing_repost_interstitial: " << showing_repost_interstitial | 923 GURL validated_url(params.url); |
924 << " frame_id: " << frame_id; | |
925 GURL validated_url(url); | |
926 render_view_host()->FilterURL(ChildProcessSecurityPolicy::GetInstance(), | 924 render_view_host()->FilterURL(ChildProcessSecurityPolicy::GetInstance(), |
927 GetRenderProcessHost()->id(), &validated_url); | 925 GetRenderProcessHost()->id(), &validated_url); |
928 | 926 |
929 if (net::ERR_ABORTED == error_code) { | 927 if (net::ERR_ABORTED == params.error_code) { |
930 // EVIL HACK ALERT! Ignore failed loads when we're showing interstitials. | 928 // EVIL HACK ALERT! Ignore failed loads when we're showing interstitials. |
931 // This means that the interstitial won't be torn down properly, which is | 929 // This means that the interstitial won't be torn down properly, which is |
932 // bad. But if we have an interstitial, go back to another tab type, and | 930 // bad. But if we have an interstitial, go back to another tab type, and |
933 // then load the same interstitial again, we could end up getting the first | 931 // then load the same interstitial again, we could end up getting the first |
934 // interstitial's "failed" message (as a result of the cancel) when we're on | 932 // interstitial's "failed" message (as a result of the cancel) when we're on |
935 // the second one. | 933 // the second one. |
936 // | 934 // |
937 // We can't tell this apart, so we think we're tearing down the current page | 935 // We can't tell this apart, so we think we're tearing down the current page |
938 // which will cause a crash later one. There is also some code in | 936 // which will cause a crash later one. There is also some code in |
939 // RenderViewHostManager::RendererAbortedProvisionalLoad that is commented | 937 // RenderViewHostManager::RendererAbortedProvisionalLoad that is commented |
(...skipping 20 matching lines...) Expand all Loading... |
960 // navigation will still commit even if there is no pending entry. | 958 // navigation will still commit even if there is no pending entry. |
961 NavigationEntry* pending_entry = controller_.pending_entry(); | 959 NavigationEntry* pending_entry = controller_.pending_entry(); |
962 if (pending_entry) | 960 if (pending_entry) |
963 DidCancelLoading(); | 961 DidCancelLoading(); |
964 | 962 |
965 render_manager_.RendererAbortedProvisionalLoad(render_view_host()); | 963 render_manager_.RendererAbortedProvisionalLoad(render_view_host()); |
966 } | 964 } |
967 | 965 |
968 // Send out a notification that we failed a provisional load with an error. | 966 // Send out a notification that we failed a provisional load with an error. |
969 ProvisionalLoadDetails details( | 967 ProvisionalLoadDetails details( |
970 is_main_frame, controller_.IsURLInPageNavigation(validated_url), | 968 params.is_main_frame, |
971 validated_url, std::string(), false, frame_id); | 969 controller_.IsURLInPageNavigation(validated_url), |
972 details.set_error_code(error_code); | 970 validated_url, |
| 971 std::string(), |
| 972 false, |
| 973 params.frame_id); |
| 974 details.set_error_code(params.error_code); |
973 | 975 |
974 NotificationService::current()->Notify( | 976 NotificationService::current()->Notify( |
975 content::NOTIFICATION_FAIL_PROVISIONAL_LOAD_WITH_ERROR, | 977 content::NOTIFICATION_FAIL_PROVISIONAL_LOAD_WITH_ERROR, |
976 Source<NavigationController>(&controller_), | 978 Source<NavigationController>(&controller_), |
977 Details<ProvisionalLoadDetails>(&details)); | 979 Details<ProvisionalLoadDetails>(&details)); |
978 | 980 |
979 FOR_EACH_OBSERVER(TabContentsObserver, observers_, | 981 FOR_EACH_OBSERVER(TabContentsObserver, |
980 DidFailProvisionalLoad(frame_id, is_main_frame, | 982 observers_, |
981 validated_url, error_code)); | 983 DidFailProvisionalLoad(params.frame_id, |
| 984 params.is_main_frame, |
| 985 validated_url, |
| 986 params.error_code, |
| 987 params.error_description)); |
982 } | 988 } |
983 | 989 |
984 void TabContents::OnDidLoadResourceFromMemoryCache( | 990 void TabContents::OnDidLoadResourceFromMemoryCache( |
985 const GURL& url, | 991 const GURL& url, |
986 const std::string& security_info, | 992 const std::string& security_info, |
987 const std::string& http_method, | 993 const std::string& http_method, |
988 ResourceType::Type resource_type) { | 994 ResourceType::Type resource_type) { |
989 base::StatsCounter cache("WebKit.CacheHit"); | 995 base::StatsCounter cache("WebKit.CacheHit"); |
990 cache.Increment(); | 996 cache.Increment(); |
991 | 997 |
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1956 } | 1962 } |
1957 | 1963 |
1958 void TabContents::SwapInRenderViewHost(RenderViewHost* rvh) { | 1964 void TabContents::SwapInRenderViewHost(RenderViewHost* rvh) { |
1959 render_manager_.SwapInRenderViewHost(rvh); | 1965 render_manager_.SwapInRenderViewHost(rvh); |
1960 } | 1966 } |
1961 | 1967 |
1962 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { | 1968 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { |
1963 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); | 1969 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); |
1964 rwh_view->SetSize(view()->GetContainerSize()); | 1970 rwh_view->SetSize(view()->GetContainerSize()); |
1965 } | 1971 } |
OLD | NEW |