diff --git a/cordova-plugin-whitelist/plugin.xml b/cordova-plugin-whitelist/plugin.xml
index 71f49ae..49ea5fd 100644
--- a/cordova-plugin-whitelist/plugin.xml
+++ b/cordova-plugin-whitelist/plugin.xml
@@ -50,6 +50,12 @@
         <source-file src="src/android/WhitelistAPI.java" target-dir="src/org/apache/cordova/test" />
     </platform>
 
+    <!-- ubuntu -->
+    <platform name="ubuntu">
+        <header-file src="src/ubuntu/whitelist.h" />
+        <source-file src="src/ubuntu/whitelist.cpp" />
+    </platform>
+
     <!-- ios -->
     <platform name="ios">
         <config-file target="config.xml" parent="/*">
diff --git a/cordova-plugin-whitelist/src/ubuntu/whitelist.cpp b/cordova-plugin-whitelist/src/ubuntu/whitelist.cpp
new file mode 100644
index 0000000..4d37a61
--- /dev/null
+++ b/cordova-plugin-whitelist/src/ubuntu/whitelist.cpp
@@ -0,0 +1,35 @@
+/*
+ *  Copyright 2014 Canonical Ltd.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+#include "whitelist.h"
+#include <cordova_whitelist.hpp>
+
+Whitelist::Whitelist(Cordova *cordova): CPlugin(cordova) {
+}
+
+void Whitelist::URLMatchesPatterns(int scId, int ecId, const QString &url, const QList<QString> &patterns) {
+    CordovaInternal::WhiteList whitelist;
+    for (const QString &pattern: patterns) {
+        whitelist.addWhiteListEntry(pattern, false);
+    }
+    bool isAllowed = whitelist.isUrlWhiteListed(url);
+    cb(scId, isAllowed);
+}
+
+void Whitelist::URLIsAllowed(int scId, int ecId, const QString &url) {
+    bool isAllowed = m_cordova->config().whitelist().isUrlWhiteListed(url);
+    cb(scId, isAllowed);
+}
diff --git a/cordova-plugin-whitelist/src/ubuntu/whitelist.h b/cordova-plugin-whitelist/src/ubuntu/whitelist.h
new file mode 100644
index 0000000..ecf2228
--- /dev/null
+++ b/cordova-plugin-whitelist/src/ubuntu/whitelist.h
@@ -0,0 +1,46 @@
+/*
+ *  Copyright 2014 Canonical Ltd.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+#ifndef WHITELIST_HKJBNNB90NM53452
+#define WHITELIST_HKJBNNB90NM53452
+
+#include <QtCore>
+
+#include <cplugin.h>
+#include <cordova.h>
+
+class Whitelist: public CPlugin {
+    Q_OBJECT
+public:
+    explicit Whitelist(Cordova *cordova);
+
+    virtual const QString fullName() override {
+        return Whitelist::fullID();
+    }
+
+    virtual const QString shortName() override {
+        return Whitelist::fullID();
+    }
+
+    static const QString fullID() {
+        return "WhitelistAPI";
+    }
+public slots:
+    void URLMatchesPatterns(int scId, int ecId, const QString &url, const QList<QString> &patterns);
+    void URLIsAllowed(int scId, int ecId, const QString &url);
+};
+
+#endif
