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

Side by Side Diff: third_party/WebKit/Source/platform/v8_inspector/V8InspectorSessionImpl.cpp

Issue 2087953004: Switch v8 inspector to stl collections (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 months 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium 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 "platform/v8_inspector/V8InspectorSessionImpl.h" 5 #include "platform/v8_inspector/V8InspectorSessionImpl.h"
6 6
7 #include "platform/inspector_protocol/Parser.h" 7 #include "platform/inspector_protocol/Parser.h"
8 #include "platform/v8_inspector/InjectedScript.h" 8 #include "platform/v8_inspector/InjectedScript.h"
9 #include "platform/v8_inspector/InspectedContext.h" 9 #include "platform/v8_inspector/InspectedContext.h"
10 #include "platform/v8_inspector/RemoteObjectId.h" 10 #include "platform/v8_inspector/RemoteObjectId.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 discardInjectedScripts(); 104 discardInjectedScripts();
105 } 105 }
106 106
107 void V8InspectorSessionImpl::discardInjectedScripts() 107 void V8InspectorSessionImpl::discardInjectedScripts()
108 { 108 {
109 m_inspectedObjects.clear(); 109 m_inspectedObjects.clear();
110 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId); 110 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId);
111 if (!contexts) 111 if (!contexts)
112 return; 112 return;
113 113
114 protocol::Vector<int> keys; 114 std::vector<int> keys;
115 keys.reserve(contexts->size());
115 for (auto& idContext : *contexts) 116 for (auto& idContext : *contexts)
116 keys.append(idContext.first); 117 keys.push_back(idContext.first);
117 for (auto& key : keys) { 118 for (auto& key : keys) {
118 contexts = m_debugger->contextGroup(m_contextGroupId); 119 contexts = m_debugger->contextGroup(m_contextGroupId);
119 if (contexts && contexts->contains(key)) 120 if (!contexts)
120 contexts->get(key)->discardInjectedScript(); // This may destroy som e contexts. 121 continue;
122 auto contextIt = contexts->find(key);
123 if (contextIt != contexts->end())
124 contextIt->second->discardInjectedScript(); // This may destroy some contexts.
121 } 125 }
122 } 126 }
123 127
124 InjectedScript* V8InspectorSessionImpl::findInjectedScript(ErrorString* errorStr ing, int contextId) 128 InjectedScript* V8InspectorSessionImpl::findInjectedScript(ErrorString* errorStr ing, int contextId)
125 { 129 {
126 if (!contextId) { 130 if (!contextId) {
127 *errorString = "Cannot find context with specified id"; 131 *errorString = "Cannot find context with specified id";
128 return nullptr; 132 return nullptr;
129 } 133 }
130 134
131 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId); 135 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId);
132 if (!contexts || !contexts->contains(contextId)) { 136 auto contextsIt = contexts ? contexts->find(contextId) : contexts->end();
137 if (contextsIt == contexts->end()) {
133 *errorString = "Cannot find context with specified id"; 138 *errorString = "Cannot find context with specified id";
134 return nullptr; 139 return nullptr;
135 } 140 }
136 141
137 InspectedContext* context = contexts->get(contextId); 142 const std::unique_ptr<InspectedContext>& context = contextsIt->second;
138 if (!context->getInjectedScript()) { 143 if (!context->getInjectedScript()) {
139 context->createInjectedScript(); 144 context->createInjectedScript();
140 if (!context->getInjectedScript()) { 145 if (!context->getInjectedScript()) {
141 *errorString = "Cannot access specified execution context"; 146 *errorString = "Cannot access specified execution context";
142 return nullptr; 147 return nullptr;
143 } 148 }
144 if (m_customObjectFormatterEnabled) 149 if (m_customObjectFormatterEnabled)
145 context->getInjectedScript()->setCustomObjectFormatterEnabled(true); 150 context->getInjectedScript()->setCustomObjectFormatterEnabled(true);
146 } 151 }
147 return context->getInjectedScript(); 152 return context->getInjectedScript();
148 } 153 }
149 154
150 InjectedScript* V8InspectorSessionImpl::findInjectedScript(ErrorString* errorStr ing, RemoteObjectIdBase* objectId) 155 InjectedScript* V8InspectorSessionImpl::findInjectedScript(ErrorString* errorStr ing, RemoteObjectIdBase* objectId)
151 { 156 {
152 return objectId ? findInjectedScript(errorString, objectId->contextId()) : n ullptr; 157 return objectId ? findInjectedScript(errorString, objectId->contextId()) : n ullptr;
153 } 158 }
154 159
155 void V8InspectorSessionImpl::releaseObjectGroup(const String16& objectGroup) 160 void V8InspectorSessionImpl::releaseObjectGroup(const String16& objectGroup)
156 { 161 {
157 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId); 162 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId);
158 if (!contexts) 163 if (!contexts)
159 return; 164 return;
160 165
161 protocol::Vector<int> keys; 166 std::vector<int> keys;
162 for (auto& idContext : *contexts) 167 for (auto& idContext : *contexts)
163 keys.append(idContext.first); 168 keys.push_back(idContext.first);
164 for (auto& key : keys) { 169 for (auto& key : keys) {
165 contexts = m_debugger->contextGroup(m_contextGroupId); 170 contexts = m_debugger->contextGroup(m_contextGroupId);
166 if (contexts && contexts->contains(key)) { 171 if (!contexts)
167 InjectedScript* injectedScript = contexts->get(key)->getInjectedScri pt(); 172 continue;
168 if (injectedScript) 173 auto contextsIt = contexts->find(key);
169 injectedScript->releaseObjectGroup(objectGroup); // This may des troy some contexts. 174 if (contextsIt == contexts->end())
170 } 175 continue;
176 InjectedScript* injectedScript = contextsIt->second->getInjectedScript() ;
177 if (injectedScript)
178 injectedScript->releaseObjectGroup(objectGroup); // This may destroy some contexts.
171 } 179 }
172 } 180 }
173 181
174 v8::Local<v8::Value> V8InspectorSessionImpl::findObject(ErrorString* errorString , const String16& objectId, v8::Local<v8::Context>* context, String16* groupName ) 182 v8::Local<v8::Value> V8InspectorSessionImpl::findObject(ErrorString* errorString , const String16& objectId, v8::Local<v8::Context>* context, String16* groupName )
175 { 183 {
176 std::unique_ptr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString , objectId); 184 std::unique_ptr<RemoteObjectId> remoteId = RemoteObjectId::parse(errorString , objectId);
177 if (!remoteId) 185 if (!remoteId)
178 return v8::Local<v8::Value>(); 186 return v8::Local<v8::Value>();
179 InjectedScript* injectedScript = findInjectedScript(errorString, remoteId.ge t()); 187 InjectedScript* injectedScript = findInjectedScript(errorString, remoteId.ge t());
180 if (!injectedScript) 188 if (!injectedScript)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 injectedScript->setCustomObjectFormatterEnabled(enabled); 228 injectedScript->setCustomObjectFormatterEnabled(enabled);
221 } 229 }
222 } 230 }
223 231
224 void V8InspectorSessionImpl::reportAllContexts(V8RuntimeAgentImpl* agent) 232 void V8InspectorSessionImpl::reportAllContexts(V8RuntimeAgentImpl* agent)
225 { 233 {
226 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId); 234 const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_ contextGroupId);
227 if (!contexts) 235 if (!contexts)
228 return; 236 return;
229 for (auto& idContext : *contexts) 237 for (auto& idContext : *contexts)
230 agent->reportExecutionContextCreated(idContext.second); 238 agent->reportExecutionContextCreated(idContext.second.get());
231 } 239 }
232 240
233 void V8InspectorSessionImpl::changeInstrumentationCounter(int delta) 241 void V8InspectorSessionImpl::changeInstrumentationCounter(int delta)
234 { 242 {
235 DCHECK_GE(m_instrumentationCounter + delta, 0); 243 DCHECK_GE(m_instrumentationCounter + delta, 0);
236 if (!m_instrumentationCounter) 244 if (!m_instrumentationCounter)
237 m_client->startInstrumenting(); 245 m_client->startInstrumenting();
238 m_instrumentationCounter += delta; 246 m_instrumentationCounter += delta;
239 if (!m_instrumentationCounter) 247 if (!m_instrumentationCounter)
240 m_client->stopInstrumenting(); 248 m_client->stopInstrumenting();
241 } 249 }
242 250
243 void V8InspectorSessionImpl::dispatchProtocolMessage(const String16& message) 251 void V8InspectorSessionImpl::dispatchProtocolMessage(const String16& message)
244 { 252 {
245 m_dispatcher.dispatch(message); 253 m_dispatcher.dispatch(message);
246 } 254 }
247 255
248 String16 V8InspectorSessionImpl::stateJSON() 256 String16 V8InspectorSessionImpl::stateJSON()
249 { 257 {
250 return m_state->toJSONString(); 258 return m_state->toJSONString();
251 } 259 }
252 260
253 void V8InspectorSessionImpl::addInspectedObject(std::unique_ptr<V8InspectorSessi on::Inspectable> inspectable) 261 void V8InspectorSessionImpl::addInspectedObject(std::unique_ptr<V8InspectorSessi on::Inspectable> inspectable)
254 { 262 {
255 m_inspectedObjects.prepend(std::move(inspectable)); 263 m_inspectedObjects.insert(m_inspectedObjects.begin(), std::move(inspectable) );
256 while (m_inspectedObjects.size() > kInspectedObjectBufferSize) 264 if (m_inspectedObjects.size() > kInspectedObjectBufferSize)
257 m_inspectedObjects.removeLast(); 265 m_inspectedObjects.resize(kInspectedObjectBufferSize);
258 } 266 }
259 267
260 V8InspectorSession::Inspectable* V8InspectorSessionImpl::inspectedObject(unsigne d num) 268 V8InspectorSession::Inspectable* V8InspectorSessionImpl::inspectedObject(unsigne d num)
261 { 269 {
262 if (num >= m_inspectedObjects.size()) 270 if (num >= m_inspectedObjects.size())
263 return nullptr; 271 return nullptr;
264 return m_inspectedObjects[num]; 272 return m_inspectedObjects[num].get();
265 } 273 }
266 274
267 void V8InspectorSessionImpl::schedulePauseOnNextStatement(const String16& breakR eason, std::unique_ptr<protocol::DictionaryValue> data) 275 void V8InspectorSessionImpl::schedulePauseOnNextStatement(const String16& breakR eason, std::unique_ptr<protocol::DictionaryValue> data)
268 { 276 {
269 m_debuggerAgent->schedulePauseOnNextStatement(breakReason, std::move(data)); 277 m_debuggerAgent->schedulePauseOnNextStatement(breakReason, std::move(data));
270 } 278 }
271 279
272 void V8InspectorSessionImpl::cancelPauseOnNextStatement() 280 void V8InspectorSessionImpl::cancelPauseOnNextStatement()
273 { 281 {
274 m_debuggerAgent->cancelPauseOnNextStatement(); 282 m_debuggerAgent->cancelPauseOnNextStatement();
(...skipping 21 matching lines...) Expand all
296 m_debuggerAgent->resume(&errorString); 304 m_debuggerAgent->resume(&errorString);
297 } 305 }
298 306
299 void V8InspectorSessionImpl::stepOver() 307 void V8InspectorSessionImpl::stepOver()
300 { 308 {
301 ErrorString errorString; 309 ErrorString errorString;
302 m_debuggerAgent->stepOver(&errorString); 310 m_debuggerAgent->stepOver(&errorString);
303 } 311 }
304 312
305 } // namespace blink 313 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698