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

Side by Side Diff: webkit/glue/plugins/plugin_lib_win.cc

Issue 87012: plugins: move NativeLibrary into base. (Closed)
Patch Set: more fixes from trybot Created 11 years, 8 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 unified diff | Download patch
OLDNEW
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 "config.h" 5 #include "config.h"
6 6
7 #include "webkit/glue/plugins/plugin_lib.h" 7 #include "webkit/glue/plugins/plugin_lib.h"
8 8
9 #include "base/file_version_info.h" 9 #include "base/file_version_info.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
11 #include "webkit/glue/plugins/plugin_constants_win.h" 11 #include "webkit/glue/plugins/plugin_constants_win.h"
12 #include "webkit/glue/plugins/plugin_list.h" 12 #include "webkit/glue/plugins/plugin_list.h"
13 13
14 namespace NPAPI 14 namespace NPAPI
15 { 15 {
16
17 /* static */
18 PluginLib::NativeLibrary PluginLib::LoadNativeLibrary(
19 const FilePath& library_path) {
20 // Switch the current directory to the plugin directory as the plugin
21 // may have dependencies on dlls in this directory.
22 bool restore_directory = false;
23 std::wstring current_directory;
24 if (PathService::Get(base::DIR_CURRENT, &current_directory)) {
25 FilePath plugin_path = library_path.DirName();
26 if (!plugin_path.value().empty()) {
27 PathService::SetCurrentDirectory(plugin_path.value());
28 restore_directory = true;
29 }
30 }
31
32 HMODULE module = LoadLibrary(library_path.value().c_str());
33 if (restore_directory)
34 PathService::SetCurrentDirectory(current_directory);
35
36 return module;
37 }
38
39 /* static */
40 void PluginLib::UnloadNativeLibrary(NativeLibrary library) {
41 FreeLibrary(library);
42 }
43
44 /* static */
45 void* PluginLib::GetFunctionPointerFromNativeLibrary(
46 NativeLibrary library,
47 NativeLibraryFunctionNameType name) {
48 return GetProcAddress(library, name);
49 }
50
51 bool PluginLib::ReadWebPluginInfo(const FilePath &filename, 16 bool PluginLib::ReadWebPluginInfo(const FilePath &filename,
52 WebPluginInfo* info) { 17 WebPluginInfo* info) {
53 // On windows, the way we get the mime types for the library is 18 // On windows, the way we get the mime types for the library is
54 // to check the version information in the DLL itself. This 19 // to check the version information in the DLL itself. This
55 // will be a string of the format: <type1>|<type2>|<type3>|... 20 // will be a string of the format: <type1>|<type2>|<type3>|...
56 // For example: 21 // For example:
57 // video/quicktime|audio/aiff|image/jpeg 22 // video/quicktime|audio/aiff|image/jpeg
58 scoped_ptr<FileVersionInfo> version_info( 23 scoped_ptr<FileVersionInfo> version_info(
59 FileVersionInfo::CreateFileVersionInfo(filename.value())); 24 FileVersionInfo::CreateFileVersionInfo(filename.value()));
60 if (!version_info.get()) 25 if (!version_info.get())
61 return false; 26 return false;
62 27
63 PluginVersionInfo pvi; 28 PluginVersionInfo pvi;
64 pvi.mime_types = version_info->GetStringValue(L"MIMEType"); 29 pvi.mime_types = version_info->GetStringValue(L"MIMEType");
65 pvi.file_extensions = version_info->GetStringValue(L"FileExtents"); 30 pvi.file_extensions = version_info->GetStringValue(L"FileExtents");
66 pvi.type_descriptions = version_info->GetStringValue(L"FileOpenName"); 31 pvi.type_descriptions = version_info->GetStringValue(L"FileOpenName");
67 pvi.product_name = version_info->product_name(); 32 pvi.product_name = version_info->product_name();
68 pvi.file_description = version_info->file_description(); 33 pvi.file_description = version_info->file_description();
69 pvi.file_version = version_info->file_version(); 34 pvi.file_version = version_info->file_version();
70 pvi.path = filename; 35 pvi.path = filename;
71 36
72 return PluginList::CreateWebPluginInfo(pvi, info); 37 return PluginList::CreateWebPluginInfo(pvi, info);
73 } 38 }
74 39
75 } // namespace NPAPI 40 } // namespace NPAPI
OLDNEW
« base/native_library_linux.cc ('K') | « webkit/glue/plugins/plugin_lib_mac.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698