blob: 7060432a5f53bb5e364da57e9178bedc49016a9f [file] [log] [blame]
// Copyright 2019 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_CHROME_CLEANER_ENGINES_BROKER_ENGINE_REQUESTS_IMPL_H_
#define CHROME_CHROME_CLEANER_ENGINES_BROKER_ENGINE_REQUESTS_IMPL_H_
#include <vector>
#include "base/process/process_handle.h"
#include "base/strings/string16.h"
#include "chrome/chrome_cleaner/engines/broker/interface_metadata_observer.h"
#include "chrome/chrome_cleaner/interfaces/engine_requests.mojom.h"
#include "chrome/chrome_cleaner/ipc/mojo_task_runner.h"
#include "chrome/chrome_cleaner/strings/string16_embedded_nulls.h"
#include "mojo/public/cpp/bindings/associated_binding.h"
namespace chrome_cleaner {
class EngineRequestsImpl : public mojom::EngineRequests {
public:
EngineRequestsImpl(scoped_refptr<MojoTaskRunner> mojo_task_runner,
InterfaceMetadataObserver* metadata_observer = nullptr);
~EngineRequestsImpl() override;
void Bind(mojom::EngineRequestsAssociatedPtrInfo* ptr_info);
// mojom::EngineRequests
void SandboxGetKnownFolderPath(
mojom::KnownFolder folder_id,
SandboxGetKnownFolderPathCallback result_callback) override;
void SandboxGetProcesses(
SandboxGetProcessesCallback result_callback) override;
void SandboxGetTasks(SandboxGetTasksCallback result_callback) override;
void SandboxGetProcessImagePath(
base::ProcessId pid,
SandboxGetProcessImagePathCallback result_callback) override;
void SandboxGetLoadedModules(
base::ProcessId pid,
SandboxGetLoadedModulesCallback result_callback) override;
void SandboxGetProcessCommandLine(
base::ProcessId pid,
SandboxGetProcessCommandLineCallback result_callback) override;
void SandboxGetUserInfoFromSID(
mojom::StringSidPtr string_sid,
SandboxGetUserInfoFromSIDCallback result_callback) override;
void SandboxOpenReadOnlyRegistry(
HANDLE root_key_handle,
const base::string16& sub_key,
uint32_t dw_access,
SandboxOpenReadOnlyRegistryCallback result_callback) override;
void SandboxNtOpenReadOnlyRegistry(
HANDLE root_key_handle,
const String16EmbeddedNulls& sub_key,
uint32_t dw_access,
SandboxNtOpenReadOnlyRegistryCallback result_callback) override;
private:
void GetKnownFolderPath(mojom::KnownFolder folder_id,
SandboxGetKnownFolderPathCallback result_callback);
void GetProcesses(SandboxGetProcessesCallback result_callback);
void GetTasks(SandboxGetTasksCallback result_callback);
void GetProcessImagePath(base::ProcessId pid,
SandboxGetProcessImagePathCallback result_callback);
void GetLoadedModules(base::ProcessId pid,
SandboxGetLoadedModulesCallback result_callback);
void GetProcessCommandLine(
base::ProcessId pid,
SandboxGetProcessCommandLineCallback result_callback);
void GetUserInfoFromSID(mojom::StringSidPtr string_sid,
SandboxGetUserInfoFromSIDCallback result_callback);
void OpenReadOnlyRegistry(
HANDLE root_key_handle,
const base::string16& sub_key,
uint32_t dw_access,
SandboxOpenReadOnlyRegistryCallback result_callback);
void NtOpenReadOnlyRegistry(
HANDLE root_key_handle,
const String16EmbeddedNulls& sub_key,
uint32_t dw_access,
SandboxNtOpenReadOnlyRegistryCallback result_callback);
scoped_refptr<MojoTaskRunner> mojo_task_runner_;
InterfaceMetadataObserver* metadata_observer_ = nullptr;
mojo::AssociatedBinding<mojom::EngineRequests> binding_;
};
} // namespace chrome_cleaner
#endif // CHROME_CHROME_CLEANER_ENGINES_BROKER_ENGINE_REQUESTS_IMPL_H_