Index: Source/core/inspector/ConsoleMessage.cpp |
diff --git a/Source/core/inspector/ConsoleMessage.cpp b/Source/core/inspector/ConsoleMessage.cpp |
index a92ac9fd3be9f54c3cbe5a1e7f40c1e183254a65..4269e75f14753c18d48006225f2332d80a84183d 100644 |
--- a/Source/core/inspector/ConsoleMessage.cpp |
+++ b/Source/core/inspector/ConsoleMessage.cpp |
@@ -1,32 +1,6 @@ |
-/* |
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
- * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> |
- * Copyright (C) 2009, 2010 Google 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. |
- */ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
#include "config.h" |
@@ -40,229 +14,129 @@ |
#include "core/inspector/InjectedScript.h" |
#include "core/inspector/InjectedScriptManager.h" |
#include "core/inspector/ScriptArguments.h" |
-#include "core/inspector/ScriptAsyncCallStack.h" |
#include "core/inspector/ScriptCallFrame.h" |
#include "core/inspector/ScriptCallStack.h" |
#include "wtf/CurrentTime.h" |
namespace WebCore { |
-ConsoleMessage::ConsoleMessage(bool canGenerateCallStack, MessageSource source, MessageType type, MessageLevel level, const String& message) |
- : m_source(source) |
- , m_type(type) |
- , m_level(level) |
- , m_message(message) |
- , m_scriptState(0) |
- , m_url() |
- , m_line(0) |
- , m_column(0) |
- , m_requestId(IdentifiersFactory::requestId(0)) |
- , m_timestamp(WTF::currentTime()) |
+ConsoleMessage::ConsoleMessage() |
+ : m_lineNumber(0) |
+ , m_columnNumber(0) |
+ , m_requestIdentifier(0) |
+ , m_corsStatus(NotSharableCrossOrigin) |
{ |
- autogenerateMetadata(canGenerateCallStack); |
} |
-ConsoleMessage::ConsoleMessage(bool canGenerateCallStack, MessageSource source, MessageType type, MessageLevel level, const String& message, const String& url, unsigned line, unsigned column, ScriptState* scriptState, unsigned long requestIdentifier) |
+ConsoleMessage::ConsoleMessage(MessageSource source, |
+ MessageLevel level, |
+ const String& message, |
+ const String& url, |
+ unsigned lineNumber, |
+ unsigned columnNumber, |
+ PassRefPtr<ScriptCallStack> callStack, |
+ unsigned long requestIdentifier, |
+ AccessControlStatus corsStatus) |
: m_source(source) |
- , m_type(type) |
, m_level(level) |
, m_message(message) |
- , m_scriptState(scriptState) |
, m_url(url) |
- , m_line(line) |
- , m_column(column) |
- , m_requestId(IdentifiersFactory::requestId(requestIdentifier)) |
- , m_timestamp(WTF::currentTime()) |
+ , m_lineNumber(lineNumber) |
+ , m_columnNumber(columnNumber) |
+ , m_callStack(callStack) |
+ , m_requestIdentifier(requestIdentifier) |
+ , m_corsStatus(corsStatus) |
{ |
- autogenerateMetadata(canGenerateCallStack, scriptState); |
} |
-ConsoleMessage::ConsoleMessage(bool, MessageSource source, MessageType type, MessageLevel level, const String& message, PassRefPtrWillBeRawPtr<ScriptCallStack> callStack, unsigned long requestIdentifier) |
- : m_source(source) |
- , m_type(type) |
- , m_level(level) |
- , m_message(message) |
- , m_scriptState(0) |
- , m_arguments(nullptr) |
- , m_line(0) |
- , m_column(0) |
- , m_requestId(IdentifiersFactory::requestId(requestIdentifier)) |
- , m_timestamp(WTF::currentTime()) |
+MessageSource ConsoleMessage::source() const |
{ |
- if (callStack && callStack->size()) { |
- const ScriptCallFrame& frame = callStack->at(0); |
- m_url = frame.sourceURL(); |
- m_line = frame.lineNumber(); |
- m_column = frame.columnNumber(); |
- } |
- m_callStack = callStack; |
+ return m_source; |
} |
-ConsoleMessage::ConsoleMessage(bool canGenerateCallStack, MessageSource source, MessageType type, MessageLevel level, const String& message, PassRefPtrWillBeRawPtr<ScriptArguments> arguments, ScriptState* scriptState, unsigned long requestIdentifier) |
- : m_source(source) |
- , m_type(type) |
- , m_level(level) |
- , m_message(message) |
- , m_scriptState(scriptState) |
- , m_arguments(arguments) |
- , m_url() |
- , m_line(0) |
- , m_column(0) |
- , m_requestId(IdentifiersFactory::requestId(requestIdentifier)) |
- , m_timestamp(WTF::currentTime()) |
+void ConsoleMessage::setSource(MessageSource source) |
+{ |
+ m_source = source; |
+} |
+ |
+MessageLevel ConsoleMessage::level() const |
+{ |
+ return m_level; |
+} |
+ |
+void ConsoleMessage::setLevel(MessageLevel level) |
{ |
- autogenerateMetadata(canGenerateCallStack, scriptState); |
+ m_level = level; |
} |
-ConsoleMessage::~ConsoleMessage() |
+const String& ConsoleMessage::message() const |
{ |
+ return m_message; |
} |
-void ConsoleMessage::autogenerateMetadata(bool canGenerateCallStack, ScriptState* scriptState) |
+void ConsoleMessage::setMessage(const String& message) |
{ |
- if (m_type == EndGroupMessageType) |
- return; |
+ m_message = message; |
+} |
- if (scriptState) |
- m_callStack = createScriptCallStackForConsole(scriptState); |
- else if (canGenerateCallStack) |
- m_callStack = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture, true); |
- else |
- return; |
+const String& ConsoleMessage::url() const |
+{ |
+ return m_url; |
+} |
+ |
+void ConsoleMessage::setURL(const String& url) |
+{ |
+ m_url = url; |
+} |
- if (m_callStack && m_callStack->size()) { |
- const ScriptCallFrame& frame = m_callStack->at(0); |
- m_url = frame.sourceURL(); |
- m_line = frame.lineNumber(); |
- m_column = frame.columnNumber(); |
- return; |
- } |
+unsigned ConsoleMessage::lineNumber() const |
+{ |
+ return m_lineNumber; |
+} |
- m_callStack.clear(); |
+void ConsoleMessage::setLineNumber(unsigned lineNumber) |
+{ |
+ m_lineNumber = lineNumber; |
} |
-static TypeBuilder::Console::ConsoleMessage::Source::Enum messageSourceValue(MessageSource source) |
+unsigned ConsoleMessage::columnNumber() const |
{ |
- switch (source) { |
- case XMLMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Xml; |
- case JSMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Javascript; |
- case NetworkMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Network; |
- case ConsoleAPIMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Console_api; |
- case StorageMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Storage; |
- case AppCacheMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Appcache; |
- case RenderingMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Rendering; |
- case CSSMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Css; |
- case SecurityMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Security; |
- case OtherMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Other; |
- case DeprecationMessageSource: return TypeBuilder::Console::ConsoleMessage::Source::Deprecation; |
- } |
- return TypeBuilder::Console::ConsoleMessage::Source::Other; |
+ return m_columnNumber; |
} |
-static TypeBuilder::Console::ConsoleMessage::Type::Enum messageTypeValue(MessageType type) |
+void ConsoleMessage::setColumnNumber(unsigned columnNumber) |
{ |
- switch (type) { |
- case LogMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Log; |
- case ClearMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Clear; |
- case DirMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Dir; |
- case DirXMLMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Dirxml; |
- case TableMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Table; |
- case TraceMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Trace; |
- case StartGroupMessageType: return TypeBuilder::Console::ConsoleMessage::Type::StartGroup; |
- case StartGroupCollapsedMessageType: return TypeBuilder::Console::ConsoleMessage::Type::StartGroupCollapsed; |
- case EndGroupMessageType: return TypeBuilder::Console::ConsoleMessage::Type::EndGroup; |
- case AssertMessageType: return TypeBuilder::Console::ConsoleMessage::Type::Assert; |
- } |
- return TypeBuilder::Console::ConsoleMessage::Type::Log; |
+ m_columnNumber = columnNumber; |
} |
-static TypeBuilder::Console::ConsoleMessage::Level::Enum messageLevelValue(MessageLevel level) |
+PassRefPtr<ScriptCallStack> ConsoleMessage::callStack() |
{ |
- switch (level) { |
- case DebugMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Debug; |
- case LogMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Log; |
- case WarningMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Warning; |
- case ErrorMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Error; |
- case InfoMessageLevel: return TypeBuilder::Console::ConsoleMessage::Level::Info; |
- } |
- return TypeBuilder::Console::ConsoleMessage::Level::Log; |
+ return m_callStack; |
} |
-void ConsoleMessage::addToFrontend(InspectorFrontend::Console* frontend, InjectedScriptManager* injectedScriptManager, bool generatePreview) |
+void ConsoleMessage::setCallStack(PassRefPtr<ScriptCallStack> callStack) |
{ |
- RefPtr<TypeBuilder::Console::ConsoleMessage> jsonObj = TypeBuilder::Console::ConsoleMessage::create() |
- .setSource(messageSourceValue(m_source)) |
- .setLevel(messageLevelValue(m_level)) |
- .setText(m_message) |
- .setTimestamp(m_timestamp); |
- // FIXME: only send out type for ConsoleAPI source messages. |
- jsonObj->setType(messageTypeValue(m_type)); |
- jsonObj->setLine(static_cast<int>(m_line)); |
- jsonObj->setColumn(static_cast<int>(m_column)); |
- jsonObj->setUrl(m_url); |
- ScriptState* scriptState = m_scriptState.get(); |
- if (scriptState) |
- jsonObj->setExecutionContextId(injectedScriptManager->injectedScriptIdFor(scriptState)); |
- if (m_source == NetworkMessageSource && !m_requestId.isEmpty()) |
- jsonObj->setNetworkRequestId(m_requestId); |
- if (m_arguments && m_arguments->argumentCount()) { |
- InjectedScript injectedScript = injectedScriptManager->injectedScriptFor(m_arguments->scriptState()); |
- if (!injectedScript.isEmpty()) { |
- RefPtr<TypeBuilder::Array<TypeBuilder::Runtime::RemoteObject> > jsonArgs = TypeBuilder::Array<TypeBuilder::Runtime::RemoteObject>::create(); |
- if (m_type == TableMessageType && generatePreview && m_arguments->argumentCount()) { |
- ScriptValue table = m_arguments->argumentAt(0); |
- ScriptValue columns = m_arguments->argumentCount() > 1 ? m_arguments->argumentAt(1) : ScriptValue(); |
- RefPtr<TypeBuilder::Runtime::RemoteObject> inspectorValue = injectedScript.wrapTable(table, columns); |
- if (!inspectorValue) { |
- ASSERT_NOT_REACHED(); |
- return; |
- } |
- jsonArgs->addItem(inspectorValue); |
- } else { |
- for (unsigned i = 0; i < m_arguments->argumentCount(); ++i) { |
- RefPtr<TypeBuilder::Runtime::RemoteObject> inspectorValue = injectedScript.wrapObject(m_arguments->argumentAt(i), "console", generatePreview); |
- if (!inspectorValue) { |
- ASSERT_NOT_REACHED(); |
- return; |
- } |
- jsonArgs->addItem(inspectorValue); |
- } |
- } |
- jsonObj->setParameters(jsonArgs); |
- } |
- } |
- if (m_callStack) |
- jsonObj->setStackTrace(m_callStack->buildInspectorArray()); |
- if (m_asyncCallStack) |
- jsonObj->setAsyncStackTrace(m_asyncCallStack->buildInspectorObject()); |
- frontend->messageAdded(jsonObj); |
- frontend->flush(); |
+ m_callStack = callStack; |
} |
-void ConsoleMessage::setAsyncStackTrace(PassRefPtrWillBeRawPtr<ScriptAsyncCallStack> asyncCallStack) |
+unsigned long ConsoleMessage::requestIdentifier() const |
{ |
- m_asyncCallStack = asyncCallStack; |
+ return m_requestIdentifier; |
} |
-void ConsoleMessage::windowCleared(LocalDOMWindow* window) |
+void ConsoleMessage::setRequestIdentifier(unsigned long requestIdentifier) |
{ |
- if (m_scriptState.get() && m_scriptState.get()->domWindow() == window) |
- m_scriptState.clear(); |
+ m_requestIdentifier = requestIdentifier; |
+} |
- if (!m_arguments) |
- return; |
- if (m_arguments->scriptState()->domWindow() != window) |
- return; |
- if (!m_message) |
- m_message = "<message collected>"; |
- m_arguments.clear(); |
+AccessControlStatus ConsoleMessage::corsStatus() const |
+{ |
+ return m_corsStatus; |
} |
-unsigned ConsoleMessage::argumentCount() |
+void ConsoleMessage::setCorsStatus(AccessControlStatus corsStatus) |
{ |
- if (m_arguments) |
- return m_arguments->argumentCount(); |
- return 0; |
+ m_corsStatus = corsStatus; |
} |
} // namespace WebCore |