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

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

Issue 1906213003: OOPIF: Fix subframe back/forward after recreating FTNs (try #2). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nits Created 4 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/frame_navigation_entry.h" 5 #include "content/browser/frame_host/frame_navigation_entry.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 namespace content { 9 namespace content {
10 10
11 FrameNavigationEntry::FrameNavigationEntry(int frame_tree_node_id) 11 FrameNavigationEntry::FrameNavigationEntry()
12 : frame_tree_node_id_(frame_tree_node_id), 12 : item_sequence_number_(-1), document_sequence_number_(-1), post_id_(-1) {}
13 item_sequence_number_(-1),
14 document_sequence_number_(-1),
15 post_id_(-1) {}
16 13
17 FrameNavigationEntry::FrameNavigationEntry( 14 FrameNavigationEntry::FrameNavigationEntry(
18 int frame_tree_node_id,
19 const std::string& frame_unique_name, 15 const std::string& frame_unique_name,
20 int64_t item_sequence_number, 16 int64_t item_sequence_number,
21 int64_t document_sequence_number, 17 int64_t document_sequence_number,
22 scoped_refptr<SiteInstanceImpl> site_instance, 18 scoped_refptr<SiteInstanceImpl> site_instance,
23 const GURL& url, 19 const GURL& url,
24 const Referrer& referrer, 20 const Referrer& referrer,
25 const std::string& method, 21 const std::string& method,
26 int64_t post_id) 22 int64_t post_id)
27 : frame_tree_node_id_(frame_tree_node_id), 23 : frame_unique_name_(frame_unique_name),
28 frame_unique_name_(frame_unique_name),
29 item_sequence_number_(item_sequence_number), 24 item_sequence_number_(item_sequence_number),
30 document_sequence_number_(document_sequence_number), 25 document_sequence_number_(document_sequence_number),
31 site_instance_(std::move(site_instance)), 26 site_instance_(std::move(site_instance)),
32 url_(url), 27 url_(url),
33 referrer_(referrer), 28 referrer_(referrer),
34 method_(method), 29 method_(method),
35 post_id_(post_id) {} 30 post_id_(post_id) {}
36 31
37 FrameNavigationEntry::~FrameNavigationEntry() { 32 FrameNavigationEntry::~FrameNavigationEntry() {
38 } 33 }
39 34
40 FrameNavigationEntry* FrameNavigationEntry::Clone() const { 35 FrameNavigationEntry* FrameNavigationEntry::Clone() const {
41 FrameNavigationEntry* copy = new FrameNavigationEntry(frame_tree_node_id_); 36 FrameNavigationEntry* copy = new FrameNavigationEntry();
42 copy->UpdateEntry(frame_unique_name_, item_sequence_number_, 37 copy->UpdateEntry(frame_unique_name_, item_sequence_number_,
43 document_sequence_number_, site_instance_.get(), url_, 38 document_sequence_number_, site_instance_.get(), url_,
44 referrer_, page_state_, method_, post_id_); 39 referrer_, page_state_, method_, post_id_);
45 return copy; 40 return copy;
46 } 41 }
47 42
48 void FrameNavigationEntry::UpdateEntry(const std::string& frame_unique_name, 43 void FrameNavigationEntry::UpdateEntry(const std::string& frame_unique_name,
49 int64_t item_sequence_number, 44 int64_t item_sequence_number,
50 int64_t document_sequence_number, 45 int64_t document_sequence_number,
51 SiteInstanceImpl* site_instance, 46 SiteInstanceImpl* site_instance,
52 const GURL& url, 47 const GURL& url,
53 const Referrer& referrer, 48 const Referrer& referrer,
54 const PageState& page_state, 49 const PageState& page_state,
55 const std::string& method, 50 const std::string& method,
56 int64_t post_id) { 51 int64_t post_id) {
57 frame_unique_name_ = frame_unique_name; 52 frame_unique_name_ = frame_unique_name;
58 item_sequence_number_ = item_sequence_number; 53 item_sequence_number_ = item_sequence_number;
59 document_sequence_number_ = document_sequence_number; 54 document_sequence_number_ = document_sequence_number;
60 site_instance_ = site_instance; 55 site_instance_ = site_instance;
61 url_ = url; 56 url_ = url;
62 referrer_ = referrer; 57 referrer_ = referrer;
63 page_state_ = page_state; 58 page_state_ = page_state;
64 method_ = method; 59 method_ = method;
65 post_id_ = post_id; 60 post_id_ = post_id;
66 } 61 }
67 62
68 void FrameNavigationEntry::set_item_sequence_number( 63 void FrameNavigationEntry::set_item_sequence_number(
69 int64_t item_sequence_number) { 64 int64_t item_sequence_number) {
70 // Once assigned, the item sequence number shouldn't change. 65 // TODO(creis): Assert that this does not change after being assigned, once
71 DCHECK(item_sequence_number_ == -1 || 66 // location.replace is classified as NEW_PAGE rather than EXISTING_PAGE.
72 item_sequence_number_ == item_sequence_number); 67 // Same for document sequence number. See https://crbug.com/596707.
73 item_sequence_number_ = item_sequence_number; 68 item_sequence_number_ = item_sequence_number;
74 } 69 }
75 70
76 void FrameNavigationEntry::set_document_sequence_number( 71 void FrameNavigationEntry::set_document_sequence_number(
77 int64_t document_sequence_number) { 72 int64_t document_sequence_number) {
78 // Once assigned, the document sequence number shouldn't change.
79 DCHECK(document_sequence_number_ == -1 ||
80 document_sequence_number_ == document_sequence_number);
81 document_sequence_number_ = document_sequence_number; 73 document_sequence_number_ = document_sequence_number;
82 } 74 }
83 75
84 } // namespace content 76 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/frame_navigation_entry.h ('k') | content/browser/frame_host/frame_tree_node.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698