Changeset 193620 in webkit
- Timestamp:
- Dec 7, 2015, 3:56:25 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 14 edited
-
Source/WebKit2/ChangeLog (modified) (1 diff)
-
Source/WebKit2/PlatformGTK.cmake (modified) (2 diffs)
-
Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt (modified) (1 diff)
-
Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-4.0.types (modified) (1 diff)
-
Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml (modified) (2 diffs)
-
Source/WebKit2/WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h (modified) (2 diffs)
-
Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.cpp (added)
-
Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.h (added)
-
Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessagePrivate.h (added)
-
Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp (modified) (11 diffs)
-
Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h (modified) (1 diff)
-
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp (modified) (1 diff)
-
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h (modified) (1 diff)
-
Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp (added)
-
Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r193619 r193620 1 2015-12-07 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add WebKitWebPage::console-message-sent signal to Web Extensions API 4 https://bugs.webkit.org/show_bug.cgi?id=79918 5 6 Reviewed by Gustavo Noronha Silva. 7 8 Add WebKitConsoleMessage boxed type that is passed to the 9 WebKitWebPage::console-message-sent signal with all the details 10 about the message. 11 12 * PlatformGTK.cmake: Add new files to compilation. 13 * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols. 14 * UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Add webkit_console_message_get_type. 15 * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section to the docs. 16 * WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h: 17 (API::InjectedBundle::PageUIClient::willAddMessageToConsole): Add 18 paramaters for all console message details. 19 * WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.cpp: Added. 20 (webkit_console_message_copy): 21 (webkit_console_message_free): 22 (webkit_console_message_get_source): 23 (webkit_console_message_get_level): 24 (webkit_console_message_get_text): 25 (webkit_console_message_get_line): 26 (webkit_console_message_get_source_id): 27 * WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.h: Added. 28 * WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessagePrivate.h: Added. 29 (_WebKitConsoleMessage::_WebKitConsoleMessage): 30 * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp: 31 (webkitWebPageDidSendConsoleMessage): Emit the 32 WebKitWebPage::console-message-sent signal. 33 (didReceiveResponseForResource): Generate a console message in 34 case of HTTP failure >= 400 for consistency with the inspector. 35 (didFailLoadForResource): Generate a console message in case of 36 resource load failure for consistency with the inspector. 37 (webkit_web_page_class_init): Add WebKitWebPage::console-message-sent signal. 38 (webkitWebPageCreate): Set custom UI client. 39 * WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h: 40 * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: 41 (WebKit::InjectedBundlePageUIClient::willAddMessageToConsole): 42 * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: 43 * WebProcess/WebCoreSupport/WebChromeClient.cpp: 44 (WebKit::WebChromeClient::addMessageToConsole): Pass all the 45 console message details to the ui client. 46 1 47 2015-12-07 Ryuan Choi <ryuan.choi@navercorp.com> 2 48 -
trunk/Source/WebKit2/PlatformGTK.cmake
r192875 r193620 324 324 WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp 325 325 326 WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.cpp 326 327 WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp 327 328 WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp … … 434 435 435 436 set(WebKit2WebExtension_INSTALLED_HEADERS 437 ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.h 436 438 ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitFrame.h 437 439 ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.h -
trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt
r188121 r193620 1345 1345 1346 1346 <SECTION> 1347 <FILE>WebKitConsoleMessage</FILE> 1348 WebKitConsoleMessage 1349 WebKitConsoleMessageSource 1350 WebKitConsoleMessageLevel 1351 webkit_console_message_copy 1352 webkit_console_message_free 1353 webkit_console_message_get_source 1354 webkit_console_message_get_level 1355 webkit_console_message_get_text 1356 webkit_console_message_get_line 1357 webkit_console_message_get_source_id 1358 1359 <SUBSECTION Standard> 1360 WEBKIT_TYPE_CONSOLE_MESSAGE 1361 1362 <SUBSECTION Private> 1363 webkit_console_message_get_type 1364 </SECTION> 1365 1366 <SECTION> 1347 1367 <FILE>WebKitColorChooserRequest</FILE> 1348 1368 WebKitColorChooserRequest -
trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-4.0.types
r188121 r193620 33 33 webkit_editor_state_get_type 34 34 webkit_install_missing_media_plugins_permission_request_get_type 35 webkit_console_message_get_type -
trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml
r188121 r193620 63 63 <xi:include href="xml/WebKitWebHitTestResult.xml"/> 64 64 <xi:include href="xml/WebKitWebEditor.xml"/> 65 <xi:include href="xml/WebKitConsoleMessage"/> 65 66 </chapter> 66 67 … … 99 100 </index> 100 101 102 <index id="api-index-2-12" role="2.12"> 103 <title>Index of new symbols in 2.12</title> 104 <xi:include href="xml/api-index-2.12.xml"><xi:fallback /></xi:include> 105 </index> 106 101 107 <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include> 102 108 </book> -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h
r191323 r193620 28 28 29 29 #include "WebEvent.h" 30 #include <runtime/ConsoleTypes.h> 30 31 31 32 namespace WebCore { … … 50 51 virtual ~PageUIClient() { } 51 52 52 virtual void willAddMessageToConsole(WebKit::WebPage*, const WTF::String& message, int32_t lineNumber) { UNUSED_PARAM(message); UNUSED_PARAM(lineNumber); }53 virtual void willAddMessageToConsole(WebKit::WebPage*, JSC::MessageSource, JSC::MessageLevel, const WTF::String& message, unsigned lineNumber, unsigned columnNumber, const WTF::String& sourceID) { UNUSED_PARAM(message); UNUSED_PARAM(lineNumber); UNUSED_PARAM(columnNumber); UNUSED_PARAM(sourceID); } 53 54 virtual void willSetStatusbarText(WebKit::WebPage*, const WTF::String&) { } 54 55 virtual void willRunJavaScriptAlert(WebKit::WebPage*, const WTF::String&, WebKit::WebFrame*) { } -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp
r192247 r193620 29 29 #include "WebContextMenuItem.h" 30 30 #include "WebImage.h" 31 #include "WebKitConsoleMessagePrivate.h" 31 32 #include "WebKitContextMenuPrivate.h" 32 33 #include "WebKitDOMDocumentPrivate.h" … … 50 51 #include <wtf/NeverDestroyed.h> 51 52 #include <wtf/text/CString.h> 53 #include <wtf/text/StringBuilder.h> 52 54 53 55 using namespace WebKit; … … 58 60 SEND_REQUEST, 59 61 CONTEXT_MENU, 62 CONSOLE_MESSAGE_SENT, 60 63 61 64 LAST_SIGNAL … … 143 146 webPage->priv->uri = uri; 144 147 g_object_notify(G_OBJECT(webPage), "uri"); 148 } 149 150 static void webkitWebPageDidSendConsoleMessage(WebKitWebPage* webPage, MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceID) 151 { 152 WebKitConsoleMessage consoleMessage(source, level, message, lineNumber, sourceID); 153 g_signal_emit(webPage, signals[CONSOLE_MESSAGE_SENT], 0, &consoleMessage); 145 154 } 146 155 … … 220 229 } 221 230 222 static void didReceiveResponseForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKURLResponseRef response, const void* )231 static void didReceiveResponseForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKURLResponseRef response, const void* clientInfo) 223 232 { 224 233 API::Dictionary::MapType message; … … 227 236 message.set(String::fromUTF8("Response"), toImpl(response)); 228 237 WebProcess::singleton().injectedBundle()->postMessage(String::fromUTF8("WebPage.DidReceiveResponseForResource"), API::Dictionary::create(WTF::move(message)).ptr()); 238 239 // Post on the console as well to be consistent with the inspector. 240 const ResourceResponse& resourceResponse = toImpl(response)->resourceResponse(); 241 if (resourceResponse.httpStatusCode() >= 400) { 242 StringBuilder errorMessage; 243 errorMessage.appendLiteral("Failed to load resource: the server responded with a status of "); 244 errorMessage.appendNumber(resourceResponse.httpStatusCode()); 245 errorMessage.appendLiteral(" ("); 246 errorMessage.append(resourceResponse.httpStatusText()); 247 errorMessage.append(')'); 248 webkitWebPageDidSendConsoleMessage(WEBKIT_WEB_PAGE(clientInfo), MessageSource::Network, MessageLevel::Error, errorMessage.toString(), 0, resourceResponse.url().string()); 249 } 229 250 } 230 251 … … 246 267 } 247 268 248 static void didFailLoadForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKErrorRef error, const void* )269 static void didFailLoadForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKErrorRef error, const void* clientInfo) 249 270 { 250 271 API::Dictionary::MapType message; … … 253 274 message.set(String::fromUTF8("Error"), toImpl(error)); 254 275 WebProcess::singleton().injectedBundle()->postMessage(String::fromUTF8("WebPage.DidFailLoadForResource"), API::Dictionary::create(WTF::move(message)).ptr()); 276 277 // Post on the console as well to be consistent with the inspector. 278 const ResourceError& resourceError = toImpl(error)->platformError(); 279 if (!resourceError.isCancellation()) { 280 StringBuilder errorMessage; 281 errorMessage.appendLiteral("Failed to load resource"); 282 if (!resourceError.localizedDescription().isEmpty()) { 283 errorMessage.appendLiteral(": "); 284 errorMessage.append(resourceError.localizedDescription()); 285 } 286 webkitWebPageDidSendConsoleMessage(WEBKIT_WEB_PAGE(clientInfo), MessageSource::Network, MessageLevel::Error, errorMessage.toString(), 0, resourceError.failingURL()); 287 } 255 288 } 256 289 … … 279 312 webkitContextMenuPopulate(contextMenu.get(), newMenu); 280 313 return true; 314 } 315 316 WebKitWebPage* m_webPage; 317 }; 318 319 class PageUIClient final : public API::InjectedBundle::PageUIClient { 320 public: 321 explicit PageUIClient(WebKitWebPage* webPage) 322 : m_webPage(webPage) 323 { 324 } 325 326 private: 327 void willAddMessageToConsole(WebPage*, MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, unsigned /*columnNumber*/, const String& sourceID) override 328 { 329 webkitWebPageDidSendConsoleMessage(m_webPage, source, level, message, lineNumber, sourceID); 281 330 } 282 331 … … 396 445 WEBKIT_TYPE_CONTEXT_MENU, 397 446 WEBKIT_TYPE_WEB_HIT_TEST_RESULT); 447 448 /** 449 * WebKitWebPage::console-message-sent: 450 * @web_page: the #WebKitWebPage on which the signal is emitted 451 * @console_message: the #WebKitConsoleMessage 452 * 453 * Emmited when a message is sent to the console. This can be a message 454 * produced by the use of JavaScript console API, a javascript exception, 455 * a security error or other errors, warnings, debug or log messages. 456 * The @console_message contains information of the message. 457 * 458 * Since: 2.12 459 */ 460 signals[CONSOLE_MESSAGE_SENT] = g_signal_new( 461 "console-message-sent", 462 G_TYPE_FROM_CLASS(klass), 463 G_SIGNAL_RUN_LAST, 464 0, 0, nullptr, 465 g_cclosure_marshal_VOID__BOXED, 466 G_TYPE_NONE, 1, 467 WEBKIT_TYPE_CONSOLE_MESSAGE | G_SIGNAL_TYPE_STATIC_SCOPE); 398 468 } 399 469 … … 467 537 468 538 webPage->setInjectedBundleContextMenuClient(std::make_unique<PageContextMenuClient>(page)); 539 webPage->setInjectedBundleUIClient(std::make_unique<PageUIClient>(page)); 469 540 470 541 return page; -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h
r190660 r193620 27 27 #define __WEBKIT_WEB_EXTENSION_H_INSIDE__ 28 28 29 #include <webkit2/WebKitConsoleMessage.h> 29 30 #include <webkit2/WebKitContextMenu.h> 30 31 #include <webkit2/WebKitContextMenuActions.h> -
trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp
r191323 r193620 45 45 } 46 46 47 void InjectedBundlePageUIClient::willAddMessageToConsole(WebPage* page, const String& message, int32_t lineNumber)47 void InjectedBundlePageUIClient::willAddMessageToConsole(WebPage* page, MessageSource, MessageLevel, const String& message, unsigned lineNumber, unsigned /*columnNumber*/, const String& /*sourceID*/) 48 48 { 49 49 if (m_client.willAddMessageToConsole) -
trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h
r191323 r193620 48 48 explicit InjectedBundlePageUIClient(const WKBundlePageUIClientBase*); 49 49 50 void willAddMessageToConsole(WebPage*, const String& message, int32_t lineNumber) override;50 void willAddMessageToConsole(WebPage*, MessageSource, MessageLevel, const String& message, unsigned lineNumber, unsigned columnNumber, const String& sourceID) override; 51 51 void willSetStatusbarText(WebPage*, const String&) override; 52 52 void willRunJavaScriptAlert(WebPage*, const String&, WebFrame*) override; -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
r192200 r193620 320 320 } 321 321 322 void WebChromeClient::addMessageToConsole(MessageSource , MessageLevel, const String& message, unsigned lineNumber, unsigned /*columnNumber*/, const String& /*sourceID*/)322 void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, unsigned columnNumber, const String& sourceID) 323 323 { 324 324 // Notify the bundle client. 325 m_page->injectedBundleUIClient().willAddMessageToConsole(m_page, message, lineNumber); 326 327 notImplemented(); 325 m_page->injectedBundleUIClient().willAddMessageToConsole(m_page, source, level, message, lineNumber, columnNumber, sourceID); 328 326 } 329 327 -
trunk/Tools/ChangeLog
r193619 r193620 1 2015-12-07 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add WebKitWebPage::console-message-sent signal to Web Extensions API 4 https://bugs.webkit.org/show_bug.cgi?id=79918 5 6 Reviewed by Gustavo Noronha Silva. 7 8 Add unit tests to check the different console messages. 9 10 * TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt: 11 * TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp: Added. 12 (ConsoleMessageTest::ConsoleMessage::operator==): 13 (ConsoleMessageTest::consoleMessageReceivedCallback): 14 (ConsoleMessageTest::ConsoleMessageTest): 15 (ConsoleMessageTest::~ConsoleMessageTest): 16 (ConsoleMessageTest::waitUntilConsoleMessageReceived): 17 (testWebKitConsoleMessageConsoleAPI): 18 (testWebKitConsoleMessageJavaScriptException): 19 (testWebKitConsoleMessageNetworkError): 20 (testWebKitConsoleMessageSecurityError): 21 (beforeAll): 22 (afterAll): 23 * TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp: 24 (consoleMessageSentCallback): 25 (pageCreatedCallback): 26 1 27 2015-12-07 Ryuan Choi <ryuan.choi@navercorp.com> 2 28 -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
r193617 r193620 128 128 ADD_WK2_TEST(TestWebKitUserContentManager TestWebKitUserContentManager.cpp) 129 129 ADD_WK2_TEST(TestEditor TestEditor.cpp) 130 ADD_WK2_TEST(TestConsoleMessage TestConsoleMessage.cpp) 130 131 131 132 if (ATSPI_FOUND) -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp
r188121 r193620 227 227 } 228 228 229 static void consoleMessageSentCallback(WebKitWebPage* webPage, WebKitConsoleMessage* consoleMessage) 230 { 231 g_assert(consoleMessage); 232 GRefPtr<GVariant> variant = g_variant_new("(uusus)", webkit_console_message_get_source(consoleMessage), 233 webkit_console_message_get_level(consoleMessage), webkit_console_message_get_text(consoleMessage), 234 webkit_console_message_get_line(consoleMessage), webkit_console_message_get_source_id(consoleMessage)); 235 GUniquePtr<char> messageString(g_variant_print(variant.get(), FALSE)); 236 GRefPtr<WebKitDOMDOMWindow> window = adoptGRef(webkit_dom_document_get_default_view(webkit_web_page_get_dom_document(webPage))); 237 g_assert(WEBKIT_DOM_IS_DOM_WINDOW(window.get())); 238 webkit_dom_dom_window_webkit_message_handlers_post_message(window.get(), "console", messageString.get()); 239 } 240 229 241 static void pageCreatedCallback(WebKitWebExtension* extension, WebKitWebPage* webPage, gpointer) 230 242 { … … 233 245 g_signal_connect(webPage, "send-request", G_CALLBACK(sendRequestCallback), nullptr); 234 246 g_signal_connect(webPage, "context-menu", G_CALLBACK(contextMenuCallback), nullptr); 247 g_signal_connect(webPage, "console-message-sent", G_CALLBACK(consoleMessageSentCallback), nullptr); 235 248 } 236 249
Note:
See TracChangeset
for help on using the changeset viewer.