summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Braun2010-10-11 09:02:38 +0200
committerSebastien Braun2010-10-11 09:02:38 +0200
commit732b9cfec697e893fcf5b65e1e7c9e5921ea5951 (patch)
tree3374393a9768ac97831f13e157fb7a8a9e0f329d
parentAdd access control check to input event handling in PVS daemon (diff)
downloadpvs-732b9cfec697e893fcf5b65e1e7c9e5921ea5951.tar.gz
pvs-732b9cfec697e893fcf5b65e1e7c9e5921ea5951.tar.xz
pvs-732b9cfec697e893fcf5b65e1e7c9e5921ea5951.zip
Introduce LogNonMatchingHandler
-rw-r--r--src/input/CMakeLists.txt1
-rw-r--r--src/input/logNonMatchingHandler.cpp27
-rw-r--r--src/input/logNonMatchingHandler.h33
-rw-r--r--src/input/unprivilegedInputHandlerChain.cpp4
4 files changed, 64 insertions, 1 deletions
diff --git a/src/input/CMakeLists.txt b/src/input/CMakeLists.txt
index d950c67..b4dfa4d 100644
--- a/src/input/CMakeLists.txt
+++ b/src/input/CMakeLists.txt
@@ -4,6 +4,7 @@ set(pvsinput_SRCS
inputEvent.cpp
unprivilegedInputHandlerChain.cpp
inputEventHandler.cpp
+ logNonMatchingHandler.cpp
)
set(feature_DEFS)
diff --git a/src/input/logNonMatchingHandler.cpp b/src/input/logNonMatchingHandler.cpp
new file mode 100644
index 0000000..dd694fc
--- /dev/null
+++ b/src/input/logNonMatchingHandler.cpp
@@ -0,0 +1,27 @@
+/*
+# Copyright (c) 2009 - OpenSLX Project, Computer Center University of Freiburg
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# src/input/nonMatchingHandler.cpp:
+# - Log events that were not matched by another handler - implementation
+# -----------------------------------------------------------------------------
+*/
+
+#include "logNonMatchingHandler.h"
+#include <QtDebug>
+
+void LogNonMatchingHandler::doHandle(InputEvent const& event, InputEventContext const* context)
+{
+ // It's not really nonmatched if it has already been denied
+ if(!context->hasBeenDenied)
+ {
+ qWarning("No matching handler found for event %s", event.toString().toLocal8Bit().constData());
+ }
+}
diff --git a/src/input/logNonMatchingHandler.h b/src/input/logNonMatchingHandler.h
new file mode 100644
index 0000000..3403640
--- /dev/null
+++ b/src/input/logNonMatchingHandler.h
@@ -0,0 +1,33 @@
+/*
+# Copyright (c) 2009 - OpenSLX Project, Computer Center University of Freiburg
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# src/input/nonMatchingHandler.h:
+# - Log events that were not matched by another handler - interface
+# -----------------------------------------------------------------------------
+*/
+
+#ifndef LOGNONMATCHINGHANDLER_H_
+#define LOGNONMATCHINGHANDLER_H_
+
+#include "inputEventHandler.h"
+
+class LogNonMatchingHandler : public InputEventHandler<input_policy::Unprivileged>
+{
+public:
+ bool isApplicable(InputEvent const&, InputEventContext const*)
+ {
+ return true;
+ }
+
+ void doHandle(InputEvent const&, InputEventContext const*);
+};
+
+#endif /* LOGNONMATCHINGHANDLER_H_ */
diff --git a/src/input/unprivilegedInputHandlerChain.cpp b/src/input/unprivilegedInputHandlerChain.cpp
index 2df2d77..3f47631 100644
--- a/src/input/unprivilegedInputHandlerChain.cpp
+++ b/src/input/unprivilegedInputHandlerChain.cpp
@@ -20,6 +20,7 @@
#include "privilegedHandlerForwarder.h"
#include "incompatibleHandler.h"
#include "inputHandlerChains.h"
+#include "logNonMatchingHandler.h"
InputEventHandlerChain makeUnprivilegedInputEventHandlerChain()
{
@@ -27,6 +28,7 @@ InputEventHandlerChain makeUnprivilegedInputEventHandlerChain()
.add<X11FakeMouseButtonHandler>()
.add<X11FakeMouseMovementHandler>()
.add<PrivilegedHandlerForwarder>()
- .add<IncompatibleHandler>(); // See comments in incompatibleHandler.h
+ .add<IncompatibleHandler>() // See comments in incompatibleHandler.h
+ .add<LogNonMatchingHandler>();
}