Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index 31db21434bb8a0e69d9721a63603c39a334d6305..630d2a949f4f92fecbe4eb390642ef077f4e6259 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -700,9 +700,7 @@ void RenderFrameImpl::OnNavigate(const FrameMsg_Navigate_Params& params) { |
| CHECK(frame) << "Invalid frame name passed: " << params.frame_to_navigate; |
| } |
| - WebHistoryItem item = |
| - render_view_->history_controller()->GetCurrentItemForExport(); |
| - if (is_reload && item.isNull()) { |
| + if (is_reload && !render_view_->history_controller()->GetCurrentEntry()) { |
| // We cannot reload if we do not have any history state. This happens, for |
| // example, when recovering from a crash. |
| is_reload = false; |
| @@ -730,12 +728,13 @@ void RenderFrameImpl::OnNavigate(const FrameMsg_Navigate_Params& params) { |
| } else if (params.page_state.IsValid()) { |
| // We must know the page ID of the page we are navigating back to. |
| DCHECK_NE(params.page_id, -1); |
| - WebHistoryItem item = PageStateToHistoryItem(params.page_state); |
| - if (!item.isNull()) { |
| + HistoryEntry* entry = |
| + PageStateToHistoryEntry(params.page_state, routing_id_); |
| + if (entry) { |
| // Ensure we didn't save the swapped out URL in UpdateState, since the |
| // browser should never be telling us to navigate to swappedout://. |
| - CHECK(item.urlString() != WebString::fromUTF8(kSwappedOutURL)); |
| - render_view_->history_controller()->GoToItem(item, cache_policy); |
| + CHECK(entry->root().urlString() != WebString::fromUTF8(kSwappedOutURL)); |
| + render_view_->history_controller()->GoToEntry(entry, cache_policy); |
| } |
| } else if (!params.base_url_for_data_url.is_empty()) { |
| // A loadData request with a specified base URL. |
| @@ -2123,7 +2122,9 @@ bool RenderFrameImpl::runModalBeforeUnloadDialog( |
| } |
| void RenderFrameImpl::showContextMenu(const blink::WebContextMenuData& data) { |
| - ContextMenuParams params = ContextMenuParamsBuilder::Build(data); |
| + PageState state = HistoryEntryToPageState( |
| + render_view_->history_controller()->GetCurrentEntry()); |
| + ContextMenuParams params = ContextMenuParamsBuilder::Build(data, state); |
|
Charlie Reis
2014/04/28 16:29:00
Yeah, somehow we'll need to PageState for the fram
|
| params.source_type = GetRenderWidget()->context_menu_source_type(); |
| if (params.source_type == ui::MENU_SOURCE_TOUCH_EDIT_MENU) { |
| params.x = GetRenderWidget()->touch_editing_context_menu_location().x(); |
| @@ -2698,13 +2699,11 @@ void RenderFrameImpl::UpdateURL(blink::WebFrame* frame) { |
| // Make navigation state a part of the DidCommitProvisionalLoad message so |
| // that commited entry has it at all times. |
| - WebHistoryItem item = |
| - render_view_->history_controller()->GetCurrentItemForExport(); |
| - if (item.isNull()) { |
| - item.initialize(); |
| - item.setURLString(request.url().spec().utf16()); |
| - } |
| - params.page_state = HistoryItemToPageState(item); |
| + HistoryEntry* entry = render_view_->history_controller()->GetCurrentEntry(); |
| + if (entry) |
| + params.page_state = HistoryEntryToPageState(entry); |
| + else |
| + params.page_state = PageState::CreateFromURL(request.url()); |
| if (!frame->parent()) { |
| // Top-level navigation. |
| @@ -2769,7 +2768,7 @@ void RenderFrameImpl::UpdateURL(blink::WebFrame* frame) { |
| base::string16 method = request.httpMethod(); |
| if (EqualsASCII(method, "POST")) { |
| params.is_post = true; |
| - params.post_id = ExtractPostId(item); |
| + params.post_id = ExtractPostId(entry->root()); |
| } |
| // Send the user agent override back. |