| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/inspector/v8-debugger-script.h" | 5 #include "src/inspector/v8-debugger-script.h" |
| 6 | 6 |
| 7 #include "src/inspector/inspected-context.h" | 7 #include "src/inspector/inspected-context.h" |
| 8 #include "src/inspector/string-util.h" | 8 #include "src/inspector/string-util.h" |
| 9 #include "src/inspector/wasm-translation.h" | 9 #include "src/inspector/wasm-translation.h" |
| 10 | 10 |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 if (script->Source().ToLocal(&tmp)) { | 135 if (script->Source().ToLocal(&tmp)) { |
| 136 m_sourceObj.Reset(m_isolate, tmp); | 136 m_sourceObj.Reset(m_isolate, tmp); |
| 137 String16 source = toProtocolString(tmp); | 137 String16 source = toProtocolString(tmp); |
| 138 // V8 will not count last line if script source ends with \n. | 138 // V8 will not count last line if script source ends with \n. |
| 139 if (source.length() > 1 && source[source.length() - 1] == '\n') { | 139 if (source.length() > 1 && source[source.length() - 1] == '\n') { |
| 140 m_endLine++; | 140 m_endLine++; |
| 141 m_endColumn = 0; | 141 m_endColumn = 0; |
| 142 } | 142 } |
| 143 } | 143 } |
| 144 | 144 |
| 145 m_isModule = script->IsModule(); |
| 146 |
| 145 m_script.Reset(m_isolate, script); | 147 m_script.Reset(m_isolate, script); |
| 146 } | 148 } |
| 147 | 149 |
| 148 bool isLiveEdit() const override { return m_isLiveEdit; } | 150 bool isLiveEdit() const override { return m_isLiveEdit; } |
| 151 bool isModule() const override { return m_isModule; } |
| 149 | 152 |
| 150 const String16& sourceMappingURL() const override { | 153 const String16& sourceMappingURL() const override { |
| 151 return m_sourceMappingURL; | 154 return m_sourceMappingURL; |
| 152 } | 155 } |
| 153 | 156 |
| 154 String16 source(v8::Isolate* isolate) const override { | 157 String16 source(v8::Isolate* isolate) const override { |
| 155 if (!m_sourceObj.IsEmpty()) | 158 if (!m_sourceObj.IsEmpty()) |
| 156 return toProtocolString(m_sourceObj.Get(isolate)); | 159 return toProtocolString(m_sourceObj.Get(isolate)); |
| 157 return V8DebuggerScript::source(isolate); | 160 return V8DebuggerScript::source(isolate); |
| 158 } | 161 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 184 String16 GetNameOrSourceUrl(v8::Local<v8::debug::Script> script) { | 187 String16 GetNameOrSourceUrl(v8::Local<v8::debug::Script> script) { |
| 185 v8::Local<v8::String> name; | 188 v8::Local<v8::String> name; |
| 186 if (script->Name().ToLocal(&name) || script->SourceURL().ToLocal(&name)) | 189 if (script->Name().ToLocal(&name) || script->SourceURL().ToLocal(&name)) |
| 187 return toProtocolString(name); | 190 return toProtocolString(name); |
| 188 return String16(); | 191 return String16(); |
| 189 } | 192 } |
| 190 | 193 |
| 191 String16 m_sourceMappingURL; | 194 String16 m_sourceMappingURL; |
| 192 v8::Global<v8::String> m_sourceObj; | 195 v8::Global<v8::String> m_sourceObj; |
| 193 bool m_isLiveEdit = false; | 196 bool m_isLiveEdit = false; |
| 197 bool m_isModule = false; |
| 194 v8::Global<v8::debug::Script> m_script; | 198 v8::Global<v8::debug::Script> m_script; |
| 195 }; | 199 }; |
| 196 | 200 |
| 197 class WasmVirtualScript : public V8DebuggerScript { | 201 class WasmVirtualScript : public V8DebuggerScript { |
| 198 friend class V8DebuggerScript; | 202 friend class V8DebuggerScript; |
| 199 | 203 |
| 200 public: | 204 public: |
| 201 WasmVirtualScript(v8::Isolate* isolate, WasmTranslation* wasmTranslation, | 205 WasmVirtualScript(v8::Isolate* isolate, WasmTranslation* wasmTranslation, |
| 202 v8::Local<v8::debug::WasmScript> script, String16 id, | 206 v8::Local<v8::debug::WasmScript> script, String16 id, |
| 203 String16 url, String16 source) | 207 String16 url, String16 source) |
| 204 : V8DebuggerScript(isolate, std::move(id), std::move(url)), | 208 : V8DebuggerScript(isolate, std::move(id), std::move(url)), |
| 205 m_script(isolate, script), | 209 m_script(isolate, script), |
| 206 m_wasmTranslation(wasmTranslation) { | 210 m_wasmTranslation(wasmTranslation) { |
| 207 int num_lines = 0; | 211 int num_lines = 0; |
| 208 int last_newline = -1; | 212 int last_newline = -1; |
| 209 size_t next_newline = source.find('\n', last_newline + 1); | 213 size_t next_newline = source.find('\n', last_newline + 1); |
| 210 while (next_newline != String16::kNotFound) { | 214 while (next_newline != String16::kNotFound) { |
| 211 last_newline = static_cast<int>(next_newline); | 215 last_newline = static_cast<int>(next_newline); |
| 212 next_newline = source.find('\n', last_newline + 1); | 216 next_newline = source.find('\n', last_newline + 1); |
| 213 ++num_lines; | 217 ++num_lines; |
| 214 } | 218 } |
| 215 m_endLine = num_lines; | 219 m_endLine = num_lines; |
| 216 m_endColumn = static_cast<int>(source.length()) - last_newline - 1; | 220 m_endColumn = static_cast<int>(source.length()) - last_newline - 1; |
| 217 m_source = std::move(source); | 221 m_source = std::move(source); |
| 218 } | 222 } |
| 219 | 223 |
| 220 const String16& sourceMappingURL() const override { return emptyString(); } | 224 const String16& sourceMappingURL() const override { return emptyString(); } |
| 221 bool isLiveEdit() const override { return false; } | 225 bool isLiveEdit() const override { return false; } |
| 226 bool isModule() const override { return false; } |
| 222 void setSourceMappingURL(const String16&) override {} | 227 void setSourceMappingURL(const String16&) override {} |
| 223 | 228 |
| 224 bool getPossibleBreakpoints( | 229 bool getPossibleBreakpoints( |
| 225 const v8::debug::Location& start, const v8::debug::Location& end, | 230 const v8::debug::Location& start, const v8::debug::Location& end, |
| 226 std::vector<v8::debug::Location>* locations) override { | 231 std::vector<v8::debug::Location>* locations) override { |
| 227 v8::HandleScope scope(m_isolate); | 232 v8::HandleScope scope(m_isolate); |
| 228 v8::Local<v8::debug::Script> script = m_script.Get(m_isolate); | 233 v8::Local<v8::debug::Script> script = m_script.Get(m_isolate); |
| 229 String16 v8ScriptId = String16::fromInteger(script->Id()); | 234 String16 v8ScriptId = String16::fromInteger(script->Id()); |
| 230 | 235 |
| 231 v8::debug::Location translatedStart = start; | 236 v8::debug::Location translatedStart = start; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 if (m_hash.isEmpty()) m_hash = calculateHash(source(isolate)); | 300 if (m_hash.isEmpty()) m_hash = calculateHash(source(isolate)); |
| 296 DCHECK(!m_hash.isEmpty()); | 301 DCHECK(!m_hash.isEmpty()); |
| 297 return m_hash; | 302 return m_hash; |
| 298 } | 303 } |
| 299 | 304 |
| 300 void V8DebuggerScript::setSourceURL(const String16& sourceURL) { | 305 void V8DebuggerScript::setSourceURL(const String16& sourceURL) { |
| 301 m_sourceURL = sourceURL; | 306 m_sourceURL = sourceURL; |
| 302 } | 307 } |
| 303 | 308 |
| 304 } // namespace v8_inspector | 309 } // namespace v8_inspector |
| OLD | NEW |