Index: jni/JniCallbacks.h |
diff --git a/jni/JniCallbacks.h b/jni/JniCallbacks.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..38e520bc53732fe3ca0bb68a093426be5f0556f6 |
--- /dev/null |
+++ b/jni/JniCallbacks.h |
@@ -0,0 +1,93 @@ |
+/* |
+ * This file is part of Adblock Plus <http://adblockplus.org/>, |
+ * Copyright (C) 2006-2014 Eyeo GmbH |
+ * |
+ * Adblock Plus is free software: you can redistribute it and/or modify |
+ * it under the terms of the GNU General Public License version 3 as |
+ * published by the Free Software Foundation. |
+ * |
+ * Adblock Plus is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+#ifndef JNICALLBACKS_H |
+#define JNICALLBACKS_H |
+ |
+#include <AdblockPlus.h> |
+#include "Utils.h" |
+#include "JniJsValue.h" |
+ |
+class JniCallbackBase |
+{ |
+public: |
+ JniCallbackBase(JNIEnv* env, jobject callbackObject); |
+ virtual ~JniCallbackBase(); |
+ void LogException(JNIEnv* env, jthrowable throwable) const; |
+ void CheckAndLogJavaException(JNIEnv* env) const; |
+ |
+ JavaVM* GetJavaVM() const |
+ { |
+ return javaVM; |
+ } |
+ |
+ jobject GetCallbackObject() const |
+ { |
+ return callbackObject->Get(); |
+ } |
+ |
+private: |
+ JavaVM* javaVM; |
+ JniGlobalReference<jobject>::Ptr callbackObject; |
+ JniGlobalReference<jclass>::Ptr exceptionLoggerClass; |
+}; |
+ |
+class JniEventCallback : public JniCallbackBase |
+{ |
+public: |
+ JniEventCallback(JNIEnv* env, jobject callbackObject); |
+ void Callback(AdblockPlus::JsValueList& params); |
+}; |
+ |
+class JniUpdaterCallback : public JniCallbackBase |
+{ |
+public: |
+ JniUpdaterCallback(JNIEnv* env, jobject callbackObject); |
+ void Callback(const std::string& arg); |
+}; |
+ |
+class JniFilterChangeCallback : public JniCallbackBase |
+{ |
+public: |
+ JniFilterChangeCallback(JNIEnv* env, jobject callbackObject); |
+ void Callback(const std::string& arg, const AdblockPlus::JsValuePtr jsValue); |
+}; |
+ |
+class JniLogSystemCallback : public JniCallbackBase, public AdblockPlus::LogSystem |
+{ |
+public: |
+ JniLogSystemCallback(JNIEnv* env, jobject callbackObject); |
+ void operator()(AdblockPlus::LogSystem::LogLevel logLevel, const std::string& message, const std::string& source); |
+ |
+private: |
+ JniGlobalReference<jclass>::Ptr logLevelClass; |
+}; |
+ |
+class JniWebRequest : public JniCallbackBase, public AdblockPlus::WebRequest |
+{ |
+public: |
+ JniWebRequest(JNIEnv* env, jobject callbackObject); |
+ AdblockPlus::ServerResponse GET(const std::string& url, const AdblockPlus::HeaderList& requestHeaders) const; |
+ |
+private: |
+ jobject NewTuple(JNIEnv* env, const std::string& a, const std::string& b) const; |
+ |
+ JniGlobalReference<jclass>::Ptr tupleClass; |
+ JniGlobalReference<jclass>::Ptr serverResponseClass; |
+}; |
+ |
+#endif /* JNICALLBACKS_H */ |