void InspectorClient::openInspectorFrontend(InspectorController* controller) { // This g_object_get will ref the inspector. We're not doing an // unref if this method succeeds because the inspector object must // be alive even after the inspected WebView is destroyed - the // close-window and destroy signals still need to be // emitted. WebKitWebInspector* webInspector = 0; g_object_get(m_inspectedWebView, "web-inspector", &webInspector, NULL); ASSERT(webInspector); WebKitWebView* inspectorWebView = 0; g_signal_emit_by_name(webInspector, "inspect-web-view", m_inspectedWebView, &inspectorWebView); if (!inspectorWebView) { g_object_unref(webInspector); return; } webkit_web_inspector_set_web_view(webInspector, inspectorWebView); GOwnPtr<gchar> inspectorPath(g_build_filename(inspectorFilesPath(), "inspector.html", NULL)); GOwnPtr<gchar> inspectorURI(g_filename_to_uri(inspectorPath.get(), 0, 0)); webkit_web_view_load_uri(inspectorWebView, inspectorURI.get()); gtk_widget_show(GTK_WIDGET(inspectorWebView)); m_frontendPage = core(inspectorWebView); OwnPtr<InspectorFrontendClient> frontendClient = adoptPtr(new InspectorFrontendClient(m_inspectedWebView, inspectorWebView, webInspector, m_frontendPage, this)); m_frontendClient = frontendClient.get(); m_frontendPage->inspectorController()->setInspectorFrontendClient(frontendClient.release()); // The inspector must be in it's own PageGroup to avoid deadlock while debugging. m_frontendPage->setGroupName(""); }
InspectorFrontendChannel* InspectorClientEfl::openInspectorFrontend(InspectorController*) { evas_object_smart_callback_call(m_inspectedView, "inspector,view,create", 0); Evas_Object* inspectorView = ewk_view_inspector_view_get(m_inspectedView); if (!inspectorView) return 0; m_inspectorView = inspectorView; String inspectorUri = inspectorFilesPath() + "/inspector.html"; ewk_view_uri_set(m_inspectorView, inspectorUri.utf8().data()); OwnPtr<InspectorFrontendClientEfl> frontendClient = adoptPtr(new InspectorFrontendClientEfl(m_inspectedView, m_inspectorView, this)); m_frontendClient = frontendClient.get(); InspectorController* controller = EWKPrivate::corePage(m_inspectorView)->inspectorController(); controller->setInspectorFrontendClient(frontendClient.release()); return this; }
InspectorFrontendChannel* InspectorClientEfl::openInspectorFrontend(InspectorController*) { evas_object_smart_callback_call(m_inspectedView, "inspector,view,create", 0); Evas_Object* inspectorView = ewk_view_inspector_view_get(m_inspectedView); if (!inspectorView) return 0; m_inspectorView = inspectorView; String inspectorUri = inspectorFilesPath() + "/Main.html"; ewk_view_uri_set(m_inspectorView, inspectorUri.utf8().data()); auto frontendClient = std::make_unique<InspectorFrontendClientEfl>(m_inspectedView, m_inspectorView, this); m_frontendClient = frontendClient.get(); InspectorController& controller = EWKPrivate::corePage(m_inspectorView)->inspectorController(); controller.setInspectorFrontendClient(std::move(frontendClient)); return this; }