Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 248013003: Remove WebHistoryItem child usage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: moar comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/history_serialization.cc ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 GetContentClient()->SetActiveURL(params.url); 693 GetContentClient()->SetActiveURL(params.url);
694 694
695 WebFrame* frame = frame_; 695 WebFrame* frame = frame_;
696 if (!params.frame_to_navigate.empty()) { 696 if (!params.frame_to_navigate.empty()) {
697 // TODO(nasko): Move this lookup to the browser process. 697 // TODO(nasko): Move this lookup to the browser process.
698 frame = render_view_->webview()->findFrameByName( 698 frame = render_view_->webview()->findFrameByName(
699 WebString::fromUTF8(params.frame_to_navigate)); 699 WebString::fromUTF8(params.frame_to_navigate));
700 CHECK(frame) << "Invalid frame name passed: " << params.frame_to_navigate; 700 CHECK(frame) << "Invalid frame name passed: " << params.frame_to_navigate;
701 } 701 }
702 702
703 WebHistoryItem item = 703 if (is_reload && !render_view_->history_controller()->GetCurrentEntry()) {
704 render_view_->history_controller()->GetCurrentItemForExport();
705 if (is_reload && item.isNull()) {
706 // We cannot reload if we do not have any history state. This happens, for 704 // We cannot reload if we do not have any history state. This happens, for
707 // example, when recovering from a crash. 705 // example, when recovering from a crash.
708 is_reload = false; 706 is_reload = false;
709 cache_policy = WebURLRequest::ReloadIgnoringCacheData; 707 cache_policy = WebURLRequest::ReloadIgnoringCacheData;
710 } 708 }
711 709
712 render_view_->pending_navigation_params_.reset( 710 render_view_->pending_navigation_params_.reset(
713 new FrameMsg_Navigate_Params(params)); 711 new FrameMsg_Navigate_Params(params));
714 712
715 // If we are reloading, then WebKit will use the history state of the current 713 // If we are reloading, then WebKit will use the history state of the current
716 // page, so we should just ignore any given history state. Otherwise, if we 714 // page, so we should just ignore any given history state. Otherwise, if we
717 // have history state, then we need to navigate to it, which corresponds to a 715 // have history state, then we need to navigate to it, which corresponds to a
718 // back/forward navigation event. 716 // back/forward navigation event.
719 if (is_reload) { 717 if (is_reload) {
720 bool reload_original_url = 718 bool reload_original_url =
721 (params.navigation_type == 719 (params.navigation_type ==
722 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL); 720 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL);
723 bool ignore_cache = (params.navigation_type == 721 bool ignore_cache = (params.navigation_type ==
724 FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE); 722 FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE);
725 723
726 if (reload_original_url) 724 if (reload_original_url)
727 frame->reloadWithOverrideURL(params.url, true); 725 frame->reloadWithOverrideURL(params.url, true);
728 else 726 else
729 frame->reload(ignore_cache); 727 frame->reload(ignore_cache);
730 } else if (params.page_state.IsValid()) { 728 } else if (params.page_state.IsValid()) {
731 // We must know the page ID of the page we are navigating back to. 729 // We must know the page ID of the page we are navigating back to.
732 DCHECK_NE(params.page_id, -1); 730 DCHECK_NE(params.page_id, -1);
733 WebHistoryItem item = PageStateToHistoryItem(params.page_state); 731 HistoryEntry* entry = PageStateToHistoryEntry(params.page_state);
734 if (!item.isNull()) { 732 if (entry) {
735 // Ensure we didn't save the swapped out URL in UpdateState, since the 733 // Ensure we didn't save the swapped out URL in UpdateState, since the
736 // browser should never be telling us to navigate to swappedout://. 734 // browser should never be telling us to navigate to swappedout://.
737 CHECK(item.urlString() != WebString::fromUTF8(kSwappedOutURL)); 735 CHECK(entry->root().urlString() != WebString::fromUTF8(kSwappedOutURL));
738 render_view_->history_controller()->GoToItem(item, cache_policy); 736 render_view_->history_controller()->GoToEntry(entry, cache_policy);
739 } 737 }
740 } else if (!params.base_url_for_data_url.is_empty()) { 738 } else if (!params.base_url_for_data_url.is_empty()) {
741 // A loadData request with a specified base URL. 739 // A loadData request with a specified base URL.
742 std::string mime_type, charset, data; 740 std::string mime_type, charset, data;
743 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) { 741 if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) {
744 frame->loadData( 742 frame->loadData(
745 WebData(data.c_str(), data.length()), 743 WebData(data.c_str(), data.length()),
746 WebString::fromUTF8(mime_type), 744 WebString::fromUTF8(mime_type),
747 WebString::fromUTF8(charset), 745 WebString::fromUTF8(charset),
748 params.base_url_for_data_url, 746 params.base_url_for_data_url,
(...skipping 1957 matching lines...) Expand 10 before | Expand all | Expand 10 after
2706 !response.isMultipartPayload() && (response.httpStatusCode() != 404); 2704 !response.isMultipartPayload() && (response.httpStatusCode() != 404);
2707 2705
2708 params.searchable_form_url = internal_data->searchable_form_url(); 2706 params.searchable_form_url = internal_data->searchable_form_url();
2709 params.searchable_form_encoding = internal_data->searchable_form_encoding(); 2707 params.searchable_form_encoding = internal_data->searchable_form_encoding();
2710 2708
2711 params.gesture = render_view_->navigation_gesture_; 2709 params.gesture = render_view_->navigation_gesture_;
2712 render_view_->navigation_gesture_ = NavigationGestureUnknown; 2710 render_view_->navigation_gesture_ = NavigationGestureUnknown;
2713 2711
2714 // Make navigation state a part of the DidCommitProvisionalLoad message so 2712 // Make navigation state a part of the DidCommitProvisionalLoad message so
2715 // that commited entry has it at all times. 2713 // that commited entry has it at all times.
2716 WebHistoryItem item = 2714 HistoryEntry* entry = render_view_->history_controller()->GetCurrentEntry();
2717 render_view_->history_controller()->GetCurrentItemForExport(); 2715 if (entry)
2718 if (item.isNull()) { 2716 params.page_state = HistoryEntryToPageState(entry);
2719 item.initialize(); 2717 else
2720 item.setURLString(request.url().spec().utf16()); 2718 params.page_state = PageState::CreateFromURL(request.url());
2721 }
2722 params.page_state = HistoryItemToPageState(item);
2723 2719
2724 if (!frame->parent()) { 2720 if (!frame->parent()) {
2725 // Top-level navigation. 2721 // Top-level navigation.
2726 2722
2727 // Reset the zoom limits in case a plugin had changed them previously. This 2723 // Reset the zoom limits in case a plugin had changed them previously. This
2728 // will also call us back which will cause us to send a message to 2724 // will also call us back which will cause us to send a message to
2729 // update WebContentsImpl. 2725 // update WebContentsImpl.
2730 render_view_->webview()->zoomLimitsChanged( 2726 render_view_->webview()->zoomLimitsChanged(
2731 ZoomFactorToZoomLevel(kMinimumZoomFactor), 2727 ZoomFactorToZoomLevel(kMinimumZoomFactor),
2732 ZoomFactorToZoomLevel(kMaximumZoomFactor)); 2728 ZoomFactorToZoomLevel(kMaximumZoomFactor));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2777 params.transition = static_cast<PageTransition>( 2773 params.transition = static_cast<PageTransition>(
2778 params.transition | PAGE_TRANSITION_CLIENT_REDIRECT); 2774 params.transition | PAGE_TRANSITION_CLIENT_REDIRECT);
2779 } else { 2775 } else {
2780 params.referrer = RenderViewImpl::GetReferrerFromRequest( 2776 params.referrer = RenderViewImpl::GetReferrerFromRequest(
2781 frame, ds->request()); 2777 frame, ds->request());
2782 } 2778 }
2783 2779
2784 base::string16 method = request.httpMethod(); 2780 base::string16 method = request.httpMethod();
2785 if (EqualsASCII(method, "POST")) { 2781 if (EqualsASCII(method, "POST")) {
2786 params.is_post = true; 2782 params.is_post = true;
2787 params.post_id = ExtractPostId(item); 2783 params.post_id = ExtractPostId(entry->root());
2788 } 2784 }
2789 2785
2790 // Send the user agent override back. 2786 // Send the user agent override back.
2791 params.is_overriding_user_agent = internal_data->is_overriding_user_agent(); 2787 params.is_overriding_user_agent = internal_data->is_overriding_user_agent();
2792 2788
2793 // Track the URL of the original request. We use the first entry of the 2789 // Track the URL of the original request. We use the first entry of the
2794 // redirect chain if it exists because the chain may have started in another 2790 // redirect chain if it exists because the chain may have started in another
2795 // process. 2791 // process.
2796 params.original_request_url = GetOriginalRequestURL(ds); 2792 params.original_request_url = GetOriginalRequestURL(ds);
2797 2793
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
3181 selection_text_offset_ = offset; 3177 selection_text_offset_ = offset;
3182 selection_range_ = range; 3178 selection_range_ = range;
3183 // This IPC is dispatched by RenderWidetHost, so use its routing ID. 3179 // This IPC is dispatched by RenderWidetHost, so use its routing ID.
3184 Send(new ViewHostMsg_SelectionChanged( 3180 Send(new ViewHostMsg_SelectionChanged(
3185 GetRenderWidget()->routing_id(), text, offset, range)); 3181 GetRenderWidget()->routing_id(), text, offset, range));
3186 } 3182 }
3187 GetRenderWidget()->UpdateSelectionBounds(); 3183 GetRenderWidget()->UpdateSelectionBounds();
3188 } 3184 }
3189 3185
3190 } // namespace content 3186 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/history_serialization.cc ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698