Changeset 31952 in webkit
- Timestamp:
- Apr 16, 2008 12:19:29 PM (16 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r31951 r31952 1 2008-04-15 Adam Roben <aroben@apple.com> 2 3 Pass all arguments to console.{log,warn,info,error} into the Inspector's JS 4 5 Part of Bug 17228: console.{log,warn,info,error} should support format 6 strings, variable arguments 7 <http://bugs.webkit.org/show_bug.cgi?id=17228> 8 <rdar://problem/5732828> 9 10 We don't use the extra arguments yet. 11 12 Reviewed by Tim Hatcher. 13 14 * page/Console.cpp: 15 (WebCore::Console::error): Pass the arguments list to 16 InspectorController. 17 (WebCore::Console::info): Ditto. 18 (WebCore::Console::log): Ditto. 19 (WebCore::Console::warn): Ditto. 20 * page/InspectorController.cpp: 21 (WebCore::ConsoleMessage::ConsoleMessage): Added a new constructor 22 that takes an ExecState and a List instead of a String. We wrap and 23 store the JSValues from the List in a Vector<ProtectedPtr<JSValue> >. 24 (WebCore::InspectorController::addMessageToConsole): Added an overload 25 that takes an ExecState and a List. 26 (WebCore::InspectorController::addConsoleMessage): Moved code here 27 from addMessageToConsole. Both overloads of addMessageToConsole now 28 call this helper method. 29 (WebCore::InspectorController::addScriptConsoleMessage): Updated for 30 the new parameter order of WebInspector.ConsoleMessage. If the 31 ConsoleMessage has a non-empty wrappedArguments Vector, we use that 32 instead of the ConsoleMessage's message String. 33 * page/InspectorController.h: 34 * page/inspector/Console.js: 35 (WebInspector.ConsoleMessage): Removed the explicit message parameter. 36 We now get the message from the unnamed 5th parameter. 37 * page/inspector/Resource.js: Updated for the change to 38 WebInspector.ConsoleMessage's parameter order. 39 1 40 2008-04-15 Adam Roben <aroben@apple.com> 2 41 -
trunk/WebCore/page/Console.cpp
r31951 r31952 83 83 84 84 page->chrome()->client()->addMessageToConsole(message, 0, url); 85 page->inspectorController()->addMessageToConsole(JSMessageSource, ErrorMessageLevel, message, 0, url);85 page->inspectorController()->addMessageToConsole(JSMessageSource, ErrorMessageLevel, exec, arguments, 0, url); 86 86 } 87 87 … … 102 102 103 103 page->chrome()->client()->addMessageToConsole(message, 0, url); 104 page->inspectorController()->addMessageToConsole(JSMessageSource, LogMessageLevel, message, 0, url);104 page->inspectorController()->addMessageToConsole(JSMessageSource, LogMessageLevel, exec, arguments, 0, url); 105 105 } 106 106 … … 121 121 122 122 page->chrome()->client()->addMessageToConsole(message, 0, url); 123 page->inspectorController()->addMessageToConsole(JSMessageSource, LogMessageLevel, message, 0, url);123 page->inspectorController()->addMessageToConsole(JSMessageSource, LogMessageLevel, exec, arguments, 0, url); 124 124 } 125 125 … … 140 140 141 141 page->chrome()->client()->addMessageToConsole(message, 0, url); 142 page->inspectorController()->addMessageToConsole(JSMessageSource, WarningMessageLevel, message, 0, url);142 page->inspectorController()->addMessageToConsole(JSMessageSource, WarningMessageLevel, exec, arguments, 0, url); 143 143 } 144 144 -
trunk/WebCore/page/InspectorController.cpp
r31951 r31952 75 75 76 76 using namespace KJS; 77 using namespace std; 77 78 78 79 namespace WebCore { … … 116 117 } 117 118 119 ConsoleMessage(MessageSource s, MessageLevel l, ExecState* exec, const List& args, unsigned li, const String& u) 120 : source(s) 121 , level(l) 122 , wrappedArguments(args.size()) 123 , line(li) 124 , url(u) 125 { 126 JSLock lock; 127 for (unsigned i = 0; i < args.size(); ++i) 128 wrappedArguments[i] = JSInspectedObjectWrapper::wrap(exec, args[i]); 129 } 130 118 131 MessageSource source; 119 132 MessageLevel level; 120 133 String message; 134 Vector<ProtectedPtr<JSValue> > wrappedArguments; 121 135 unsigned line; 122 136 String url; … … 889 903 } 890 904 905 void InspectorController::addMessageToConsole(MessageSource source, MessageLevel level, ExecState* exec, const List& arguments, unsigned lineNumber, const String& sourceURL) 906 { 907 if (!enabled()) 908 return; 909 910 addConsoleMessage(new ConsoleMessage(source, level, exec, arguments, lineNumber, sourceURL)); 911 } 912 891 913 void InspectorController::addMessageToConsole(MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceID) 892 914 { … … 894 916 return; 895 917 896 ConsoleMessage* consoleMessage = new ConsoleMessage(source, level, message, lineNumber, sourceID); 918 addConsoleMessage(new ConsoleMessage(source, level, message, lineNumber, sourceID)); 919 } 920 921 void InspectorController::addConsoleMessage(ConsoleMessage* consoleMessage) 922 { 923 ASSERT(enabled()); 924 ASSERT_ARG(consoleMessage, consoleMessage); 925 897 926 m_consoleMessages.append(consoleMessage); 898 927 … … 1560 1589 JSValueRef sourceValue = JSValueMakeNumber(m_scriptContext, message->source); 1561 1590 JSValueRef levelValue = JSValueMakeNumber(m_scriptContext, message->level); 1562 JSRetainPtr<JSStringRef> messageString(Adopt, JSStringCreateWithCharacters(message->message.characters(), message->message.length()));1563 JSValueRef messageValue = JSValueMakeString(m_scriptContext, messageString.get());1564 1591 JSValueRef lineValue = JSValueMakeNumber(m_scriptContext, message->line); 1565 1592 JSRetainPtr<JSStringRef> urlString(Adopt, JSStringCreateWithCharacters(message->url.characters(), message->url.length())); 1566 1593 JSValueRef urlValue = JSValueMakeString(m_scriptContext, urlString.get()); 1567 1594 1568 JSValueRef args[] = { sourceValue, levelValue, messageValue, lineValue, urlValue }; 1569 JSObjectRef messageObject = JSObjectCallAsConstructor(m_scriptContext, messageConstructor, 5, args, &exception); 1595 static const unsigned maximumMessageArguments = 256; 1596 JSValueRef arguments[maximumMessageArguments]; 1597 unsigned argumentCount = 0; 1598 arguments[argumentCount++] = sourceValue; 1599 arguments[argumentCount++] = levelValue; 1600 arguments[argumentCount++] = lineValue; 1601 arguments[argumentCount++] = urlValue; 1602 1603 if (!message->wrappedArguments.isEmpty()) { 1604 unsigned remainingSpaceInArguments = maximumMessageArguments - argumentCount; 1605 unsigned argumentsToAdd = min(remainingSpaceInArguments, static_cast<unsigned>(message->wrappedArguments.size())); 1606 for (unsigned i = 0; i < argumentsToAdd; ++i) 1607 arguments[argumentCount++] = toRef(message->wrappedArguments[i]); 1608 } else { 1609 JSRetainPtr<JSStringRef> messageString(Adopt, JSStringCreateWithCharacters(message->message.characters(), message->message.length())); 1610 JSValueRef messageValue = JSValueMakeString(m_scriptContext, messageString.get()); 1611 arguments[argumentCount++] = messageValue; 1612 } 1613 1614 JSObjectRef messageObject = JSObjectCallAsConstructor(m_scriptContext, messageConstructor, argumentCount, arguments, &exception); 1570 1615 if (HANDLE_EXCEPTION(exception)) 1571 1616 return; -
trunk/WebCore/page/InspectorController.h
r31951 r31952 92 92 void setWindowVisible(bool visible = true); 93 93 94 void addMessageToConsole(MessageSource, MessageLevel, KJS::ExecState*, const KJS::List& arguments, unsigned lineNumber, const String& sourceID); 94 95 void addMessageToConsole(MessageSource, MessageLevel, const String& message, unsigned lineNumber, const String& sourceID); 95 96 … … 133 134 void focusNode(); 134 135 136 void addConsoleMessage(ConsoleMessage*); 135 137 void addScriptConsoleMessage(const ConsoleMessage*); 136 138 -
trunk/WebCore/page/inspector/Console.js
r31909 r31952 415 415 WebInspector.Console.prototype.__proto__ = WebInspector.View.prototype; 416 416 417 WebInspector.ConsoleMessage = function(source, level, message,line, url)417 WebInspector.ConsoleMessage = function(source, level, line, url) 418 418 { 419 419 this.source = source; 420 420 this.level = level; 421 this.message = message;422 421 this.line = line; 423 422 this.url = url; 423 424 this.message = arguments[4]; 424 425 } 425 426 -
trunk/WebCore/page/inspector/Resource.js
r31922 r31952 434 434 /* 435 435 var msg = new WebInspector.ConsoleMessage(WebInspector.ConsoleMessage.MessageSource.Other, 436 WebInspector.ConsoleMessage.MessageLevel.Tip, tip.message, -1, this.url);436 WebInspector.ConsoleMessage.MessageLevel.Tip, -1, this.url, tip.message); 437 437 WebInspector.consolePanel.addMessage(msg); 438 438 */ … … 494 494 if (!this._mimeTypeIsConsistentWithType()) 495 495 msg = new WebInspector.ConsoleMessage(WebInspector.ConsoleMessage.MessageSource.Other, 496 WebInspector.ConsoleMessage.MessageLevel.Warning, 496 WebInspector.ConsoleMessage.MessageLevel.Warning, -1, this.url, 497 497 String.sprintf(WebInspector.Warnings.IncorrectMIMEType.message, 498 WebInspector.Resource.Type.toString(this.type), this.mimeType), 499 -1, this.url); 498 WebInspector.Resource.Type.toString(this.type), this.mimeType)); 500 499 break; 501 500 }
Note: See TracChangeset
for help on using the changeset viewer.