OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_frame/test/chrome_frame_test_utils.h" | 5 #include "chrome_frame/test/chrome_frame_test_utils.h" |
6 | 6 |
7 #include <atlapp.h> | 7 #include <atlapp.h> |
8 #include <atlmisc.h> | 8 #include <atlmisc.h> |
9 #include <iepmapi.h> | 9 #include <iepmapi.h> |
10 #include <sddl.h> | 10 #include <sddl.h> |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 const int kCrashServiceStartupTimeoutMs = 500; | 44 const int kCrashServiceStartupTimeoutMs = 500; |
45 | 45 |
46 const wchar_t kIEImageName[] = L"iexplore.exe"; | 46 const wchar_t kIEImageName[] = L"iexplore.exe"; |
47 const wchar_t kIEBrokerImageName[] = L"ieuser.exe"; | 47 const wchar_t kIEBrokerImageName[] = L"ieuser.exe"; |
48 const char kChromeImageName[] = "chrome.exe"; | 48 const char kChromeImageName[] = "chrome.exe"; |
49 const wchar_t kIEProfileName[] = L"iexplore"; | 49 const wchar_t kIEProfileName[] = L"iexplore"; |
50 const wchar_t kChromeLauncher[] = L"chrome_launcher.exe"; | 50 const wchar_t kChromeLauncher[] = L"chrome_launcher.exe"; |
51 const int kChromeFrameLongNavigationTimeoutInSeconds = 10; | 51 const int kChromeFrameLongNavigationTimeoutInSeconds = 10; |
52 const int kChromeFrameVeryLongNavigationTimeoutInSeconds = 30; | 52 const int kChromeFrameVeryLongNavigationTimeoutInSeconds = 30; |
53 | 53 |
54 const wchar_t TempRegKeyOverride::kTempTestKeyPath[] = | |
55 L"Software\\Chromium\\TempTestKeys"; | |
56 | |
57 // Callback function for EnumThreadWindows. | 54 // Callback function for EnumThreadWindows. |
58 BOOL CALLBACK CloseWindowsThreadCallback(HWND hwnd, LPARAM param) { | 55 BOOL CALLBACK CloseWindowsThreadCallback(HWND hwnd, LPARAM param) { |
59 int& count = *reinterpret_cast<int*>(param); | 56 int& count = *reinterpret_cast<int*>(param); |
60 if (IsWindowVisible(hwnd)) { | 57 if (IsWindowVisible(hwnd)) { |
61 if (IsWindowEnabled(hwnd)) { | 58 if (IsWindowEnabled(hwnd)) { |
62 DWORD results = 0; | 59 DWORD results = 0; |
63 if (!::SendMessageTimeout(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0, SMTO_BLOCK, | 60 if (!::SendMessageTimeout(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0, SMTO_BLOCK, |
64 10000, &results)) { | 61 10000, &results)) { |
65 LOG(WARNING) << "Window hung: " << base::StringPrintf(L"%08X", hwnd); | 62 LOG(WARNING) << "Window hung: " << base::StringPrintf(L"%08X", hwnd); |
66 } | 63 } |
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 | 606 |
610 // First check to see if it's even still running just to minimize the | 607 // First check to see if it's even still running just to minimize the |
611 // likelihood of spurious error messages from KillProcess. | 608 // likelihood of spurious error messages from KillProcess. |
612 if (WAIT_OBJECT_0 != ::WaitForSingleObject(crash_service, 0)) { | 609 if (WAIT_OBJECT_0 != ::WaitForSingleObject(crash_service, 0)) { |
613 base::KillProcess(crash_service, 0, false); | 610 base::KillProcess(crash_service, 0, false); |
614 } | 611 } |
615 return NULL; | 612 return NULL; |
616 } | 613 } |
617 } | 614 } |
618 | 615 |
619 TempRegKeyOverride::TempRegKeyOverride(HKEY override, const wchar_t* temp_name) | |
620 : override_(override), temp_name_(temp_name) { | |
621 DCHECK(temp_name && lstrlenW(temp_name)); | |
622 std::wstring key_path(kTempTestKeyPath); | |
623 key_path += L"\\" + temp_name_; | |
624 EXPECT_EQ(ERROR_SUCCESS, temp_key_.Create(HKEY_CURRENT_USER, key_path.c_str(), | |
625 KEY_ALL_ACCESS)); | |
626 EXPECT_EQ(ERROR_SUCCESS, | |
627 ::RegOverridePredefKey(override_, temp_key_.Handle())); | |
628 } | |
629 | |
630 TempRegKeyOverride::~TempRegKeyOverride() { | |
631 ::RegOverridePredefKey(override_, NULL); | |
632 // The temp key will be deleted via a call to DeleteAllTempKeys(). | |
633 } | |
634 | |
635 // static | |
636 void TempRegKeyOverride::DeleteAllTempKeys() { | |
637 base::win::RegKey key; | |
638 if (key.Open(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS) == ERROR_SUCCESS) { | |
639 key.DeleteKey(kTempTestKeyPath); | |
640 } | |
641 } | |
642 | |
643 ScopedVirtualizeHklmAndHkcu::ScopedVirtualizeHklmAndHkcu() { | 616 ScopedVirtualizeHklmAndHkcu::ScopedVirtualizeHklmAndHkcu() { |
644 TempRegKeyOverride::DeleteAllTempKeys(); | 617 override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, L"hklm_fake"); |
645 hklm_.reset(new TempRegKeyOverride(HKEY_LOCAL_MACHINE, L"hklm_fake")); | 618 override_manager_.OverrideRegistry(HKEY_CURRENT_USER, L"hkcu_fake"); |
646 hkcu_.reset(new TempRegKeyOverride(HKEY_CURRENT_USER, L"hkcu_fake")); | |
647 } | 619 } |
648 | 620 |
649 ScopedVirtualizeHklmAndHkcu::~ScopedVirtualizeHklmAndHkcu() { | 621 ScopedVirtualizeHklmAndHkcu::~ScopedVirtualizeHklmAndHkcu() { |
650 hkcu_.reset(NULL); | 622 } |
651 hklm_.reset(NULL); | 623 |
652 TempRegKeyOverride::DeleteAllTempKeys(); | 624 void ScopedVirtualizeHklmAndHkcu::RemoveAllOverrides() { |
| 625 override_manager_.RemoveAllOverrides(); |
653 } | 626 } |
654 | 627 |
655 bool KillProcesses(const std::wstring& executable_name, int exit_code, | 628 bool KillProcesses(const std::wstring& executable_name, int exit_code, |
656 bool wait) { | 629 bool wait) { |
657 bool result = true; | 630 bool result = true; |
658 base::NamedProcessIterator iter(executable_name, NULL); | 631 base::NamedProcessIterator iter(executable_name, NULL); |
659 while (const base::ProcessEntry* entry = iter.NextProcessEntry()) { | 632 while (const base::ProcessEntry* entry = iter.NextProcessEntry()) { |
660 result &= base::KillProcessById(entry->pid(), exit_code, wait); | 633 result &= base::KillProcessById(entry->pid(), exit_code, wait); |
661 } | 634 } |
662 return result; | 635 return result; |
(...skipping 11 matching lines...) Expand all Loading... |
674 wchar_t local_app_data_path[MAX_PATH + 1] = {0}; | 647 wchar_t local_app_data_path[MAX_PATH + 1] = {0}; |
675 SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, | 648 SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, |
676 local_app_data_path); | 649 local_app_data_path); |
677 | 650 |
678 std::wstring session_history_path = local_app_data_path; | 651 std::wstring session_history_path = local_app_data_path; |
679 session_history_path += L"\\Microsoft\\Internet Explorer\\Recovery"; | 652 session_history_path += L"\\Microsoft\\Internet Explorer\\Recovery"; |
680 file_util::Delete(session_history_path, true); | 653 file_util::Delete(session_history_path, true); |
681 } | 654 } |
682 | 655 |
683 } // namespace chrome_frame_test | 656 } // namespace chrome_frame_test |
OLD | NEW |