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

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

Issue 667943003: Standardize usage of virtual/override/final in content/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/files/file_path.h" 6 #include "base/files/file_path.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/test/histogram_tester.h" 8 #include "base/test/histogram_tester.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "content/browser/frame_host/cross_site_transferring_request.h" 10 #include "content/browser/frame_host/cross_site_transferring_request.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 namespace content { 45 namespace content {
46 namespace { 46 namespace {
47 47
48 class RenderFrameHostManagerTestWebUIControllerFactory 48 class RenderFrameHostManagerTestWebUIControllerFactory
49 : public WebUIControllerFactory { 49 : public WebUIControllerFactory {
50 public: 50 public:
51 RenderFrameHostManagerTestWebUIControllerFactory() 51 RenderFrameHostManagerTestWebUIControllerFactory()
52 : should_create_webui_(false) { 52 : should_create_webui_(false) {
53 } 53 }
54 virtual ~RenderFrameHostManagerTestWebUIControllerFactory() {} 54 ~RenderFrameHostManagerTestWebUIControllerFactory() override {}
55 55
56 void set_should_create_webui(bool should_create_webui) { 56 void set_should_create_webui(bool should_create_webui) {
57 should_create_webui_ = should_create_webui; 57 should_create_webui_ = should_create_webui;
58 } 58 }
59 59
60 // WebUIFactory implementation. 60 // WebUIFactory implementation.
61 virtual WebUIController* CreateWebUIControllerForURL( 61 WebUIController* CreateWebUIControllerForURL(WebUI* web_ui,
62 WebUI* web_ui, const GURL& url) const override { 62 const GURL& url) const override {
63 if (!(should_create_webui_ && HasWebUIScheme(url))) 63 if (!(should_create_webui_ && HasWebUIScheme(url)))
64 return NULL; 64 return NULL;
65 return new WebUIController(web_ui); 65 return new WebUIController(web_ui);
66 } 66 }
67 67
68 virtual WebUI::TypeID GetWebUIType(BrowserContext* browser_context, 68 WebUI::TypeID GetWebUIType(BrowserContext* browser_context,
69 const GURL& url) const override { 69 const GURL& url) const override {
70 return WebUI::kNoWebUI; 70 return WebUI::kNoWebUI;
71 } 71 }
72 72
73 virtual bool UseWebUIForURL(BrowserContext* browser_context, 73 bool UseWebUIForURL(BrowserContext* browser_context,
74 const GURL& url) const override {
75 return HasWebUIScheme(url);
76 }
77
78 bool UseWebUIBindingsForURL(BrowserContext* browser_context,
74 const GURL& url) const override { 79 const GURL& url) const override {
75 return HasWebUIScheme(url); 80 return HasWebUIScheme(url);
76 } 81 }
77 82
78 virtual bool UseWebUIBindingsForURL(BrowserContext* browser_context,
79 const GURL& url) const override {
80 return HasWebUIScheme(url);
81 }
82
83 private: 83 private:
84 bool should_create_webui_; 84 bool should_create_webui_;
85 85
86 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManagerTestWebUIControllerFactory); 86 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostManagerTestWebUIControllerFactory);
87 }; 87 };
88 88
89 class BeforeUnloadFiredWebContentsDelegate : public WebContentsDelegate { 89 class BeforeUnloadFiredWebContentsDelegate : public WebContentsDelegate {
90 public: 90 public:
91 BeforeUnloadFiredWebContentsDelegate() {} 91 BeforeUnloadFiredWebContentsDelegate() {}
92 virtual ~BeforeUnloadFiredWebContentsDelegate() {} 92 ~BeforeUnloadFiredWebContentsDelegate() override {}
93 93
94 virtual void BeforeUnloadFired(WebContents* web_contents, 94 void BeforeUnloadFired(WebContents* web_contents,
95 bool proceed, 95 bool proceed,
96 bool* proceed_to_fire_unload) override { 96 bool* proceed_to_fire_unload) override {
97 *proceed_to_fire_unload = proceed; 97 *proceed_to_fire_unload = proceed;
98 } 98 }
99 99
100 private: 100 private:
101 DISALLOW_COPY_AND_ASSIGN(BeforeUnloadFiredWebContentsDelegate); 101 DISALLOW_COPY_AND_ASSIGN(BeforeUnloadFiredWebContentsDelegate);
102 }; 102 };
103 103
104 class CloseWebContentsDelegate : public WebContentsDelegate { 104 class CloseWebContentsDelegate : public WebContentsDelegate {
105 public: 105 public:
106 CloseWebContentsDelegate() : close_called_(false) {} 106 CloseWebContentsDelegate() : close_called_(false) {}
107 virtual ~CloseWebContentsDelegate() {} 107 ~CloseWebContentsDelegate() override {}
108 108
109 virtual void CloseContents(WebContents* web_contents) override { 109 void CloseContents(WebContents* web_contents) override {
110 close_called_ = true; 110 close_called_ = true;
111 } 111 }
112 112
113 bool is_closed() { return close_called_; } 113 bool is_closed() { return close_called_; }
114 114
115 private: 115 private:
116 DISALLOW_COPY_AND_ASSIGN(CloseWebContentsDelegate); 116 DISALLOW_COPY_AND_ASSIGN(CloseWebContentsDelegate);
117 117
118 bool close_called_; 118 bool close_called_;
119 }; 119 };
120 120
121 // This observer keeps track of the last deleted RenderViewHost to avoid 121 // This observer keeps track of the last deleted RenderViewHost to avoid
122 // accessing it and causing use-after-free condition. 122 // accessing it and causing use-after-free condition.
123 class RenderViewHostDeletedObserver : public WebContentsObserver { 123 class RenderViewHostDeletedObserver : public WebContentsObserver {
124 public: 124 public:
125 RenderViewHostDeletedObserver(RenderViewHost* rvh) 125 RenderViewHostDeletedObserver(RenderViewHost* rvh)
126 : WebContentsObserver(WebContents::FromRenderViewHost(rvh)), 126 : WebContentsObserver(WebContents::FromRenderViewHost(rvh)),
127 process_id_(rvh->GetProcess()->GetID()), 127 process_id_(rvh->GetProcess()->GetID()),
128 routing_id_(rvh->GetRoutingID()), 128 routing_id_(rvh->GetRoutingID()),
129 deleted_(false) { 129 deleted_(false) {
130 } 130 }
131 131
132 virtual void RenderViewDeleted(RenderViewHost* render_view_host) override { 132 void RenderViewDeleted(RenderViewHost* render_view_host) override {
133 if (render_view_host->GetProcess()->GetID() == process_id_ && 133 if (render_view_host->GetProcess()->GetID() == process_id_ &&
134 render_view_host->GetRoutingID() == routing_id_) { 134 render_view_host->GetRoutingID() == routing_id_) {
135 deleted_ = true; 135 deleted_ = true;
136 } 136 }
137 } 137 }
138 138
139 bool deleted() { 139 bool deleted() {
140 return deleted_; 140 return deleted_;
141 } 141 }
142 142
143 private: 143 private:
144 int process_id_; 144 int process_id_;
145 int routing_id_; 145 int routing_id_;
146 bool deleted_; 146 bool deleted_;
147 147
148 DISALLOW_COPY_AND_ASSIGN(RenderViewHostDeletedObserver); 148 DISALLOW_COPY_AND_ASSIGN(RenderViewHostDeletedObserver);
149 }; 149 };
150 150
151 // This observer keeps track of the last created RenderFrameHost to allow tests 151 // This observer keeps track of the last created RenderFrameHost to allow tests
152 // to ensure that no RenderFrameHost objects are created when not expected. 152 // to ensure that no RenderFrameHost objects are created when not expected.
153 class RenderFrameHostCreatedObserver : public WebContentsObserver { 153 class RenderFrameHostCreatedObserver : public WebContentsObserver {
154 public: 154 public:
155 RenderFrameHostCreatedObserver(WebContents* web_contents) 155 RenderFrameHostCreatedObserver(WebContents* web_contents)
156 : WebContentsObserver(web_contents), 156 : WebContentsObserver(web_contents),
157 created_(false) { 157 created_(false) {
158 } 158 }
159 159
160 virtual void RenderFrameCreated(RenderFrameHost* render_frame_host) override { 160 void RenderFrameCreated(RenderFrameHost* render_frame_host) override {
161 created_ = true; 161 created_ = true;
162 } 162 }
163 163
164 bool created() { 164 bool created() {
165 return created_; 165 return created_;
166 } 166 }
167 167
168 private: 168 private:
169 bool created_; 169 bool created_;
170 170
171 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostCreatedObserver); 171 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostCreatedObserver);
172 }; 172 };
173 173
174 // This observer keeps track of the last deleted RenderFrameHost to avoid 174 // This observer keeps track of the last deleted RenderFrameHost to avoid
175 // accessing it and causing use-after-free condition. 175 // accessing it and causing use-after-free condition.
176 class RenderFrameHostDeletedObserver : public WebContentsObserver { 176 class RenderFrameHostDeletedObserver : public WebContentsObserver {
177 public: 177 public:
178 RenderFrameHostDeletedObserver(RenderFrameHost* rfh) 178 RenderFrameHostDeletedObserver(RenderFrameHost* rfh)
179 : WebContentsObserver(WebContents::FromRenderFrameHost(rfh)), 179 : WebContentsObserver(WebContents::FromRenderFrameHost(rfh)),
180 process_id_(rfh->GetProcess()->GetID()), 180 process_id_(rfh->GetProcess()->GetID()),
181 routing_id_(rfh->GetRoutingID()), 181 routing_id_(rfh->GetRoutingID()),
182 deleted_(false) { 182 deleted_(false) {
183 } 183 }
184 184
185 virtual void RenderFrameDeleted(RenderFrameHost* render_frame_host) override { 185 void RenderFrameDeleted(RenderFrameHost* render_frame_host) override {
186 if (render_frame_host->GetProcess()->GetID() == process_id_ && 186 if (render_frame_host->GetProcess()->GetID() == process_id_ &&
187 render_frame_host->GetRoutingID() == routing_id_) { 187 render_frame_host->GetRoutingID() == routing_id_) {
188 deleted_ = true; 188 deleted_ = true;
189 } 189 }
190 } 190 }
191 191
192 bool deleted() { 192 bool deleted() {
193 return deleted_; 193 return deleted_;
194 } 194 }
195 195
(...skipping 10 matching lines...) Expand all
206 // update events, which the FilterMessagesWhileSwappedOut test simulates being 206 // update events, which the FilterMessagesWhileSwappedOut test simulates being
207 // sent. The test is successful if the event is not observed. 207 // sent. The test is successful if the event is not observed.
208 // See http://crbug.com/351815 208 // See http://crbug.com/351815
209 class PluginFaviconMessageObserver : public WebContentsObserver { 209 class PluginFaviconMessageObserver : public WebContentsObserver {
210 public: 210 public:
211 PluginFaviconMessageObserver(WebContents* web_contents) 211 PluginFaviconMessageObserver(WebContents* web_contents)
212 : WebContentsObserver(web_contents), 212 : WebContentsObserver(web_contents),
213 plugin_crashed_(false), 213 plugin_crashed_(false),
214 favicon_received_(false) { } 214 favicon_received_(false) { }
215 215
216 virtual void PluginCrashed(const base::FilePath& plugin_path, 216 void PluginCrashed(const base::FilePath& plugin_path,
217 base::ProcessId plugin_pid) override { 217 base::ProcessId plugin_pid) override {
218 plugin_crashed_ = true; 218 plugin_crashed_ = true;
219 } 219 }
220 220
221 virtual void DidUpdateFaviconURL( 221 void DidUpdateFaviconURL(const std::vector<FaviconURL>& candidates) override {
222 const std::vector<FaviconURL>& candidates) override {
223 favicon_received_ = true; 222 favicon_received_ = true;
224 } 223 }
225 224
226 bool plugin_crashed() { 225 bool plugin_crashed() {
227 return plugin_crashed_; 226 return plugin_crashed_;
228 } 227 }
229 228
230 bool favicon_received() { 229 bool favicon_received() {
231 return favicon_received_; 230 return favicon_received_;
232 } 231 }
233 232
234 private: 233 private:
235 bool plugin_crashed_; 234 bool plugin_crashed_;
236 bool favicon_received_; 235 bool favicon_received_;
237 236
238 DISALLOW_COPY_AND_ASSIGN(PluginFaviconMessageObserver); 237 DISALLOW_COPY_AND_ASSIGN(PluginFaviconMessageObserver);
239 }; 238 };
240 239
241 // Ensures that RenderFrameDeleted and RenderFrameCreated are called in a 240 // Ensures that RenderFrameDeleted and RenderFrameCreated are called in a
242 // consistent manner. 241 // consistent manner.
243 class FrameLifetimeConsistencyChecker : public WebContentsObserver { 242 class FrameLifetimeConsistencyChecker : public WebContentsObserver {
244 public: 243 public:
245 explicit FrameLifetimeConsistencyChecker(WebContentsImpl* web_contents) 244 explicit FrameLifetimeConsistencyChecker(WebContentsImpl* web_contents)
246 : WebContentsObserver(web_contents) { 245 : WebContentsObserver(web_contents) {
247 RenderViewCreated(web_contents->GetRenderViewHost()); 246 RenderViewCreated(web_contents->GetRenderViewHost());
248 RenderFrameCreated(web_contents->GetMainFrame()); 247 RenderFrameCreated(web_contents->GetMainFrame());
249 } 248 }
250 249
251 virtual void RenderFrameCreated(RenderFrameHost* render_frame_host) override { 250 void RenderFrameCreated(RenderFrameHost* render_frame_host) override {
252 std::pair<int, int> routing_pair = 251 std::pair<int, int> routing_pair =
253 std::make_pair(render_frame_host->GetProcess()->GetID(), 252 std::make_pair(render_frame_host->GetProcess()->GetID(),
254 render_frame_host->GetRoutingID()); 253 render_frame_host->GetRoutingID());
255 bool was_live_already = !live_routes_.insert(routing_pair).second; 254 bool was_live_already = !live_routes_.insert(routing_pair).second;
256 bool was_used_before = deleted_routes_.count(routing_pair) != 0; 255 bool was_used_before = deleted_routes_.count(routing_pair) != 0;
257 256
258 if (was_live_already) { 257 if (was_live_already) {
259 FAIL() << "RenderFrameCreated called more than once for routing pair: " 258 FAIL() << "RenderFrameCreated called more than once for routing pair: "
260 << Format(render_frame_host); 259 << Format(render_frame_host);
261 } else if (was_used_before) { 260 } else if (was_used_before) {
262 FAIL() << "RenderFrameCreated called for routing pair " 261 FAIL() << "RenderFrameCreated called for routing pair "
263 << Format(render_frame_host) << " that was previously deleted."; 262 << Format(render_frame_host) << " that was previously deleted.";
264 } 263 }
265 } 264 }
266 265
267 virtual void RenderFrameDeleted(RenderFrameHost* render_frame_host) override { 266 void RenderFrameDeleted(RenderFrameHost* render_frame_host) override {
268 std::pair<int, int> routing_pair = 267 std::pair<int, int> routing_pair =
269 std::make_pair(render_frame_host->GetProcess()->GetID(), 268 std::make_pair(render_frame_host->GetProcess()->GetID(),
270 render_frame_host->GetRoutingID()); 269 render_frame_host->GetRoutingID());
271 bool was_live = live_routes_.erase(routing_pair); 270 bool was_live = live_routes_.erase(routing_pair);
272 bool was_dead_already = !deleted_routes_.insert(routing_pair).second; 271 bool was_dead_already = !deleted_routes_.insert(routing_pair).second;
273 272
274 if (was_dead_already) { 273 if (was_dead_already) {
275 FAIL() << "RenderFrameDeleted called more than once for routing pair " 274 FAIL() << "RenderFrameDeleted called more than once for routing pair "
276 << Format(render_frame_host); 275 << Format(render_frame_host);
277 } else if (!was_live) { 276 } else if (!was_live) {
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 // next test cases to detect the bug mentioned at 742 // next test cases to detect the bug mentioned at
744 // http://crbug.com/259859. 743 // http://crbug.com/259859.
745 class RenderViewHostDestroyer : public WebContentsObserver { 744 class RenderViewHostDestroyer : public WebContentsObserver {
746 public: 745 public:
747 RenderViewHostDestroyer(RenderViewHost* render_view_host, 746 RenderViewHostDestroyer(RenderViewHost* render_view_host,
748 WebContents* web_contents) 747 WebContents* web_contents)
749 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)), 748 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)),
750 render_view_host_(render_view_host), 749 render_view_host_(render_view_host),
751 web_contents_(web_contents) {} 750 web_contents_(web_contents) {}
752 751
753 virtual void RenderViewDeleted( 752 void RenderViewDeleted(RenderViewHost* render_view_host) override {
754 RenderViewHost* render_view_host) override {
755 if (render_view_host == render_view_host_) 753 if (render_view_host == render_view_host_)
756 delete web_contents_; 754 delete web_contents_;
757 } 755 }
758 756
759 private: 757 private:
760 RenderViewHost* render_view_host_; 758 RenderViewHost* render_view_host_;
761 WebContents* web_contents_; 759 WebContents* web_contents_;
762 760
763 DISALLOW_COPY_AND_ASSIGN(RenderViewHostDestroyer); 761 DISALLOW_COPY_AND_ASSIGN(RenderViewHostDestroyer);
764 }; 762 };
(...skipping 1033 matching lines...) Expand 10 before | Expand all | Expand 10 after
1798 pending_rfh->GetSiteInstance()->increment_active_frame_count(); 1796 pending_rfh->GetSiteInstance()->increment_active_frame_count();
1799 1797
1800 contents()->GetMainFrame()->OnMessageReceived( 1798 contents()->GetMainFrame()->OnMessageReceived(
1801 FrameHostMsg_BeforeUnload_ACK(0, false, now, now)); 1799 FrameHostMsg_BeforeUnload_ACK(0, false, now, now));
1802 EXPECT_FALSE(contents()->cross_navigation_pending()); 1800 EXPECT_FALSE(contents()->cross_navigation_pending());
1803 EXPECT_FALSE(rfh_deleted_observer.deleted()); 1801 EXPECT_FALSE(rfh_deleted_observer.deleted());
1804 } 1802 }
1805 } 1803 }
1806 1804
1807 } // namespace content 1805 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698