18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Gustavo Noronha Silva 3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2008, 2009 Holger Hans Peter Freyther 4cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * Copyright (C) 2009 Collabora Ltd. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 23cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "webkitwebinspector.h" 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 25cad810f21b803229eb11403f9209855525a25d57Steve Block#include "DumpRenderTreeSupportGtk.h" 26cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "FocusController.h" 27cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "Frame.h" 28cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "HitTestRequest.h" 29cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "HitTestResult.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "InspectorClientGtk.h" 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InspectorController.h" 322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorInstrumentation.h" 33cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "IntPoint.h" 34cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "Page.h" 35545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "RenderLayer.h" 36cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "RenderView.h" 374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "webkit/WebKitDOMNodePrivate.h" 38cad810f21b803229eb11403f9209855525a25d57Steve Block#include "webkitglobalsprivate.h" 39cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include "webkitmarshal.h" 40f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "webkitwebinspectorprivate.h" 41f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include <glib/gi18n-lib.h> 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SECTION:webkitwebinspector 45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @short_description: Access to the WebKit Inspector 46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * The WebKit Inspector is a graphical tool to inspect and change 48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * the content of a #WebKitWebView. It also includes an interactive 49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * JavaScriptDebugger. Using this class one can get a GtkWidget which 50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * can be embedded into an application to show the inspector. 51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * The inspector is available when the #WebKitWebSettings of the 53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * #WebKitWebView has set the #WebKitWebSettings:enable-developer-extras 54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * to true otherwise no inspector is available. 55635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <informalexample><programlisting> 57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * /<!-- -->* Enable the developer extras *<!-- -->/ 58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * WebKitWebSettings *setting = webkit_web_view_get_settings (WEBKIT_WEB_VIEW(my_webview)); 59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * g_object_set (G_OBJECT(settings), "enable-developer-extras", TRUE, NULL); 60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * /<!-- -->* load some data or reload to be able to inspect the page*<!-- -->/ 62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * webkit_web_view_open (WEBKIT_WEB_VIEW(my_webview), "http://www.gnome.org"); 63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 64635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * /<!-- -->* Embed the inspector somewhere *<!-- -->/ 65635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * WebKitWebInspector *inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW(my_webview)); 66635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * g_signal_connect (G_OBJECT (inspector), "inspect-web-view", G_CALLBACK(create_gtk_window_around_it), NULL); 67635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * g_signal_connect (G_OBJECT (inspector), "show-window", G_CALLBACK(show_inpector_window), NULL)); 68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * g_signal_connect (G_OBJECT (inspector), "notify::inspected-uri", G_CALLBACK(inspected_uri_changed_do_stuff), NULL); 69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * </programlisting></informalexample> 70635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 71635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebKit; 73cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockusing namespace WebCore; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum { 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project INSPECT_WEB_VIEW, 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project SHOW_WINDOW, 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ATTACH_WINDOW, 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project DETACH_WINDOW, 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CLOSE_WINDOW, 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FINISHED, 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project LAST_SIGNAL 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic guint webkit_web_inspector_signals[LAST_SIGNAL] = { 0, }; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum { 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PROP_0, 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PROP_WEB_VIEW, 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PROP_INSPECTED_URI, 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PROP_JAVASCRIPT_PROFILING_ENABLED, 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PROP_TIMELINE_PROFILING_ENABLED 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectG_DEFINE_TYPE(WebKitWebInspector, webkit_web_inspector, G_TYPE_OBJECT) 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct _WebKitWebInspectorPrivate { 99563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebCore::Page* page; 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebView* inspector_view; 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gchar* inspected_uri; 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_finalize(GObject* object); 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec); 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec); 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic gboolean webkit_inspect_web_view_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy) 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gboolean continueEmission = TRUE; 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gpointer newWebView = g_value_get_object(handlerReturn); 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_value_set_object(returnAccu, newWebView); 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (newWebView) 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project continueEmission = FALSE; 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return continueEmission; 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass) 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GObjectClass* gobject_class = G_OBJECT_CLASS(klass); 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gobject_class->finalize = webkit_web_inspector_finalize; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gobject_class->set_property = webkit_web_inspector_set_property; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gobject_class->get_property = webkit_web_inspector_get_property; 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector::inspect-web-view: 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @web_inspector: the object on which the signal is emitted 132dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * @web_view: the #WebKitWebView which will be inspected 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Emitted when the user activates the 'inspect' context menu item 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to inspect a web view. The application which is interested in 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the inspector should create a window, or otherwise add the 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * #WebKitWebView it creates to an existing window. 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You don't need to handle the reference count of the 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * #WebKitWebView instance you create; the widget to which you add 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * it will do that. 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 143a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Return value: (transfer none): a newly allocated #WebKitWebView or %NULL 144a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_web_inspector_signals[INSPECT_WEB_VIEW] = g_signal_new("inspect-web-view", 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_FROM_CLASS(klass), 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GSignalFlags)G_SIGNAL_RUN_LAST, 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_inspect_web_view_request_handled, 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_marshal_OBJECT__OBJECT, 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WEBKIT_TYPE_WEB_VIEW , 1, 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WEBKIT_TYPE_WEB_VIEW); 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector::show-window: 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @web_inspector: the object on which the signal is emitted 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return: %TRUE if the signal has been handled 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Emitted when the inspector window should be displayed. Notice 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * that the window must have been created already by handling 164635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * #WebKitWebInspector::inspect-web-view. 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_web_inspector_signals[SHOW_WINDOW] = g_signal_new("show-window", 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_FROM_CLASS(klass), 1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GSignalFlags)G_SIGNAL_RUN_LAST, 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_signal_accumulator_true_handled, 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_marshal_BOOLEAN__VOID, 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_BOOLEAN , 0); 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector::attach-window: 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @web_inspector: the object on which the signal is emitted 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return: %TRUE if the signal has been handled 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Emitted when the inspector should appear at the same window as 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the #WebKitWebView being inspected. 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_web_inspector_signals[ATTACH_WINDOW] = g_signal_new("attach-window", 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_FROM_CLASS(klass), 1890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GSignalFlags)G_SIGNAL_RUN_LAST, 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_signal_accumulator_true_handled, 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_marshal_BOOLEAN__VOID, 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_BOOLEAN , 0); 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector::detach-window: 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @web_inspector: the object on which the signal is emitted 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return: %TRUE if the signal has been handled 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Emitted when the inspector should appear in a separate window. 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_web_inspector_signals[DETACH_WINDOW] = g_signal_new("detach-window", 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_FROM_CLASS(klass), 2070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GSignalFlags)G_SIGNAL_RUN_LAST, 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_signal_accumulator_true_handled, 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_marshal_BOOLEAN__VOID, 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_BOOLEAN , 0); 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector::close-window: 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @web_inspector: the object on which the signal is emitted 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return: %TRUE if the signal has been handled 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Emitted when the inspector window should be closed. You can 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * destroy the window or hide it so that it can be displayed again 221635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * by handling #WebKitWebInspector::show-window later on. 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Notice that the inspected #WebKitWebView may no longer exist 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * when this signal is emitted. 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Notice, too, that if you decide to destroy the window, 227635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * #WebKitWebInspector::inspect-web-view will be emmited again, when the user 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * inspects an element. 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_web_inspector_signals[CLOSE_WINDOW] = g_signal_new("close-window", 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_FROM_CLASS(klass), 2340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GSignalFlags)G_SIGNAL_RUN_LAST, 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_signal_accumulator_true_handled, 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_marshal_BOOLEAN__VOID, 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_BOOLEAN , 0); 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector::finished: 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @web_inspector: the object on which the signal is emitted 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Emitted when the inspection is done. You should release your 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * references on the inspector at this time. The inspected 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * #WebKitWebView may no longer exist when this signal is emitted. 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webkit_web_inspector_signals[FINISHED] = g_signal_new("finished", 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_FROM_CLASS(klass), 2530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GSignalFlags)G_SIGNAL_RUN_LAST, 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_cclosure_marshal_VOID__VOID, 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_TYPE_NONE , 0); 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * properties 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector:web-view: 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The Web View that renders the Web Inspector itself. 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_object_class_install_property(gobject_class, PROP_WEB_VIEW, 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_param_spec_object("web-view", 2730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("Web View"), 2740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("The Web View that renders the Web Inspector itself"), 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WEBKIT_TYPE_WEB_VIEW, 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WEBKIT_PARAM_READABLE)); 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WebKitWebInspector:inspected-uri: 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The URI that is currently being inspected. 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_object_class_install_property(gobject_class, PROP_INSPECTED_URI, 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_param_spec_string("inspected-uri", 2870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("Inspected URI"), 2880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("The URI that is currently being inspected"), 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NULL, 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WEBKIT_PARAM_READABLE)); 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 292563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /** 293563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * WebKitWebInspector:javascript-profiling-enabled 294563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 295563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * This is enabling JavaScript profiling in the Inspector. This means 296563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * that Console.profiles will return the profiles. 297563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 298563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Since: 1.1.1 299563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */ 300563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_object_class_install_property(gobject_class, 301563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark PROP_JAVASCRIPT_PROFILING_ENABLED, 302563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_param_spec_boolean( 303563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark "javascript-profiling-enabled", 3040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("Enable JavaScript profiling"), 3050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("Profile the executed JavaScript."), 306563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark FALSE, 307563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WEBKIT_PARAM_READWRITE)); 308563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 309643ca7872b450ea4efacab6188849e5aac2ba161Steve Block /** 310643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * WebKitWebInspector:timeline-profiling-enabled 311643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 312643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * This is enabling Timeline profiling in the Inspector. 313643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Since: 1.1.17 315643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 316643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_object_class_install_property(gobject_class, 317643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PROP_TIMELINE_PROFILING_ENABLED, 318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_param_spec_boolean( 319643ca7872b450ea4efacab6188849e5aac2ba161Steve Block "timeline-profiling-enabled", 320643ca7872b450ea4efacab6188849e5aac2ba161Steve Block _("Enable Timeline profiling"), 321643ca7872b450ea4efacab6188849e5aac2ba161Steve Block _("Profile the WebCore instrumentation."), 322643ca7872b450ea4efacab6188849e5aac2ba161Steve Block FALSE, 323643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WEBKIT_PARAM_READWRITE)); 324643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_type_class_add_private(klass, sizeof(WebKitWebInspectorPrivate)); 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_init(WebKitWebInspector* web_inspector) 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 330f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch web_inspector->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_inspector, WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorPrivate); 3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_finalize(GObject* object) 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object); 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspectorPrivate* priv = web_inspector->priv; 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (priv->inspector_view) 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_object_unref(priv->inspector_view); 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (priv->inspected_uri) 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_free(priv->inspected_uri); 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_OBJECT_CLASS(webkit_web_inspector_parent_class)->finalize(object); 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 349563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object); 350563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebInspectorPrivate* priv = web_inspector->priv; 351563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project switch(prop_id) { 353563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark case PROP_JAVASCRIPT_PROFILING_ENABLED: { 354643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 355563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark bool enabled = g_value_get_boolean(value); 356563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebCore::InspectorController* controller = priv->page->inspectorController(); 357563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (enabled) 358563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark controller->enableProfiler(); 359563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark else 360563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark controller->disableProfiler(); 361643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#else 362643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_message("PROP_JAVASCRIPT_PROFILING_ENABLED is not work because of the javascript debugger is disabled\n"); 363643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 364643ca7872b450ea4efacab6188849e5aac2ba161Steve Block break; 365643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 366643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case PROP_TIMELINE_PROFILING_ENABLED: { 367643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool enabled = g_value_get_boolean(value); 368643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::InspectorController* controller = priv->page->inspectorController(); 369643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (enabled) 370643ca7872b450ea4efacab6188849e5aac2ba161Steve Block controller->startTimelineProfiler(); 371643ca7872b450ea4efacab6188849e5aac2ba161Steve Block else 372643ca7872b450ea4efacab6188849e5aac2ba161Steve Block controller->stopTimelineProfiler(); 373563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark break; 374563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark } 3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project default: 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); 3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_inspector_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object); 3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspectorPrivate* priv = web_inspector->priv; 3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project switch (prop_id) { 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case PROP_WEB_VIEW: 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_value_set_object(value, priv->inspector_view); 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case PROP_INSPECTED_URI: 3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_value_set_string(value, priv->inspected_uri); 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 393563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark case PROP_JAVASCRIPT_PROFILING_ENABLED: 394643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 395563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_value_set_boolean(value, priv->page->inspectorController()->profilerEnabled()); 396643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#else 397643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_message("PROP_JAVASCRIPT_PROFILING_ENABLED is not work because of the javascript debugger is disabled\n"); 398643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 399643ca7872b450ea4efacab6188849e5aac2ba161Steve Block break; 400643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case PROP_TIMELINE_PROFILING_ENABLED: 4012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block g_value_set_boolean(value, priv->page->inspectorController()->timelineProfilerEnabled()); 402563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark break; 4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project default: 4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); 4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// internal use only 4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid webkit_web_inspector_set_web_view(WebKitWebInspector *web_inspector, WebKitWebView *web_view) 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector)); 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_VIEW(web_view)); 4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspectorPrivate* priv = web_inspector->priv; 4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (priv->inspector_view) 4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_object_unref(priv->inspector_view); 4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_object_ref(web_view); 4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project priv->inspector_view = web_view; 4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_inspector_get_web_view: 4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Obtains the #WebKitWebView that is used to render the 4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * inspector. The #WebKitWebView instance is created by the 429635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * application, by handling the #WebKitWebInspector::inspect-web-view signal. This means 4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * that this method may return %NULL if the user hasn't inspected 4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * anything. 4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 433bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * Returns: (transfer none): the #WebKitWebView instance that is used 434bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * to render the inspector or %NULL if it is not yet created. 4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project **/ 4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebKitWebView* webkit_web_inspector_get_web_view(WebKitWebInspector *web_inspector) 4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspectorPrivate* priv = web_inspector->priv; 4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return priv->inspector_view; 4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// internal use only 4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid webkit_web_inspector_set_inspected_uri(WebKitWebInspector* web_inspector, const gchar* inspected_uri) 4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector)); 4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspectorPrivate* priv = web_inspector->priv; 4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_free(priv->inspected_uri); 4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project priv->inspected_uri = g_strdup(inspected_uri); 4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_inspector_get_inspected_uri: 4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Obtains the URI that is currently being inspected. 4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns: a pointer to the URI as an internally allocated string; it 4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * should not be freed, modified or stored. 4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Since: 1.0.3 4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project **/ 4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectconst gchar* webkit_web_inspector_get_inspected_uri(WebKitWebInspector *web_inspector) 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspectorPrivate* priv = web_inspector->priv; 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return priv->inspected_uri; 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid 474563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_web_inspector_set_inspector_client(WebKitWebInspector* web_inspector, WebCore::Page* page) 4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebInspectorPrivate* priv = web_inspector->priv; 4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark priv->page = page; 4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 480cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 481cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block/** 482643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * webkit_web_inspector_show: 483a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * @webInspector: the #WebKitWebInspector that will be shown 484643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 485643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Causes the Web Inspector to be shown. 486643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 487643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Since: 1.1.17 488643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 489643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid webkit_web_inspector_show(WebKitWebInspector* webInspector) 490643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 491643ca7872b450ea4efacab6188849e5aac2ba161Steve Block g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); 492643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 493643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebKitWebInspectorPrivate* priv = webInspector->priv; 494643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 495643ca7872b450ea4efacab6188849e5aac2ba161Steve Block Frame* frame = priv->page->focusController()->focusedOrMainFrame(); 496643ca7872b450ea4efacab6188849e5aac2ba161Steve Block FrameView* view = frame->view(); 497643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 498643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!view) 499643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 500643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 501643ca7872b450ea4efacab6188849e5aac2ba161Steve Block priv->page->inspectorController()->show(); 502643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 503643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 504643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/** 5054576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * webkit_web_inspector_inspect_node: 5064576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * @web_inspector: the #WebKitWebInspector that will do the inspection 5074576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * @node: the #WebKitDOMNode to inspect 5084576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 5094576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * Causes the Web Inspector to inspect the given node. 5104576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 5114576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * Since: 1.3.7 5124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang */ 5134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid webkit_web_inspector_inspect_node(WebKitWebInspector* webInspector, WebKitDOMNode* node) 5144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 5154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); 5164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang g_return_if_fail(WEBKIT_DOM_IS_NODE(node)); 5174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 5184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang webInspector->priv->page->inspectorController()->inspect(core(node)); 5194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 5204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 5214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang/** 522cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * webkit_web_inspector_inspect_coordinates: 523cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * @web_inspector: the #WebKitWebInspector that will do the inspection 524cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * @x: the X coordinate of the node to be inspected 525cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * @y: the Y coordinate of the node to be inspected 526cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * 527cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * Causes the Web Inspector to inspect the node that is located at the 528cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * given coordinates of the widget. The coordinates should be relative 529cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * to the #WebKitWebView widget, not to the scrollable content, and 530cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * may be obtained from a #GdkEvent directly. 531cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * 532cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * This means @x, and @y being zero doesn't guarantee you will hit the 533cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * left-most top corner of the content, since the contents may have 534cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * been scrolled. 535cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * 536cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * Since: 1.1.17 537cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block */ 538cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid webkit_web_inspector_inspect_coordinates(WebKitWebInspector* webInspector, gdouble x, gdouble y) 539cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 540cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); 541cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block g_return_if_fail(x >= 0 && y >= 0); 542cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 543cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebInspectorPrivate* priv = webInspector->priv; 544cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 545cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Frame* frame = priv->page->focusController()->focusedOrMainFrame(); 546cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block FrameView* view = frame->view(); 547cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 548cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (!view) 549cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return; 550cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 551cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active); 552cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block IntPoint documentPoint = view->windowToContents(IntPoint(static_cast<int>(x), static_cast<int>(y))); 553cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block HitTestResult result(documentPoint); 554cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 555cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block frame->contentRenderer()->layer()->hitTest(request, result); 556cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block priv->page->inspectorController()->inspect(result.innerNonSharedNode()); 557cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 558cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 559cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block/** 560cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * webkit_web_inspector_close: 561a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * @webInspector: the #WebKitWebInspector that will be closed 562cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * 563cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * Causes the Web Inspector to be closed. 564cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * 565cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block * Since: 1.1.17 566cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block */ 567cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid webkit_web_inspector_close(WebKitWebInspector* webInspector) 568cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 569cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); 570cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 571cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebInspectorPrivate* priv = webInspector->priv; 572cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block priv->page->inspectorController()->close(); 573cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 574cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 575cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockvoid webkit_web_inspector_execute_script(WebKitWebInspector* webInspector, long callId, const gchar* script) 576cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 577cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); 578cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block g_return_if_fail(script); 579cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 580cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebKitWebInspectorPrivate* priv = webInspector->priv; 581cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block priv->page->inspectorController()->evaluateForTestInFrontend(callId, script); 582cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 583f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 584f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#ifdef HAVE_GSETTINGS 585f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochstatic bool isSchemaAvailable(const char* schemaID) 586f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 587f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const char* const* availableSchemas = g_settings_list_schemas(); 588f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch char* const* iter = const_cast<char* const*>(availableSchemas); 589f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 590f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch while (*iter) { 591f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (g_str_equal(schemaID, *iter)) 592f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return true; 593f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch iter++; 594f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 595f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 596f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return false; 597f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 598f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 599f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochGSettings* inspectorGSettings() 600f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 601f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch static GSettings* settings = 0; 602f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (settings) 603f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return settings; 604f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 605cad810f21b803229eb11403f9209855525a25d57Steve Block // Unfortunately GSettings will abort the process execution if the schema is not 606cad810f21b803229eb11403f9209855525a25d57Steve Block // installed, which is the case for when running tests, or even the introspection dump 607cad810f21b803229eb11403f9209855525a25d57Steve Block // at build time, so check if we have the schema before trying to initialize it. 608f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const gchar* schemaID = "org.webkitgtk-"WEBKITGTK_API_VERSION_STRING".inspector"; 609f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (!isSchemaAvailable(schemaID)) { 610cad810f21b803229eb11403f9209855525a25d57Steve Block 611cad810f21b803229eb11403f9209855525a25d57Steve Block // This warning is very common on the build bots, which hides valid warnings. 612cad810f21b803229eb11403f9209855525a25d57Steve Block // Skip printing it if we are running inside DumpRenderTree. 613cad810f21b803229eb11403f9209855525a25d57Steve Block if (!DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled()) 614cad810f21b803229eb11403f9209855525a25d57Steve Block g_warning("GSettings schema not found - settings will not be used or saved."); 615f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return 0; 616f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 617f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 618f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch settings = g_settings_new(schemaID); 619f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return settings; 620f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 621f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 622