Chromium Code Reviews| Index: chrome/browser/conflicts/module_event_sink_impl_win.h |
| diff --git a/chrome/browser/conflicts/module_event_sink_impl_win.h b/chrome/browser/conflicts/module_event_sink_impl_win.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9099c7a40fcb66763811bda3034acab04ed9273b |
| --- /dev/null |
| +++ b/chrome/browser/conflicts/module_event_sink_impl_win.h |
| @@ -0,0 +1,62 @@ |
| +// Copyright 2016 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_BROWSER_CONFLICTS_MODULE_EVENT_SINK_IMPL_WIN_H_ |
| +#define CHROME_BROWSER_CONFLICTS_MODULE_EVENT_SINK_IMPL_WIN_H_ |
| + |
| +#include "base/process/process_handle.h" |
| +#include "chrome/common/conflicts/module_event_sink_win.mojom.h" |
| +#include "content/public/common/process_type.h" |
| + |
| +class ModuleDatabase; |
| + |
| +// Implementation of the mojom::ModuleEventSink interface. This is the endpoint |
| +// in the browser process. This redirects calls to the singleton ModuleDatabase |
| +// object. |
| +class ModuleEventSinkImpl : public mojom::ModuleEventSink { |
| + public: |
| + // Creates a service endpoint that forwards notifications from the remote |
| + // |process| of the provided |process_type| to the provided |module_database|. |
| + // The |module_database| must outlive this object. |
| + explicit ModuleEventSinkImpl(base::ProcessHandle process, |
|
grt (UTC plus 2)
2016/12/20 11:11:35
nit: no explicit
chrisha
2016/12/20 19:46:24
Done.
|
| + content::ProcessType process_type, |
| + ModuleDatabase* module_database); |
| + ~ModuleEventSinkImpl() override; |
| + |
| + // Factory function for use with service_manager::InterfaceRegistry. This |
| + // creates a concrete implementation of mojom::ModuleDatabase interface in the |
| + // current process, for the remote process represented by the provided |
| + // |request|. This should only be called on the UI thread. |
| + static void Create(base::ProcessHandle process, |
| + content::ProcessType process_type, |
| + ModuleDatabase* module_database, |
| + mojom::ModuleEventSinkRequest request); |
| + |
| + // mojom::ModuleEventSink implementation: |
| + void OnModuleEvent(mojom::ModuleEventType event_type, |
| + uint64_t load_address) override; |
| + |
| + private: |
| + friend class ModuleEventSinkImplTest; |
| + |
| + // OnModuleEvent reroutes to these two functions depending on the event |
|
grt (UTC plus 2)
2016/12/20 11:11:35
reroutes or just routes? how about dispatches or c
chrisha
2016/12/20 19:46:24
Done.
|
| + // type. |
| + void OnModuleLoad(mojom::ModuleEventType event_type, uint64_t load_address); |
| + void OnModuleUnload(uint64_t load_address); |
| + |
| + // A handle to the process on the other side of the pipe. |
| + base::ProcessHandle process_; |
| + |
| + // The module database this forwards events to. The |module_database| must |
| + // outlive this object. |
| + ModuleDatabase* module_database_; |
| + |
| + // The process ID of the remote process on the other end of the pipe. This is |
| + // forwarded along to the ModuleDatabase for each call. |
| + uint32_t process_id_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ModuleEventSinkImpl); |
| +}; |
| + |
| +#endif // CHROME_BROWSER_CONFLICTS_MODULE_EVENT_SINK_IMPL_WIN_H_ |