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

Unified Diff: third_party/WebKit/Source/platform/v8_inspector/V8ConsoleAgentImpl.cpp

Issue 2035653006: [DevTools] Move Console to v8 inspector. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: improved api a bit Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/v8_inspector/V8ConsoleAgentImpl.cpp
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8ConsoleAgentImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8ConsoleAgentImpl.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..310e57d5268fe23f77e9ada5bd638b551d6332cd
--- /dev/null
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8ConsoleAgentImpl.cpp
@@ -0,0 +1,108 @@
+// Copyright 2016 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 "platform/v8_inspector/V8ConsoleAgentImpl.h"
+
+#include "platform/v8_inspector/V8ConsoleMessage.h"
+#include "platform/v8_inspector/V8DebuggerImpl.h"
+#include "platform/v8_inspector/V8InspectorSessionImpl.h"
+#include "platform/v8_inspector/V8StackTraceImpl.h"
+
+namespace blink {
+
+namespace ConsoleAgentState {
+static const char consoleEnabled[] = "consoleEnabled";
+}
+
+V8ConsoleAgentImpl::V8ConsoleAgentImpl(V8InspectorSessionImpl* session, protocol::FrontendChannel* frontendChannel, protocol::DictionaryValue* state)
+ : m_session(session)
+ , m_state(state)
+ , m_frontend(frontendChannel)
+ , m_enabled(false)
+{
+}
+
+V8ConsoleAgentImpl::~V8ConsoleAgentImpl()
+{
+}
+
+void V8ConsoleAgentImpl::enable(ErrorString* errorString)
+{
+ if (m_enabled)
+ return;
+ m_state->setBoolean(ConsoleAgentState::consoleEnabled, true);
+ m_enabled = true;
+ m_session->debugger()->enableStackCapturingIfNeeded();
+ reportAllMessages();
+ m_session->client()->consoleEnabled();
+}
+
+void V8ConsoleAgentImpl::disable(ErrorString* errorString)
+{
+ if (!m_enabled)
+ return;
+ m_session->debugger()->disableStackCapturingIfNeeded();
+ m_state->setBoolean(ConsoleAgentState::consoleEnabled, false);
+ m_enabled = false;
+}
+
+void V8ConsoleAgentImpl::clearMessages(ErrorString* errorString)
+{
+ m_session->debugger()->ensureConsoleMessageStorage(m_session->contextGroupId())->clear();
+}
+
+void V8ConsoleAgentImpl::restore()
+{
+ if (!m_state->booleanProperty(ConsoleAgentState::consoleEnabled, false))
+ return;
+ m_frontend.messagesCleared();
+ ErrorString ignored;
+ enable(&ignored);
+}
+
+void V8ConsoleAgentImpl::messageAdded(V8ConsoleMessage* message)
+{
+ if (m_enabled)
+ reportMessage(message, true);
+}
+
+void V8ConsoleAgentImpl::reset()
+{
+ if (m_enabled)
+ m_frontend.messagesCleared();
+}
+
+bool V8ConsoleAgentImpl::enabled()
+{
+ return m_enabled;
+}
+
+void V8ConsoleAgentImpl::reportAllMessages()
+{
+ V8ConsoleMessageStorage* storage = m_session->debugger()->ensureConsoleMessageStorage(m_session->contextGroupId());
+ if (storage->expiredCount()) {
+ std::unique_ptr<protocol::Console::ConsoleMessage> expired = protocol::Console::ConsoleMessage::create()
+ .setSource(protocol::Console::ConsoleMessage::SourceEnum::Other)
+ .setLevel(protocol::Console::ConsoleMessage::LevelEnum::Warning)
+ .setText(String16::number(storage->expiredCount()) + String16("console messages are not shown."))
+ .setTimestamp(0)
+ .build();
+ expired->setType(protocol::Console::ConsoleMessage::TypeEnum::Log);
+ expired->setLine(0);
+ expired->setColumn(0);
+ expired->setUrl("");
+ m_frontend.messageAdded(std::move(expired));
+ m_frontend.flush();
+ }
+ for (const auto& message : storage->messages())
+ reportMessage(message.get(), false);
+}
+
+void V8ConsoleAgentImpl::reportMessage(V8ConsoleMessage* message, bool generatePreview)
+{
+ m_frontend.messageAdded(message->buildInspectorObject(m_session, generatePreview));
+ m_frontend.flush();
+}
+
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698