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 25 matching lines...) Expand all Loading... |
36 | 36 |
37 namespace { | 37 namespace { |
38 | 38 |
39 // The Pepper Flash plugins are in a directory with this name. | 39 // The Pepper Flash plugins are in a directory with this name. |
40 const base::FilePath::CharType kPepperFlashBaseDirectory[] = | 40 const base::FilePath::CharType kPepperFlashBaseDirectory[] = |
41 FILE_PATH_LITERAL("PepperFlash"); | 41 FILE_PATH_LITERAL("PepperFlash"); |
42 | 42 |
43 #if defined(OS_MACOSX) | 43 #if defined(OS_MACOSX) |
44 const base::FilePath::CharType kPepperFlashSystemBaseDirectory[] = | 44 const base::FilePath::CharType kPepperFlashSystemBaseDirectory[] = |
45 FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer"); | 45 FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer"); |
46 const base::FilePath::CharType kFlashSystemBaseDirectory[] = | |
47 FILE_PATH_LITERAL("Internet Plug-Ins"); | |
48 const base::FilePath::CharType kFlashSystemPluginName[] = | |
49 FILE_PATH_LITERAL("Flash Player.plugin"); | |
50 #endif | 46 #endif |
51 | 47 |
52 const base::FilePath::CharType kInternalNaClPluginFileName[] = | 48 const base::FilePath::CharType kInternalNaClPluginFileName[] = |
53 FILE_PATH_LITERAL("internal-nacl-plugin"); | 49 FILE_PATH_LITERAL("internal-nacl-plugin"); |
54 | 50 |
55 #if defined(OS_LINUX) | 51 #if defined(OS_LINUX) |
56 // The path to the external extension <id>.json files. | 52 // The path to the external extension <id>.json files. |
57 // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/ | 53 // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/ |
58 const base::FilePath::CharType kFilepathSinglePrefExtensions[] = | 54 const base::FilePath::CharType kFilepathSinglePrefExtensions[] = |
59 #if defined(GOOGLE_CHROME_BUILD) | 55 #if defined(GOOGLE_CHROME_BUILD) |
(...skipping 23 matching lines...) Expand all Loading... |
83 return true; | 79 return true; |
84 } | 80 } |
85 // In tests, just look in the module directory (below). | 81 // In tests, just look in the module directory (below). |
86 #endif | 82 #endif |
87 | 83 |
88 // The rest of the world expects plugins in the module directory. | 84 // The rest of the world expects plugins in the module directory. |
89 return PathService::Get(base::DIR_MODULE, result); | 85 return PathService::Get(base::DIR_MODULE, result); |
90 } | 86 } |
91 | 87 |
92 #if defined(OS_WIN) | 88 #if defined(OS_WIN) |
93 // Gets the Flash path if installed on the system. |is_npapi| determines whether | 89 // Gets the Pepper Flash path if installed on the system. |
94 // to return the NPAPI of the PPAPI version of the system plugin. | 90 bool GetSystemFlashFilename(base::FilePath* out_path) { |
95 bool GetSystemFlashFilename(base::FilePath* out_path, bool is_npapi) { | |
96 const wchar_t kNpapiFlashRegistryRoot[] = | |
97 L"SOFTWARE\\Macromedia\\FlashPlayerPlugin"; | |
98 const wchar_t kPepperFlashRegistryRoot[] = | 91 const wchar_t kPepperFlashRegistryRoot[] = |
99 L"SOFTWARE\\Macromedia\\FlashPlayerPepper"; | 92 L"SOFTWARE\\Macromedia\\FlashPlayerPepper"; |
100 const wchar_t kFlashPlayerPathValueName[] = L"PlayerPath"; | 93 const wchar_t kFlashPlayerPathValueName[] = L"PlayerPath"; |
101 | 94 |
102 base::win::RegKey path_key( | 95 base::win::RegKey path_key(HKEY_LOCAL_MACHINE, kPepperFlashRegistryRoot, |
103 HKEY_LOCAL_MACHINE, | 96 KEY_READ); |
104 is_npapi ? kNpapiFlashRegistryRoot : kPepperFlashRegistryRoot, KEY_READ); | |
105 base::string16 path_str; | 97 base::string16 path_str; |
106 if (FAILED(path_key.ReadValue(kFlashPlayerPathValueName, &path_str))) | 98 if (FAILED(path_key.ReadValue(kFlashPlayerPathValueName, &path_str))) |
107 return false; | 99 return false; |
108 | 100 |
109 *out_path = base::FilePath(path_str); | 101 *out_path = base::FilePath(path_str); |
110 return true; | 102 return true; |
111 } | 103 } |
112 #endif | 104 #endif |
113 | 105 |
114 } // namespace | 106 } // namespace |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 return false; | 261 return false; |
270 cur = cur.Append(kPepperFlashBaseDirectory); | 262 cur = cur.Append(kPepperFlashBaseDirectory); |
271 break; | 263 break; |
272 case chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN: | 264 case chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN: |
273 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) | 265 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) |
274 return false; | 266 return false; |
275 cur = cur.Append(kPepperFlashBaseDirectory); | 267 cur = cur.Append(kPepperFlashBaseDirectory); |
276 break; | 268 break; |
277 case chrome::FILE_PEPPER_FLASH_SYSTEM_PLUGIN: | 269 case chrome::FILE_PEPPER_FLASH_SYSTEM_PLUGIN: |
278 #if defined(OS_WIN) | 270 #if defined(OS_WIN) |
279 if (!GetSystemFlashFilename(&cur, false)) | 271 if (!GetSystemFlashFilename(&cur)) |
280 return false; | 272 return false; |
281 #elif defined(OS_MACOSX) | 273 #elif defined(OS_MACOSX) |
282 if (!GetLocalLibraryDirectory(&cur)) | 274 if (!GetLocalLibraryDirectory(&cur)) |
283 return false; | 275 return false; |
284 cur = cur.Append(kPepperFlashSystemBaseDirectory); | 276 cur = cur.Append(kPepperFlashSystemBaseDirectory); |
285 cur = cur.Append(chrome::kPepperFlashPluginFilename); | 277 cur = cur.Append(chrome::kPepperFlashPluginFilename); |
286 #else | 278 #else |
287 // Chrome on iOS does not supports PPAPI binaries, return false. | 279 // Chrome on iOS does not supports PPAPI binaries, return false. |
288 // TODO(wfh): If Adobe release PPAPI binaries for Linux, add support here. | 280 // TODO(wfh): If Adobe release PPAPI binaries for Linux, add support here. |
289 return false; | 281 return false; |
290 #endif | 282 #endif |
291 break; | 283 break; |
292 case chrome::FILE_FLASH_SYSTEM_PLUGIN: | |
293 #if defined(OS_WIN) | |
294 if (!GetSystemFlashFilename(&cur, true)) | |
295 return false; | |
296 #elif defined(OS_MACOSX) | |
297 if (!GetLocalLibraryDirectory(&cur)) | |
298 return false; | |
299 cur = cur.Append(kFlashSystemBaseDirectory); | |
300 cur = cur.Append(kFlashSystemPluginName); | |
301 #else | |
302 // Chrome on other platforms does not supports system NPAPI binaries. | |
303 return false; | |
304 #endif | |
305 break; | |
306 case chrome::FILE_LOCAL_STATE: | 284 case chrome::FILE_LOCAL_STATE: |
307 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) | 285 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) |
308 return false; | 286 return false; |
309 cur = cur.Append(chrome::kLocalStateFilename); | 287 cur = cur.Append(chrome::kLocalStateFilename); |
310 break; | 288 break; |
311 case chrome::FILE_RECORDED_SCRIPT: | 289 case chrome::FILE_RECORDED_SCRIPT: |
312 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) | 290 if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) |
313 return false; | 291 return false; |
314 cur = cur.Append(FILE_PATH_LITERAL("script.log")); | 292 cur = cur.Append(FILE_PATH_LITERAL("script.log")); |
315 break; | 293 break; |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 | 568 |
591 void SetInvalidSpecifiedUserDataDir(const base::FilePath& user_data_dir) { | 569 void SetInvalidSpecifiedUserDataDir(const base::FilePath& user_data_dir) { |
592 g_invalid_specified_user_data_dir.Get() = user_data_dir; | 570 g_invalid_specified_user_data_dir.Get() = user_data_dir; |
593 } | 571 } |
594 | 572 |
595 const base::FilePath& GetInvalidSpecifiedUserDataDir() { | 573 const base::FilePath& GetInvalidSpecifiedUserDataDir() { |
596 return g_invalid_specified_user_data_dir.Get(); | 574 return g_invalid_specified_user_data_dir.Get(); |
597 } | 575 } |
598 | 576 |
599 } // namespace chrome | 577 } // namespace chrome |
OLD | NEW |