OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> | 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> |
4 * Copyright (C) 2009 Google Inc. All rights reserved. | 4 * Copyright (C) 2009 Google Inc. All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * | 9 * |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 , m_groupLevel(g) | 47 , m_groupLevel(g) |
48 , m_repeatCount(1) | 48 , m_repeatCount(1) |
49 { | 49 { |
50 } | 50 } |
51 | 51 |
52 ConsoleMessage::ConsoleMessage(MessageSource s, MessageType t, MessageLevel l, S
criptCallStack* callStack, unsigned g, bool storeTrace) | 52 ConsoleMessage::ConsoleMessage(MessageSource s, MessageType t, MessageLevel l, S
criptCallStack* callStack, unsigned g, bool storeTrace) |
53 : m_source(s) | 53 : m_source(s) |
54 , m_type(t) | 54 , m_type(t) |
55 , m_level(l) | 55 , m_level(l) |
56 #if ENABLE(INSPECTOR) | 56 #if ENABLE(INSPECTOR) |
57 , m_wrappedArguments(callStack->at(0).argumentCount()) | 57 , m_arguments(callStack->at(0).argumentCount()) |
| 58 , m_scriptState(callStack->state()) |
58 #endif | 59 #endif |
59 , m_frames(storeTrace ? callStack->size() : 0) | 60 , m_frames(storeTrace ? callStack->size() : 0) |
60 , m_groupLevel(g) | 61 , m_groupLevel(g) |
61 , m_repeatCount(1) | 62 , m_repeatCount(1) |
62 { | 63 { |
63 const ScriptCallFrame& lastCaller = callStack->at(0); | 64 const ScriptCallFrame& lastCaller = callStack->at(0); |
64 m_line = lastCaller.lineNumber(); | 65 m_line = lastCaller.lineNumber(); |
65 m_url = lastCaller.sourceURL().string(); | 66 m_url = lastCaller.sourceURL().string(); |
66 | 67 |
67 // FIXME: For now, just store function names as strings. | 68 // FIXME: For now, just store function names as strings. |
68 // As ScriptCallStack start storing line number and source URL for all | 69 // As ScriptCallStack start storing line number and source URL for all |
69 // frames, refactor to use that, as well. | 70 // frames, refactor to use that, as well. |
70 if (storeTrace) { | 71 if (storeTrace) { |
71 for (unsigned i = 0; i < callStack->size(); ++i) | 72 for (unsigned i = 0; i < callStack->size(); ++i) |
72 m_frames[i] = callStack->at(i).functionName(); | 73 m_frames[i] = callStack->at(i).functionName(); |
73 } | 74 } |
74 | 75 |
75 #if ENABLE(INSPECTOR) | 76 #if ENABLE(INSPECTOR) |
76 for (unsigned i = 0; i < lastCaller.argumentCount(); ++i) | 77 for (unsigned i = 0; i < lastCaller.argumentCount(); ++i) |
77 m_wrappedArguments[i] = ScriptObject::quarantineValue(callStack->state()
, lastCaller.argumentAt(i)); | 78 m_arguments[i] = lastCaller.argumentAt(i); |
78 #endif | 79 #endif |
79 } | 80 } |
80 | 81 |
81 #if ENABLE(INSPECTOR) | 82 #if ENABLE(INSPECTOR) |
82 void ConsoleMessage::addToConsole(InspectorFrontend* frontend) | 83 void ConsoleMessage::addToConsole(InspectorFrontend* frontend) |
83 { | 84 { |
84 ScriptObject jsonObj = frontend->newScriptObject(); | 85 ScriptObject jsonObj = frontend->newScriptObject(); |
85 jsonObj.set("source", static_cast<int>(m_source)); | 86 jsonObj.set("source", static_cast<int>(m_source)); |
86 jsonObj.set("type", static_cast<int>(m_type)); | 87 jsonObj.set("type", static_cast<int>(m_type)); |
87 jsonObj.set("level", static_cast<int>(m_level)); | 88 jsonObj.set("level", static_cast<int>(m_level)); |
88 jsonObj.set("line", static_cast<int>(m_line)); | 89 jsonObj.set("line", static_cast<int>(m_line)); |
89 jsonObj.set("url", m_url); | 90 jsonObj.set("url", m_url); |
90 jsonObj.set("groupLevel", static_cast<int>(m_groupLevel)); | 91 jsonObj.set("groupLevel", static_cast<int>(m_groupLevel)); |
91 jsonObj.set("repeatCount", static_cast<int>(m_repeatCount)); | 92 jsonObj.set("repeatCount", static_cast<int>(m_repeatCount)); |
92 frontend->addConsoleMessage(jsonObj, m_frames, m_wrappedArguments, m_messag
e); | 93 frontend->addConsoleMessage(jsonObj, m_frames, m_scriptState, m_arguments,
m_message); |
93 } | 94 } |
94 | 95 |
95 void ConsoleMessage::updateRepeatCountInConsole(InspectorFrontend* frontend) | 96 void ConsoleMessage::updateRepeatCountInConsole(InspectorFrontend* frontend) |
96 { | 97 { |
97 frontend->updateConsoleMessageRepeatCount(m_repeatCount); | 98 frontend->updateConsoleMessageRepeatCount(m_repeatCount); |
98 } | 99 } |
99 #endif // ENABLE(INSPECTOR) | 100 #endif // ENABLE(INSPECTOR) |
100 | 101 |
101 bool ConsoleMessage::isEqual(ScriptState* state, ConsoleMessage* msg) const | 102 bool ConsoleMessage::isEqual(ScriptState* state, ConsoleMessage* msg) const |
102 { | 103 { |
103 #if ENABLE(INSPECTOR) | 104 #if ENABLE(INSPECTOR) |
104 if (msg->m_wrappedArguments.size() != m_wrappedArguments.size()) | 105 if (msg->m_arguments.size() != m_arguments.size()) |
105 return false; | 106 return false; |
106 if (!state && msg->m_wrappedArguments.size()) | 107 if (!state && msg->m_arguments.size()) |
107 return false; | 108 return false; |
108 | 109 |
109 ASSERT_ARG(state, state || msg->m_wrappedArguments.isEmpty()); | 110 ASSERT_ARG(state, state || msg->m_arguments.isEmpty()); |
110 | 111 |
111 for (size_t i = 0; i < msg->m_wrappedArguments.size(); ++i) { | 112 for (size_t i = 0; i < msg->m_arguments.size(); ++i) { |
112 if (!m_wrappedArguments[i].isEqual(state, msg->m_wrappedArguments[i])) | 113 if (!m_arguments[i].isEqual(state, msg->m_arguments[i])) |
113 return false; | 114 return false; |
114 } | 115 } |
115 #else | 116 #else |
116 UNUSED_PARAM(state); | 117 UNUSED_PARAM(state); |
117 #endif // ENABLE(INSPECTOR) | 118 #endif // ENABLE(INSPECTOR) |
118 | 119 |
119 size_t frameCount = msg->m_frames.size(); | 120 size_t frameCount = msg->m_frames.size(); |
120 if (frameCount != m_frames.size()) | 121 if (frameCount != m_frames.size()) |
121 return false; | 122 return false; |
122 | 123 |
123 for (size_t i = 0; i < frameCount; ++i) { | 124 for (size_t i = 0; i < frameCount; ++i) { |
124 if (m_frames[i] != msg->m_frames[i]) | 125 if (m_frames[i] != msg->m_frames[i]) |
125 return false; | 126 return false; |
126 } | 127 } |
127 | 128 |
128 return msg->m_source == m_source | 129 return msg->m_source == m_source |
129 && msg->m_type == m_type | 130 && msg->m_type == m_type |
130 && msg->m_level == m_level | 131 && msg->m_level == m_level |
131 && msg->m_message == m_message | 132 && msg->m_message == m_message |
132 && msg->m_line == m_line | 133 && msg->m_line == m_line |
133 && msg->m_url == m_url | 134 && msg->m_url == m_url |
134 && msg->m_groupLevel == m_groupLevel; | 135 && msg->m_groupLevel == m_groupLevel; |
135 } | 136 } |
136 | 137 |
137 } // namespace WebCore | 138 } // namespace WebCore |
OLD | NEW |