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

Unified Diff: chrome_frame/test/dll_redirector_loading_test.cc

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_frame/test/delete_chrome_history_test.cc ('k') | chrome_frame/test/dll_redirector_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/test/dll_redirector_loading_test.cc
diff --git a/chrome_frame/test/dll_redirector_loading_test.cc b/chrome_frame/test/dll_redirector_loading_test.cc
deleted file mode 100644
index efafa7c90f76f79e0a52b0a320b72cd3d47564ab..0000000000000000000000000000000000000000
--- a/chrome_frame/test/dll_redirector_loading_test.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// A test that exercises Chrome Frame's DLL Redirctor update code. This test
-// generates a new version of CF from the one already in the build folder and
-// then loads them both into the current process to verify the handoff.
-
-#include "base/file_util.h"
-#include "base/file_version_info.h"
-#include "base/files/file_path.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/memory/shared_memory.h"
-#include "base/path_service.h"
-#include "base/scoped_native_library.h"
-#include "base/strings/string_util.h"
-#include "base/version.h"
-#include "base/win/scoped_comptr.h"
-#include "chrome/installer/test/alternate_version_generator.h"
-#include "chrome/installer/util/delete_after_reboot_helper.h"
-#include "chrome_frame/chrome_tab.h"
-#include "chrome_frame/test_utils.h"
-#include "chrome_frame/utils.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace {
-const wchar_t kSharedMemoryPrefix[] = L"ChromeFrameVersionBeacon_";
-const uint32 kSharedMemoryBytes = 128;
-}
-
-class DllRedirectorLoadingTest : public testing::Test {
- public:
- // This sets up the following directory structure:
- // TEMP\<version X>\npchrome_frame.dll
- // \<version X+1>\npchrome_frame.dll
- //
- // This structure emulates enough of the directory structure of a Chrome
- // install to test upgrades.
- static void SetUpTestCase() {
- // First ensure that we can find the built Chrome Frame DLL.
- base::FilePath build_chrome_frame_dll = GetChromeFrameBuildPath();
- ASSERT_TRUE(base::PathExists(build_chrome_frame_dll));
-
- // Then grab its version.
- scoped_ptr<FileVersionInfo> original_version_info(
- FileVersionInfo::CreateFileVersionInfo(build_chrome_frame_dll));
- ASSERT_TRUE(original_version_info != NULL);
- original_version_.reset(
- new Version(WideToASCII(original_version_info->file_version())));
- ASSERT_TRUE(original_version_->IsValid());
-
- // Make a place for us to run the test from.
- ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
-
- // Make a versioned dir for the original chrome frame dll to run under.
- base::FilePath original_version_dir(
- temp_dir_.path().AppendASCII(original_version_->GetString()));
- ASSERT_TRUE(base::CreateDirectory(original_version_dir));
-
- // Now move the original DLL that we will operate on into a named-version
- // folder.
- original_chrome_frame_dll_ =
- original_version_dir.Append(build_chrome_frame_dll.BaseName());
- ASSERT_TRUE(base::CopyFile(build_chrome_frame_dll,
- original_chrome_frame_dll_));
- ASSERT_TRUE(base::PathExists(original_chrome_frame_dll_));
-
- // Temporary location for the new Chrome Frame DLL.
- base::FilePath temporary_new_chrome_frame_dll(
- temp_dir_.path().Append(build_chrome_frame_dll.BaseName()));
-
- // Generate the version-bumped Chrome Frame DLL to a temporary path.
- ASSERT_TRUE(
- upgrade_test::GenerateAlternatePEFileVersion(
- original_chrome_frame_dll_,
- temporary_new_chrome_frame_dll,
- upgrade_test::NEXT_VERSION));
-
- // Ensure it got created and grab its version.
- scoped_ptr<FileVersionInfo> new_version_info(
- FileVersionInfo::CreateFileVersionInfo(temporary_new_chrome_frame_dll));
- ASSERT_TRUE(new_version_info != NULL);
- new_version_.reset(
- new Version(WideToASCII(new_version_info->file_version())));
- ASSERT_TRUE(new_version_->IsValid());
-
- // Make sure the new version is larger than the old.
- ASSERT_EQ(new_version_->CompareTo(*original_version_.get()), 1);
-
- // Now move the new Chrome Frame dll to its final resting place:
- base::FilePath new_version_dir(
- temp_dir_.path().AppendASCII(new_version_->GetString()));
- ASSERT_TRUE(base::CreateDirectory(new_version_dir));
- new_chrome_frame_dll_ =
- new_version_dir.Append(build_chrome_frame_dll.BaseName());
- ASSERT_TRUE(base::Move(temporary_new_chrome_frame_dll,
- new_chrome_frame_dll_));
- ASSERT_TRUE(base::PathExists(new_chrome_frame_dll_));
- }
-
- static void TearDownTestCase() {
- if (!temp_dir_.Delete()) {
- // The temp_dir cleanup has been observed to fail in some cases. It looks
- // like something is holding on to the Chrome Frame DLLs after they have
- // been explicitly unloaded. At least schedule them for cleanup on reboot.
- ScheduleDirectoryForDeletion(temp_dir_.path());
- }
- }
-
- protected:
- static base::FilePath original_chrome_frame_dll_;
- static base::FilePath new_chrome_frame_dll_;
- static scoped_ptr<Version> original_version_;
- static scoped_ptr<Version> new_version_;
-
- static base::ScopedTempDir temp_dir_;
-}; // class DllRedirectorLoadingTest
-
-base::FilePath DllRedirectorLoadingTest::original_chrome_frame_dll_;
-base::FilePath DllRedirectorLoadingTest::new_chrome_frame_dll_;
-scoped_ptr<Version> DllRedirectorLoadingTest::original_version_;
-scoped_ptr<Version> DllRedirectorLoadingTest::new_version_;
-base::ScopedTempDir DllRedirectorLoadingTest::temp_dir_;
-
-#if defined(COMPONENT_BUILD)
-// Disabling since npchrome_frame.dll's DllMain can't handle being loaded into
-// a process that has already started services in base.dll such as logging; see
-// http://crbug.com/110492.
-#define MAYBE_TestDllRedirection DISABLED_TestDllRedirection
-#else
-#define MAYBE_TestDllRedirection TestDllRedirection
-#endif
-
-TEST_F(DllRedirectorLoadingTest, MAYBE_TestDllRedirection) {
- struct TestData {
- base::FilePath first_dll;
- base::FilePath second_dll;
- Version* expected_beacon_version;
- } test_data[] = {
- {
- original_chrome_frame_dll_,
- new_chrome_frame_dll_,
- original_version_.get()
- },
- {
- new_chrome_frame_dll_,
- original_chrome_frame_dll_,
- new_version_.get()
- }
- };
-
- for (int i = 0; i < arraysize(test_data); ++i) {
- // First load the original dll into our test process.
- base::ScopedNativeLibrary original_library(test_data[i].first_dll);
-
- ASSERT_TRUE(original_library.is_valid());
-
- // Now query the original dll for its DllGetClassObject method and use that
- // to get the class factory for a known CLSID.
- LPFNGETCLASSOBJECT original_dgco_ptr =
- reinterpret_cast<LPFNGETCLASSOBJECT>(
- original_library.GetFunctionPointer("DllGetClassObject"));
-
- ASSERT_TRUE(original_dgco_ptr != NULL);
-
- base::win::ScopedComPtr<IClassFactory> original_class_factory;
- HRESULT hr = original_dgco_ptr(
- CLSID_ChromeFrame,
- IID_IClassFactory,
- reinterpret_cast<void**>(original_class_factory.Receive()));
-
- ASSERT_HRESULT_SUCCEEDED(hr);
-
- // Now load the new dll into our test process.
- base::ScopedNativeLibrary new_library(test_data[i].second_dll);
-
- ASSERT_TRUE(new_library.is_valid());
-
- // Now query the new dll for its DllGetClassObject method and use that
- // to get the class factory for a known CLSID.
- LPFNGETCLASSOBJECT new_dgco_ptr =
- reinterpret_cast<LPFNGETCLASSOBJECT>(
- new_library.GetFunctionPointer("DllGetClassObject"));
-
- ASSERT_TRUE(new_dgco_ptr != NULL);
-
- base::win::ScopedComPtr<IClassFactory> new_class_factory;
- hr = new_dgco_ptr(CLSID_ChromeFrame,
- IID_IClassFactory,
- reinterpret_cast<void**>(new_class_factory.Receive()));
-
- ASSERT_HRESULT_SUCCEEDED(hr);
-
- base::win::ScopedComPtr<IUnknown> qi_test;
- EXPECT_HRESULT_SUCCEEDED(original_class_factory.QueryInterface(IID_IUnknown,
- reinterpret_cast<void**>(qi_test.Receive())));
-
- EXPECT_TRUE(new_class_factory.IsSameObject(qi_test));
-
- // Check the version beacon.
- std::wstring beacon_name(kSharedMemoryPrefix);
- beacon_name += GetHostProcessName(false /* without extension */);
- base::SharedMemory beacon(beacon_name);
-
- EXPECT_TRUE(beacon.Open(WideToASCII(beacon_name), true /* read_only */));
- EXPECT_TRUE(beacon.Map(0));
- EXPECT_TRUE(beacon.memory());
-
- char buffer[kSharedMemoryBytes] = {0};
- memcpy(buffer, beacon.memory(), kSharedMemoryBytes - 1);
- Version beacon_version(buffer);
- ASSERT_TRUE(beacon_version.IsValid());
-
- EXPECT_EQ(0,
- beacon_version.CompareTo(*test_data[i].expected_beacon_version));
- }
-}
« no previous file with comments | « chrome_frame/test/delete_chrome_history_test.cc ('k') | chrome_frame/test/dll_redirector_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698