browser(webkit): fix geo crash, exit main loop upon close (#435)
This commit is contained in:
parent
9c90eed90c
commit
e13161c894
|
|
@ -1 +1 @@
|
||||||
1076
|
1077
|
||||||
|
|
|
||||||
|
|
@ -4854,7 +4854,7 @@ index 2bdb8b9e7256f22096ebaa5d51959aa52389ca0a..2141d9d17497861a6c711f99306de109
|
||||||
|
|
||||||
diff --git a/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspector.cpp b/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspector.cpp
|
diff --git a/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspector.cpp b/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspector.cpp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..4514f00de0b27620cd170d6ed9b361a3e1506fb1
|
index 0000000000000000000000000000000000000000..70081db72e035ca99c0279ab02da5cfed9256c57
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspector.cpp
|
+++ b/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspector.cpp
|
||||||
@@ -0,0 +1,136 @@
|
@@ -0,0 +1,136 @@
|
||||||
|
|
@ -4988,10 +4988,10 @@ index 0000000000000000000000000000000000000000..4514f00de0b27620cd170d6ed9b361a3
|
||||||
+ * Creates browser inspector and configures pipe handler to communicate with
|
+ * Creates browser inspector and configures pipe handler to communicate with
|
||||||
+ * the parent process.
|
+ * the parent process.
|
||||||
+ */
|
+ */
|
||||||
+void webkit_browser_inspector_initialize_pipe(void)
|
+void webkit_browser_inspector_initialize_pipe(GMainLoop* mainLoop)
|
||||||
+{
|
+{
|
||||||
+#if ENABLE(REMOTE_INSPECTOR)
|
+#if ENABLE(REMOTE_INSPECTOR)
|
||||||
+ WebKit::initializeBrowserInspectorPipe(makeUnique<WebKit::InspectorBrowserAgentClientGlib>());
|
+ WebKit::initializeBrowserInspectorPipe(makeUnique<WebKit::InspectorBrowserAgentClientGlib>(mainLoop));
|
||||||
+#endif
|
+#endif
|
||||||
+}
|
+}
|
||||||
diff --git a/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspectorPrivate.h b/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspectorPrivate.h
|
diff --git a/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspectorPrivate.h b/Source/WebKit/UIProcess/API/glib/WebKitBrowserInspectorPrivate.h
|
||||||
|
|
@ -5179,7 +5179,7 @@ index b1252daf7423bb66a177b5d028563e389b73802a..3edc383f6d7bbc1b43a7b4937eee03c4
|
||||||
webkitWebViewBaseForwardNextKeyEvent(webkitWebViewBase);
|
webkitWebViewBaseForwardNextKeyEvent(webkitWebViewBase);
|
||||||
diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitBrowserInspector.h b/Source/WebKit/UIProcess/API/gtk/WebKitBrowserInspector.h
|
diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitBrowserInspector.h b/Source/WebKit/UIProcess/API/gtk/WebKitBrowserInspector.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..f933c3479cdb49544fe7c1b22c8b00b052af7fe5
|
index 0000000000000000000000000000000000000000..a51cfebc270ca5a91cd94645eeeb005ba9a67caf
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/API/gtk/WebKitBrowserInspector.h
|
+++ b/Source/WebKit/UIProcess/API/gtk/WebKitBrowserInspector.h
|
||||||
@@ -0,0 +1,79 @@
|
@@ -0,0 +1,79 @@
|
||||||
|
|
@ -5257,7 +5257,7 @@ index 0000000000000000000000000000000000000000..f933c3479cdb49544fe7c1b22c8b00b0
|
||||||
+webkit_browser_inspector_get_default (void);
|
+webkit_browser_inspector_get_default (void);
|
||||||
+
|
+
|
||||||
+WEBKIT_API void
|
+WEBKIT_API void
|
||||||
+webkit_browser_inspector_initialize_pipe (void);
|
+webkit_browser_inspector_initialize_pipe (GMainLoop*);
|
||||||
+
|
+
|
||||||
+G_END_DECLS
|
+G_END_DECLS
|
||||||
+
|
+
|
||||||
|
|
@ -5276,7 +5276,7 @@ index 930b17b6629e04d0dfa2222bbc3217877c6e1812..395462e5f01c195231e9296d1204167c
|
||||||
#include <webkit2/WebKitContextMenuItem.h>
|
#include <webkit2/WebKitContextMenuItem.h>
|
||||||
diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h b/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h
|
diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h b/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..b9392bc9f232f1f8a5be1e9668ec31e11bd8e3f8
|
index 0000000000000000000000000000000000000000..6dffa4fa10a9a64f778a0a77c760c2e76b2f9968
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h
|
+++ b/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h
|
||||||
@@ -0,0 +1,79 @@
|
@@ -0,0 +1,79 @@
|
||||||
|
|
@ -5354,7 +5354,7 @@ index 0000000000000000000000000000000000000000..b9392bc9f232f1f8a5be1e9668ec31e1
|
||||||
+webkit_browser_inspector_get_default (void);
|
+webkit_browser_inspector_get_default (void);
|
||||||
+
|
+
|
||||||
+WEBKIT_API void
|
+WEBKIT_API void
|
||||||
+webkit_browser_inspector_initialize_pipe (void);
|
+webkit_browser_inspector_initialize_pipe (GMainLoop*);
|
||||||
+
|
+
|
||||||
+G_END_DECLS
|
+G_END_DECLS
|
||||||
+
|
+
|
||||||
|
|
@ -8089,12 +8089,98 @@ index b7c955a5f3ebe5805ad7095bc06878e128d11568..ab65f14db987e4e03e0474c9127efad6
|
||||||
bool m_ignoreTLSErrors { true };
|
bool m_ignoreTLSErrors { true };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
diff --git a/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp b/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp
|
||||||
|
index dba2a990d15683216a6fa90a48eb30eebd3c526f..6a8afc7c206765670d25152f7b6a1aa7e5563a27 100644
|
||||||
|
--- a/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp
|
||||||
|
+++ b/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.cpp
|
||||||
|
@@ -55,10 +55,11 @@ void GeoclueGeolocationProvider::start(UpdateNotifyFunction&& updateNotifyFuncti
|
||||||
|
m_destroyManagerLaterTimer.stop();
|
||||||
|
m_updateNotifyFunction = WTFMove(updateNotifyFunction);
|
||||||
|
m_isRunning = true;
|
||||||
|
-
|
||||||
|
if (!m_manager) {
|
||||||
|
+ g_cancellable_cancel(m_cancellable_start.get());
|
||||||
|
+ m_cancellable_start = adoptGRef(g_cancellable_new());
|
||||||
|
g_dbus_proxy_new_for_bus(G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, nullptr,
|
||||||
|
- "org.freedesktop.GeoClue2", "/org/freedesktop/GeoClue2/Manager", "org.freedesktop.GeoClue2.Manager", nullptr,
|
||||||
|
+ "org.freedesktop.GeoClue2", "/org/freedesktop/GeoClue2/Manager", "org.freedesktop.GeoClue2.Manager", m_cancellable_start.get(),
|
||||||
|
[](GObject*, GAsyncResult* result, gpointer userData) {
|
||||||
|
auto& provider = *static_cast<GeoclueGeolocationProvider*>(userData);
|
||||||
|
GUniqueOutPtr<GError> error;
|
||||||
|
@@ -84,6 +85,12 @@ void GeoclueGeolocationProvider::stop()
|
||||||
|
m_updateNotifyFunction = nullptr;
|
||||||
|
g_cancellable_cancel(m_cancellable.get());
|
||||||
|
stopClient();
|
||||||
|
+ g_cancellable_cancel(m_cancellable_start.get());
|
||||||
|
+ m_cancellable_start = nullptr;
|
||||||
|
+ g_cancellable_cancel(m_cancellable_setup.get());
|
||||||
|
+ m_cancellable_setup = nullptr;
|
||||||
|
+ g_cancellable_cancel(m_cancellable_create.get());
|
||||||
|
+ m_cancellable_create = nullptr;
|
||||||
|
destroyManagerLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -121,7 +128,9 @@ void GeoclueGeolocationProvider::setupManager(GRefPtr<GDBusProxy>&& proxy)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- g_dbus_proxy_call(m_manager.get(), "CreateClient", nullptr, G_DBUS_CALL_FLAGS_NONE, -1, nullptr,
|
||||||
|
+ g_cancellable_cancel(m_cancellable_setup.get());
|
||||||
|
+ m_cancellable_setup = adoptGRef(g_cancellable_new());
|
||||||
|
+ g_dbus_proxy_call(m_manager.get(), "CreateClient", nullptr, G_DBUS_CALL_FLAGS_NONE, -1, m_cancellable_setup.get(),
|
||||||
|
[](GObject* manager, GAsyncResult* result, gpointer userData) {
|
||||||
|
auto& provider = *static_cast<GeoclueGeolocationProvider*>(userData);
|
||||||
|
GUniqueOutPtr<GError> error;
|
||||||
|
@@ -143,8 +152,10 @@ void GeoclueGeolocationProvider::createClient(const char* clientPath)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ g_cancellable_cancel(m_cancellable_create.get());
|
||||||
|
+ m_cancellable_create = adoptGRef(g_cancellable_new());
|
||||||
|
g_dbus_proxy_new_for_bus(G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, nullptr,
|
||||||
|
- "org.freedesktop.GeoClue2", clientPath, "org.freedesktop.GeoClue2.Client", nullptr,
|
||||||
|
+ "org.freedesktop.GeoClue2", clientPath, "org.freedesktop.GeoClue2.Client", m_cancellable_create.get(),
|
||||||
|
[](GObject*, GAsyncResult* result, gpointer userData) {
|
||||||
|
auto& provider = *static_cast<GeoclueGeolocationProvider*>(userData);
|
||||||
|
GUniqueOutPtr<GError> error;
|
||||||
|
@@ -190,6 +201,7 @@ void GeoclueGeolocationProvider::startClient()
|
||||||
|
|
||||||
|
g_signal_connect(m_client.get(), "g-signal", G_CALLBACK(clientLocationUpdatedCallback), this);
|
||||||
|
|
||||||
|
+ g_cancellable_cancel(m_cancellable.get());
|
||||||
|
m_cancellable = adoptGRef(g_cancellable_new());
|
||||||
|
g_dbus_proxy_call(m_client.get(), "Start", nullptr, G_DBUS_CALL_FLAGS_NONE, -1, m_cancellable.get(),
|
||||||
|
[](GObject* client, GAsyncResult* result, gpointer userData) {
|
||||||
|
@@ -282,7 +294,8 @@ void GeoclueGeolocationProvider::locationUpdated(GRefPtr<GDBusProxy>&& proxy)
|
||||||
|
|
||||||
|
void GeoclueGeolocationProvider::didFail(CString errorMessage)
|
||||||
|
{
|
||||||
|
- m_updateNotifyFunction({ }, errorMessage);
|
||||||
|
+ if (m_updateNotifyFunction)
|
||||||
|
+ m_updateNotifyFunction({ }, errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace WebKit
|
||||||
|
diff --git a/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.h b/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.h
|
||||||
|
index 31d29091985f34a65134a2b0e7cb3ace1dae441d..571ceac8a4b291fa6e91eb8b17065c0aba908ac3 100644
|
||||||
|
--- a/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.h
|
||||||
|
+++ b/Source/WebKit/UIProcess/geoclue/GeoclueGeolocationProvider.h
|
||||||
|
@@ -71,6 +71,9 @@ private:
|
||||||
|
GRefPtr<GDBusProxy> m_manager;
|
||||||
|
GRefPtr<GDBusProxy> m_client;
|
||||||
|
GRefPtr<GCancellable> m_cancellable;
|
||||||
|
+ GRefPtr<GCancellable> m_cancellable_start;
|
||||||
|
+ GRefPtr<GCancellable> m_cancellable_setup;
|
||||||
|
+ GRefPtr<GCancellable> m_cancellable_create;
|
||||||
|
UpdateNotifyFunction m_updateNotifyFunction;
|
||||||
|
RunLoop::Timer<GeoclueGeolocationProvider> m_destroyManagerLaterTimer;
|
||||||
|
};
|
||||||
diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp
|
diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..92a1eb339c2b760e9c5e84dc76fe323845bd81ac
|
index 0000000000000000000000000000000000000000..6b7cc61fff69ea639f1ed6d2a824e4a765e5e80c
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp
|
+++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp
|
||||||
@@ -0,0 +1,125 @@
|
@@ -0,0 +1,131 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) 2019 Microsoft Corporation.
|
+ * Copyright (C) 2019 Microsoft Corporation.
|
||||||
+ *
|
+ *
|
||||||
|
|
@ -8159,7 +8245,8 @@ index 0000000000000000000000000000000000000000..92a1eb339c2b760e9c5e84dc76fe3238
|
||||||
+ page->closePage();
|
+ page->closePage();
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+InspectorBrowserAgentClientGlib::InspectorBrowserAgentClientGlib()
|
+InspectorBrowserAgentClientGlib::InspectorBrowserAgentClientGlib(GMainLoop* mainLoop)
|
||||||
|
+ : m_mainLoop(mainLoop)
|
||||||
+{
|
+{
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
|
@ -8186,7 +8273,12 @@ index 0000000000000000000000000000000000000000..92a1eb339c2b760e9c5e84dc76fe3238
|
||||||
+{
|
+{
|
||||||
+ closeAllPages(Optional<PAL::SessionID>());
|
+ closeAllPages(Optional<PAL::SessionID>());
|
||||||
+ m_idToContext.clear();
|
+ m_idToContext.clear();
|
||||||
+ // FIXME(yurys): call g_main_loop_quit() ?
|
+#if PLATFORM(GTK)
|
||||||
|
+ gtk_main_quit();
|
||||||
|
+#else
|
||||||
|
+ if (g_main_loop_quit)
|
||||||
|
+ g_main_loop_quit(m_mainLoop);
|
||||||
|
+#endif
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static PAL::SessionID sessionIDFromContext(WebKitWebContext* context)
|
+static PAL::SessionID sessionIDFromContext(WebKitWebContext* context)
|
||||||
|
|
@ -8222,10 +8314,10 @@ index 0000000000000000000000000000000000000000..92a1eb339c2b760e9c5e84dc76fe3238
|
||||||
+#endif // ENABLE(REMOTE_INSPECTOR)
|
+#endif // ENABLE(REMOTE_INSPECTOR)
|
||||||
diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h
|
diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..27c8a4dfb0008bcf190157a0b8a72b7282abd517
|
index 0000000000000000000000000000000000000000..6fcadb97ebe89699f29afc4dcac6065dbade9a3b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h
|
+++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h
|
||||||
@@ -0,0 +1,58 @@
|
@@ -0,0 +1,59 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) 2019 Microsoft Corporation.
|
+ * Copyright (C) 2019 Microsoft Corporation.
|
||||||
+ *
|
+ *
|
||||||
|
|
@ -8267,7 +8359,7 @@ index 0000000000000000000000000000000000000000..27c8a4dfb0008bcf190157a0b8a72b72
|
||||||
+class InspectorBrowserAgentClientGlib : public InspectorBrowserAgentClient {
|
+class InspectorBrowserAgentClientGlib : public InspectorBrowserAgentClient {
|
||||||
+ WTF_MAKE_FAST_ALLOCATED;
|
+ WTF_MAKE_FAST_ALLOCATED;
|
||||||
+public:
|
+public:
|
||||||
+ InspectorBrowserAgentClientGlib();
|
+ InspectorBrowserAgentClientGlib(GMainLoop* mainLoop);
|
||||||
+ ~InspectorBrowserAgentClientGlib() override = default;
|
+ ~InspectorBrowserAgentClientGlib() override = default;
|
||||||
+
|
+
|
||||||
+ RefPtr<WebPageProxy> createPage(WTF::String& error, PAL::SessionID) override;
|
+ RefPtr<WebPageProxy> createPage(WTF::String& error, PAL::SessionID) override;
|
||||||
|
|
@ -8279,6 +8371,7 @@ index 0000000000000000000000000000000000000000..27c8a4dfb0008bcf190157a0b8a72b72
|
||||||
+ WebKitWebContext* findContext(WTF::String& error, PAL::SessionID);
|
+ WebKitWebContext* findContext(WTF::String& error, PAL::SessionID);
|
||||||
+
|
+
|
||||||
+ HashMap<PAL::SessionID, GRefPtr<WebKitWebContext>> m_idToContext;
|
+ HashMap<PAL::SessionID, GRefPtr<WebKitWebContext>> m_idToContext;
|
||||||
|
+ GMainLoop* m_mainLoop;
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+} // namespace API
|
+} // namespace API
|
||||||
|
|
@ -9631,7 +9724,7 @@ index 1570d65effb5d601ee3c44a2a7461436f4691c2c..456f96cf589320efa70a76f76e230b67
|
||||||
|
|
||||||
typedef struct _BrowserWindow BrowserWindow;
|
typedef struct _BrowserWindow BrowserWindow;
|
||||||
diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c
|
diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c
|
||||||
index 4c5147dcd38a53e2feaeaae0fce38f92dc60eba6..be501274061102f805c43df37a67e4a1cf6d5494 100644
|
index 4c5147dcd38a53e2feaeaae0fce38f92dc60eba6..85d98782b2beef897221659631384ef379dfe87f 100644
|
||||||
--- a/Tools/MiniBrowser/gtk/main.c
|
--- a/Tools/MiniBrowser/gtk/main.c
|
||||||
+++ b/Tools/MiniBrowser/gtk/main.c
|
+++ b/Tools/MiniBrowser/gtk/main.c
|
||||||
@@ -53,6 +53,8 @@ static const char *cookiesFile;
|
@@ -53,6 +53,8 @@ static const char *cookiesFile;
|
||||||
|
|
@ -9676,7 +9769,7 @@ index 4c5147dcd38a53e2feaeaae0fce38f92dc60eba6..be501274061102f805c43df37a67e4a1
|
||||||
+ WebKitBrowserInspector* browserInspector = webkit_browser_inspector_get_default();
|
+ WebKitBrowserInspector* browserInspector = webkit_browser_inspector_get_default();
|
||||||
+ g_signal_connect(browserInspector, "create-new-page", G_CALLBACK(createNewPage), NULL);
|
+ g_signal_connect(browserInspector, "create-new-page", G_CALLBACK(createNewPage), NULL);
|
||||||
+
|
+
|
||||||
+ webkit_browser_inspector_initialize_pipe();
|
+ webkit_browser_inspector_initialize_pipe(NULL);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
|
|
@ -10254,7 +10347,7 @@ index 245f319abf2595e154d03e1ee8b3250d7f46aafd..9cae87b23deade7c163f34aade2b2aed
|
||||||
${WPEBACKEND_FDO_INCLUDE_DIRS}
|
${WPEBACKEND_FDO_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
diff --git a/Tools/MiniBrowser/wpe/main.cpp b/Tools/MiniBrowser/wpe/main.cpp
|
diff --git a/Tools/MiniBrowser/wpe/main.cpp b/Tools/MiniBrowser/wpe/main.cpp
|
||||||
index 2d183d394123bd84545dc51f53eb9be796fb8873..7e435b9b9bb3240042269e2ec47b77205de60ba1 100644
|
index 2d183d394123bd84545dc51f53eb9be796fb8873..ecc8708bcfb51dcc8f55a4fe3115c417d971600c 100644
|
||||||
--- a/Tools/MiniBrowser/wpe/main.cpp
|
--- a/Tools/MiniBrowser/wpe/main.cpp
|
||||||
+++ b/Tools/MiniBrowser/wpe/main.cpp
|
+++ b/Tools/MiniBrowser/wpe/main.cpp
|
||||||
@@ -25,7 +25,7 @@
|
@@ -25,7 +25,7 @@
|
||||||
|
|
@ -10291,7 +10384,7 @@ index 2d183d394123bd84545dc51f53eb9be796fb8873..7e435b9b9bb3240042269e2ec47b7720
|
||||||
return std::make_unique<WPEToolingBackends::WindowViewBackend>(width, height);
|
return std::make_unique<WPEToolingBackends::WindowViewBackend>(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,6 +174,52 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi
|
@@ -172,6 +174,46 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi
|
||||||
return newWebView;
|
return newWebView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -10328,28 +10421,22 @@ index 2d183d394123bd84545dc51f53eb9be796fb8873..7e435b9b9bb3240042269e2ec47b7720
|
||||||
+
|
+
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void closeAll(WebKitBrowserInspector*, GMainLoop* mainLoop)
|
+static void configureBrowserInspector(GMainLoop* mainLoop)
|
||||||
+{
|
|
||||||
+ g_main_loop_quit(mainLoop);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void configureBrowserInspector()
|
|
||||||
+{
|
+{
|
||||||
+ WebKitBrowserInspector* browserInspector = webkit_browser_inspector_get_default();
|
+ WebKitBrowserInspector* browserInspector = webkit_browser_inspector_get_default();
|
||||||
+ g_signal_connect(browserInspector, "create-new-page", G_CALLBACK(createNewPage), NULL);
|
+ g_signal_connect(browserInspector, "create-new-page", G_CALLBACK(createNewPage), NULL);
|
||||||
+ // FIXME: This signal is received only when closeAll is called. We should not rely on that.
|
+ webkit_browser_inspector_initialize_pipe(mainLoop);
|
||||||
+ webkit_browser_inspector_initialize_pipe();
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
#if ENABLE_DEVELOPER_MODE
|
#if ENABLE_DEVELOPER_MODE
|
||||||
@@ -280,6 +328,9 @@ int main(int argc, char *argv[])
|
@@ -280,6 +322,9 @@ int main(int argc, char *argv[])
|
||||||
delete static_cast<WPEToolingBackends::ViewBackend*>(data);
|
delete static_cast<WPEToolingBackends::ViewBackend*>(data);
|
||||||
}, backend.release());
|
}, backend.release());
|
||||||
|
|
||||||
+ if (inspectorPipe)
|
+ if (inspectorPipe)
|
||||||
+ configureBrowserInspector();
|
+ configureBrowserInspector(loop);
|
||||||
+
|
+
|
||||||
auto* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
|
auto* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
|
||||||
"backend", viewBackend,
|
"backend", viewBackend,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue