Chromium Code Reviews| Index: third_party/WebKit/Source/platform/v8_inspector/V8InspectorSessionImpl.cpp |
| diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8InspectorSessionImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8InspectorSessionImpl.cpp |
| index 9d6dd81985f51098e8d325e9129567b03d322758..ff3ada5e5a1f07846599efe0c714e81d4f14f9b6 100644 |
| --- a/third_party/WebKit/Source/platform/v8_inspector/V8InspectorSessionImpl.cpp |
| +++ b/third_party/WebKit/Source/platform/v8_inspector/V8InspectorSessionImpl.cpp |
| @@ -111,13 +111,17 @@ void V8InspectorSessionImpl::discardInjectedScripts() |
| if (!contexts) |
| return; |
| - protocol::Vector<int> keys; |
| + std::vector<int> keys; |
| + keys.reserve(contexts->size()); |
| for (auto& idContext : *contexts) |
| - keys.append(idContext.first); |
| + keys.push_back(idContext.first); |
| for (auto& key : keys) { |
| contexts = m_debugger->contextGroup(m_contextGroupId); |
| - if (contexts && contexts->contains(key)) |
| - contexts->get(key)->discardInjectedScript(); // This may destroy some contexts. |
| + if (!contexts) |
| + continue; |
| + auto contextIt = contexts->find(key); |
| + if (contextIt != contexts->end()) |
| + contextIt->second->discardInjectedScript(); // This may destroy some contexts. |
| } |
| } |
| @@ -129,12 +133,13 @@ InjectedScript* V8InspectorSessionImpl::findInjectedScript(ErrorString* errorStr |
| } |
| const V8DebuggerImpl::ContextByIdMap* contexts = m_debugger->contextGroup(m_contextGroupId); |
| - if (!contexts || !contexts->contains(contextId)) { |
| + auto contexts_iter = contexts ? contexts->find(contextId) : contexts->end(); |
|
dgozman
2016/06/24 23:31:47
contextsIt
|
| + if (contexts_iter == contexts->end()) { |
| *errorString = "Cannot find context with specified id"; |
| return nullptr; |
| } |
| - InspectedContext* context = contexts->get(contextId); |
| + const std::unique_ptr<InspectedContext>& context = contexts_iter->second; |
| if (!context->getInjectedScript()) { |
| context->createInjectedScript(); |
| if (!context->getInjectedScript()) { |
| @@ -158,16 +163,19 @@ void V8InspectorSessionImpl::releaseObjectGroup(const String16& objectGroup) |
| if (!contexts) |
| return; |
| - protocol::Vector<int> keys; |
| + std::vector<int> keys; |
| for (auto& idContext : *contexts) |
| - keys.append(idContext.first); |
| + keys.push_back(idContext.first); |
| for (auto& key : keys) { |
| contexts = m_debugger->contextGroup(m_contextGroupId); |
| - if (contexts && contexts->contains(key)) { |
| - InjectedScript* injectedScript = contexts->get(key)->getInjectedScript(); |
| - if (injectedScript) |
| - injectedScript->releaseObjectGroup(objectGroup); // This may destroy some contexts. |
| - } |
| + if (!contexts) |
| + continue; |
| + auto contextsIt = contexts->find(key); |
| + if (contextsIt == contexts->end()) |
| + continue; |
| + InjectedScript* injectedScript = contextsIt->second->getInjectedScript(); |
| + if (injectedScript) |
| + injectedScript->releaseObjectGroup(objectGroup); // This may destroy some contexts. |
| } |
| } |
| @@ -227,7 +235,7 @@ void V8InspectorSessionImpl::reportAllContexts(V8RuntimeAgentImpl* agent) |
| if (!contexts) |
| return; |
| for (auto& idContext : *contexts) |
| - agent->reportExecutionContextCreated(idContext.second); |
| + agent->reportExecutionContextCreated(idContext.second.get()); |
| } |
| void V8InspectorSessionImpl::changeInstrumentationCounter(int delta) |
| @@ -252,16 +260,16 @@ String16 V8InspectorSessionImpl::stateJSON() |
| void V8InspectorSessionImpl::addInspectedObject(std::unique_ptr<V8InspectorSession::Inspectable> inspectable) |
| { |
| - m_inspectedObjects.prepend(std::move(inspectable)); |
| - while (m_inspectedObjects.size() > kInspectedObjectBufferSize) |
| - m_inspectedObjects.removeLast(); |
| + m_inspectedObjects.insert(m_inspectedObjects.begin(), std::move(inspectable)); |
| + if (m_inspectedObjects.size() > kInspectedObjectBufferSize) |
| + m_inspectedObjects.resize(kInspectedObjectBufferSize); |
| } |
| V8InspectorSession::Inspectable* V8InspectorSessionImpl::inspectedObject(unsigned num) |
| { |
| if (num >= m_inspectedObjects.size()) |
| return nullptr; |
| - return m_inspectedObjects[num]; |
| + return m_inspectedObjects[num].get(); |
| } |
| void V8InspectorSessionImpl::schedulePauseOnNextStatement(const String16& breakReason, std::unique_ptr<protocol::DictionaryValue> data) |