OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/common/chrome_paths.h" | 5 #include "chrome/common/chrome_paths.h" |
6 | 6 |
7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/mac/bundle_locations.h" | 10 #include "base/mac/bundle_locations.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 #endif | 28 #endif |
29 | 29 |
30 #if defined(OS_WIN) | 30 #if defined(OS_WIN) |
31 #include "base/win/registry.h" | 31 #include "base/win/registry.h" |
32 #endif | 32 #endif |
33 | 33 |
34 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. | 34 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. |
35 | 35 |
36 namespace { | 36 namespace { |
37 | 37 |
38 #if defined(OS_WIN) | |
39 const wchar_t kFlashRegistryRoot[] = L"SOFTWARE\\Macromedia\\FlashPlayerPepper"; | |
40 | |
41 const wchar_t kFlashPlayerPathValueName[] = L"PlayerPath"; | |
42 #endif | |
43 | |
44 // File name of the internal Flash plugin on different platforms. | |
45 const base::FilePath::CharType kInternalFlashPluginFileName[] = | |
46 #if defined(OS_MACOSX) | |
47 FILE_PATH_LITERAL("Flash Player Plugin for Chrome.plugin"); | |
48 #elif defined(OS_WIN) | |
49 FILE_PATH_LITERAL("gcswf32.dll"); | |
50 #else // OS_LINUX, etc. | |
51 FILE_PATH_LITERAL("libgcflashplayer.so"); | |
52 #endif | |
53 | |
54 // The Pepper Flash plugins are in a directory with this name. | 38 // The Pepper Flash plugins are in a directory with this name. |
55 const base::FilePath::CharType kPepperFlashBaseDirectory[] = | 39 const base::FilePath::CharType kPepperFlashBaseDirectory[] = |
56 FILE_PATH_LITERAL("PepperFlash"); | 40 FILE_PATH_LITERAL("PepperFlash"); |
57 | 41 |
58 #if defined(OS_MACOSX) && !defined(OS_IOS) | 42 #if defined(OS_MACOSX) && !defined(OS_IOS) |
59 const base::FilePath::CharType kPepperFlashSystemBaseDirectory[] = | 43 const base::FilePath::CharType kPepperFlashSystemBaseDirectory[] = |
60 FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer"); | 44 FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer"); |
| 45 const base::FilePath::CharType kFlashSystemBaseDirectory[] = |
| 46 FILE_PATH_LITERAL("Internet Plug-Ins"); |
61 #endif | 47 #endif |
62 | 48 |
63 const base::FilePath::CharType kInternalNaClPluginFileName[] = | 49 const base::FilePath::CharType kInternalNaClPluginFileName[] = |
64 FILE_PATH_LITERAL("internal-nacl-plugin"); | 50 FILE_PATH_LITERAL("internal-nacl-plugin"); |
65 | 51 |
66 #if defined(OS_LINUX) | 52 #if defined(OS_LINUX) |
67 // The path to the external extension <id>.json files. | 53 // The path to the external extension <id>.json files. |
68 // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/ | 54 // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/ |
69 const base::FilePath::CharType kFilepathSinglePrefExtensions[] = | 55 const base::FilePath::CharType kFilepathSinglePrefExtensions[] = |
70 #if defined(GOOGLE_CHROME_BUILD) | 56 #if defined(GOOGLE_CHROME_BUILD) |
(...skipping 18 matching lines...) Expand all Loading... |
89 return true; | 75 return true; |
90 } | 76 } |
91 // In tests, just look in the module directory (below). | 77 // In tests, just look in the module directory (below). |
92 #endif | 78 #endif |
93 | 79 |
94 // The rest of the world expects plugins in the module directory. | 80 // The rest of the world expects plugins in the module directory. |
95 return PathService::Get(base::DIR_MODULE, result); | 81 return PathService::Get(base::DIR_MODULE, result); |
96 } | 82 } |
97 | 83 |
98 #if defined(OS_WIN) | 84 #if defined(OS_WIN) |
99 // Gets the Flash path if installed on the system. | 85 // Gets the Flash path if installed on the system. |is_npapi| determines whether |
100 bool GetSystemFlashDirectory(base::FilePath* out_path) { | 86 // to return the NPAPI of the PPAPI version of the system plugin. |
101 base::win::RegKey path_key(HKEY_LOCAL_MACHINE, kFlashRegistryRoot, KEY_READ); | 87 bool GetSystemFlashFilename(base::FilePath* out_path, bool is_npapi) { |
| 88 const wchar_t kNpapiFlashRegistryRoot[] = |
| 89 L"SOFTWARE\\Macromedia\\FlashPlayerPlugin"; |
| 90 const wchar_t kPepperFlashRegistryRoot[] = |
| 91 L"SOFTWARE\\Macromedia\\FlashPlayerPepper"; |
| 92 const wchar_t kFlashPlayerPathValueName[] = L"PlayerPath"; |
| 93 |
| 94 base::win::RegKey path_key( |
| 95 HKEY_LOCAL_MACHINE, |
| 96 is_npapi ? kNpapiFlashRegistryRoot : kPepperFlashRegistryRoot, KEY_READ); |
102 base::string16 path_str; | 97 base::string16 path_str; |
103 if (FAILED(path_key.ReadValue(kFlashPlayerPathValueName, &path_str))) | 98 if (FAILED(path_key.ReadValue(kFlashPlayerPathValueName, &path_str))) |
104 return false; | 99 return false; |
105 base::FilePath plugin_path = base::FilePath(path_str).DirName(); | |
106 | 100 |
107 *out_path = plugin_path; | 101 *out_path = base::FilePath(path_str); |
108 return true; | 102 return true; |
109 } | 103 } |
110 #endif | 104 #endif |
111 | 105 |
112 } // namespace | 106 } // namespace |
113 | 107 |
114 namespace chrome { | 108 namespace chrome { |
115 | 109 |
116 bool PathProvider(int key, base::FilePath* result) { | 110 bool PathProvider(int key, base::FilePath* result) { |
117 // Some keys are just aliases... | 111 // Some keys are just aliases... |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 case chrome::DIR_PEPPER_FLASH_PLUGIN: | 257 case chrome::DIR_PEPPER_FLASH_PLUGIN: |
264 if (!GetInternalPluginsDirectory(&cur)) | 258 if (!GetInternalPluginsDirectory(&cur)) |
265 return false; | 259 return false; |
266 cur = cur.Append(kPepperFlashBaseDirectory); | 260 cur = cur.Append(kPepperFlashBaseDirectory); |
267 break; | 261 break; |
268 case chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN: | 262 case chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN: |
269 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) | 263 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) |
270 return false; | 264 return false; |
271 cur = cur.Append(kPepperFlashBaseDirectory); | 265 cur = cur.Append(kPepperFlashBaseDirectory); |
272 break; | 266 break; |
273 case chrome::DIR_PEPPER_FLASH_SYSTEM_PLUGIN: | 267 case chrome::FILE_PEPPER_FLASH_SYSTEM_PLUGIN: |
274 #if defined(OS_WIN) | 268 #if defined(OS_WIN) |
275 if (!GetSystemFlashDirectory(&cur)) | 269 if (!GetSystemFlashFilename(&cur, false)) |
276 return false; | 270 return false; |
277 #elif defined(OS_MACOSX) && !defined(OS_IOS) | 271 #elif defined(OS_MACOSX) && !defined(OS_IOS) |
278 if (!GetLocalLibraryDirectory(&cur)) | 272 if (!GetLocalLibraryDirectory(&cur)) |
279 return false; | 273 return false; |
280 cur = cur.Append(kPepperFlashSystemBaseDirectory); | 274 cur = cur.Append(kPepperFlashSystemBaseDirectory); |
| 275 cur = cur.Append(chrome::kPepperFlashPluginFilename); |
281 #else | 276 #else |
282 // Chrome on iOS does not supports PPAPI binaries, return false. | 277 // Chrome on iOS does not supports PPAPI binaries, return false. |
283 // TODO(wfh): If Adobe release PPAPI binaries for Linux, add support here. | 278 // TODO(wfh): If Adobe release PPAPI binaries for Linux, add support here. |
| 279 return false; |
| 280 #endif |
| 281 break; |
| 282 case chrome::FILE_FLASH_SYSTEM_PLUGIN: |
| 283 #if defined(OS_WIN) |
| 284 if (!GetSystemFlashFilename(&cur, true)) |
| 285 return false; |
| 286 #elif defined(OS_MACOSX) && !defined(OS_IOS) |
| 287 if (!GetLocalLibraryDirectory(&cur)) |
| 288 return false; |
| 289 cur = cur.Append(kFlashSystemBaseDirectory); |
| 290 cur = cur.Append(chrome::kPepperFlashPluginFilename); |
| 291 #else |
| 292 // Chrome on iOS does not supports PPAPI binaries, return false. |
| 293 // TODO(wfh): If Adobe release PPAPI binaries for Linux, add support here. |
284 return false; | 294 return false; |
285 #endif | 295 #endif |
286 break; | 296 break; |
287 case chrome::FILE_LOCAL_STATE: | 297 case chrome::FILE_LOCAL_STATE: |
288 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) | 298 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) |
289 return false; | 299 return false; |
290 cur = cur.Append(chrome::kLocalStateFilename); | 300 cur = cur.Append(chrome::kLocalStateFilename); |
291 break; | 301 break; |
292 case chrome::FILE_RECORDED_SCRIPT: | 302 case chrome::FILE_RECORDED_SCRIPT: |
293 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) | 303 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) |
294 return false; | 304 return false; |
295 cur = cur.Append(FILE_PATH_LITERAL("script.log")); | 305 cur = cur.Append(FILE_PATH_LITERAL("script.log")); |
296 break; | 306 break; |
297 case chrome::FILE_FLASH_PLUGIN: | |
298 if (!GetInternalPluginsDirectory(&cur)) | |
299 return false; | |
300 cur = cur.Append(kInternalFlashPluginFileName); | |
301 break; | |
302 case chrome::FILE_PEPPER_FLASH_PLUGIN: | 307 case chrome::FILE_PEPPER_FLASH_PLUGIN: |
303 if (!PathService::Get(chrome::DIR_PEPPER_FLASH_PLUGIN, &cur)) | 308 if (!PathService::Get(chrome::DIR_PEPPER_FLASH_PLUGIN, &cur)) |
304 return false; | 309 return false; |
305 cur = cur.Append(chrome::kPepperFlashPluginFilename); | 310 cur = cur.Append(chrome::kPepperFlashPluginFilename); |
306 break; | 311 break; |
307 // TODO(teravest): Remove this case once the internal NaCl plugin is gone. | 312 // TODO(teravest): Remove this case once the internal NaCl plugin is gone. |
308 // We currently need a path here to look up whether the plugin is disabled | 313 // We currently need a path here to look up whether the plugin is disabled |
309 // and what its permissions are. | 314 // and what its permissions are. |
310 case chrome::FILE_NACL_PLUGIN: | 315 case chrome::FILE_NACL_PLUGIN: |
311 if (!GetInternalPluginsDirectory(&cur)) | 316 if (!GetInternalPluginsDirectory(&cur)) |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 | 587 |
583 void SetInvalidSpecifiedUserDataDir(const base::FilePath& user_data_dir) { | 588 void SetInvalidSpecifiedUserDataDir(const base::FilePath& user_data_dir) { |
584 g_invalid_specified_user_data_dir.Get() = user_data_dir; | 589 g_invalid_specified_user_data_dir.Get() = user_data_dir; |
585 } | 590 } |
586 | 591 |
587 const base::FilePath& GetInvalidSpecifiedUserDataDir() { | 592 const base::FilePath& GetInvalidSpecifiedUserDataDir() { |
588 return g_invalid_specified_user_data_dir.Get(); | 593 return g_invalid_specified_user_data_dir.Get(); |
589 } | 594 } |
590 | 595 |
591 } // namespace chrome | 596 } // namespace chrome |
OLD | NEW |