| OLD | NEW |
| 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/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 } | 344 } |
| 345 | 345 |
| 346 #if defined(OS_LINUX) || defined(OS_CHROMEOS) | 346 #if defined(OS_LINUX) || defined(OS_CHROMEOS) |
| 347 // This test is flaky inside the Linux SUID sandbox. | 347 // This test is flaky inside the Linux SUID sandbox. |
| 348 // http://crbug.com/130116 | 348 // http://crbug.com/130116 |
| 349 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_LimitPerPage) { | 349 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_LimitPerPage) { |
| 350 #else | 350 #else |
| 351 IN_PROC_BROWSER_TEST_F(WorkerTest, LimitPerPage) { | 351 IN_PROC_BROWSER_TEST_F(WorkerTest, LimitPerPage) { |
| 352 #endif | 352 #endif |
| 353 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; | 353 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; |
| 354 std::string query = StringPrintf("?count=%d", max_workers_per_tab + 1); | 354 std::string query = base::StringPrintf("?count=%d", max_workers_per_tab + 1); |
| 355 | 355 |
| 356 GURL url = GetTestURL("many_shared_workers.html", query); | 356 GURL url = GetTestURL("many_shared_workers.html", query); |
| 357 NavigateToURL(shell(), url); | 357 NavigateToURL(shell(), url); |
| 358 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); | 358 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); |
| 359 } | 359 } |
| 360 | 360 |
| 361 #if defined(OS_LINUX) || defined(OS_CHROMEOS) | 361 #if defined(OS_LINUX) || defined(OS_CHROMEOS) |
| 362 // This test is flaky inside the Linux SUID sandbox. | 362 // This test is flaky inside the Linux SUID sandbox. |
| 363 // http://crbug.com/130116 | 363 // http://crbug.com/130116 |
| 364 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_LimitTotal) { | 364 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_LimitTotal) { |
| 365 #else | 365 #else |
| 366 // http://crbug.com/36800 | 366 // http://crbug.com/36800 |
| 367 IN_PROC_BROWSER_TEST_F(WorkerTest, LimitTotal) { | 367 IN_PROC_BROWSER_TEST_F(WorkerTest, LimitTotal) { |
| 368 #endif | 368 #endif |
| 369 if (base::SysInfo::AmountOfPhysicalMemoryMB() < 8192) { | 369 if (base::SysInfo::AmountOfPhysicalMemoryMB() < 8192) { |
| 370 LOG(INFO) << "WorkerTest.LimitTotal not running because it needs 8 GB RAM."; | 370 LOG(INFO) << "WorkerTest.LimitTotal not running because it needs 8 GB RAM."; |
| 371 return; | 371 return; |
| 372 } | 372 } |
| 373 | 373 |
| 374 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; | 374 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; |
| 375 int total_workers = WorkerServiceImpl::kMaxWorkersWhenSeparate; | 375 int total_workers = WorkerServiceImpl::kMaxWorkersWhenSeparate; |
| 376 | 376 |
| 377 std::string query = StringPrintf("?count=%d", max_workers_per_tab); | 377 std::string query = base::StringPrintf("?count=%d", max_workers_per_tab); |
| 378 GURL url = GetTestURL("many_shared_workers.html", query); | 378 GURL url = GetTestURL("many_shared_workers.html", query); |
| 379 NavigateToURL(shell(), GURL(url.spec() + StringPrintf("&client_id=0"))); | 379 NavigateToURL(shell(), |
| 380 GURL(url.spec() + base::StringPrintf("&client_id=0"))); |
| 380 | 381 |
| 381 // Adding 1 so that we cause some workers to be queued. | 382 // Adding 1 so that we cause some workers to be queued. |
| 382 int tab_count = (total_workers / max_workers_per_tab) + 1; | 383 int tab_count = (total_workers / max_workers_per_tab) + 1; |
| 383 for (int i = 1; i < tab_count; ++i) { | 384 for (int i = 1; i < tab_count; ++i) { |
| 384 NavigateToURL( | 385 NavigateToURL( |
| 385 CreateBrowser(), GURL(url.spec() + StringPrintf("&client_id=%d", i))); | 386 CreateBrowser(), |
| 387 GURL(url.spec() + base::StringPrintf("&client_id=%d", i))); |
| 386 } | 388 } |
| 387 | 389 |
| 388 // Check that we didn't create more than the max number of workers. | 390 // Check that we didn't create more than the max number of workers. |
| 389 ASSERT_TRUE(WaitForWorkerProcessCount(total_workers)); | 391 ASSERT_TRUE(WaitForWorkerProcessCount(total_workers)); |
| 390 | 392 |
| 391 // Now close a page and check that the queued workers were started. | 393 // Now close a page and check that the queued workers were started. |
| 392 url = GURL(GetTestUrl("google", "google.html")); | 394 url = GURL(GetTestUrl("google", "google.html")); |
| 393 NavigateToURL(shell(), url); | 395 NavigateToURL(shell(), url); |
| 394 | 396 |
| 395 ASSERT_TRUE(WaitForWorkerProcessCount(total_workers)); | 397 ASSERT_TRUE(WaitForWorkerProcessCount(total_workers)); |
| 396 } | 398 } |
| 397 | 399 |
| 398 // Flaky, http://crbug.com/59786. | 400 // Flaky, http://crbug.com/59786. |
| 399 IN_PROC_BROWSER_TEST_F(WorkerTest, WorkerClose) { | 401 IN_PROC_BROWSER_TEST_F(WorkerTest, WorkerClose) { |
| 400 RunTest("worker_close.html", ""); | 402 RunTest("worker_close.html", ""); |
| 401 ASSERT_TRUE(WaitForWorkerProcessCount(0)); | 403 ASSERT_TRUE(WaitForWorkerProcessCount(0)); |
| 402 } | 404 } |
| 403 | 405 |
| 404 // Flaky, http://crbug.com/70861. | 406 // Flaky, http://crbug.com/70861. |
| 405 IN_PROC_BROWSER_TEST_F(WorkerTest, QueuedSharedWorkerShutdown) { | 407 IN_PROC_BROWSER_TEST_F(WorkerTest, QueuedSharedWorkerShutdown) { |
| 406 // Tests to make sure that queued shared workers are started up when shared | 408 // Tests to make sure that queued shared workers are started up when shared |
| 407 // workers shut down. | 409 // workers shut down. |
| 408 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; | 410 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; |
| 409 std::string query = StringPrintf("?count=%d", max_workers_per_tab); | 411 std::string query = base::StringPrintf("?count=%d", max_workers_per_tab); |
| 410 RunTest("queued_shared_worker_shutdown.html", query); | 412 RunTest("queued_shared_worker_shutdown.html", query); |
| 411 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); | 413 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); |
| 412 } | 414 } |
| 413 | 415 |
| 414 // Flaky, http://crbug.com/69881. | 416 // Flaky, http://crbug.com/69881. |
| 415 // Sometimes triggers | 417 // Sometimes triggers |
| 416 // Check failed: message_ports_[message_port_id].queued_messages.empty(). | 418 // Check failed: message_ports_[message_port_id].queued_messages.empty(). |
| 417 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_MultipleTabsQueuedSharedWorker) { | 419 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_MultipleTabsQueuedSharedWorker) { |
| 418 // Tests to make sure that only one instance of queued shared workers are | 420 // Tests to make sure that only one instance of queued shared workers are |
| 419 // started up even when those instances are on multiple tabs. | 421 // started up even when those instances are on multiple tabs. |
| 420 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; | 422 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; |
| 421 std::string query = StringPrintf("?count=%d", max_workers_per_tab + 1); | 423 std::string query = base::StringPrintf("?count=%d", max_workers_per_tab + 1); |
| 422 GURL url = GetTestURL("many_shared_workers.html", query); | 424 GURL url = GetTestURL("many_shared_workers.html", query); |
| 423 NavigateToURL(shell(), url); | 425 NavigateToURL(shell(), url); |
| 424 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); | 426 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); |
| 425 | 427 |
| 426 // Create same set of workers in new tab (leaves one worker queued from this | 428 // Create same set of workers in new tab (leaves one worker queued from this |
| 427 // tab). | 429 // tab). |
| 428 url = GetTestURL("many_shared_workers.html", query); | 430 url = GetTestURL("many_shared_workers.html", query); |
| 429 NavigateToURL(CreateBrowser(), url); | 431 NavigateToURL(CreateBrowser(), url); |
| 430 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); | 432 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); |
| 431 | 433 |
| 432 // Now shutdown one of the shared workers - this will fire both queued | 434 // Now shutdown one of the shared workers - this will fire both queued |
| 433 // workers, but only one instance should be started. | 435 // workers, but only one instance should be started. |
| 434 url = GetTestURL("shutdown_shared_worker.html", "?id=0"); | 436 url = GetTestURL("shutdown_shared_worker.html", "?id=0"); |
| 435 NavigateToURL(CreateBrowser(), url); | 437 NavigateToURL(CreateBrowser(), url); |
| 436 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); | 438 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); |
| 437 } | 439 } |
| 438 | 440 |
| 439 // Flaky: http://crbug.com/48148 | 441 // Flaky: http://crbug.com/48148 |
| 440 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_QueuedSharedWorkerStartedFromOtherTa
b) { | 442 IN_PROC_BROWSER_TEST_F(WorkerTest, DISABLED_QueuedSharedWorkerStartedFromOtherTa
b) { |
| 441 // Tests to make sure that queued shared workers are started up when | 443 // Tests to make sure that queued shared workers are started up when |
| 442 // an instance is launched from another tab. | 444 // an instance is launched from another tab. |
| 443 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; | 445 int max_workers_per_tab = WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate; |
| 444 std::string query = StringPrintf("?count=%d", max_workers_per_tab + 1); | 446 std::string query = base::StringPrintf("?count=%d", max_workers_per_tab + 1); |
| 445 GURL url = GetTestURL("many_shared_workers.html", query); | 447 GURL url = GetTestURL("many_shared_workers.html", query); |
| 446 NavigateToURL(shell(), url); | 448 NavigateToURL(shell(), url); |
| 447 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); | 449 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab)); |
| 448 | 450 |
| 449 // First window has hit its limit. Now launch second window which creates | 451 // First window has hit its limit. Now launch second window which creates |
| 450 // the same worker that was queued in the first window, to ensure it gets | 452 // the same worker that was queued in the first window, to ensure it gets |
| 451 // connected to the first window too. | 453 // connected to the first window too. |
| 452 query = StringPrintf("?id=%d", max_workers_per_tab); | 454 query = base::StringPrintf("?id=%d", max_workers_per_tab); |
| 453 url = GetTestURL("single_shared_worker.html", query); | 455 url = GetTestURL("single_shared_worker.html", query); |
| 454 NavigateToURL(CreateBrowser(), url); | 456 NavigateToURL(CreateBrowser(), url); |
| 455 | 457 |
| 456 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab + 1)); | 458 ASSERT_TRUE(WaitForWorkerProcessCount(max_workers_per_tab + 1)); |
| 457 } | 459 } |
| 458 | 460 |
| 459 IN_PROC_BROWSER_TEST_F(WorkerTest, WebSocketSharedWorker) { | 461 IN_PROC_BROWSER_TEST_F(WorkerTest, WebSocketSharedWorker) { |
| 460 // Launch WebSocket server. | 462 // Launch WebSocket server. |
| 461 net::TestServer ws_server(net::TestServer::TYPE_WS, | 463 net::TestServer ws_server(net::TestServer::TYPE_WS, |
| 462 net::TestServer::kLocalhost, | 464 net::TestServer::kLocalhost, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 473 // Run test. | 475 // Run test. |
| 474 Shell* window = shell(); | 476 Shell* window = shell(); |
| 475 const string16 expected_title = ASCIIToUTF16("OK"); | 477 const string16 expected_title = ASCIIToUTF16("OK"); |
| 476 TitleWatcher title_watcher(window->web_contents(), expected_title); | 478 TitleWatcher title_watcher(window->web_contents(), expected_title); |
| 477 NavigateToURL(window, url); | 479 NavigateToURL(window, url); |
| 478 string16 final_title = title_watcher.WaitAndGetTitle(); | 480 string16 final_title = title_watcher.WaitAndGetTitle(); |
| 479 EXPECT_EQ(expected_title, final_title); | 481 EXPECT_EQ(expected_title, final_title); |
| 480 } | 482 } |
| 481 | 483 |
| 482 } // namespace content | 484 } // namespace content |
| OLD | NEW |