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

Side by Side Diff: content/browser/web_contents/web_contents_impl_unittest.cc

Issue 2566583002: Change allowed bindings to be per RenderFrame instead of per RenderView. (Closed)
Patch Set: rebase Created 3 years, 10 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
« no previous file with comments | « content/browser/security_exploit_browsertest.cc ('k') | content/common/frame.mojom » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stdint.h> 5 #include <stdint.h>
6 #include <utility> 6 #include <utility>
7 7
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/macros.h" 10 #include "base/macros.h"
(...skipping 1132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1143 contents()->TestDidNavigate(webui_rfh, entry_id, true, url1, 1143 contents()->TestDidNavigate(webui_rfh, entry_id, true, url1,
1144 ui::PAGE_TRANSITION_TYPED); 1144 ui::PAGE_TRANSITION_TYPED);
1145 NavigationEntry* entry1 = controller().GetLastCommittedEntry(); 1145 NavigationEntry* entry1 = controller().GetLastCommittedEntry();
1146 SiteInstance* instance1 = contents()->GetSiteInstance(); 1146 SiteInstance* instance1 = contents()->GetSiteInstance();
1147 1147
1148 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); 1148 EXPECT_FALSE(contents()->CrossProcessNavigationPending());
1149 EXPECT_EQ(webui_rfh, main_test_rfh()); 1149 EXPECT_EQ(webui_rfh, main_test_rfh());
1150 EXPECT_EQ(url1, entry1->GetURL()); 1150 EXPECT_EQ(url1, entry1->GetURL());
1151 EXPECT_EQ(instance1, 1151 EXPECT_EQ(instance1,
1152 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance()); 1152 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance());
1153 EXPECT_TRUE(webui_rfh->GetRenderViewHost()->GetEnabledBindings() & 1153 EXPECT_TRUE(webui_rfh->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
1154 BINDINGS_POLICY_WEB_UI);
1155 1154
1156 // Navigate to new site. 1155 // Navigate to new site.
1157 const GURL url2("http://www.google.com"); 1156 const GURL url2("http://www.google.com");
1158 controller().LoadURL( 1157 controller().LoadURL(
1159 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); 1158 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1160 entry_id = controller().GetPendingEntry()->GetUniqueID(); 1159 entry_id = controller().GetPendingEntry()->GetUniqueID();
1161 EXPECT_TRUE(contents()->CrossProcessNavigationPending()); 1160 EXPECT_TRUE(contents()->CrossProcessNavigationPending());
1162 TestRenderFrameHost* google_rfh = contents()->GetPendingMainFrame(); 1161 TestRenderFrameHost* google_rfh = contents()->GetPendingMainFrame();
1163 1162
1164 // Simulate beforeunload approval. 1163 // Simulate beforeunload approval.
1165 EXPECT_TRUE(webui_rfh->is_waiting_for_beforeunload_ack()); 1164 EXPECT_TRUE(webui_rfh->is_waiting_for_beforeunload_ack());
1166 webui_rfh->PrepareForCommit(); 1165 webui_rfh->PrepareForCommit();
1167 1166
1168 // DidNavigate from the pending page. 1167 // DidNavigate from the pending page.
1169 contents()->TestDidNavigate(google_rfh, entry_id, true, url2, 1168 contents()->TestDidNavigate(google_rfh, entry_id, true, url2,
1170 ui::PAGE_TRANSITION_TYPED); 1169 ui::PAGE_TRANSITION_TYPED);
1171 NavigationEntry* entry2 = controller().GetLastCommittedEntry(); 1170 NavigationEntry* entry2 = controller().GetLastCommittedEntry();
1172 SiteInstance* instance2 = contents()->GetSiteInstance(); 1171 SiteInstance* instance2 = contents()->GetSiteInstance();
1173 1172
1174 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); 1173 EXPECT_FALSE(contents()->CrossProcessNavigationPending());
1175 EXPECT_EQ(google_rfh, main_test_rfh()); 1174 EXPECT_EQ(google_rfh, main_test_rfh());
1176 EXPECT_NE(instance1, instance2); 1175 EXPECT_NE(instance1, instance2);
1177 EXPECT_FALSE(contents()->GetPendingMainFrame()); 1176 EXPECT_FALSE(contents()->GetPendingMainFrame());
1178 EXPECT_EQ(url2, entry2->GetURL()); 1177 EXPECT_EQ(url2, entry2->GetURL());
1179 EXPECT_EQ(instance2, 1178 EXPECT_EQ(instance2,
1180 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance()); 1179 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance());
1181 EXPECT_FALSE(google_rfh->GetRenderViewHost()->GetEnabledBindings() & 1180 EXPECT_FALSE(google_rfh->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
1182 BINDINGS_POLICY_WEB_UI);
1183 1181
1184 // Navigate to third page on same site. 1182 // Navigate to third page on same site.
1185 const GURL url3("http://news.google.com"); 1183 const GURL url3("http://news.google.com");
1186 controller().LoadURL( 1184 controller().LoadURL(
1187 url3, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); 1185 url3, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1188 entry_id = controller().GetPendingEntry()->GetUniqueID(); 1186 entry_id = controller().GetPendingEntry()->GetUniqueID();
1189 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); 1187 EXPECT_FALSE(contents()->CrossProcessNavigationPending());
1190 main_test_rfh()->PrepareForCommit(); 1188 main_test_rfh()->PrepareForCommit();
1191 contents()->TestDidNavigate(google_rfh, entry_id, true, url3, 1189 contents()->TestDidNavigate(google_rfh, entry_id, true, url3,
1192 ui::PAGE_TRANSITION_TYPED); 1190 ui::PAGE_TRANSITION_TYPED);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 contents()->TestDidNavigate(webui_rfh, entry_id, true, url1, 1252 contents()->TestDidNavigate(webui_rfh, entry_id, true, url1,
1255 ui::PAGE_TRANSITION_TYPED); 1253 ui::PAGE_TRANSITION_TYPED);
1256 NavigationEntry* entry1 = controller().GetLastCommittedEntry(); 1254 NavigationEntry* entry1 = controller().GetLastCommittedEntry();
1257 SiteInstance* instance1 = contents()->GetSiteInstance(); 1255 SiteInstance* instance1 = contents()->GetSiteInstance();
1258 1256
1259 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); 1257 EXPECT_FALSE(contents()->CrossProcessNavigationPending());
1260 EXPECT_EQ(webui_rfh, main_test_rfh()); 1258 EXPECT_EQ(webui_rfh, main_test_rfh());
1261 EXPECT_EQ(url1, entry1->GetURL()); 1259 EXPECT_EQ(url1, entry1->GetURL());
1262 EXPECT_EQ(instance1, 1260 EXPECT_EQ(instance1,
1263 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance()); 1261 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance());
1264 EXPECT_TRUE(webui_rfh->GetRenderViewHost()->GetEnabledBindings() & 1262 EXPECT_TRUE(webui_rfh->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
1265 BINDINGS_POLICY_WEB_UI);
1266 1263
1267 // Navigate to new site. 1264 // Navigate to new site.
1268 const GURL url2("http://www.google.com"); 1265 const GURL url2("http://www.google.com");
1269 controller().LoadURL(url2, Referrer(), ui::PAGE_TRANSITION_TYPED, 1266 controller().LoadURL(url2, Referrer(), ui::PAGE_TRANSITION_TYPED,
1270 std::string()); 1267 std::string());
1271 entry_id = controller().GetPendingEntry()->GetUniqueID(); 1268 entry_id = controller().GetPendingEntry()->GetUniqueID();
1272 EXPECT_TRUE(contents()->CrossProcessNavigationPending()); 1269 EXPECT_TRUE(contents()->CrossProcessNavigationPending());
1273 TestRenderFrameHost* google_rfh = contents()->GetPendingMainFrame(); 1270 TestRenderFrameHost* google_rfh = contents()->GetPendingMainFrame();
1274 1271
1275 // Simulate beforeunload approval. 1272 // Simulate beforeunload approval.
1276 EXPECT_TRUE(webui_rfh->is_waiting_for_beforeunload_ack()); 1273 EXPECT_TRUE(webui_rfh->is_waiting_for_beforeunload_ack());
1277 webui_rfh->PrepareForCommit(); 1274 webui_rfh->PrepareForCommit();
1278 1275
1279 // DidNavigate from the pending page. 1276 // DidNavigate from the pending page.
1280 contents()->TestDidNavigate(google_rfh, entry_id, true, url2, 1277 contents()->TestDidNavigate(google_rfh, entry_id, true, url2,
1281 ui::PAGE_TRANSITION_TYPED); 1278 ui::PAGE_TRANSITION_TYPED);
1282 NavigationEntry* entry2 = controller().GetLastCommittedEntry(); 1279 NavigationEntry* entry2 = controller().GetLastCommittedEntry();
1283 SiteInstance* instance2 = contents()->GetSiteInstance(); 1280 SiteInstance* instance2 = contents()->GetSiteInstance();
1284 1281
1285 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); 1282 EXPECT_FALSE(contents()->CrossProcessNavigationPending());
1286 EXPECT_EQ(google_rfh, main_test_rfh()); 1283 EXPECT_EQ(google_rfh, main_test_rfh());
1287 EXPECT_NE(instance1, instance2); 1284 EXPECT_NE(instance1, instance2);
1288 EXPECT_FALSE(contents()->GetPendingMainFrame()); 1285 EXPECT_FALSE(contents()->GetPendingMainFrame());
1289 EXPECT_EQ(url2, entry2->GetURL()); 1286 EXPECT_EQ(url2, entry2->GetURL());
1290 EXPECT_EQ(instance2, 1287 EXPECT_EQ(instance2,
1291 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance()); 1288 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance());
1292 EXPECT_FALSE(google_rfh->GetRenderViewHost()->GetEnabledBindings() & 1289 EXPECT_FALSE(google_rfh->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
1293 BINDINGS_POLICY_WEB_UI);
1294 1290
1295 // Navigate to third page on same site. 1291 // Navigate to third page on same site.
1296 const GURL url3("http://news.google.com"); 1292 const GURL url3("http://news.google.com");
1297 controller().LoadURL(url3, Referrer(), ui::PAGE_TRANSITION_TYPED, 1293 controller().LoadURL(url3, Referrer(), ui::PAGE_TRANSITION_TYPED,
1298 std::string()); 1294 std::string());
1299 entry_id = controller().GetPendingEntry()->GetUniqueID(); 1295 entry_id = controller().GetPendingEntry()->GetUniqueID();
1300 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); 1296 EXPECT_FALSE(contents()->CrossProcessNavigationPending());
1301 main_test_rfh()->PrepareForCommit(); 1297 main_test_rfh()->PrepareForCommit();
1302 contents()->TestDidNavigate(google_rfh, entry_id, true, url3, 1298 contents()->TestDidNavigate(google_rfh, entry_id, true, url3,
1303 ui::PAGE_TRANSITION_TYPED); 1299 ui::PAGE_TRANSITION_TYPED);
(...skipping 2135 matching lines...) Expand 10 before | Expand all | Expand 10 after
3439 // An automatic navigation. 3435 // An automatic navigation.
3440 main_test_rfh()->SendNavigateWithModificationCallback( 3436 main_test_rfh()->SendNavigateWithModificationCallback(
3441 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture)); 3437 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture));
3442 3438
3443 EXPECT_EQ(1u, dialog_manager.reset_count()); 3439 EXPECT_EQ(1u, dialog_manager.reset_count());
3444 3440
3445 contents()->SetJavaScriptDialogManagerForTesting(nullptr); 3441 contents()->SetJavaScriptDialogManagerForTesting(nullptr);
3446 } 3442 }
3447 3443
3448 } // namespace content 3444 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/security_exploit_browsertest.cc ('k') | content/common/frame.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698