| 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 2511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2522 } | 2522 } |
| 2523 } | 2523 } |
| 2524 | 2524 |
| 2525 // Remember that we've already processed this request, so we don't update | 2525 // Remember that we've already processed this request, so we don't update |
| 2526 // the session history again. We do this regardless of whether this is | 2526 // the session history again. We do this regardless of whether this is |
| 2527 // a session history navigation, because if we attempted a session history | 2527 // a session history navigation, because if we attempted a session history |
| 2528 // navigation without valid HistoryItem state, WebCore will think it is a | 2528 // navigation without valid HistoryItem state, WebCore will think it is a |
| 2529 // new navigation. | 2529 // new navigation. |
| 2530 navigation_state->set_request_committed(true); | 2530 navigation_state->set_request_committed(true); |
| 2531 | 2531 |
| 2532 SendDidCommitProvisionalLoad(frame, commit_type); | 2532 SendDidCommitProvisionalLoad(frame); |
| 2533 | 2533 |
| 2534 // Check whether we have new encoding name. | 2534 // Check whether we have new encoding name. |
| 2535 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 2535 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
| 2536 } | 2536 } |
| 2537 | 2537 |
| 2538 void RenderFrameImpl::didCreateNewDocument(blink::WebLocalFrame* frame) { | 2538 void RenderFrameImpl::didCreateNewDocument(blink::WebLocalFrame* frame) { |
| 2539 DCHECK(!frame_ || frame_ == frame); | 2539 DCHECK(!frame_ || frame_ == frame); |
| 2540 | 2540 |
| 2541 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), | 2541 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), |
| 2542 DidCreateNewDocument(frame)); | 2542 DidCreateNewDocument(frame)); |
| (...skipping 1027 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3570 | 3570 |
| 3571 void RenderFrameImpl::WasShown() { | 3571 void RenderFrameImpl::WasShown() { |
| 3572 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); | 3572 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); |
| 3573 } | 3573 } |
| 3574 | 3574 |
| 3575 bool RenderFrameImpl::IsHidden() { | 3575 bool RenderFrameImpl::IsHidden() { |
| 3576 return GetRenderWidget()->is_hidden(); | 3576 return GetRenderWidget()->is_hidden(); |
| 3577 } | 3577 } |
| 3578 | 3578 |
| 3579 // Tell the embedding application that the URL of the active page has changed. | 3579 // Tell the embedding application that the URL of the active page has changed. |
| 3580 void RenderFrameImpl::SendDidCommitProvisionalLoad( | 3580 void RenderFrameImpl::SendDidCommitProvisionalLoad(blink::WebFrame* frame) { |
| 3581 blink::WebFrame* frame, | |
| 3582 blink::WebHistoryCommitType commit_type) { | |
| 3583 DCHECK(!frame_ || frame_ == frame); | 3581 DCHECK(!frame_ || frame_ == frame); |
| 3584 WebDataSource* ds = frame->dataSource(); | 3582 WebDataSource* ds = frame->dataSource(); |
| 3585 DCHECK(ds); | 3583 DCHECK(ds); |
| 3586 | 3584 |
| 3587 const WebURLRequest& request = ds->request(); | 3585 const WebURLRequest& request = ds->request(); |
| 3588 const WebURLResponse& response = ds->response(); | 3586 const WebURLResponse& response = ds->response(); |
| 3589 | 3587 |
| 3590 DocumentState* document_state = DocumentState::FromDataSource(ds); | 3588 DocumentState* document_state = DocumentState::FromDataSource(ds); |
| 3591 NavigationState* navigation_state = document_state->navigation_state(); | 3589 NavigationState* navigation_state = document_state->navigation_state(); |
| 3592 InternalDocumentStateData* internal_data = | 3590 InternalDocumentStateData* internal_data = |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3635 params.should_update_history = !ds->hasUnreachableURL() && | 3633 params.should_update_history = !ds->hasUnreachableURL() && |
| 3636 !response.isMultipartPayload() && (response.httpStatusCode() != 404); | 3634 !response.isMultipartPayload() && (response.httpStatusCode() != 404); |
| 3637 | 3635 |
| 3638 params.searchable_form_url = internal_data->searchable_form_url(); | 3636 params.searchable_form_url = internal_data->searchable_form_url(); |
| 3639 params.searchable_form_encoding = internal_data->searchable_form_encoding(); | 3637 params.searchable_form_encoding = internal_data->searchable_form_encoding(); |
| 3640 | 3638 |
| 3641 params.gesture = render_view_->navigation_gesture_; | 3639 params.gesture = render_view_->navigation_gesture_; |
| 3642 render_view_->navigation_gesture_ = NavigationGestureUnknown; | 3640 render_view_->navigation_gesture_ = NavigationGestureUnknown; |
| 3643 | 3641 |
| 3644 // Make navigation state a part of the DidCommitProvisionalLoad message so | 3642 // Make navigation state a part of the DidCommitProvisionalLoad message so |
| 3645 // that committed entry has it at all times. | 3643 // that commited entry has it at all times. |
| 3646 HistoryEntry* entry = render_view_->history_controller()->GetCurrentEntry(); | 3644 HistoryEntry* entry = render_view_->history_controller()->GetCurrentEntry(); |
| 3647 if (entry) | 3645 if (entry) |
| 3648 params.page_state = HistoryEntryToPageState(entry); | 3646 params.page_state = HistoryEntryToPageState(entry); |
| 3649 else | 3647 else |
| 3650 params.page_state = PageState::CreateFromURL(request.url()); | 3648 params.page_state = PageState::CreateFromURL(request.url()); |
| 3651 | 3649 |
| 3652 if (!frame->parent()) { | 3650 if (!frame->parent()) { |
| 3653 // Top-level navigation. | 3651 // Top-level navigation. |
| 3654 | 3652 |
| 3655 // Reset the zoom limits in case a plugin had changed them previously. This | 3653 // Reset the zoom limits in case a plugin had changed them previously. This |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3740 | 3738 |
| 3741 // This message needs to be sent before any of allowScripts(), | 3739 // This message needs to be sent before any of allowScripts(), |
| 3742 // allowImages(), allowPlugins() is called for the new page, so that when | 3740 // allowImages(), allowPlugins() is called for the new page, so that when |
| 3743 // these functions send a ViewHostMsg_ContentBlocked message, it arrives | 3741 // these functions send a ViewHostMsg_ContentBlocked message, it arrives |
| 3744 // after the FrameHostMsg_DidCommitProvisionalLoad message. | 3742 // after the FrameHostMsg_DidCommitProvisionalLoad message. |
| 3745 Send(new FrameHostMsg_DidCommitProvisionalLoad(routing_id_, params)); | 3743 Send(new FrameHostMsg_DidCommitProvisionalLoad(routing_id_, params)); |
| 3746 } else { | 3744 } else { |
| 3747 // Subframe navigation: the type depends on whether this navigation | 3745 // Subframe navigation: the type depends on whether this navigation |
| 3748 // generated a new session history entry. When they do generate a session | 3746 // generated a new session history entry. When they do generate a session |
| 3749 // history entry, it means the user initiated the navigation and we should | 3747 // history entry, it means the user initiated the navigation and we should |
| 3750 // mark it as such. | 3748 // mark it as such. This test checks if this is the first time |
| 3751 bool is_history_navigation = commit_type == blink::WebBackForwardCommit; | 3749 // SendDidCommitProvisionalLoad has been called since WillNavigateToURL was |
| 3752 if (is_history_navigation || ds->replacesCurrentHistoryItem()) | 3750 // called to initiate the load. |
| 3751 if (render_view_->page_id_ > render_view_->last_page_id_sent_to_browser_) |
| 3752 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
| 3753 else |
| 3753 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 3754 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
| 3754 else | |
| 3755 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | |
| 3756 | 3755 |
| 3757 DCHECK(!navigation_state->history_list_was_cleared()); | 3756 DCHECK(!navigation_state->history_list_was_cleared()); |
| 3758 params.history_list_was_cleared = false; | 3757 params.history_list_was_cleared = false; |
| 3759 params.report_type = FrameMsg_UILoadMetricsReportType::NO_REPORT; | 3758 params.report_type = FrameMsg_UILoadMetricsReportType::NO_REPORT; |
| 3760 | 3759 |
| 3761 // Don't send this message while the subframe is swapped out. | 3760 // Don't send this message while the subframe is swapped out. |
| 3762 if (!is_swapped_out()) | 3761 if (!is_swapped_out()) |
| 3763 Send(new FrameHostMsg_DidCommitProvisionalLoad(routing_id_, params)); | 3762 Send(new FrameHostMsg_DidCommitProvisionalLoad(routing_id_, params)); |
| 3764 } | 3763 } |
| 3765 | 3764 |
| 3765 render_view_->last_page_id_sent_to_browser_ = |
| 3766 std::max(render_view_->last_page_id_sent_to_browser_, |
| 3767 render_view_->page_id_); |
| 3768 |
| 3766 // If we end up reusing this WebRequest (for example, due to a #ref click), | 3769 // If we end up reusing this WebRequest (for example, due to a #ref click), |
| 3767 // we don't want the transition type to persist. Just clear it. | 3770 // we don't want the transition type to persist. Just clear it. |
| 3768 navigation_state->set_transition_type(ui::PAGE_TRANSITION_LINK); | 3771 navigation_state->set_transition_type(ui::PAGE_TRANSITION_LINK); |
| 3769 } | 3772 } |
| 3770 | 3773 |
| 3771 WebElement RenderFrameImpl::GetFocusedElement() { | 3774 WebElement RenderFrameImpl::GetFocusedElement() { |
| 3772 WebDocument doc = frame_->document(); | 3775 WebDocument doc = frame_->document(); |
| 3773 if (!doc.isNull()) | 3776 if (!doc.isNull()) |
| 3774 return doc.focusedElement(); | 3777 return doc.focusedElement(); |
| 3775 | 3778 |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4391 | 4394 |
| 4392 #if defined(ENABLE_BROWSER_CDMS) | 4395 #if defined(ENABLE_BROWSER_CDMS) |
| 4393 RendererCdmManager* RenderFrameImpl::GetCdmManager() { | 4396 RendererCdmManager* RenderFrameImpl::GetCdmManager() { |
| 4394 if (!cdm_manager_) | 4397 if (!cdm_manager_) |
| 4395 cdm_manager_ = new RendererCdmManager(this); | 4398 cdm_manager_ = new RendererCdmManager(this); |
| 4396 return cdm_manager_; | 4399 return cdm_manager_; |
| 4397 } | 4400 } |
| 4398 #endif // defined(ENABLE_BROWSER_CDMS) | 4401 #endif // defined(ENABLE_BROWSER_CDMS) |
| 4399 | 4402 |
| 4400 } // namespace content | 4403 } // namespace content |
| OLD | NEW |