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

Side by Side Diff: content/browser/renderer_host/render_view_host_manager_browsertest.cc

Issue 26277010: Create content::WebContentsDestroyedWatcher, use it in many tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 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 | Annotate | Revision Log
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 "base/json/json_reader.h" 5 #include "base/json/json_reader.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "content/browser/renderer_host/render_view_host_impl.h" 10 #include "content/browser/renderer_host/render_view_host_impl.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 EXPECT_EQ(1u, Shell::windows().size()); 312 EXPECT_EQ(1u, Shell::windows().size());
313 EXPECT_EQ("/files/title2.html", 313 EXPECT_EQ("/files/title2.html",
314 shell()->web_contents()->GetLastCommittedURL().path()); 314 shell()->web_contents()->GetLastCommittedURL().path());
315 315
316 // Should have the same SiteInstance. 316 // Should have the same SiteInstance.
317 scoped_refptr<SiteInstance> noref_site_instance( 317 scoped_refptr<SiteInstance> noref_site_instance(
318 shell()->web_contents()->GetSiteInstance()); 318 shell()->web_contents()->GetSiteInstance());
319 EXPECT_EQ(orig_site_instance, noref_site_instance); 319 EXPECT_EQ(orig_site_instance, noref_site_instance);
320 } 320 }
321 321
322 namespace {
323
324 class WebContentsDestroyedObserver : public WebContentsObserver {
325 public:
326 WebContentsDestroyedObserver(WebContents* web_contents,
327 const base::Closure& callback)
328 : WebContentsObserver(web_contents),
329 callback_(callback) {
330 }
331
332 virtual void WebContentsDestroyed(WebContents* web_contents) OVERRIDE {
333 callback_.Run();
334 }
335
336 private:
337 base::Closure callback_;
338
339 DISALLOW_COPY_AND_ASSIGN(WebContentsDestroyedObserver);
340 };
341
342 } // namespace
343
344 // Test for crbug.com/116192. Targeted links should still work after the 322 // Test for crbug.com/116192. Targeted links should still work after the
345 // named target window has swapped processes. 323 // named target window has swapped processes.
346 IN_PROC_BROWSER_TEST_F(RenderViewHostManagerTest, 324 IN_PROC_BROWSER_TEST_F(RenderViewHostManagerTest,
347 AllowTargetedNavigationsAfterSwap) { 325 AllowTargetedNavigationsAfterSwap) {
348 // Start two servers with different sites. 326 // Start two servers with different sites.
349 ASSERT_TRUE(test_server()->Start()); 327 ASSERT_TRUE(test_server()->Start());
350 net::SpawnedTestServer https_server( 328 net::SpawnedTestServer https_server(
351 net::SpawnedTestServer::TYPE_HTTPS, 329 net::SpawnedTestServer::TYPE_HTTPS,
352 net::SpawnedTestServer::kLocalhost, 330 net::SpawnedTestServer::kLocalhost,
353 base::FilePath(FILE_PATH_LITERAL("content/test/data"))); 331 base::FilePath(FILE_PATH_LITERAL("content/test/data")));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 // Should have swapped back and shown the new window again. 382 // Should have swapped back and shown the new window again.
405 scoped_refptr<SiteInstance> revisit_site_instance( 383 scoped_refptr<SiteInstance> revisit_site_instance(
406 new_shell->web_contents()->GetSiteInstance()); 384 new_shell->web_contents()->GetSiteInstance());
407 EXPECT_EQ(orig_site_instance, revisit_site_instance); 385 EXPECT_EQ(orig_site_instance, revisit_site_instance);
408 386
409 // If it navigates away to another process, the original window should 387 // If it navigates away to another process, the original window should
410 // still be able to close it (using a cross-process close message). 388 // still be able to close it (using a cross-process close message).
411 NavigateToURL(new_shell, https_server.GetURL("files/title1.html")); 389 NavigateToURL(new_shell, https_server.GetURL("files/title1.html"));
412 EXPECT_EQ(new_site_instance, 390 EXPECT_EQ(new_site_instance,
413 new_shell->web_contents()->GetSiteInstance()); 391 new_shell->web_contents()->GetSiteInstance());
414 scoped_refptr<MessageLoopRunner> loop_runner(new MessageLoopRunner); 392 WebContentsDestroyedWatcher close_watcher(new_shell->web_contents());
415 WebContentsDestroyedObserver close_observer(new_shell->web_contents(),
416 loop_runner->QuitClosure());
417 EXPECT_TRUE(ExecuteScriptAndExtractBool( 393 EXPECT_TRUE(ExecuteScriptAndExtractBool(
418 shell()->web_contents(), 394 shell()->web_contents(),
419 "window.domAutomationController.send(testCloseWindow());", 395 "window.domAutomationController.send(testCloseWindow());",
420 &success)); 396 &success));
421 EXPECT_TRUE(success); 397 EXPECT_TRUE(success);
422 loop_runner->Run(); 398 close_watcher.Wait();
423 } 399 }
424 400
425 // Test that setting the opener to null in a window affects cross-process 401 // Test that setting the opener to null in a window affects cross-process
426 // navigations, including those to existing entries. http://crbug.com/156669. 402 // navigations, including those to existing entries. http://crbug.com/156669.
427 // Flaky on windows: http://crbug.com/291249 403 // Flaky on windows: http://crbug.com/291249
428 #if defined(OS_WIN) 404 #if defined(OS_WIN)
429 #define MAYBE_DisownOpener DISABLED_DisownOpener 405 #define MAYBE_DisownOpener DISABLED_DisownOpener
430 #else 406 #else
431 #define MAYBE_DisownOpener DisownOpener 407 #define MAYBE_DisownOpener DisownOpener
432 #endif 408 #endif
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 NavigateToURL(shell(), https_server.GetURL("files/title1.html")); 1267 NavigateToURL(shell(), https_server.GetURL("files/title1.html"));
1292 1268
1293 // Make sure it ends up at the right page. 1269 // Make sure it ends up at the right page.
1294 WaitForLoadStop(shell()->web_contents()); 1270 WaitForLoadStop(shell()->web_contents());
1295 EXPECT_EQ(https_server.GetURL("files/title1.html"), 1271 EXPECT_EQ(https_server.GetURL("files/title1.html"),
1296 shell()->web_contents()->GetLastCommittedURL()); 1272 shell()->web_contents()->GetLastCommittedURL());
1297 EXPECT_EQ(new_site_instance, shell()->web_contents()->GetSiteInstance()); 1273 EXPECT_EQ(new_site_instance, shell()->web_contents()->GetSiteInstance());
1298 } 1274 }
1299 1275
1300 } // namespace content 1276 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698