Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1210)

Unified Diff: services/ui/input_manager/input_associate.h

Issue 1776473005: Mozart: Implement basic input event dispatch with hit testing. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-7
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « services/ui/input_manager/BUILD.gn ('k') | services/ui/input_manager/input_associate.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/input_manager/input_associate.h
diff --git a/services/ui/input_manager/input_associate.h b/services/ui/input_manager/input_associate.h
index 3459eed5bd07071e00df10b909caff286f119a46..b5ff3ce558cdb451fcfaba98baa91df7b282b95c 100644
--- a/services/ui/input_manager/input_associate.h
+++ b/services/ui/input_manager/input_associate.h
@@ -5,55 +5,28 @@
#ifndef SERVICES_UI_INPUT_MANAGER_INPUT_ASSOCIATE_IMPL_H_
#define SERVICES_UI_INPUT_MANAGER_INPUT_ASSOCIATE_IMPL_H_
+#include <memory>
+#include <unordered_map>
+
#include "base/macros.h"
-#include "mojo/common/strong_binding_set.h"
-#include "mojo/services/ui/input/interfaces/input_connection.mojom.h"
-#include "mojo/services/ui/input/interfaces/input_dispatcher.mojom.h"
#include "mojo/services/ui/views/interfaces/view_associates.mojom.h"
+#include "mojo/ui/associates/view_inspector_client.h"
+#include "services/ui/input_manager/input_connection_impl.h"
+#include "services/ui/input_manager/input_dispatcher_impl.h"
namespace input_manager {
+class ViewTreeHitTester;
+
// InputManager's ViewAssociate interface implementation.
class InputAssociate : public mojo::ui::ViewAssociate {
public:
InputAssociate();
~InputAssociate() override;
- private:
- // InputConnection implementation.
- // Binds incoming requests to the relevant view token.
- class InputConnectionImpl : public mojo::ui::InputConnection {
- public:
- InputConnectionImpl(InputAssociate* associate,
- mojo::ui::ViewTokenPtr view_token);
- ~InputConnectionImpl() override;
-
- private:
- void SetListener(
- mojo::InterfaceHandle<mojo::ui::InputListener> listener) override;
-
- InputAssociate* const associate_;
- mojo::ui::ViewTokenPtr view_token_;
-
- DISALLOW_COPY_AND_ASSIGN(InputConnectionImpl);
- };
-
- // InputDispatcher implementation.
- // Binds incoming requests to the relevant view token.
- class InputDispatcherImpl : public mojo::ui::InputDispatcher {
- public:
- InputDispatcherImpl(InputAssociate* associate,
- mojo::ui::ViewTreeTokenPtr view_tree_token);
- ~InputDispatcherImpl() override;
-
- private:
- void DispatchEvent(mojo::EventPtr event) override;
-
- InputAssociate* const associate_;
- mojo::ui::ViewTreeTokenPtr view_tree_token_;
-
- DISALLOW_COPY_AND_ASSIGN(InputDispatcherImpl);
- };
+ const scoped_refptr<mojo::ui::ViewInspectorClient>& inspector() {
+ return inspector_;
+ }
// |ViewAssociate|:
void Connect(mojo::InterfaceHandle<mojo::ui::ViewInspector> inspector,
@@ -67,19 +40,27 @@ class InputAssociate : public mojo::ui::ViewAssociate {
const mojo::String& service_name,
mojo::ScopedMessagePipeHandle client_handle) override;
- // Incoming service calls.
- void SetListener(mojo::ui::ViewToken* view_token,
- mojo::InterfaceHandle<mojo::ui::InputListener> listener);
- void DispatchEvent(mojo::ui::ViewTreeToken* view_tree_token,
- mojo::EventPtr event);
+ // Delivers an event to a view.
+ void DeliverEvent(const mojo::ui::ViewToken* view_token,
+ mojo::EventPtr event);
// Callbacks.
- void OnEventFinished(bool handled);
+ void OnInputConnectionDied(InputConnectionImpl* connection);
+ void OnInputDispatcherDied(InputDispatcherImpl* dispatcher);
- mojo::StrongBindingSet<mojo::ui::InputConnection> input_connections_;
- mojo::StrongBindingSet<mojo::ui::InputDispatcher> input_dispatchers_;
+ private:
+ void CreateInputConnection(
+ mojo::ui::ViewTokenPtr view_token,
+ mojo::InterfaceRequest<mojo::ui::InputConnection> request);
+ void CreateInputDispatcher(
+ mojo::ui::ViewTreeTokenPtr view_tree_token,
+ mojo::InterfaceRequest<mojo::ui::InputDispatcher> request);
- mojo::ui::InputListenerPtr listener_;
+ scoped_refptr<mojo::ui::ViewInspectorClient> inspector_;
+ std::unordered_map<uint32_t, std::unique_ptr<InputConnectionImpl>>
+ input_connections_by_view_token_;
+ std::unordered_map<uint32_t, std::unique_ptr<InputDispatcherImpl>>
+ input_dispatchers_by_view_tree_token_;
DISALLOW_COPY_AND_ASSIGN(InputAssociate);
};
« no previous file with comments | « services/ui/input_manager/BUILD.gn ('k') | services/ui/input_manager/input_associate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698