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

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

Issue 2482873002: Add is_srcdoc to FrameNavigationEntry and restore about::srcdoc URL. (Closed)
Patch Set: Addressed comments (@nasko) Created 4 years, 1 month 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 #include "content/common/page_state_serialization.h" 9 #include "content/common/page_state_serialization.h"
10 #include "content/common/site_isolation_policy.h" 10 #include "content/common/site_isolation_policy.h"
11 11
12 namespace content { 12 namespace content {
13 13
14 FrameNavigationEntry::FrameNavigationEntry() 14 FrameNavigationEntry::FrameNavigationEntry()
15 : item_sequence_number_(-1), document_sequence_number_(-1), post_id_(-1) {} 15 : item_sequence_number_(-1), document_sequence_number_(-1), post_id_(-1) {}
16 16
17 FrameNavigationEntry::FrameNavigationEntry( 17 FrameNavigationEntry::FrameNavigationEntry(
18 const std::string& frame_unique_name, 18 const std::string& frame_unique_name,
19 int64_t item_sequence_number, 19 int64_t item_sequence_number,
20 int64_t document_sequence_number, 20 int64_t document_sequence_number,
21 scoped_refptr<SiteInstanceImpl> site_instance, 21 scoped_refptr<SiteInstanceImpl> site_instance,
22 scoped_refptr<SiteInstanceImpl> source_site_instance, 22 scoped_refptr<SiteInstanceImpl> source_site_instance,
23 const GURL& url, 23 const GURL& url,
24 const Referrer& referrer, 24 const Referrer& referrer,
25 const std::string& method, 25 const std::string& method,
26 int64_t post_id) 26 int64_t post_id,
27 bool is_srcdoc)
27 : frame_unique_name_(frame_unique_name), 28 : frame_unique_name_(frame_unique_name),
28 item_sequence_number_(item_sequence_number), 29 item_sequence_number_(item_sequence_number),
29 document_sequence_number_(document_sequence_number), 30 document_sequence_number_(document_sequence_number),
30 site_instance_(std::move(site_instance)), 31 site_instance_(std::move(site_instance)),
31 source_site_instance_(std::move(source_site_instance)), 32 source_site_instance_(std::move(source_site_instance)),
32 url_(url), 33 url_(url),
33 referrer_(referrer), 34 referrer_(referrer),
34 method_(method), 35 method_(method),
35 post_id_(post_id) {} 36 post_id_(post_id),
37 is_srcdoc_(is_srcdoc) {}
36 38
37 FrameNavigationEntry::~FrameNavigationEntry() { 39 FrameNavigationEntry::~FrameNavigationEntry() {
38 } 40 }
39 41
40 FrameNavigationEntry* FrameNavigationEntry::Clone() const { 42 FrameNavigationEntry* FrameNavigationEntry::Clone() const {
41 FrameNavigationEntry* copy = new FrameNavigationEntry(); 43 FrameNavigationEntry* copy = new FrameNavigationEntry();
42 44
43 // Omit any fields cleared at commit time. 45 // Omit any fields cleared at commit time.
44 copy->UpdateEntry(frame_unique_name_, item_sequence_number_, 46 copy->UpdateEntry(frame_unique_name_, item_sequence_number_,
45 document_sequence_number_, site_instance_.get(), nullptr, 47 document_sequence_number_, site_instance_.get(), nullptr,
46 url_, referrer_, redirect_chain_, page_state_, method_, 48 url_, referrer_, redirect_chain_, page_state_, method_,
47 post_id_); 49 post_id_, is_srcdoc_);
48 return copy; 50 return copy;
49 } 51 }
50 52
51 void FrameNavigationEntry::UpdateEntry( 53 void FrameNavigationEntry::UpdateEntry(
52 const std::string& frame_unique_name, 54 const std::string& frame_unique_name,
53 int64_t item_sequence_number, 55 int64_t item_sequence_number,
54 int64_t document_sequence_number, 56 int64_t document_sequence_number,
55 SiteInstanceImpl* site_instance, 57 SiteInstanceImpl* site_instance,
56 scoped_refptr<SiteInstanceImpl> source_site_instance, 58 scoped_refptr<SiteInstanceImpl> source_site_instance,
57 const GURL& url, 59 const GURL& url,
58 const Referrer& referrer, 60 const Referrer& referrer,
59 const std::vector<GURL>& redirect_chain, 61 const std::vector<GURL>& redirect_chain,
60 const PageState& page_state, 62 const PageState& page_state,
61 const std::string& method, 63 const std::string& method,
62 int64_t post_id) { 64 int64_t post_id,
65 bool is_srcdoc) {
63 frame_unique_name_ = frame_unique_name; 66 frame_unique_name_ = frame_unique_name;
64 item_sequence_number_ = item_sequence_number; 67 item_sequence_number_ = item_sequence_number;
65 document_sequence_number_ = document_sequence_number; 68 document_sequence_number_ = document_sequence_number;
66 site_instance_ = site_instance; 69 site_instance_ = site_instance;
67 source_site_instance_ = std::move(source_site_instance); 70 source_site_instance_ = std::move(source_site_instance);
68 redirect_chain_ = redirect_chain; 71 redirect_chain_ = redirect_chain;
69 url_ = url; 72 url_ = url;
70 referrer_ = referrer; 73 referrer_ = referrer;
71 page_state_ = page_state; 74 page_state_ = page_state;
72 method_ = method; 75 method_ = method;
73 post_id_ = post_id; 76 post_id_ = post_id;
77 is_srcdoc_ = is_srcdoc;
74 } 78 }
75 79
76 void FrameNavigationEntry::set_item_sequence_number( 80 void FrameNavigationEntry::set_item_sequence_number(
77 int64_t item_sequence_number) { 81 int64_t item_sequence_number) {
78 // TODO(creis): Assert that this does not change after being assigned, once 82 // TODO(creis): Assert that this does not change after being assigned, once
79 // location.replace is classified as NEW_PAGE rather than EXISTING_PAGE. 83 // location.replace is classified as NEW_PAGE rather than EXISTING_PAGE.
80 // Same for document sequence number. See https://crbug.com/596707. 84 // Same for document sequence number. See https://crbug.com/596707.
81 item_sequence_number_ = item_sequence_number; 85 item_sequence_number_ = item_sequence_number;
82 } 86 }
83 87
(...skipping 21 matching lines...) Expand all
105 109
106 // Generate the body from the PageState. 110 // Generate the body from the PageState.
107 ExplodedPageState exploded_state; 111 ExplodedPageState exploded_state;
108 if (!DecodePageState(page_state_.ToEncodedData(), &exploded_state)) 112 if (!DecodePageState(page_state_.ToEncodedData(), &exploded_state))
109 return nullptr; 113 return nullptr;
110 114
111 return exploded_state.top.http_body.request_body; 115 return exploded_state.top.http_body.request_body;
112 } 116 }
113 117
114 } // namespace content 118 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/frame_navigation_entry.h ('k') | content/browser/frame_host/navigation_controller_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698