Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: Source/WebCore/inspector/ScriptArguments.cpp

Issue 8806015: Changes to support a second VM. (Closed) Base URL: svn://svn.chromium.org/dash/experimental/chrome/src/webkit-full
Patch Set: . Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010 Google Inc. All rights reserved. 2 * Copyright (c) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "ScriptArguments.h" 32 #include "ScriptArguments.h"
33 33
34 #include "InspectorValues.h"
35 #include "InjectedScript.h"
36 #include "InjectedScriptManager.h"
34 #include "ScriptValue.h" 37 #include "ScriptValue.h"
35 38
36 namespace WebCore { 39 namespace WebCore {
37 40
38 PassRefPtr<ScriptArguments> ScriptArguments::create(ScriptState* scriptState, Ve ctor<ScriptValue>& arguments) 41 PassRefPtr<JavaScriptArguments> JavaScriptArguments::create(ScriptState* scriptS tate, Vector<ScriptValue>& arguments)
39 { 42 {
40 return adoptRef(new ScriptArguments(scriptState, arguments)); 43 return adoptRef(new JavaScriptArguments(scriptState, arguments));
41 } 44 }
42 45
43 ScriptArguments::ScriptArguments(ScriptState* scriptState, Vector<ScriptValue>& arguments) 46 JavaScriptArguments::JavaScriptArguments(ScriptState* scriptState, Vector<Script Value>& arguments)
44 : m_scriptState(scriptState) 47 : m_scriptState(scriptState)
45 { 48 {
46 m_arguments.swap(arguments); 49 m_arguments.swap(arguments);
47 } 50 }
48 51
49 ScriptArguments::~ScriptArguments() 52 JavaScriptArguments::~JavaScriptArguments()
50 { 53 {
51 } 54 }
52 55
53 const ScriptValue &ScriptArguments::argumentAt(size_t index) const 56 PassRefPtr<InspectorArray> JavaScriptArguments::wrap(InjectedScriptManager* inje ctedScriptManager) const
57 {
58 if (!argumentCount())
59 return 0;
60
61 InjectedScript injectedScript = injectedScriptManager->injectedScriptFor(m_s criptState.get());
62 if (injectedScript.hasNoValue())
63 return 0;
64
65 RefPtr<InspectorArray> wrappedArguments = InspectorArray::create();
66 for (unsigned i = 0; i < argumentCount(); ++i) {
67 RefPtr<InspectorValue> wrappedArgument = injectedScript.wrapObject(argum entAt(i), "console");
68 if (!wrappedArgument) {
69 ASSERT_NOT_REACHED();
70 return 0;
71 }
72 wrappedArguments->pushValue(wrappedArgument);
73 }
74 return wrappedArguments.release();
75 }
76
77 DOMWindow* JavaScriptArguments::domWindow() const
78 {
79 return domWindowFromScriptState(m_scriptState.get());
80 }
81
82 bool JavaScriptArguments::argumentGetString(size_t index, String& result) const
83 {
84 if (index >= m_arguments.size())
85 return false;
86 return argumentAt(index).getString(m_scriptState.get(), result);
87 }
88
89 bool JavaScriptArguments::argumentToString(size_t index, String& result) const
90 {
91 if (index >= m_arguments.size())
92 return false;
93 result = argumentAt(index).toString(m_scriptState.get());
94 return true;
95 }
96
97 ScriptValue JavaScriptArguments::argumentAt(size_t index) const
54 { 98 {
55 ASSERT(m_arguments.size() > index); 99 ASSERT(m_arguments.size() > index);
56 return m_arguments[index]; 100 return m_arguments[index];
57 } 101 }
58 102
59 ScriptState* ScriptArguments::globalState() const 103 bool JavaScriptArguments::isEqual(ScriptArguments* other) const
60 {
61 return m_scriptState.get();
62 }
63
64 bool ScriptArguments::getFirstArgumentAsString(String& result, bool checkForNull OrUndefined)
65 {
66 if (!argumentCount())
67 return false;
68
69 const ScriptValue& value = argumentAt(0);
70 if (checkForNullOrUndefined && (value.isNull() || value.isUndefined()))
71 return false;
72
73 if (!globalState()) {
74 ASSERT_NOT_REACHED();
75 return false;
76 }
77
78 result = value.toString(globalState());
79 return true;
80 }
81
82 bool ScriptArguments::isEqual(ScriptArguments* other) const
83 { 104 {
84 if (!other) 105 if (!other)
85 return false; 106 return false;
86 107
87 if (m_arguments.size() != other->m_arguments.size()) 108 if (argumentCount() != other->argumentCount())
88 return false;
89 if (!globalState() && m_arguments.size())
90 return false; 109 return false;
91 110
92 for (size_t i = 0; i < m_arguments.size(); ++i) { 111 for (size_t i = 0; i < argumentCount(); ++i) {
93 if (!m_arguments[i].isEqual(other->globalState(), other->m_arguments[i]) ) 112 if (!argumentAt(i).isEqual(m_scriptState.get(), other->argumentAt(i)))
94 return false; 113 return false;
95 } 114 }
96 return true; 115 return true;
97 } 116 }
98 117
99 } // namespace WebCore 118 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698