[EFL][WK2] Add Remote Web Inspector
[WebKit.git] / Source / WebKit2 / UIProcess / efl / WebContextEfl.cpp
index a3d4725..c71a93c 100644 (file)
 
 #include "config.h"
 #include "WebContext.h"
+
+#include "Logging.h"
+#include "WebInspectorServer.h"
 #include "WebProcessCreationParameters.h"
 #include "WebSoupRequestManagerProxy.h"
-
 #include <Efreet.h>
 #include <WebCore/ApplicationCacheStorage.h>
 #include <WebCore/IconDatabase.h>
 
 namespace WebKit {
 
+static void initializeInspectorServer()
+{
+#if ENABLE(INSPECTOR_SERVER)
+    static bool initialized = false;
+    if (initialized)
+        return;
+
+    // It should be set to true always.
+    // Because it is to ensure initializeInspectorServer() is executed only once,
+    // even if the server fails to run.
+    initialized = true;
+
+    String serverAddress(getenv("WEBKIT_INSPECTOR_SERVER"));
+    if (!serverAddress.isNull()) {
+        String bindAddress = ASCIILiteral("127.0.0.1");
+        unsigned short port = 2999;
+
+        Vector<String> result;
+        serverAddress.split(':', result);
+
+        if (result.size() == 2) {
+            bindAddress = result[0];
+            bool ok = false;
+            port = result[1].toUInt(&ok);
+            if (!ok) {
+                port = 2999;
+                LOG_ERROR("Couldn't parse the port. Using 2999 instead.");
+            }
+        } else
+            LOG_ERROR("Couldn't parse %s, wrong format? Using 127.0.0.1:2999 instead.", serverAddress.utf8().data());
+
+        if (!WebInspectorServer::shared().listen(bindAddress, port))
+            LOG_ERROR("Couldn't start listening on: IP address=%s, port=%d.", bindAddress.utf8().data(), port);
+
+        return;
+    }
+
+    LOG(InspectorServer, "To start inspector server set WEBKIT_INSPECTOR_SERVER to 127.0.0.1:2999 for example.");
+#endif
+}
+
 String WebContext::applicationCacheDirectory()
 {
     return String::fromUTF8(efreet_cache_home_get()) + "/WebKitEfl/Applications";
@@ -42,6 +85,8 @@ String WebContext::applicationCacheDirectory()
 
 void WebContext::platformInitializeWebProcess(WebProcessCreationParameters& parameters)
 {
+    initializeInspectorServer();
+
     parameters.urlSchemesRegistered = m_soupRequestManagerProxy->registeredURISchemes();
 }