Index: Source/WebCore/inspector/ScriptArguments.cpp |
diff --git a/Source/WebCore/inspector/ScriptArguments.cpp b/Source/WebCore/inspector/ScriptArguments.cpp |
index b0fe554ea78e5d0a76737fad85dfb8ac1856098f..43251e6845fa7ef58976074ecfb0d80d3b744af7 100644 |
--- a/Source/WebCore/inspector/ScriptArguments.cpp |
+++ b/Source/WebCore/inspector/ScriptArguments.cpp |
@@ -31,66 +31,85 @@ |
#include "config.h" |
#include "ScriptArguments.h" |
+#include "InspectorValues.h" |
+#include "InjectedScript.h" |
+#include "InjectedScriptManager.h" |
#include "ScriptValue.h" |
namespace WebCore { |
-PassRefPtr<ScriptArguments> ScriptArguments::create(ScriptState* scriptState, Vector<ScriptValue>& arguments) |
+PassRefPtr<JavaScriptArguments> JavaScriptArguments::create(ScriptState* scriptState, Vector<ScriptValue>& arguments) |
{ |
- return adoptRef(new ScriptArguments(scriptState, arguments)); |
+ return adoptRef(new JavaScriptArguments(scriptState, arguments)); |
} |
-ScriptArguments::ScriptArguments(ScriptState* scriptState, Vector<ScriptValue>& arguments) |
+JavaScriptArguments::JavaScriptArguments(ScriptState* scriptState, Vector<ScriptValue>& arguments) |
: m_scriptState(scriptState) |
{ |
m_arguments.swap(arguments); |
} |
-ScriptArguments::~ScriptArguments() |
+JavaScriptArguments::~JavaScriptArguments() |
{ |
} |
-const ScriptValue &ScriptArguments::argumentAt(size_t index) const |
+PassRefPtr<InspectorArray> JavaScriptArguments::wrap(InjectedScriptManager* injectedScriptManager) const |
{ |
- ASSERT(m_arguments.size() > index); |
- return m_arguments[index]; |
+ if (!argumentCount()) |
+ return 0; |
+ |
+ InjectedScript injectedScript = injectedScriptManager->injectedScriptFor(m_scriptState.get()); |
+ if (injectedScript.hasNoValue()) |
+ return 0; |
+ |
+ RefPtr<InspectorArray> wrappedArguments = InspectorArray::create(); |
+ for (unsigned i = 0; i < argumentCount(); ++i) { |
+ RefPtr<InspectorValue> wrappedArgument = injectedScript.wrapObject(argumentAt(i), "console"); |
+ if (!wrappedArgument) { |
+ ASSERT_NOT_REACHED(); |
+ return 0; |
+ } |
+ wrappedArguments->pushValue(wrappedArgument); |
+ } |
+ return wrappedArguments.release(); |
} |
-ScriptState* ScriptArguments::globalState() const |
+DOMWindow* JavaScriptArguments::domWindow() const |
{ |
- return m_scriptState.get(); |
+ return domWindowFromScriptState(m_scriptState.get()); |
} |
-bool ScriptArguments::getFirstArgumentAsString(String& result, bool checkForNullOrUndefined) |
+bool JavaScriptArguments::argumentGetString(size_t index, String& result) const |
{ |
- if (!argumentCount()) |
- return false; |
- |
- const ScriptValue& value = argumentAt(0); |
- if (checkForNullOrUndefined && (value.isNull() || value.isUndefined())) |
+ if (index >= m_arguments.size()) |
return false; |
+ return argumentAt(index).getString(m_scriptState.get(), result); |
+} |
- if (!globalState()) { |
- ASSERT_NOT_REACHED(); |
+bool JavaScriptArguments::argumentToString(size_t index, String& result) const |
+{ |
+ if (index >= m_arguments.size()) |
return false; |
- } |
- |
- result = value.toString(globalState()); |
+ result = argumentAt(index).toString(m_scriptState.get()); |
return true; |
} |
-bool ScriptArguments::isEqual(ScriptArguments* other) const |
+ScriptValue JavaScriptArguments::argumentAt(size_t index) const |
+{ |
+ ASSERT(m_arguments.size() > index); |
+ return m_arguments[index]; |
+} |
+ |
+bool JavaScriptArguments::isEqual(ScriptArguments* other) const |
{ |
if (!other) |
return false; |
- if (m_arguments.size() != other->m_arguments.size()) |
- return false; |
- if (!globalState() && m_arguments.size()) |
+ if (argumentCount() != other->argumentCount()) |
return false; |
- for (size_t i = 0; i < m_arguments.size(); ++i) { |
- if (!m_arguments[i].isEqual(other->globalState(), other->m_arguments[i])) |
+ for (size_t i = 0; i < argumentCount(); ++i) { |
+ if (!argumentAt(i).isEqual(m_scriptState.get(), other->argumentAt(i))) |
return false; |
} |
return true; |