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

Unified Diff: content/renderer/render_view_impl.cc

Issue 12052023: Add "frame to navigate" to NavigationEntry and plumb it to the RenderViewImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch for landing Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index da817a86eec4fedaa2ccd92054f5459f2d5e2e96..dc3697c3b9710e407be3f63e9daa78e285d2dbba 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1132,8 +1132,14 @@ void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {
GetContentClient()->SetActiveURL(params.url);
- WebFrame* main_frame = webview()->mainFrame();
- if (is_reload && main_frame->currentHistoryItem().isNull()) {
+ WebFrame* frame = webview()->mainFrame();
+ if (!params.frame_to_navigate.empty()) {
+ frame = webview()->findFrameByName(
+ WebString::fromUTF8(params.frame_to_navigate));
+ CHECK(frame) << "Invalid frame name passed: " << params.frame_to_navigate;
+ }
+
+ if (is_reload && frame->currentHistoryItem().isNull()) {
// We cannot reload if we do not have any history state. This happens, for
// example, when recovering from a crash. Our workaround here is a bit of
// a hack since it means that reload after a crashed tab does not cause an
@@ -1155,9 +1161,9 @@ void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {
ViewMsg_Navigate_Type::RELOAD_IGNORING_CACHE);
if (reload_original_url)
- main_frame->reloadWithOverrideURL(params.url, true);
+ frame->reloadWithOverrideURL(params.url, true);
else
- main_frame->reload(ignore_cache);
+ frame->reload(ignore_cache);
} else if (!params.state.empty()) {
// We must know the page ID of the page we are navigating back to.
DCHECK_NE(params.page_id, -1);
@@ -1166,13 +1172,13 @@ void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {
// 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));
- main_frame->loadHistoryItem(item);
+ frame->loadHistoryItem(item);
}
} else if (!params.base_url_for_data_url.is_empty()) {
// A loadData request with a specified base URL.
std::string mime_type, charset, data;
if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) {
- main_frame->loadData(
+ frame->loadData(
WebData(data.c_str(), data.length()),
WebString::fromUTF8(mime_type),
WebString::fromUTF8(charset),
@@ -1190,7 +1196,7 @@ void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {
// A session history navigation should have been accompanied by state.
CHECK_EQ(params.page_id, -1);
- if (main_frame->isViewSourceModeEnabled())
+ if (frame->isViewSourceModeEnabled())
request.setCachePolicy(WebURLRequest::ReturnCacheDataElseLoad);
if (params.referrer.url.is_valid()) {
@@ -1224,7 +1230,7 @@ void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {
request.setHTTPBody(http_body);
}
- main_frame->loadRequest(request);
+ frame->loadRequest(request);
}
// In case LoadRequest failed before DidCreateDataSource was called.
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698