| // Copyright (c) 2011 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. |
| |
| #ifndef CHROME_COMMON_MAC_CFBUNDLE_BLOCKER_H_ |
| #define CHROME_COMMON_MAC_CFBUNDLE_BLOCKER_H_ |
| |
| #if defined(__OBJC__) |
| @class NSString; |
| #else |
| class NSString; |
| #endif |
| |
| namespace chrome { |
| namespace common { |
| namespace mac { |
| |
| // Arranges to block loading of some third-party plugin code that might try |
| // to inject itself into the process. Modules loaded by CFBundle are blocked |
| // if located within specific directories. Because NSBundle uses CFBundle |
| // behind the scenes, this also blocks modules loaded by NSBundle when located |
| // in those same specific directories. |
| // |
| // Blocked modules include input managers, contextual menu items, and |
| // scripting additions installed in per-user (~/Library), per-machine |
| // (/Library), or network (/Network/Library) locations. Modules installed in |
| // the operating system location (/System/Library) are never blocked. |
| // |
| // This mechanism does not prevent CFBundle (or NSBundle) objects from being |
| // created, but it does block them from loading modules into the process. |
| // Returns whether the blocking mechanism setup was successful. |
| bool EnableCFBundleBlocker(); |
| |
| } // namespace mac |
| } // namespace common |
| } // namespace chrome |
| |
| #endif // CHROME_COMMON_MAC_CFBUNDLE_BLOCKER_H_ |