Chromium Code Reviews| 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/renderer/render_view_impl.h" | 5 #include "content/renderer/render_view_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 859 | 859 |
| 860 // If this is a stale back/forward (due to a recent navigation the browser | 860 // If this is a stale back/forward (due to a recent navigation the browser |
| 861 // didn't know about), ignore it. | 861 // didn't know about), ignore it. |
| 862 if (IsBackForwardToStaleEntry(params, is_reload)) | 862 if (IsBackForwardToStaleEntry(params, is_reload)) |
| 863 return; | 863 return; |
| 864 | 864 |
| 865 // Swap this renderer back in if necessary. | 865 // Swap this renderer back in if necessary. |
| 866 if (is_swapped_out_) | 866 if (is_swapped_out_) |
| 867 SetSwappedOut(false); | 867 SetSwappedOut(false); |
| 868 | 868 |
| 869 pending_allow_download_ = params.allow_download; | |
| 869 history_list_offset_ = params.current_history_list_offset; | 870 history_list_offset_ = params.current_history_list_offset; |
| 870 history_list_length_ = params.current_history_list_length; | 871 history_list_length_ = params.current_history_list_length; |
| 871 if (history_list_length_ >= 0) | 872 if (history_list_length_ >= 0) |
| 872 history_page_ids_.resize(history_list_length_, -1); | 873 history_page_ids_.resize(history_list_length_, -1); |
| 873 if (params.pending_history_list_offset >= 0 && | 874 if (params.pending_history_list_offset >= 0 && |
| 874 params.pending_history_list_offset < history_list_length_) | 875 params.pending_history_list_offset < history_list_length_) |
| 875 history_page_ids_[params.pending_history_list_offset] = params.page_id; | 876 history_page_ids_[params.pending_history_list_offset] = params.page_id; |
| 876 | 877 |
| 877 content::GetContentClient()->SetActiveURL(params.url); | 878 content::GetContentClient()->SetActiveURL(params.url); |
| 878 | 879 |
| 879 WebFrame* main_frame = webview()->mainFrame(); | 880 WebFrame* main_frame = webview()->mainFrame(); |
| 880 if (is_reload && main_frame->currentHistoryItem().isNull()) { | 881 if (is_reload && main_frame->currentHistoryItem().isNull()) { |
| 881 // We cannot reload if we do not have any history state. This happens, for | 882 // We cannot reload if we do not have any history state. This happens, for |
| 882 // example, when recovering from a crash. Our workaround here is a bit of | 883 // example, when recovering from a crash. Our workaround here is a bit of |
| 883 // a hack since it means that reload after a crashed tab does not cause an | 884 // a hack since it means that reload after a crashed tab does not cause an |
| 884 // end-to-end cache validation. | 885 // end-to-end cache validation. |
| 885 is_reload = false; | 886 is_reload = false; |
| 886 } | 887 } |
| 887 | 888 |
| 888 pending_navigation_params_.reset(new ViewMsg_Navigate_Params); | 889 pending_navigation_params_.reset(new ViewMsg_Navigate_Params); |
| 889 *pending_navigation_params_.get() = params; | 890 *pending_navigation_params_.get() = params; |
|
darin (slow to review)
2012/04/03 21:56:20
it seems like pending_allow_download_ should not b
chebert
2012/04/03 22:13:23
There is a call to pending_navigation_params_.rese
| |
| 890 | 891 |
| 891 // If we are reloading, then WebKit will use the history state of the current | 892 // If we are reloading, then WebKit will use the history state of the current |
| 892 // page, so we should just ignore any given history state. Otherwise, if we | 893 // page, so we should just ignore any given history state. Otherwise, if we |
| 893 // have history state, then we need to navigate to it, which corresponds to a | 894 // have history state, then we need to navigate to it, which corresponds to a |
| 894 // back/forward navigation event. | 895 // back/forward navigation event. |
| 895 if (is_reload) { | 896 if (is_reload) { |
| 896 bool ignore_cache = (params.navigation_type == | 897 bool ignore_cache = (params.navigation_type == |
| 897 ViewMsg_Navigate_Type::RELOAD_IGNORING_CACHE); | 898 ViewMsg_Navigate_Type::RELOAD_IGNORING_CACHE); |
| 898 main_frame->reload(ignore_cache); | 899 main_frame->reload(ignore_cache); |
| 899 } else if (!params.state.empty()) { | 900 } else if (!params.state.empty()) { |
| (...skipping 1689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2589 document_state->set_load_type(DocumentState::LINK_LOAD_CACHE_ONLY); | 2590 document_state->set_load_type(DocumentState::LINK_LOAD_CACHE_ONLY); |
| 2590 break; | 2591 break; |
| 2591 } | 2592 } |
| 2592 } | 2593 } |
| 2593 | 2594 |
| 2594 FOR_EACH_OBSERVER( | 2595 FOR_EACH_OBSERVER( |
| 2595 RenderViewObserver, observers_, DidCreateDataSource(frame, ds)); | 2596 RenderViewObserver, observers_, DidCreateDataSource(frame, ds)); |
| 2596 } | 2597 } |
| 2597 | 2598 |
| 2598 void RenderViewImpl::PopulateStateFromPendingNavigationParams( | 2599 void RenderViewImpl::PopulateStateFromPendingNavigationParams( |
| 2599 DocumentState* document_state) { | 2600 DocumentState* document_state) { |
|
darin (slow to review)
2012/04/03 21:56:20
here, it seems that you could copy the allow_downl
chebert
2012/04/03 22:13:23
Would it be better to put the assignment here than
| |
| 2600 const ViewMsg_Navigate_Params& params = *pending_navigation_params_.get(); | 2601 const ViewMsg_Navigate_Params& params = *pending_navigation_params_.get(); |
| 2601 | 2602 |
| 2602 if (document_state->request_time().is_null()) | 2603 if (document_state->request_time().is_null()) |
| 2603 document_state->set_request_time(params.request_time); | 2604 document_state->set_request_time(params.request_time); |
| 2604 | 2605 |
| 2605 // A navigation resulting from loading a javascript URL should not be treated | 2606 // A navigation resulting from loading a javascript URL should not be treated |
| 2606 // as a browser initiated event. Instead, we want it to look as if the page | 2607 // as a browser initiated event. Instead, we want it to look as if the page |
| 2607 // initiated any load resulting from JS execution. | 2608 // initiated any load resulting from JS execution. |
| 2608 if (!params.url.SchemeIs(chrome::kJavaScriptScheme)) { | 2609 if (!params.url.SchemeIs(chrome::kJavaScriptScheme)) { |
| 2609 NavigationState* navigation_state = NavigationState::CreateBrowserInitiated( | 2610 NavigationState* navigation_state = NavigationState::CreateBrowserInitiated( |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3035 if (!top_frame) | 3036 if (!top_frame) |
| 3036 top_frame = frame; | 3037 top_frame = frame; |
| 3037 WebDataSource* provisional_data_source = top_frame->provisionalDataSource(); | 3038 WebDataSource* provisional_data_source = top_frame->provisionalDataSource(); |
| 3038 WebDataSource* top_data_source = top_frame->dataSource(); | 3039 WebDataSource* top_data_source = top_frame->dataSource(); |
| 3039 WebDataSource* data_source = | 3040 WebDataSource* data_source = |
| 3040 provisional_data_source ? provisional_data_source : top_data_source; | 3041 provisional_data_source ? provisional_data_source : top_data_source; |
| 3041 | 3042 |
| 3042 GURL request_url(request.url()); | 3043 GURL request_url(request.url()); |
| 3043 GURL new_url; | 3044 GURL new_url; |
| 3044 if (content::GetContentClient()->renderer()->WillSendRequest( | 3045 if (content::GetContentClient()->renderer()->WillSendRequest( |
| 3045 frame, request_url, &new_url)) { | 3046 frame, request_url, &new_url)) { |
| 3046 request.setURL(WebURL(new_url)); | 3047 request.setURL(WebURL(new_url)); |
| 3047 } | 3048 } |
| 3048 | 3049 |
| 3049 content::PageTransition transition_type = content::PAGE_TRANSITION_LINK; | 3050 content::PageTransition transition_type = content::PAGE_TRANSITION_LINK; |
| 3050 DocumentState* document_state = DocumentState::FromDataSource(data_source); | 3051 DocumentState* document_state = DocumentState::FromDataSource(data_source); |
| 3051 NavigationState* navigation_state = document_state->navigation_state(); | 3052 NavigationState* navigation_state = document_state->navigation_state(); |
| 3052 if (document_state) { | 3053 if (document_state) { |
| 3053 if (document_state->is_cache_policy_override_set()) | 3054 if (document_state->is_cache_policy_override_set()) |
| 3054 request.setCachePolicy(document_state->cache_policy_override()); | 3055 request.setCachePolicy(document_state->cache_policy_override()); |
| 3055 transition_type = navigation_state->transition_type(); | 3056 transition_type = navigation_state->transition_type(); |
| 3056 } | 3057 } |
| 3057 | 3058 |
| 3058 request.setExtraData( | 3059 request.setExtraData( |
| 3059 new RequestExtraData(frame->referrerPolicy(), | 3060 new RequestExtraData(frame->referrerPolicy(), |
| 3060 (frame == top_frame), | 3061 (frame == top_frame), |
| 3061 frame->identifier(), | 3062 frame->identifier(), |
| 3062 frame->parent() == top_frame, | 3063 frame->parent() == top_frame, |
| 3063 frame->parent() ? frame->parent()->identifier() : -1, | 3064 frame->parent() ? frame->parent()->identifier() : -1, |
| 3065 pending_allow_download_, | |
| 3064 transition_type, | 3066 transition_type, |
| 3065 navigation_state->transferred_request_child_id(), | 3067 navigation_state->transferred_request_child_id(), |
| 3066 navigation_state->transferred_request_request_id())); | 3068 navigation_state->transferred_request_request_id())); |
| 3067 | 3069 |
| 3068 DocumentState* top_document_state = | 3070 DocumentState* top_document_state = |
| 3069 DocumentState::FromDataSource(top_data_source); | 3071 DocumentState::FromDataSource(top_data_source); |
| 3070 // TODO(gavinp): separate out prefetching and prerender field trials | 3072 // TODO(gavinp): separate out prefetching and prerender field trials |
| 3071 // if the rel=prerender rel type is sticking around. | 3073 // if the rel=prerender rel type is sticking around. |
| 3072 if (top_document_state && | 3074 if (top_document_state && |
| 3073 (request.targetType() == WebURLRequest::TargetIsPrefetch || | 3075 (request.targetType() == WebURLRequest::TargetIsPrefetch || |
| (...skipping 2150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5224 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { | 5226 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { |
| 5225 return !!RenderThreadImpl::current()->compositor_thread(); | 5227 return !!RenderThreadImpl::current()->compositor_thread(); |
| 5226 } | 5228 } |
| 5227 | 5229 |
| 5228 void RenderViewImpl::OnJavaBridgeInit() { | 5230 void RenderViewImpl::OnJavaBridgeInit() { |
| 5229 DCHECK(!java_bridge_dispatcher_.get()); | 5231 DCHECK(!java_bridge_dispatcher_.get()); |
| 5230 #if defined(ENABLE_JAVA_BRIDGE) | 5232 #if defined(ENABLE_JAVA_BRIDGE) |
| 5231 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this)); | 5233 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this)); |
| 5232 #endif | 5234 #endif |
| 5233 } | 5235 } |
| OLD | NEW |