| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/string_util.h" | 5 #include "base/string_util.h" |
| 6 #include "chrome/app/chrome_dll_resource.h" | 6 #include "chrome/app/chrome_dll_resource.h" |
| 7 #include "chrome/browser/worker_host/worker_service.h" | 7 #include "chrome/browser/worker_host/worker_service.h" |
| 8 #include "chrome/common/chrome_switches.h" | 8 #include "chrome/common/chrome_switches.h" |
| 9 #include "chrome/test/automation/browser_proxy.h" | 9 #include "chrome/test/automation/browser_proxy.h" |
| 10 #include "chrome/test/automation/tab_proxy.h" | 10 #include "chrome/test/automation/tab_proxy.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 | 70 |
| 71 PlatformThread::Sleep(sleep_timeout_ms() / 10); | 71 PlatformThread::Sleep(sleep_timeout_ms() / 10); |
| 72 } | 72 } |
| 73 | 73 |
| 74 EXPECT_EQ(number_of_processes, cur_process_count); | 74 EXPECT_EQ(number_of_processes, cur_process_count); |
| 75 return false; | 75 return false; |
| 76 } | 76 } |
| 77 }; | 77 }; |
| 78 | 78 |
| 79 | 79 |
| 80 #if defined(OS_LINUX) | |
| 81 // Fails running under valgrind, http://crbug.com/28445 | |
| 82 #define SingleWorker DISABLED_SingleWorker | |
| 83 #endif | |
| 84 | |
| 85 TEST_F(WorkerTest, SingleWorker) { | 80 TEST_F(WorkerTest, SingleWorker) { |
| 86 RunTest(L"single_worker.html"); | 81 RunTest(L"single_worker.html"); |
| 87 } | 82 } |
| 88 | 83 |
| 89 TEST_F(WorkerTest, MultipleWorkers) { | 84 TEST_F(WorkerTest, MultipleWorkers) { |
| 90 RunTest(L"multi_worker.html"); | 85 RunTest(L"multi_worker.html"); |
| 91 } | 86 } |
| 92 | 87 |
| 88 TEST_F(WorkerTest, SingleSharedWorker) { |
| 89 RunTest(L"single_worker.html?shared=true"); |
| 90 } |
| 91 |
| 92 TEST_F(WorkerTest, MultipleSharedWorkers) { |
| 93 RunTest(L"multi_worker.html?shared=true"); |
| 94 } |
| 95 |
| 93 #if defined(OS_LINUX) | 96 #if defined(OS_LINUX) |
| 94 #define IncognitoSharedWorkers FLAKY_IncognitoSharedWorkers | 97 #define IncognitoSharedWorkers FLAKY_IncognitoSharedWorkers |
| 95 #endif | 98 #endif |
| 96 | 99 |
| 97 // Incognito windows should not share workers with non-incognito windows | 100 // Incognito windows should not share workers with non-incognito windows |
| 98 TEST_F(WorkerTest, IncognitoSharedWorkers) { | 101 TEST_F(WorkerTest, IncognitoSharedWorkers) { |
| 99 // Load a non-incognito tab and have it create a shared worker | 102 // Load a non-incognito tab and have it create a shared worker |
| 100 RunTest(L"incognito_worker.html"); | 103 RunTest(L"incognito_worker.html"); |
| 101 // Incognito worker should not share with non-incognito | 104 // Incognito worker should not share with non-incognito |
| 102 RunIncognitoTest(L"incognito_worker.html"); | 105 RunIncognitoTest(L"incognito_worker.html"); |
| 103 } | 106 } |
| 104 | 107 |
| 105 #if defined(OS_LINUX) || defined (OS_MACOSX) | 108 #if defined(OS_LINUX) || defined (OS_MACOSX) |
| 106 #define WorkerFastLayoutTests DISABLED_WorkerFastLayoutTests | 109 #define WorkerFastLayoutTests FLAKY_WorkerFastLayoutTests |
| 107 #endif | 110 #endif |
| 108 | 111 |
| 109 TEST_F(WorkerTest, WorkerFastLayoutTests) { | 112 TEST_F(WorkerTest, WorkerFastLayoutTests) { |
| 110 static const char* kLayoutTestFiles[] = { | 113 static const char* kLayoutTestFiles[] = { |
| 111 "stress-js-execution.html", | 114 "stress-js-execution.html", |
| 112 "use-machine-stack.html", | 115 "use-machine-stack.html", |
| 113 "worker-call.html", | 116 "worker-call.html", |
| 114 "worker-cloneport.html", | 117 "worker-cloneport.html", |
| 115 "worker-close.html", | 118 "worker-close.html", |
| 116 "worker-constructor.html", | 119 "worker-constructor.html", |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 // helps leaks trackers do a better job of reporting. | 158 // helps leaks trackers do a better job of reporting. |
| 156 scoped_refptr<TabProxy> tab(GetActiveTab()); | 159 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 157 GURL about_url(std::string("file://localhost/")); | 160 GURL about_url(std::string("file://localhost/")); |
| 158 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(about_url)); | 161 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(about_url)); |
| 159 } | 162 } |
| 160 | 163 |
| 161 #if defined(OS_WIN) || defined(OS_MACOSX) | 164 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 162 // http://crbug.com/27636 - incorrect URL_MISMATCH exceptions sometimes get | 165 // http://crbug.com/27636 - incorrect URL_MISMATCH exceptions sometimes get |
| 163 // generated on the windows try bots. | 166 // generated on the windows try bots. |
| 164 // http://crbug.com/28445 - flakiness on mac | 167 // http://crbug.com/28445 - flakiness on mac |
| 165 #define SharedWorkerFastLayoutTests DISABLED_SharedWorkerFastLayoutTests | 168 #define SharedWorkerFastLayoutTests FLAKY_SharedWorkerFastLayoutTests |
| 166 #endif | 169 #endif |
| 167 | 170 |
| 168 #if defined(OS_LINUX) && defined(TOOLKIT_VIEWS) | 171 #if defined(OS_LINUX) && defined(TOOLKIT_VIEWS) |
| 169 // These tests are flaky on linux/views builds. | 172 // These tests are flaky on linux/views builds. |
| 170 // See http://crbug.com/28808. | 173 // See http://crbug.com/28808. |
| 171 #define MessagePorts FLAKY_MessagePorts | 174 #define MessagePorts FLAKY_MessagePorts |
| 172 #define SharedWorkerFastLayoutTests FLAKY_SharedWorkerFastLayoutTests | 175 #define SharedWorkerFastLayoutTests FLAKY_SharedWorkerFastLayoutTests |
| 173 #endif | 176 #endif |
| 174 | 177 |
| 175 TEST_F(WorkerTest, SharedWorkerFastLayoutTests) { | 178 TEST_F(WorkerTest, SharedWorkerFastLayoutTests) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 FilePath worker_test_dir; | 242 FilePath worker_test_dir; |
| 240 worker_test_dir = worker_test_dir.AppendASCII("workers"); | 243 worker_test_dir = worker_test_dir.AppendASCII("workers"); |
| 241 InitializeForLayoutTest(http_test_dir, worker_test_dir, true); | 244 InitializeForLayoutTest(http_test_dir, worker_test_dir, true); |
| 242 | 245 |
| 243 StartHttpServer(new_http_root_dir_); | 246 StartHttpServer(new_http_root_dir_); |
| 244 for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i) | 247 for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i) |
| 245 RunLayoutTest(kLayoutTestFiles[i], true); | 248 RunLayoutTest(kLayoutTestFiles[i], true); |
| 246 StopHttpServer(); | 249 StopHttpServer(); |
| 247 } | 250 } |
| 248 | 251 |
| 249 #if defined(OS_LINUX) | |
| 250 // Fails running under valgrind http://crbug.com/28445 | |
| 251 #define WorkerXhrHttpLayoutTests DISABLED_WorkerXhrHttpLayoutTests | |
| 252 #endif | |
| 253 | |
| 254 TEST_F(WorkerTest, WorkerXhrHttpLayoutTests) { | 252 TEST_F(WorkerTest, WorkerXhrHttpLayoutTests) { |
| 255 static const char* kLayoutTestFiles[] = { | 253 static const char* kLayoutTestFiles[] = { |
| 256 "abort-exception-assert.html", | 254 "abort-exception-assert.html", |
| 257 #if defined(OS_WIN) | 255 #if defined(OS_WIN) |
| 258 // Fails on the mac (and linux?): | 256 // Fails on the mac (and linux?): |
| 259 // http://code.google.com/p/chromium/issues/detail?id=22599 | 257 // http://code.google.com/p/chromium/issues/detail?id=22599 |
| 260 "close.html", | 258 "close.html", |
| 261 #endif | 259 #endif |
| 262 // These tests (and the shared-worker versions below) are disabled due to | 260 // These tests (and the shared-worker versions below) are disabled due to |
| 263 // limitations in lighttpd (doesn't handle all of the HTTP methods). | 261 // limitations in lighttpd (doesn't handle all of the HTTP methods). |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 // MessagePort tests also rely on common files in js/resources. | 317 // MessagePort tests also rely on common files in js/resources. |
| 320 FilePath js_dir = fast_test_dir.AppendASCII("js"); | 318 FilePath js_dir = fast_test_dir.AppendASCII("js"); |
| 321 FilePath resource_dir; | 319 FilePath resource_dir; |
| 322 resource_dir = resource_dir.AppendASCII("resources"); | 320 resource_dir = resource_dir.AppendASCII("resources"); |
| 323 AddResourceForLayoutTest(js_dir, resource_dir); | 321 AddResourceForLayoutTest(js_dir, resource_dir); |
| 324 | 322 |
| 325 for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i) | 323 for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i) |
| 326 RunLayoutTest(kLayoutTestFiles[i], false); | 324 RunLayoutTest(kLayoutTestFiles[i], false); |
| 327 } | 325 } |
| 328 | 326 |
| 329 // Disable LimitPerPage on Linux. Seems to work on Mac though: | |
| 330 // http://code.google.com/p/chromium/issues/detail?id=22608 | |
| 331 #if !defined(OS_LINUX) | |
| 332 // This test fails after WebKit merge 49414:49432. (BUG=24652) | |
| 333 TEST_F(WorkerTest, LimitPerPage) { | 327 TEST_F(WorkerTest, LimitPerPage) { |
| 334 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; | 328 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
| 335 GURL url = GetTestUrl(L"workers", L"many_workers.html"); | 329 GURL url = GetTestUrl(L"workers", L"many_workers.html"); |
| 336 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab + 1)); | 330 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab + 1)); |
| 337 | 331 |
| 338 scoped_refptr<TabProxy> tab(GetActiveTab()); | 332 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 339 ASSERT_TRUE(tab.get()); | 333 ASSERT_TRUE(tab.get()); |
| 340 ASSERT_TRUE(tab->NavigateToURL(url)); | 334 ASSERT_TRUE(tab->NavigateToURL(url)); |
| 341 | 335 |
| 342 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); | 336 ASSERT_TRUE(WaitForProcessCountToBe(1, max_workers_per_tab)); |
| 343 } | 337 } |
| 344 #endif | |
| 345 | 338 |
| 346 #if defined(OS_LINUX) | 339 #if defined(OS_LINUX) || defined(OS_MACOSX) |
| 347 // Fails (crashes) on Linux Tests: http://crbug.com/28445 | |
| 348 #define LimitTotal DISABLED_LimitTotal | |
| 349 #elif defined(OS_MACOSX) | |
| 350 // Doesn't crash, but on Mac it sometimes fails for a few runs in a row, | 340 // Doesn't crash, but on Mac it sometimes fails for a few runs in a row, |
| 351 // http://crbug.com/28445 | 341 // http://crbug.com/28445 |
| 352 #define LimitTotal FLAKY_LimitTotal | 342 #define LimitTotal FLAKY_LimitTotal |
| 353 #endif | 343 #endif |
| 354 | 344 |
| 355 TEST_F(WorkerTest, LimitTotal) { | 345 TEST_F(WorkerTest, LimitTotal) { |
| 356 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; | 346 int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate; |
| 357 int total_workers = WorkerService::kMaxWorkersWhenSeparate; | 347 int total_workers = WorkerService::kMaxWorkersWhenSeparate; |
| 358 | 348 |
| 359 int tab_count = (total_workers / max_workers_per_tab) + 1; | 349 int tab_count = (total_workers / max_workers_per_tab) + 1; |
| 360 GURL url = GetTestUrl(L"workers", L"many_workers.html"); | 350 GURL url = GetTestUrl(L"workers", L"many_workers.html"); |
| 361 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab)); | 351 url = GURL(url.spec() + StringPrintf("?count=%d", max_workers_per_tab)); |
| 362 | 352 |
| 363 scoped_refptr<TabProxy> tab(GetActiveTab()); | 353 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 364 ASSERT_TRUE(tab.get()); | 354 ASSERT_TRUE(tab.get()); |
| 365 ASSERT_TRUE(tab->NavigateToURL(url)); | 355 ASSERT_TRUE(tab->NavigateToURL(url)); |
| 366 scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0)); | 356 scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0)); |
| 367 for (int i = 1; i < tab_count; ++i) | 357 for (int i = 1; i < tab_count; ++i) |
| 368 window->AppendTab(url); | 358 window->AppendTab(url); |
| 369 | 359 |
| 370 // Check that we didn't create more than the max number of workers. | 360 // Check that we didn't create more than the max number of workers. |
| 371 ASSERT_TRUE(WaitForProcessCountToBe(tab_count, total_workers)); | 361 ASSERT_TRUE(WaitForProcessCountToBe(tab_count, total_workers)); |
| 372 | 362 |
| 373 // Now close a page and check that the queued workers were started. | 363 // Now close a page and check that the queued workers were started. |
| 374 tab->NavigateToURL(GetTestUrl(L"google", L"google.html")); | 364 tab->NavigateToURL(GetTestUrl(L"google", L"google.html")); |
| 375 | 365 |
| 376 ASSERT_TRUE(WaitForProcessCountToBe(tab_count, total_workers)); | 366 ASSERT_TRUE(WaitForProcessCountToBe(tab_count, total_workers)); |
| 377 } | 367 } |
| OLD | NEW |