46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
|
|
// Copyright 2019 The Chromium Authors
|
||
|
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
|
// found in the LICENSE file.
|
||
|
|
|
||
|
|
#ifndef BASE_MEMORY_SHARED_MEMORY_HOOKS_H_
|
||
|
|
#define BASE_MEMORY_SHARED_MEMORY_HOOKS_H_
|
||
|
|
|
||
|
|
#include "base/memory/read_only_shared_memory_region.h"
|
||
|
|
#include "base/memory/unsafe_shared_memory_region.h"
|
||
|
|
#include "base/memory/writable_shared_memory_region.h"
|
||
|
|
|
||
|
|
namespace mojo {
|
||
|
|
class SharedMemoryUtils;
|
||
|
|
namespace core::ipcz_driver {
|
||
|
|
class BaseSharedMemoryService;
|
||
|
|
}
|
||
|
|
} // namespace mojo
|
||
|
|
|
||
|
|
namespace base {
|
||
|
|
|
||
|
|
class SharedMemoryHooks {
|
||
|
|
public:
|
||
|
|
SharedMemoryHooks() = delete;
|
||
|
|
|
||
|
|
private:
|
||
|
|
friend class SharedMemoryHooksTest;
|
||
|
|
friend mojo::SharedMemoryUtils;
|
||
|
|
friend class mojo::core::ipcz_driver::BaseSharedMemoryService;
|
||
|
|
|
||
|
|
// Allows shared memory region creation to be hooked. Useful for sandboxed
|
||
|
|
// processes that are restricted from invoking the platform APIs directly.
|
||
|
|
// Intentionally private so callers need to be explicitly friended.
|
||
|
|
static void SetCreateHooks(
|
||
|
|
ReadOnlySharedMemoryRegion::CreateFunction* read_only_hook,
|
||
|
|
UnsafeSharedMemoryRegion::CreateFunction* unsafe_hook,
|
||
|
|
WritableSharedMemoryRegion::CreateFunction* writable_hook) {
|
||
|
|
ReadOnlySharedMemoryRegion::set_create_hook(read_only_hook);
|
||
|
|
UnsafeSharedMemoryRegion::set_create_hook(unsafe_hook);
|
||
|
|
WritableSharedMemoryRegion::set_create_hook(writable_hook);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace base
|
||
|
|
|
||
|
|
#endif // BASE_MEMORY_SHARED_MEMORY_HOOKS_H_
|