OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 | 264 |
265 const size_t kExtraCharsBeforeAndAfterSelection = 100; | 265 const size_t kExtraCharsBeforeAndAfterSelection = 100; |
266 | 266 |
267 typedef std::map<int, RenderFrameImpl*> RoutingIDFrameMap; | 267 typedef std::map<int, RenderFrameImpl*> RoutingIDFrameMap; |
268 static base::LazyInstance<RoutingIDFrameMap> g_routing_id_frame_map = | 268 static base::LazyInstance<RoutingIDFrameMap> g_routing_id_frame_map = |
269 LAZY_INSTANCE_INITIALIZER; | 269 LAZY_INSTANCE_INITIALIZER; |
270 | 270 |
271 typedef std::map<blink::WebFrame*, RenderFrameImpl*> FrameMap; | 271 typedef std::map<blink::WebFrame*, RenderFrameImpl*> FrameMap; |
272 base::LazyInstance<FrameMap> g_frame_map = LAZY_INSTANCE_INITIALIZER; | 272 base::LazyInstance<FrameMap> g_frame_map = LAZY_INSTANCE_INITIALIZER; |
273 | 273 |
274 int64 ExtractPostId(HistoryEntry* entry) { | 274 int64 ExtractPostId(const WebHistoryItem& item) { |
275 if (!entry) | |
276 return -1; | |
277 | |
278 const WebHistoryItem& item = entry->root(); | |
279 if (item.isNull() || item.httpBody().isNull()) | 275 if (item.isNull() || item.httpBody().isNull()) |
280 return -1; | 276 return -1; |
281 | 277 |
282 return item.httpBody().identifier(); | 278 return item.httpBody().identifier(); |
283 } | 279 } |
284 | 280 |
285 WebURLResponseExtraDataImpl* GetExtraDataFromResponse( | 281 WebURLResponseExtraDataImpl* GetExtraDataFromResponse( |
286 const WebURLResponse& response) { | 282 const WebURLResponse& response) { |
287 return static_cast<WebURLResponseExtraDataImpl*>(response.extraData()); | 283 return static_cast<WebURLResponseExtraDataImpl*>(response.extraData()); |
288 } | 284 } |
(...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1270 CHECK(is_main_frame_ || SiteIsolationPolicy::AreCrossProcessFramesPossible()); | 1266 CHECK(is_main_frame_ || SiteIsolationPolicy::AreCrossProcessFramesPossible()); |
1271 | 1267 |
1272 // Only run unload if we're not swapped out yet, but send the ack either way. | 1268 // Only run unload if we're not swapped out yet, but send the ack either way. |
1273 if (!is_swapped_out_) { | 1269 if (!is_swapped_out_) { |
1274 // Swap this RenderFrame out so the frame can navigate to a page rendered by | 1270 // Swap this RenderFrame out so the frame can navigate to a page rendered by |
1275 // a different process. This involves running the unload handler and | 1271 // a different process. This involves running the unload handler and |
1276 // clearing the page. We also allow this process to exit if there are no | 1272 // clearing the page. We also allow this process to exit if there are no |
1277 // other active RenderFrames in it. | 1273 // other active RenderFrames in it. |
1278 | 1274 |
1279 // Send an UpdateState message before we get swapped out. | 1275 // Send an UpdateState message before we get swapped out. |
1280 render_view_->SendUpdateState(); | 1276 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) |
| 1277 SendUpdateState(); |
| 1278 else |
| 1279 render_view_->SendUpdateState(); |
1281 | 1280 |
1282 // If we need a proxy to replace this, create it now so its routing id is | 1281 // If we need a proxy to replace this, create it now so its routing id is |
1283 // registered for receiving IPC messages. | 1282 // registered for receiving IPC messages. |
1284 if (proxy_routing_id != MSG_ROUTING_NONE) { | 1283 if (proxy_routing_id != MSG_ROUTING_NONE) { |
1285 proxy = RenderFrameProxy::CreateProxyToReplaceFrame( | 1284 proxy = RenderFrameProxy::CreateProxyToReplaceFrame( |
1286 this, proxy_routing_id, replicated_frame_state.scope); | 1285 this, proxy_routing_id, replicated_frame_state.scope); |
1287 } | 1286 } |
1288 | 1287 |
1289 // Synchronously run the unload handler before sending the ACK. | 1288 // Synchronously run the unload handler before sending the ACK. |
1290 // TODO(creis): Call dispatchUnloadEvent unconditionally here to support | 1289 // TODO(creis): Call dispatchUnloadEvent unconditionally here to support |
(...skipping 1241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2532 request.url(), referrer, | 2531 request.url(), referrer, |
2533 suggested_name)); | 2532 suggested_name)); |
2534 } else { | 2533 } else { |
2535 OpenURL(request.url(), referrer, policy, should_replace_current_entry); | 2534 OpenURL(request.url(), referrer, policy, should_replace_current_entry); |
2536 } | 2535 } |
2537 } | 2536 } |
2538 | 2537 |
2539 blink::WebHistoryItem RenderFrameImpl::historyItemForNewChildFrame( | 2538 blink::WebHistoryItem RenderFrameImpl::historyItemForNewChildFrame( |
2540 blink::WebFrame* frame) { | 2539 blink::WebFrame* frame) { |
2541 DCHECK(!frame_ || frame_ == frame); | 2540 DCHECK(!frame_ || frame_ == frame); |
| 2541 |
| 2542 // TODO(creis): In OOPIF enabled modes, send an IPC to the browser process |
| 2543 // telling it to navigate the new frame. See https://crbug.com/502317. |
| 2544 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) |
| 2545 return WebHistoryItem(); |
| 2546 |
2542 return render_view_->history_controller()->GetItemForNewChildFrame(this); | 2547 return render_view_->history_controller()->GetItemForNewChildFrame(this); |
2543 } | 2548 } |
2544 | 2549 |
2545 void RenderFrameImpl::willSendSubmitEvent(blink::WebLocalFrame* frame, | 2550 void RenderFrameImpl::willSendSubmitEvent(blink::WebLocalFrame* frame, |
2546 const blink::WebFormElement& form) { | 2551 const blink::WebFormElement& form) { |
2547 DCHECK(!frame_ || frame_ == frame); | 2552 DCHECK(!frame_ || frame_ == frame); |
2548 | 2553 |
2549 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WillSendSubmitEvent(form)); | 2554 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WillSendSubmitEvent(form)); |
2550 } | 2555 } |
2551 | 2556 |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2732 DidStartProvisionalLoad(frame)); | 2737 DidStartProvisionalLoad(frame)); |
2733 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad()); | 2738 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad()); |
2734 | 2739 |
2735 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( | 2740 Send(new FrameHostMsg_DidStartProvisionalLoadForFrame( |
2736 routing_id_, ds->request().url())); | 2741 routing_id_, ds->request().url())); |
2737 } | 2742 } |
2738 | 2743 |
2739 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( | 2744 void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad( |
2740 blink::WebLocalFrame* frame) { | 2745 blink::WebLocalFrame* frame) { |
2741 DCHECK(!frame_ || frame_ == frame); | 2746 DCHECK(!frame_ || frame_ == frame); |
| 2747 |
| 2748 // We don't use HistoryController in OOPIF enabled modes. |
| 2749 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) |
| 2750 return; |
| 2751 |
2742 render_view_->history_controller()->RemoveChildrenForRedirect(this); | 2752 render_view_->history_controller()->RemoveChildrenForRedirect(this); |
2743 } | 2753 } |
2744 | 2754 |
2745 void RenderFrameImpl::didFailProvisionalLoad( | 2755 void RenderFrameImpl::didFailProvisionalLoad( |
2746 blink::WebLocalFrame* frame, | 2756 blink::WebLocalFrame* frame, |
2747 const blink::WebURLError& error, | 2757 const blink::WebURLError& error, |
2748 blink::WebHistoryCommitType commit_type) { | 2758 blink::WebHistoryCommitType commit_type) { |
2749 TRACE_EVENT1("navigation,benchmark", | 2759 TRACE_EVENT1("navigation,benchmark", |
2750 "RenderFrameImpl::didFailProvisionalLoad", "id", routing_id_); | 2760 "RenderFrameImpl::didFailProvisionalLoad", "id", routing_id_); |
2751 DCHECK(!frame_ || frame_ == frame); | 2761 DCHECK(!frame_ || frame_ == frame); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2834 // For new page navigations, the browser process needs to be notified of the | 2844 // For new page navigations, the browser process needs to be notified of the |
2835 // first paint of that page, so it can cancel the timer that waits for it. | 2845 // first paint of that page, so it can cancel the timer that waits for it. |
2836 if (is_main_frame_ && !navigation_state->WasWithinSamePage()) { | 2846 if (is_main_frame_ && !navigation_state->WasWithinSamePage()) { |
2837 render_view_->QueueMessage( | 2847 render_view_->QueueMessage( |
2838 new ViewHostMsg_DidFirstPaintAfterLoad(render_view_->routing_id_), | 2848 new ViewHostMsg_DidFirstPaintAfterLoad(render_view_->routing_id_), |
2839 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE); | 2849 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE); |
2840 } | 2850 } |
2841 | 2851 |
2842 // When we perform a new navigation, we need to update the last committed | 2852 // When we perform a new navigation, we need to update the last committed |
2843 // session history entry with state for the page we are leaving. Do this | 2853 // session history entry with state for the page we are leaving. Do this |
2844 // before updating the HistoryController state. | 2854 // before updating the current history item. |
2845 render_view_->SendUpdateState(); | 2855 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
2846 | 2856 SendUpdateState(); |
2847 render_view_->history_controller()->UpdateForCommit( | 2857 current_history_item_ = item; |
2848 this, item, commit_type, navigation_state->WasWithinSamePage()); | 2858 } else { |
| 2859 render_view_->SendUpdateState(); |
| 2860 render_view_->history_controller()->UpdateForCommit( |
| 2861 this, item, commit_type, navigation_state->WasWithinSamePage()); |
| 2862 } |
2849 | 2863 |
2850 InternalDocumentStateData* internal_data = | 2864 InternalDocumentStateData* internal_data = |
2851 InternalDocumentStateData::FromDocumentState(document_state); | 2865 InternalDocumentStateData::FromDocumentState(document_state); |
2852 | 2866 |
2853 if (document_state->commit_load_time().is_null()) | 2867 if (document_state->commit_load_time().is_null()) |
2854 document_state->set_commit_load_time(Time::Now()); | 2868 document_state->set_commit_load_time(Time::Now()); |
2855 | 2869 |
2856 if (internal_data->must_reset_scroll_and_scale_state()) { | 2870 if (internal_data->must_reset_scroll_and_scale_state()) { |
2857 render_view_->webview()->resetScrollAndScaleState(); | 2871 render_view_->webview()->resetScrollAndScaleState(); |
2858 internal_data->set_must_reset_scroll_and_scale_state(false); | 2872 internal_data->set_must_reset_scroll_and_scale_state(false); |
(...skipping 1270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4129 !response.isMultipartPayload() && (response.httpStatusCode() != 404); | 4143 !response.isMultipartPayload() && (response.httpStatusCode() != 404); |
4130 | 4144 |
4131 params.searchable_form_url = internal_data->searchable_form_url(); | 4145 params.searchable_form_url = internal_data->searchable_form_url(); |
4132 params.searchable_form_encoding = internal_data->searchable_form_encoding(); | 4146 params.searchable_form_encoding = internal_data->searchable_form_encoding(); |
4133 | 4147 |
4134 params.gesture = render_view_->navigation_gesture_; | 4148 params.gesture = render_view_->navigation_gesture_; |
4135 render_view_->navigation_gesture_ = NavigationGestureUnknown; | 4149 render_view_->navigation_gesture_ = NavigationGestureUnknown; |
4136 | 4150 |
4137 // Make navigation state a part of the DidCommitProvisionalLoad message so | 4151 // Make navigation state a part of the DidCommitProvisionalLoad message so |
4138 // that committed entry has it at all times. | 4152 // that committed entry has it at all times. |
4139 HistoryEntry* entry = render_view_->history_controller()->GetCurrentEntry(); | 4153 int64 post_id = -1; |
4140 if (!SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 4154 if (!SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
4141 if (entry) | 4155 HistoryEntry* entry = render_view_->history_controller()->GetCurrentEntry(); |
| 4156 if (entry) { |
4142 params.page_state = HistoryEntryToPageState(entry); | 4157 params.page_state = HistoryEntryToPageState(entry); |
4143 else | 4158 post_id = ExtractPostId(entry->root()); |
| 4159 } else { |
4144 params.page_state = PageState::CreateFromURL(request.url()); | 4160 params.page_state = PageState::CreateFromURL(request.url()); |
| 4161 } |
4145 } else { | 4162 } else { |
4146 // In --site-per-process, just send a single HistoryItem for this frame, | 4163 // In --site-per-process, just send a single HistoryItem for this frame, |
4147 // rather than the whole tree. It will be stored in the corresponding | 4164 // rather than the whole tree. It will be stored in the corresponding |
4148 // FrameNavigationEntry. | 4165 // FrameNavigationEntry. |
4149 params.page_state = SingleHistoryItemToPageState(item); | 4166 params.page_state = SingleHistoryItemToPageState(item); |
| 4167 post_id = ExtractPostId(item); |
4150 } | 4168 } |
4151 params.item_sequence_number = item.itemSequenceNumber(); | 4169 params.item_sequence_number = item.itemSequenceNumber(); |
4152 params.document_sequence_number = item.documentSequenceNumber(); | 4170 params.document_sequence_number = item.documentSequenceNumber(); |
4153 | 4171 |
4154 if (!frame->parent()) { | 4172 if (!frame->parent()) { |
4155 // Top-level navigation. | 4173 // Top-level navigation. |
4156 | 4174 |
4157 // Reset the zoom limits in case a plugin had changed them previously. This | 4175 // Reset the zoom limits in case a plugin had changed them previously. This |
4158 // will also call us back which will cause us to send a message to | 4176 // will also call us back which will cause us to send a message to |
4159 // update WebContentsImpl. | 4177 // update WebContentsImpl. |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4210 params.transition = ui::PageTransitionFromInt( | 4228 params.transition = ui::PageTransitionFromInt( |
4211 params.transition | ui::PAGE_TRANSITION_CLIENT_REDIRECT); | 4229 params.transition | ui::PAGE_TRANSITION_CLIENT_REDIRECT); |
4212 } else { | 4230 } else { |
4213 params.referrer = RenderViewImpl::GetReferrerFromRequest( | 4231 params.referrer = RenderViewImpl::GetReferrerFromRequest( |
4214 frame, ds->request()); | 4232 frame, ds->request()); |
4215 } | 4233 } |
4216 | 4234 |
4217 base::string16 method = request.httpMethod(); | 4235 base::string16 method = request.httpMethod(); |
4218 if (base::EqualsASCII(method, "POST")) { | 4236 if (base::EqualsASCII(method, "POST")) { |
4219 params.is_post = true; | 4237 params.is_post = true; |
4220 params.post_id = ExtractPostId(entry); | 4238 params.post_id = post_id; |
4221 } | 4239 } |
4222 | 4240 |
4223 // Send the user agent override back. | 4241 // Send the user agent override back. |
4224 params.is_overriding_user_agent = internal_data->is_overriding_user_agent(); | 4242 params.is_overriding_user_agent = internal_data->is_overriding_user_agent(); |
4225 | 4243 |
4226 // Track the URL of the original request. We use the first entry of the | 4244 // Track the URL of the original request. We use the first entry of the |
4227 // redirect chain if it exists because the chain may have started in another | 4245 // redirect chain if it exists because the chain may have started in another |
4228 // process. | 4246 // process. |
4229 params.original_request_url = GetOriginalRequestURL(ds); | 4247 params.original_request_url = GetOriginalRequestURL(ds); |
4230 | 4248 |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4655 | 4673 |
4656 GetContentClient()->SetActiveURL(common_params.url); | 4674 GetContentClient()->SetActiveURL(common_params.url); |
4657 | 4675 |
4658 // If this frame isn't in the same process as the main frame, it may naively | 4676 // If this frame isn't in the same process as the main frame, it may naively |
4659 // assume that this is the first navigation in the iframe, but this may not | 4677 // assume that this is the first navigation in the iframe, but this may not |
4660 // actually be the case. Inform the frame's state machine if this frame has | 4678 // actually be the case. Inform the frame's state machine if this frame has |
4661 // already committed other loads. | 4679 // already committed other loads. |
4662 if (request_params.has_committed_real_load && frame_->parent()) | 4680 if (request_params.has_committed_real_load && frame_->parent()) |
4663 frame_->setCommittedFirstRealLoad(); | 4681 frame_->setCommittedFirstRealLoad(); |
4664 | 4682 |
4665 if (is_reload && !render_view_->history_controller()->GetCurrentEntry()) { | 4683 bool no_current_entry = |
| 4684 SiteIsolationPolicy::UseSubframeNavigationEntries() |
| 4685 ? current_history_item_.isNull() |
| 4686 : !render_view_->history_controller()->GetCurrentEntry(); |
| 4687 if (is_reload && no_current_entry) { |
4666 // We cannot reload if we do not have any history state. This happens, for | 4688 // We cannot reload if we do not have any history state. This happens, for |
4667 // example, when recovering from a crash. | 4689 // example, when recovering from a crash. |
4668 is_reload = false; | 4690 is_reload = false; |
4669 cache_policy = WebURLRequest::ReloadIgnoringCacheData; | 4691 cache_policy = WebURLRequest::ReloadIgnoringCacheData; |
4670 } | 4692 } |
4671 | 4693 |
4672 pending_navigation_params_.reset( | 4694 pending_navigation_params_.reset( |
4673 new NavigationParams(common_params, start_params, request_params)); | 4695 new NavigationParams(common_params, start_params, request_params)); |
4674 | 4696 |
4675 // Create parameters for a standard navigation. | 4697 // Create parameters for a standard navigation. |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4736 // TODO(creis): Change PageState to FrameState. In the meantime, we | 4758 // TODO(creis): Change PageState to FrameState. In the meantime, we |
4737 // store the relevant frame's WebHistoryItem in the root of the | 4759 // store the relevant frame's WebHistoryItem in the root of the |
4738 // PageState. | 4760 // PageState. |
4739 SetPendingNavigationParams(navigation_params.Pass()); | 4761 SetPendingNavigationParams(navigation_params.Pass()); |
4740 blink::WebHistoryItem history_item = entry->root(); | 4762 blink::WebHistoryItem history_item = entry->root(); |
4741 blink::WebHistoryLoadType load_type = | 4763 blink::WebHistoryLoadType load_type = |
4742 request_params.is_same_document_history_load | 4764 request_params.is_same_document_history_load |
4743 ? blink::WebHistorySameDocumentLoad | 4765 ? blink::WebHistorySameDocumentLoad |
4744 : blink::WebHistoryDifferentDocumentLoad; | 4766 : blink::WebHistoryDifferentDocumentLoad; |
4745 | 4767 |
4746 // Let the history controller know the provisional entry, since it is | 4768 // Navigate the frame directly. |
4747 // used at commit time. Otherwise skip GoToEntry and navigate the | |
4748 // frame directly. | |
4749 // TODO(creis): Consider cloning the current entry to handle subframe | |
4750 // cases. Changes to SendUpdateState might affect this. | |
4751 render_view_->history_controller()->set_provisional_entry( | |
4752 entry.Pass()); | |
4753 WebURLRequest request = | 4769 WebURLRequest request = |
4754 frame_->requestFromHistoryItem(history_item, cache_policy); | 4770 frame_->requestFromHistoryItem(history_item, cache_policy); |
4755 frame_->load(request, blink::WebFrameLoadType::BackForward, | 4771 frame_->load(request, blink::WebFrameLoadType::BackForward, |
4756 history_item, load_type); | 4772 history_item, load_type); |
4757 } | 4773 } |
4758 } else { | 4774 } else { |
4759 // TODO(clamy): this should be set to the HistoryItem sent by the | 4775 // TODO(clamy): this should be set to the HistoryItem sent by the |
4760 // browser once the HistoryController has moved to the browser. | 4776 // browser once the HistoryController has moved to the browser. |
4761 // TODO(clamy): distinguish between different document and same document | 4777 // TODO(clamy): distinguish between different document and same document |
4762 // loads. | 4778 // loads. |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5068 WebString::fromUTF8(charset), | 5084 WebString::fromUTF8(charset), |
5069 base_url, | 5085 base_url, |
5070 params.history_url_for_data_url, | 5086 params.history_url_for_data_url, |
5071 false); | 5087 false); |
5072 } else { | 5088 } else { |
5073 CHECK(false) << "Invalid URL passed: " | 5089 CHECK(false) << "Invalid URL passed: " |
5074 << params.url.possibly_invalid_spec(); | 5090 << params.url.possibly_invalid_spec(); |
5075 } | 5091 } |
5076 } | 5092 } |
5077 | 5093 |
| 5094 void RenderFrameImpl::SendUpdateState() { |
| 5095 DCHECK(SiteIsolationPolicy::UseSubframeNavigationEntries()); |
| 5096 if (current_history_item_.isNull()) |
| 5097 return; |
| 5098 |
| 5099 Send(new FrameHostMsg_UpdateState( |
| 5100 routing_id_, SingleHistoryItemToPageState(current_history_item_))); |
| 5101 } |
| 5102 |
5078 void RenderFrameImpl::SendFailedProvisionalLoad( | 5103 void RenderFrameImpl::SendFailedProvisionalLoad( |
5079 const blink::WebURLRequest& request, | 5104 const blink::WebURLRequest& request, |
5080 const blink::WebURLError& error, | 5105 const blink::WebURLError& error, |
5081 blink::WebLocalFrame* frame) { | 5106 blink::WebLocalFrame* frame) { |
5082 bool show_repost_interstitial = | 5107 bool show_repost_interstitial = |
5083 (error.reason == net::ERR_CACHE_MISS && | 5108 (error.reason == net::ERR_CACHE_MISS && |
5084 base::EqualsASCII(base::StringPiece16(request.httpMethod()), "POST")); | 5109 base::EqualsASCII(base::StringPiece16(request.httpMethod()), "POST")); |
5085 | 5110 |
5086 FrameHostMsg_DidFailProvisionalLoadWithError_Params params; | 5111 FrameHostMsg_DidFailProvisionalLoadWithError_Params params; |
5087 params.error_code = error.reason; | 5112 params.error_code = error.reason; |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5312 mojo::ServiceProviderPtr service_provider; | 5337 mojo::ServiceProviderPtr service_provider; |
5313 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5338 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
5314 request->url = mojo::String::From(url); | 5339 request->url = mojo::String::From(url); |
5315 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5340 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
5316 nullptr, nullptr, | 5341 nullptr, nullptr, |
5317 base::Bind(&OnGotContentHandlerID)); | 5342 base::Bind(&OnGotContentHandlerID)); |
5318 return service_provider.Pass(); | 5343 return service_provider.Pass(); |
5319 } | 5344 } |
5320 | 5345 |
5321 } // namespace content | 5346 } // namespace content |
OLD | NEW |