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

Side by Side Diff: content/browser/frame_host/navigation_controller_impl.cc

Issue 1156733003: Move PageState to FrameNavigationEntry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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
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/browser/frame_host/navigation_controller_impl.h" 5 #include "content/browser/frame_host/navigation_controller_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 896 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 // We should not have a pending entry anymore. Clear it again in case any 907 // We should not have a pending entry anymore. Clear it again in case any
908 // error cases above forgot to do so. 908 // error cases above forgot to do so.
909 DiscardNonCommittedEntriesInternal(); 909 DiscardNonCommittedEntriesInternal();
910 910
911 // All committed entries should have nonempty content state so WebKit doesn't 911 // All committed entries should have nonempty content state so WebKit doesn't
912 // get confused when we go back to them (see the function for details). 912 // get confused when we go back to them (see the function for details).
913 DCHECK(params.page_state.IsValid()); 913 DCHECK(params.page_state.IsValid());
914 NavigationEntryImpl* active_entry = GetLastCommittedEntry(); 914 NavigationEntryImpl* active_entry = GetLastCommittedEntry();
915 active_entry->SetTimestamp(timestamp); 915 active_entry->SetTimestamp(timestamp);
916 active_entry->SetHttpStatusCode(params.http_status_code); 916 active_entry->SetHttpStatusCode(params.http_status_code);
917 // TODO(creis): Do this on the frame entry instead, once we have them for
918 // manual subframe navigations in --site-per-process.
917 active_entry->SetPageState(params.page_state); 919 active_entry->SetPageState(params.page_state);
918 active_entry->SetRedirectChain(params.redirects); 920 active_entry->SetRedirectChain(params.redirects);
919 921
920 // Use histogram to track memory impact of redirect chain because it's now 922 // Use histogram to track memory impact of redirect chain because it's now
921 // not cleared for committed entries. 923 // not cleared for committed entries.
922 size_t redirect_chain_size = 0; 924 size_t redirect_chain_size = 0;
923 for (size_t i = 0; i < params.redirects.size(); ++i) { 925 for (size_t i = 0; i < params.redirects.size(); ++i) {
924 redirect_chain_size += params.redirects[i].spec().length(); 926 redirect_chain_size += params.redirects[i].spec().length();
925 } 927 }
926 UMA_HISTOGRAM_COUNTS("Navigation.RedirectChainSize", redirect_chain_size); 928 UMA_HISTOGRAM_COUNTS("Navigation.RedirectChainSize", redirect_chain_size);
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
1481 } 1483 }
1482 } 1484 }
1483 1485
1484 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 1486 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
1485 switches::kSitePerProcess)) { 1487 switches::kSitePerProcess)) {
1486 // This may be a "new auto" case where we add a new FrameNavigationEntry, or 1488 // This may be a "new auto" case where we add a new FrameNavigationEntry, or
1487 // it may be a "history auto" case where we update an existing one. 1489 // it may be a "history auto" case where we update an existing one.
1488 NavigationEntryImpl* last_committed = GetLastCommittedEntry(); 1490 NavigationEntryImpl* last_committed = GetLastCommittedEntry();
1489 last_committed->AddOrUpdateFrameEntry(rfh->frame_tree_node(), 1491 last_committed->AddOrUpdateFrameEntry(rfh->frame_tree_node(),
1490 rfh->GetSiteInstance(), params.url, 1492 rfh->GetSiteInstance(), params.url,
1491 params.referrer); 1493 params.referrer, params.page_state);
1492 1494
1493 // Cross-process subframe navigations may leave a pending entry around. 1495 // Cross-process subframe navigations may leave a pending entry around.
1494 // Clear it if it's actually for the subframe. 1496 // Clear it if it's actually for the subframe.
1495 // TODO(creis): Don't use pending entries for subframe navigations. 1497 // TODO(creis): Don't use pending entries for subframe navigations.
1496 // See https://crbug.com/495161. 1498 // See https://crbug.com/495161.
1497 if (pending_entry_ && 1499 if (pending_entry_ &&
1498 pending_entry_->frame_tree_node_id() == 1500 pending_entry_->frame_tree_node_id() ==
1499 rfh->frame_tree_node()->frame_tree_node_id()) { 1501 rfh->frame_tree_node()->frame_tree_node_id()) {
1500 DiscardPendingEntry(false); 1502 DiscardPendingEntry(false);
1501 } 1503 }
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
2040 } 2042 }
2041 } 2043 }
2042 } 2044 }
2043 2045
2044 void NavigationControllerImpl::SetGetTimestampCallbackForTest( 2046 void NavigationControllerImpl::SetGetTimestampCallbackForTest(
2045 const base::Callback<base::Time()>& get_timestamp_callback) { 2047 const base::Callback<base::Time()>& get_timestamp_callback) {
2046 get_timestamp_callback_ = get_timestamp_callback; 2048 get_timestamp_callback_ = get_timestamp_callback;
2047 } 2049 }
2048 2050
2049 } // namespace content 2051 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/frame_navigation_entry.cc ('k') | content/browser/frame_host/navigation_entry_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698