Arquivos
chromium/base/native_library_win.cc
jcampan@chromium.org 2b61de6382 Porting the browser tests to Unix.
The browser tests are an alternative to UI tests.
They provide a way to exercise the browser from within the test (without having the test and the browser running in different processes).
In order to ensure atexit hanlders are run after each tests and static initializers start fresh for each test, each test is run in a new process (on Linux and Mac). On Windows, a DLL containing the test is loaded/unloaded for each tests.

BUG=None
TEST=Run the browser tests. 

Review URL: http://codereview.chromium.org/115896

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17781 0039d316-1c4b-4281-b951-d872f2087c98
2009-06-05 22:18:09 +00:00

53 linhas
1.4 KiB
C++

// Copyright (c) 2009 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.
#include "base/native_library.h"
#include <windows.h>
#include "base/file_path.h"
#include "base/path_service.h"
#include "base/string_util.h"
namespace base {
// static
NativeLibrary LoadNativeLibrary(const FilePath& library_path) {
// Switch the current directory to the library directory as the library
// may have dependencies on DLLs in this directory.
bool restore_directory = false;
std::wstring current_directory;
if (PathService::Get(base::DIR_CURRENT, &current_directory)) {
FilePath plugin_path = library_path.DirName();
if (!plugin_path.value().empty()) {
PathService::SetCurrentDirectory(plugin_path.value());
restore_directory = true;
}
}
HMODULE module = LoadLibrary(library_path.value().c_str());
if (restore_directory)
PathService::SetCurrentDirectory(current_directory);
return module;
}
// static
void UnloadNativeLibrary(NativeLibrary library) {
FreeLibrary(library);
}
// static
void* GetFunctionPointerFromNativeLibrary(NativeLibrary library,
const char* name) {
return GetProcAddress(library, name);
}
// static
string16 GetNativeLibraryName(const string16& name) {
return name + ASCIIToUTF16(".dll");
}
} // namespace base