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

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

Issue 1944013003: Move ownership of source SiteInstance to the FrameNavigationEntry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments addressed. 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() 11 FrameNavigationEntry::FrameNavigationEntry()
12 : item_sequence_number_(-1), document_sequence_number_(-1), post_id_(-1) {} 12 : item_sequence_number_(-1), document_sequence_number_(-1), post_id_(-1) {}
13 13
14 FrameNavigationEntry::FrameNavigationEntry( 14 FrameNavigationEntry::FrameNavigationEntry(
15 const std::string& frame_unique_name, 15 const std::string& frame_unique_name,
16 int64_t item_sequence_number, 16 int64_t item_sequence_number,
17 int64_t document_sequence_number, 17 int64_t document_sequence_number,
18 scoped_refptr<SiteInstanceImpl> site_instance, 18 scoped_refptr<SiteInstanceImpl> site_instance,
19 scoped_refptr<SiteInstanceImpl> source_site_instance,
19 const GURL& url, 20 const GURL& url,
20 const Referrer& referrer, 21 const Referrer& referrer,
21 const std::string& method, 22 const std::string& method,
22 int64_t post_id) 23 int64_t post_id)
23 : frame_unique_name_(frame_unique_name), 24 : frame_unique_name_(frame_unique_name),
24 item_sequence_number_(item_sequence_number), 25 item_sequence_number_(item_sequence_number),
25 document_sequence_number_(document_sequence_number), 26 document_sequence_number_(document_sequence_number),
26 site_instance_(std::move(site_instance)), 27 site_instance_(std::move(site_instance)),
28 source_site_instance_(std::move(source_site_instance)),
27 url_(url), 29 url_(url),
28 referrer_(referrer), 30 referrer_(referrer),
29 method_(method), 31 method_(method),
30 post_id_(post_id) {} 32 post_id_(post_id) {}
31 33
32 FrameNavigationEntry::~FrameNavigationEntry() { 34 FrameNavigationEntry::~FrameNavigationEntry() {
33 } 35 }
34 36
35 FrameNavigationEntry* FrameNavigationEntry::Clone() const { 37 FrameNavigationEntry* FrameNavigationEntry::Clone() const {
36 FrameNavigationEntry* copy = new FrameNavigationEntry(); 38 FrameNavigationEntry* copy = new FrameNavigationEntry();
37 copy->UpdateEntry(frame_unique_name_, item_sequence_number_, 39 copy->UpdateEntry(frame_unique_name_, item_sequence_number_,
38 document_sequence_number_, site_instance_.get(), url_, 40 document_sequence_number_, site_instance_.get(),
39 referrer_, page_state_, method_, post_id_); 41 source_site_instance_, url_, referrer_, page_state_,
Charlie Reis 2016/05/05 22:20:00 Hmm. NavigationEntryImpl::CloneAndReplace omits a
nasko 2016/05/06 00:13:41 Done.
42 method_, post_id_);
40 return copy; 43 return copy;
41 } 44 }
42 45
43 void FrameNavigationEntry::UpdateEntry(const std::string& frame_unique_name, 46 void FrameNavigationEntry::UpdateEntry(
44 int64_t item_sequence_number, 47 const std::string& frame_unique_name,
45 int64_t document_sequence_number, 48 int64_t item_sequence_number,
46 SiteInstanceImpl* site_instance, 49 int64_t document_sequence_number,
47 const GURL& url, 50 SiteInstanceImpl* site_instance,
Charlie Reis 2016/05/05 22:20:00 Tangent for a different CL: Perhaps we should chan
nasko 2016/05/06 00:13:41 My preference is different CL, as I want to keep t
48 const Referrer& referrer, 51 scoped_refptr<SiteInstanceImpl> source_site_instance,
49 const PageState& page_state, 52 const GURL& url,
50 const std::string& method, 53 const Referrer& referrer,
51 int64_t post_id) { 54 const PageState& page_state,
55 const std::string& method,
56 int64_t post_id) {
52 frame_unique_name_ = frame_unique_name; 57 frame_unique_name_ = frame_unique_name;
53 item_sequence_number_ = item_sequence_number; 58 item_sequence_number_ = item_sequence_number;
54 document_sequence_number_ = document_sequence_number; 59 document_sequence_number_ = document_sequence_number;
55 site_instance_ = site_instance; 60 site_instance_ = site_instance;
61 source_site_instance_ = std::move(source_site_instance);
56 url_ = url; 62 url_ = url;
57 referrer_ = referrer; 63 referrer_ = referrer;
58 page_state_ = page_state; 64 page_state_ = page_state;
59 method_ = method; 65 method_ = method;
60 post_id_ = post_id; 66 post_id_ = post_id;
61 } 67 }
62 68
63 void FrameNavigationEntry::set_item_sequence_number( 69 void FrameNavigationEntry::set_item_sequence_number(
64 int64_t item_sequence_number) { 70 int64_t item_sequence_number) {
65 // TODO(creis): Assert that this does not change after being assigned, once 71 // TODO(creis): Assert that this does not change after being assigned, once
66 // location.replace is classified as NEW_PAGE rather than EXISTING_PAGE. 72 // location.replace is classified as NEW_PAGE rather than EXISTING_PAGE.
67 // Same for document sequence number. See https://crbug.com/596707. 73 // Same for document sequence number. See https://crbug.com/596707.
68 item_sequence_number_ = item_sequence_number; 74 item_sequence_number_ = item_sequence_number;
69 } 75 }
70 76
71 void FrameNavigationEntry::set_document_sequence_number( 77 void FrameNavigationEntry::set_document_sequence_number(
72 int64_t document_sequence_number) { 78 int64_t document_sequence_number) {
73 document_sequence_number_ = document_sequence_number; 79 document_sequence_number_ = document_sequence_number;
74 } 80 }
75 81
76 } // namespace content 82 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698