diff options
author | dglazkov@google.com <dglazkov@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-17 17:41:46 +0000 |
---|---|---|
committer | dglazkov@google.com <dglazkov@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-17 17:41:46 +0000 |
commit | d68e3ff53b0ff114e7e7f2035f345e76c6017567 (patch) | |
tree | c37e1e0e885dbca7496d3e64f99b705126c0828e /webkit/port/page | |
parent | bc410f64b906bf3a5ca7721d73b3632fcccaeae2 (diff) | |
download | chromium_src-d68e3ff53b0ff114e7e7f2035f345e76c6017567.zip chromium_src-d68e3ff53b0ff114e7e7f2035f345e76c6017567.tar.gz chromium_src-d68e3ff53b0ff114e7e7f2035f345e76c6017567.tar.bz2 |
Implement ScriptCallContext (3/2)This is an improved (and working!) revision of http://codereview.chromium.org/7453/For Mac and Linux build guys, here's the rundown:A webkit/port/bindings/v8/ScriptCallContextV8.cppA third_party/WebKit/WebCore/bindings/js/ScriptCallContext.cpp -- this one is for KJS build onlyA third_party/WebKit/WebCore/page/ScriptCallContext.h
Review URL: http://codereview.chromium.org/7480
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3538 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/port/page')
-rw-r--r-- | webkit/port/page/Console.cpp | 162 | ||||
-rw-r--r-- | webkit/port/page/inspector/Console.js | 2 | ||||
-rw-r--r-- | webkit/port/page/inspector/InspectorController.cpp | 56 |
3 files changed, 57 insertions, 163 deletions
diff --git a/webkit/port/page/Console.cpp b/webkit/port/page/Console.cpp deleted file mode 100644 index 66b53cd..0000000 --- a/webkit/port/page/Console.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (C) 2007 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" -#include "Console.h" - -#include "ChromeClient.h" -#include "Frame.h" -#include "FrameLoader.h" -#include "InspectorController.h" -#include "NotImplemented.h" -#include "Page.h" - -namespace WebCore { - -Console::Console(Frame* frame) - : m_frame(frame) -{ -} - -void Console::disconnectFrame() -{ - m_frame = 0; -} - -void Console::debug(const String& message) -{ - // In Firebug, console.debug has the same behavior as console.log. So we'll - // do the same. - log(message); -} - -void Console::error(const String& message) -{ - // TODO(erg): For all of these methods which call addMessageToConsole(), we - // always assume the line number of the console.error(...) was called on - // line 0. To fix this, we need to modify the V8 version of the Console - // interface to also pass in the current line number, which will be hard - // since it looks like that information isn't publicly accessible with the - // current v8 interface. <http://crbug.com/2960> - // - // This will fix this currently broken test: - // LayoutTests/fast/dom/Window/console-functions.html - - if (!m_frame) - return; - - Page* page = m_frame->page(); - if (!page) - return; - - const KURL& url = m_frame->loader()->url(); - String prettyURL = url.prettyURL(); - - page->chrome()->client()->addMessageToConsole(message, 0, prettyURL); - page->inspectorController()->addMessageToConsole(JSMessageSource, ErrorMessageLevel, message, 0, url.string()); -} - -void Console::info(const String& message) -{ - if (!m_frame) - return; - - Page* page = m_frame->page(); - if (!page) - return; - - const KURL& url = m_frame->loader()->url(); - String prettyURL = url.prettyURL(); - - page->chrome()->client()->addMessageToConsole(message, 0, prettyURL); - page->inspectorController()->addMessageToConsole(JSMessageSource, LogMessageLevel, message, 0, url.string()); -} - -void Console::log(const String& message) -{ - if (!m_frame) - return; - - Page* page = m_frame->page(); - if (!page) - return; - - const KURL& url = m_frame->loader()->url(); - String prettyURL = url.prettyURL(); - - page->chrome()->client()->addMessageToConsole(message, 0, prettyURL); - page->inspectorController()->addMessageToConsole(JSMessageSource, LogMessageLevel, message, 0, url.string()); -} - -void Console::warn(const String& message) -{ - if (!m_frame) - return; - - Page* page = m_frame->page(); - if (!page) - return; - - const KURL& url = m_frame->loader()->url(); - String prettyURL = url.prettyURL(); - - page->chrome()->client()->addMessageToConsole(message, 0, prettyURL); - page->inspectorController()->addMessageToConsole(JSMessageSource, WarningMessageLevel, message, 0, url.string()); -} - -void Console::addMessage(MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL) -{ - Page* page = this->page(); - if (!page) - return; - - if (source == JSMessageSource) - page->chrome()->client()->addMessageToConsole(message, lineNumber, sourceURL); - - page->inspectorController()->addMessageToConsole(source, level, message, lineNumber, sourceURL); -} - -void Console::time(const String& title) -{ - notImplemented(); -} - -void Console::groupEnd() -{ - notImplemented(); -} - -Page* Console::page() const -{ - if (!m_frame) - return 0; - - return m_frame->page(); -} - -} // namespace WebCore diff --git a/webkit/port/page/inspector/Console.js b/webkit/port/page/inspector/Console.js index 1292531..18e3537 100644 --- a/webkit/port/page/inspector/Console.js +++ b/webkit/port/page/inspector/Console.js @@ -494,7 +494,7 @@ WebInspector.ConsoleMessage.prototype = { function formatForConsole(obj) { - return WebInspector.console._format(obj, plainText); + return WebInspector.console._format(obj, plaintext); } if (Object.type(parameters[0], InspectorController.inspectedWindow()) === "string") { diff --git a/webkit/port/page/inspector/InspectorController.cpp b/webkit/port/page/inspector/InspectorController.cpp index 7aa0a44..ede3b0b 100644 --- a/webkit/port/page/inspector/InspectorController.cpp +++ b/webkit/port/page/inspector/InspectorController.cpp @@ -66,6 +66,7 @@ #include "Range.h" #include "ResourceRequest.h" #include "ResourceResponse.h" +#include "ScriptCallContext.h" #include "ScriptController.h" #include "Settings.h" #include "SharedBuffer.h" @@ -129,9 +130,39 @@ struct ConsoleMessage { , groupLevel(g) { } + + ConsoleMessage(MessageSource s, MessageLevel l, ScriptCallContext* context, unsigned g) + : source(s) + , level(l) +#if USE(JSC) + , wrappedArguments(args.size()) +#endif + , line(context->lineNumber()) + , url(context->sourceURL()) + , groupLevel(g) + { +#if USE(JSC) + JSLock lock(false); + for (unsigned i = 0; i < context->argumentCount(); ++i) + wrappedArguments[i] = JSInspectedObjectWrapper::wrap(context->argumentAt(i)); +#elif USE(V8) + // FIXME: This is not correct. The objects are being converted to + // string and appended to one big message. But it's better than only + // supporting one string argument that we had previously. + for (unsigned i = 0; i < context->argumentCount(); ++i) { + if (i) + message.append(", "); + message.append(context->argumentStringAt(i)); + } +#endif + } + MessageSource source; MessageLevel level; String message; +#if USE(JSC) + Vector<ProtectedPtr<JSValue> > wrappedArguments; +#endif unsigned line; String url; unsigned groupLevel; @@ -752,6 +783,14 @@ void InspectorController::enableTrackResources(bool trackResources) m_resources.clear(); } +void InspectorController::addMessageToConsole(MessageSource source, MessageLevel level, ScriptCallContext* context) +{ + if (!enabled()) + return; + + addConsoleMessage(new ConsoleMessage(source, level, context, m_groupLevel)); +} + void InspectorController::addMessageToConsole(MessageSource source, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceID) { if (!enabled()) @@ -789,6 +828,23 @@ void InspectorController::clearConsoleMessages() m_consoleMessages.clear(); } +void InspectorController::startGroup(MessageSource source, ScriptCallContext* context) +{ + ++m_groupLevel; + + addConsoleMessage(new ConsoleMessage(source, StartGroupMessageLevel, context, m_groupLevel)); +} + +void InspectorController::endGroup(MessageSource source, unsigned lineNumber, const String& sourceURL) +{ + if (m_groupLevel == 0) + return; + + --m_groupLevel; + + addConsoleMessage(new ConsoleMessage(source, EndGroupMessageLevel, String(), lineNumber, sourceURL, m_groupLevel)); +} + void InspectorController::attachWindow() { if (!enabled()) |