| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "chrome/test/ui/ui_test.h" | 5 #include "chrome/test/ui/ui_test.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/base_switches.h" | 10 #include "base/base_switches.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/file_path.h" | 12 #include "base/file_path.h" |
| 13 #include "base/file_util.h" | 13 #include "base/file_util.h" |
| 14 #include "base/path_service.h" |
| 14 #include "base/platform_thread.h" | 15 #include "base/platform_thread.h" |
| 15 #include "base/process_util.h" | 16 #include "base/process_util.h" |
| 16 #include "base/scoped_ptr.h" | 17 #include "base/scoped_ptr.h" |
| 17 #include "base/string_util.h" | 18 #include "base/string_util.h" |
| 18 #include "base/test_file_util.h" | 19 #include "base/test_file_util.h" |
| 19 #include "base/time.h" | 20 #include "base/time.h" |
| 20 #include "chrome/app/chrome_dll_resource.h" | 21 #include "chrome/app/chrome_dll_resource.h" |
| 21 #include "chrome/browser/net/url_fixer_upper.h" | 22 #include "chrome/browser/net/url_fixer_upper.h" |
| 22 #include "chrome/common/chrome_constants.h" | 23 #include "chrome/common/chrome_constants.h" |
| 23 #include "chrome/common/chrome_paths.h" | 24 #include "chrome/common/chrome_paths.h" |
| 24 #include "chrome/common/chrome_switches.h" | 25 #include "chrome/common/chrome_switches.h" |
| 25 #include "chrome/common/debug_flags.h" | 26 #include "chrome/common/debug_flags.h" |
| 26 #include "chrome/common/logging_chrome.h" | 27 #include "chrome/common/logging_chrome.h" |
| 27 #include "chrome/common/json_value_serializer.h" | 28 #include "chrome/common/json_value_serializer.h" |
| 28 #include "chrome/test/automation/automation_proxy.h" | 29 #include "chrome/test/automation/automation_proxy.h" |
| 29 #include "chrome/test/automation/browser_proxy.h" | 30 #include "chrome/test/automation/browser_proxy.h" |
| 30 #include "chrome/test/automation/tab_proxy.h" | 31 #include "chrome/test/automation/tab_proxy.h" |
| 32 #include "chrome/test/chrome_process_util.h" |
| 31 #include "googleurl/src/gurl.h" | 33 #include "googleurl/src/gurl.h" |
| 32 #include "net/base/net_util.h" | 34 #include "net/base/net_util.h" |
| 33 | 35 |
| 34 #if defined(OS_WIN) | 36 #if defined(OS_WIN) |
| 35 // TODO(port): these just need to be ported. | 37 // TODO(port): this just needs to be ported. |
| 36 #include "chrome/common/chrome_process_filter.h" | |
| 37 #include "chrome/test/automation/window_proxy.h" | 38 #include "chrome/test/automation/window_proxy.h" |
| 38 #endif | 39 #endif |
| 39 | 40 |
| 40 using base::TimeTicks; | 41 using base::TimeTicks; |
| 41 | 42 |
| 42 // Delay to let browser complete a requested action. | 43 // Delay to let browser complete a requested action. |
| 43 static const int kWaitForActionMsec = 2000; | 44 static const int kWaitForActionMsec = 2000; |
| 44 static const int kWaitForActionMaxMsec = 10000; | 45 static const int kWaitForActionMaxMsec = 10000; |
| 45 // Delay to let the browser complete the test. | 46 // Delay to let the browser complete the test. |
| 46 static const int kMaxTestExecutionTime = 30000; | 47 static const int kMaxTestExecutionTime = 30000; |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 | 439 |
| 439 // Don't forget to close the handle | 440 // Don't forget to close the handle |
| 440 base::CloseProcessHandle(process_); | 441 base::CloseProcessHandle(process_); |
| 441 process_ = NULL; | 442 process_ = NULL; |
| 442 } | 443 } |
| 443 | 444 |
| 444 void UITest::AssertAppNotRunning(const std::wstring& error_message) { | 445 void UITest::AssertAppNotRunning(const std::wstring& error_message) { |
| 445 #if defined(OS_WIN) | 446 #if defined(OS_WIN) |
| 446 ASSERT_EQ(0, GetBrowserProcessCount()) << error_message; | 447 ASSERT_EQ(0, GetBrowserProcessCount()) << error_message; |
| 447 #else | 448 #else |
| 448 // TODO(port): Enable when chrome_process_filter is ported. | 449 // TODO(port): Enable when chrome_process_util is ported. |
| 449 NOTIMPLEMENTED(); | 450 NOTIMPLEMENTED(); |
| 450 #endif | 451 #endif |
| 451 } | 452 } |
| 452 | 453 |
| 453 void UITest::CleanupAppProcesses() { | 454 void UITest::CleanupAppProcesses() { |
| 454 #if defined(OS_WIN) | 455 #if defined(OS_WIN) |
| 455 BrowserProcessFilter filter(L""); | 456 TerminateAllChromeProcesses(FilePath::FromWStringHack(user_data_dir())); |
| 456 | |
| 457 // Make sure that no instances of the browser remain. | |
| 458 const int kExitTimeoutMs = 5000; | |
| 459 const int kExitCode = 1; | |
| 460 base::CleanupProcesses( | |
| 461 chrome::kBrowserProcessExecutableName, kExitTimeoutMs, kExitCode, | |
| 462 &filter); | |
| 463 | 457 |
| 464 // Suppress spammy failures that seem to be occurring when running | 458 // Suppress spammy failures that seem to be occurring when running |
| 465 // the UI tests in single-process mode. | 459 // the UI tests in single-process mode. |
| 466 // TODO(jhughes): figure out why this is necessary at all, and fix it | 460 // TODO(jhughes): figure out why this is necessary at all, and fix it |
| 467 if (!in_process_renderer_) { | 461 if (!in_process_renderer_) |
| 468 AssertAppNotRunning(L"Unable to quit all browser processes."); | 462 AssertAppNotRunning(L"Unable to quit all browser processes."); |
| 469 } | |
| 470 #else | 463 #else |
| 471 // TODO(port): depends on BrowserProcessFilter. | 464 // TODO(port): depends on chrome_process_util. |
| 472 NOTIMPLEMENTED(); | 465 NOTIMPLEMENTED(); |
| 473 #endif | 466 #endif |
| 474 } | 467 } |
| 475 | 468 |
| 476 TabProxy* UITest::GetActiveTab() { | 469 TabProxy* UITest::GetActiveTab() { |
| 477 scoped_ptr<BrowserProxy> window_proxy(automation()->GetBrowserWindow(0)); | 470 scoped_ptr<BrowserProxy> window_proxy(automation()->GetBrowserWindow(0)); |
| 478 if (!window_proxy.get()) | 471 if (!window_proxy.get()) |
| 479 return NULL; | 472 return NULL; |
| 480 | 473 |
| 481 int active_tab_index = -1; | 474 int active_tab_index = -1; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 | 576 |
| 584 bool UITest::IsBrowserRunning() { | 577 bool UITest::IsBrowserRunning() { |
| 585 return CrashAwareSleep(0); | 578 return CrashAwareSleep(0); |
| 586 } | 579 } |
| 587 | 580 |
| 588 bool UITest::CrashAwareSleep(int time_out_ms) { | 581 bool UITest::CrashAwareSleep(int time_out_ms) { |
| 589 return base::CrashAwareSleep(process_, time_out_ms); | 582 return base::CrashAwareSleep(process_, time_out_ms); |
| 590 } | 583 } |
| 591 | 584 |
| 592 #if defined(OS_WIN) | 585 #if defined(OS_WIN) |
| 593 // TODO(port): Port BrowserProcessFilter and sort out one wstring/string issue. | 586 // TODO(port): Port GetRunningChromeProcesses and sort out one w/string issue. |
| 594 | 587 |
| 595 /*static*/ | 588 /*static*/ |
| 596 int UITest::GetBrowserProcessCount() { | 589 int UITest::GetBrowserProcessCount() { |
| 597 BrowserProcessFilter filter(L""); | 590 FilePath data_dir; |
| 598 return base::GetProcessCount(chrome::kBrowserProcessExecutableName, | 591 PathService::Get(chrome::DIR_USER_DATA, &data_dir); |
| 599 &filter); | 592 return GetRunningChromeProcesses(data_dir).size(); |
| 600 } | 593 } |
| 601 | 594 |
| 602 static DictionaryValue* LoadDictionaryValueFromPath(const FilePath& path) { | 595 static DictionaryValue* LoadDictionaryValueFromPath(const FilePath& path) { |
| 603 if (path.empty()) | 596 if (path.empty()) |
| 604 return NULL; | 597 return NULL; |
| 605 | 598 |
| 606 JSONFileValueSerializer serializer(path); | 599 JSONFileValueSerializer serializer(path); |
| 607 scoped_ptr<Value> root_value(serializer.Deserialize(NULL)); | 600 scoped_ptr<Value> root_value(serializer.Deserialize(NULL)); |
| 608 if (!root_value.get() || root_value->GetType() != Value::TYPE_DICTIONARY) | 601 if (!root_value.get() || root_value->GetType() != Value::TYPE_DICTIONARY) |
| 609 return NULL; | 602 return NULL; |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 } | 855 } |
| 863 | 856 |
| 864 bool UITest::EvictFileFromSystemCacheWrapper(const FilePath& path) { | 857 bool UITest::EvictFileFromSystemCacheWrapper(const FilePath& path) { |
| 865 for (int i = 0; i < 10; i++) { | 858 for (int i = 0; i < 10; i++) { |
| 866 if (file_util::EvictFileFromSystemCache(path)) | 859 if (file_util::EvictFileFromSystemCache(path)) |
| 867 return true; | 860 return true; |
| 868 PlatformThread::Sleep(1000); | 861 PlatformThread::Sleep(1000); |
| 869 } | 862 } |
| 870 return false; | 863 return false; |
| 871 } | 864 } |
| OLD | NEW |