Allow unregistered applications in rba
[src/agl-compositor.git] / src / rba_adapter.cpp
index 0583f92..0609ac9 100644 (file)
@@ -28,6 +28,8 @@
 #include <unistd.h>
 
 #include "rba_adapter.h"
+#include "ivi-compositor.h"
+#include <libweston/config-parser.h>
 #include <libweston/libweston.h>
 
 #include "RBAJsonParser.hpp"
@@ -63,15 +65,26 @@ bool rba_adapter_initialize(void)
        return true;
 }
 
-bool rba_adapter_arbitrate(const char *app_id)
+bool rba_adapter_arbitrate(const char *app_id, struct ivi_compositor *ivi)
 {
+       bool allow_unregistred_app;
+       struct weston_config_section *section;
        string id(app_id);
 
        result = arb->execute(id+ "/NORMAL", true);
+       section = weston_config_get_section(ivi->config, "core", NULL, NULL);
+       weston_config_section_get_bool(section, "allow_unregistred_app",
+                                      &allow_unregistred_app, false);
 
        if (result->getStatusType() == rba::RBAResultStatusType::UNKNOWN_CONTENT_STATE) {
                weston_log("ERROR: Unknown context app: %s\n", app_id);
-               return false;
+               if(allow_unregistred_app) {
+                       result = arb->execute("unknown_app/NORMAL", true);
+                       weston_log("!!! WARNING !!! Allowed unknown application to open as allow_unregistred_app is set to 1 in config file.\n");
+                       weston_log("!!! WARNING !!! allow_unregistred_app should be disabled for release build.\n");
+               } else {
+                       return false;
+               }
        }
        if (result->getStatusType() == rba::RBAResultStatusType::FAILED ||
            result->getStatusType() == rba::RBAResultStatusType::CANCEL_ERROR) {