| 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 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 1573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1584 OnGetSerializedHtmlWithLocalLinks) | 1584 OnGetSerializedHtmlWithLocalLinks) |
| 1585 IPC_MESSAGE_HANDLER(FrameMsg_SerializeAsMHTML, OnSerializeAsMHTML) | 1585 IPC_MESSAGE_HANDLER(FrameMsg_SerializeAsMHTML, OnSerializeAsMHTML) |
| 1586 IPC_MESSAGE_HANDLER(FrameMsg_Find, OnFind) | 1586 IPC_MESSAGE_HANDLER(FrameMsg_Find, OnFind) |
| 1587 IPC_MESSAGE_HANDLER(FrameMsg_ClearActiveFindMatch, OnClearActiveFindMatch) | 1587 IPC_MESSAGE_HANDLER(FrameMsg_ClearActiveFindMatch, OnClearActiveFindMatch) |
| 1588 IPC_MESSAGE_HANDLER(FrameMsg_StopFinding, OnStopFinding) | 1588 IPC_MESSAGE_HANDLER(FrameMsg_StopFinding, OnStopFinding) |
| 1589 IPC_MESSAGE_HANDLER(FrameMsg_EnableViewSourceMode, OnEnableViewSourceMode) | 1589 IPC_MESSAGE_HANDLER(FrameMsg_EnableViewSourceMode, OnEnableViewSourceMode) |
| 1590 IPC_MESSAGE_HANDLER(FrameMsg_SuppressFurtherDialogs, | 1590 IPC_MESSAGE_HANDLER(FrameMsg_SuppressFurtherDialogs, |
| 1591 OnSuppressFurtherDialogs) | 1591 OnSuppressFurtherDialogs) |
| 1592 IPC_MESSAGE_HANDLER(FrameMsg_RunFileChooserResponse, OnFileChooserResponse) | 1592 IPC_MESSAGE_HANDLER(FrameMsg_RunFileChooserResponse, OnFileChooserResponse) |
| 1593 IPC_MESSAGE_HANDLER(FrameMsg_ClearFocusedElement, OnClearFocusedElement) | 1593 IPC_MESSAGE_HANDLER(FrameMsg_ClearFocusedElement, OnClearFocusedElement) |
| 1594 IPC_MESSAGE_HANDLER(FrameMsg_AbortNavigationRequest, |
| 1595 OnAbortNavigationRequest) |
| 1594 #if defined(OS_ANDROID) | 1596 #if defined(OS_ANDROID) |
| 1595 IPC_MESSAGE_HANDLER(FrameMsg_ActivateNearestFindResult, | 1597 IPC_MESSAGE_HANDLER(FrameMsg_ActivateNearestFindResult, |
| 1596 OnActivateNearestFindResult) | 1598 OnActivateNearestFindResult) |
| 1597 IPC_MESSAGE_HANDLER(FrameMsg_GetNearestFindResult, | 1599 IPC_MESSAGE_HANDLER(FrameMsg_GetNearestFindResult, |
| 1598 OnGetNearestFindResult) | 1600 OnGetNearestFindResult) |
| 1599 IPC_MESSAGE_HANDLER(FrameMsg_FindMatchRects, OnFindMatchRects) | 1601 IPC_MESSAGE_HANDLER(FrameMsg_FindMatchRects, OnFindMatchRects) |
| 1600 #endif | 1602 #endif |
| 1601 | 1603 |
| 1602 #if defined(USE_EXTERNAL_POPUP_MENU) | 1604 #if defined(USE_EXTERNAL_POPUP_MENU) |
| 1603 #if defined(OS_MACOSX) | 1605 #if defined(OS_MACOSX) |
| (...skipping 1894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3498 // local state here to fix https://crbug.com/671276. | 3500 // local state here to fix https://crbug.com/671276. |
| 3499 } | 3501 } |
| 3500 | 3502 |
| 3501 void RenderFrameImpl::didFailProvisionalLoad( | 3503 void RenderFrameImpl::didFailProvisionalLoad( |
| 3502 blink::WebLocalFrame* frame, | 3504 blink::WebLocalFrame* frame, |
| 3503 const blink::WebURLError& error, | 3505 const blink::WebURLError& error, |
| 3504 blink::WebHistoryCommitType commit_type) { | 3506 blink::WebHistoryCommitType commit_type) { |
| 3505 TRACE_EVENT1("navigation,benchmark,rail", | 3507 TRACE_EVENT1("navigation,benchmark,rail", |
| 3506 "RenderFrameImpl::didFailProvisionalLoad", "id", routing_id_); | 3508 "RenderFrameImpl::didFailProvisionalLoad", "id", routing_id_); |
| 3507 DCHECK_EQ(frame_, frame); | 3509 DCHECK_EQ(frame_, frame); |
| 3508 WebDataSource* ds = frame->provisionalDataSource(); | |
| 3509 DCHECK(ds); | |
| 3510 | |
| 3511 const WebURLRequest& failed_request = ds->getRequest(); | |
| 3512 | |
| 3513 // Notify the browser that we failed a provisional load with an error. | |
| 3514 // | 3510 // |
| 3515 // Note: It is important this notification occur before DidStopLoading so the | 3511 // Note: It is important this notification occur before DidStopLoading so the |
| 3516 // SSL manager can react to the provisional load failure before being | 3512 // SSL manager can react to the provisional load failure before being |
| 3517 // notified the load stopped. | 3513 // notified the load stopped. |
| 3518 // | 3514 // |
| 3519 for (auto& observer : render_view_->observers()) | 3515 for (auto& observer : render_view_->observers()) |
| 3520 observer.DidFailProvisionalLoad(frame, error); | 3516 observer.DidFailProvisionalLoad(frame, error); |
| 3521 for (auto& observer : observers_) | 3517 for (auto& observer : observers_) |
| 3522 observer.DidFailProvisionalLoad(error); | 3518 observer.DidFailProvisionalLoad(error); |
| 3523 | 3519 |
| 3520 WebDataSource* ds = frame->provisionalDataSource(); |
| 3521 if (!ds) |
| 3522 return; |
| 3523 |
| 3524 const WebURLRequest& failed_request = ds->getRequest(); |
| 3525 |
| 3526 // Notify the browser that we failed a provisional load with an error. |
| 3524 SendFailedProvisionalLoad(failed_request, error, frame); | 3527 SendFailedProvisionalLoad(failed_request, error, frame); |
| 3525 | 3528 |
| 3526 if (!ShouldDisplayErrorPageForFailedLoad(error.reason, error.unreachableURL)) | 3529 if (!ShouldDisplayErrorPageForFailedLoad(error.reason, error.unreachableURL)) |
| 3527 return; | 3530 return; |
| 3528 | 3531 |
| 3529 // Make sure we never show errors in view source mode. | 3532 // Make sure we never show errors in view source mode. |
| 3530 frame->enableViewSourceMode(false); | 3533 frame->enableViewSourceMode(false); |
| 3531 | 3534 |
| 3532 DocumentState* document_state = DocumentState::FromDataSource(ds); | 3535 DocumentState* document_state = DocumentState::FromDataSource(ds); |
| 3533 NavigationStateImpl* navigation_state = | 3536 NavigationStateImpl* navigation_state = |
| (...skipping 1682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5216 // This corresponds to Blink's notion of a standard commit. | 5219 // This corresponds to Blink's notion of a standard commit. |
| 5217 // Also replace the current history entry if the browser asked for it | 5220 // Also replace the current history entry if the browser asked for it |
| 5218 // specifically. | 5221 // specifically. |
| 5219 // TODO(clamy): see if initial commits in subframes should be handled | 5222 // TODO(clamy): see if initial commits in subframes should be handled |
| 5220 // separately. | 5223 // separately. |
| 5221 bool replace = is_reload || common_params.url == GetLoadingUrl() || | 5224 bool replace = is_reload || common_params.url == GetLoadingUrl() || |
| 5222 common_params.should_replace_current_entry; | 5225 common_params.should_replace_current_entry; |
| 5223 std::unique_ptr<HistoryEntry> history_entry; | 5226 std::unique_ptr<HistoryEntry> history_entry; |
| 5224 if (request_params.page_state.IsValid()) | 5227 if (request_params.page_state.IsValid()) |
| 5225 history_entry = PageStateToHistoryEntry(request_params.page_state); | 5228 history_entry = PageStateToHistoryEntry(request_params.page_state); |
| 5229 didFailProvisionalLoad(frame_, error, blink::WebStandardCommit); |
| 5226 LoadNavigationErrorPage(failed_request, error, replace, history_entry.get()); | 5230 LoadNavigationErrorPage(failed_request, error, replace, history_entry.get()); |
| 5227 browser_side_navigation_pending_ = false; | 5231 browser_side_navigation_pending_ = false; |
| 5228 } | 5232 } |
| 5229 | 5233 |
| 5230 WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( | 5234 WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( |
| 5231 const NavigationPolicyInfo& info) { | 5235 const NavigationPolicyInfo& info) { |
| 5232 // A content initiated navigation may have originated from a link-click, | 5236 // A content initiated navigation may have originated from a link-click, |
| 5233 // script, drag-n-drop operation, etc. | 5237 // script, drag-n-drop operation, etc. |
| 5234 // info.extraData is only non-null if this is a redirect. Use the extraData | 5238 // info.extraData is only non-null if this is a redirect. Use the extraData |
| 5235 // initiation information for redirects, and check pending_navigation_params_ | 5239 // initiation information for redirects, and check pending_navigation_params_ |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5689 } | 5693 } |
| 5690 } | 5694 } |
| 5691 | 5695 |
| 5692 void RenderFrameImpl::OnClearFocusedElement() { | 5696 void RenderFrameImpl::OnClearFocusedElement() { |
| 5693 // TODO(ekaramad): Should we add a method to WebLocalFrame instead and avoid | 5697 // TODO(ekaramad): Should we add a method to WebLocalFrame instead and avoid |
| 5694 // calling this on the WebView? | 5698 // calling this on the WebView? |
| 5695 if (auto* webview = render_view_->GetWebView()) | 5699 if (auto* webview = render_view_->GetWebView()) |
| 5696 webview->clearFocusedElement(); | 5700 webview->clearFocusedElement(); |
| 5697 } | 5701 } |
| 5698 | 5702 |
| 5703 void RenderFrameImpl::OnAbortNavigationRequest(const GURL& url, |
| 5704 int error_code) { |
| 5705 // Send the provisional load failure. |
| 5706 blink::WebURLError error = CreateWebURLError(url, false, error_code); |
| 5707 didFailProvisionalLoad(frame_, error, blink::WebStandardCommit); |
| 5708 } |
| 5709 |
| 5699 #if defined(OS_ANDROID) | 5710 #if defined(OS_ANDROID) |
| 5700 void RenderFrameImpl::OnActivateNearestFindResult(int request_id, | 5711 void RenderFrameImpl::OnActivateNearestFindResult(int request_id, |
| 5701 float x, | 5712 float x, |
| 5702 float y) { | 5713 float y) { |
| 5703 WebRect selection_rect; | 5714 WebRect selection_rect; |
| 5704 int ordinal = | 5715 int ordinal = |
| 5705 frame_->selectNearestFindMatch(WebFloatPoint(x, y), &selection_rect); | 5716 frame_->selectNearestFindMatch(WebFloatPoint(x, y), &selection_rect); |
| 5706 if (ordinal == -1) { | 5717 if (ordinal == -1) { |
| 5707 // Something went wrong, so send a no-op reply (force the frame to report | 5718 // Something went wrong, so send a no-op reply (force the frame to report |
| 5708 // the current match count) in case the host is waiting for a response due | 5719 // the current match count) in case the host is waiting for a response due |
| (...skipping 1105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6814 // event target. Potentially a Pepper plugin will receive the event. | 6825 // event target. Potentially a Pepper plugin will receive the event. |
| 6815 // In order to tell whether a plugin gets the last mouse event and which it | 6826 // In order to tell whether a plugin gets the last mouse event and which it |
| 6816 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6827 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
| 6817 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6828 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
| 6818 // |pepper_last_mouse_event_target_|. | 6829 // |pepper_last_mouse_event_target_|. |
| 6819 pepper_last_mouse_event_target_ = nullptr; | 6830 pepper_last_mouse_event_target_ = nullptr; |
| 6820 #endif | 6831 #endif |
| 6821 } | 6832 } |
| 6822 | 6833 |
| 6823 } // namespace content | 6834 } // namespace content |
| OLD | NEW |