Chromium Code Reviews| Index: Source/core/inspector/ConsoleMessageStorage.cpp |
| diff --git a/Source/core/inspector/ConsoleMessageStorage.cpp b/Source/core/inspector/ConsoleMessageStorage.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..134405d4f8021035a433f8b36d96fb5fd1ee872b |
| --- /dev/null |
| +++ b/Source/core/inspector/ConsoleMessageStorage.cpp |
| @@ -0,0 +1,80 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "config.h" |
| +#include "core/inspector/ConsoleMessageStorage.h" |
| + |
| +#include "core/frame/LocalDOMWindow.h" |
| +#include "core/inspector/ConsoleMessage.h" |
| +#include "core/inspector/InspectorConsoleInstrumentation.h" |
| + |
| +#include <base/debug/stack_trace.h> |
|
vsevik
2014/08/25 13:04:01
Please remove this
kozyatinskiy1
2014/08/25 14:12:39
Done.
|
| + |
| +namespace blink { |
| + |
| +static const unsigned maximumConsoleMessages = 1000; |
| +static const int expireConsoleMessagesStep = 100; |
| + |
| +ConsoleMessageStorage::ConsoleMessageStorage(ExecutionContext* context, LocalFrame* frame) |
| + : m_expiredCount(0) |
| + , m_context(context) |
| + , m_frame(frame) |
| +{ |
| +} |
| + |
| +void ConsoleMessageStorage::reportMessage(PassRefPtr<ConsoleMessage> prpMessage) |
| +{ |
| + RefPtr<ConsoleMessage> message = prpMessage; |
| + message->autogenerateMetadata(); |
| + |
| + InspectorInstrumentation::addMessageToConsole(executionContext(), message); |
| + |
| + m_messages.append(message); |
| + if (m_messages.size() >= maximumConsoleMessages) { |
| + m_expiredCount += expireConsoleMessagesStep; |
| + m_messages.remove(0, expireConsoleMessagesStep); |
| + } |
| +} |
| + |
| +void ConsoleMessageStorage::clear() |
| +{ |
| + m_messages.clear(); |
| + m_expiredCount = 0; |
| +} |
| + |
| +Vector<unsigned> ConsoleMessageStorage::argumentCounts() |
| +{ |
| + Vector<unsigned> result(m_messages.size()); |
| + for (size_t i = 0; i < size(); ++i) |
| + result[i] = at(i)->argumentCount(); |
| + return result; |
| +} |
| + |
| +void ConsoleMessageStorage::windowCleared(LocalDOMWindow* window) |
| +{ |
| + for (size_t i = 0; i < size(); ++i) |
| + at(i)->windowCleared(window); |
| +} |
| + |
| +size_t ConsoleMessageStorage::size() const |
| +{ |
| + return m_messages.size(); |
| +} |
| + |
| +PassRefPtr<ConsoleMessage> ConsoleMessageStorage::at(size_t index) |
| +{ |
| + return m_messages[index]; |
| +} |
| + |
| +int ConsoleMessageStorage::expiredCount() const |
| +{ |
| + return m_expiredCount; |
| +} |
| + |
| +ExecutionContext* ConsoleMessageStorage::executionContext() const |
| +{ |
| + return m_frame ? m_frame->document() : m_context; |
| +} |
| + |
| +} // namespace WebCore |