summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp305
1 files changed, 198 insertions, 107 deletions
diff --git a/chromium/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp b/chromium/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
index e804c1870ec..f7560f1373d 100644
--- a/chromium/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
+++ b/chromium/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
@@ -29,34 +29,26 @@
*/
#include "config.h"
-#include "WebDevToolsAgentImpl.h"
-
-#include "InspectorBackendDispatcher.h"
-#include "InspectorFrontend.h"
-#include "InspectorProtocolVersion.h"
-#include "RuntimeEnabledFeatures.h"
-#include "WebDataSource.h"
-#include "WebDevToolsAgentClient.h"
-#include "WebFrameImpl.h"
-#include "WebInputEventConversion.h"
-#include "WebMemoryUsageInfo.h"
-#include "WebSettings.h"
-#include "WebViewClient.h"
-#include "WebViewImpl.h"
+#include "web/WebDevToolsAgentImpl.h"
+
#include "bindings/v8/PageScriptDebugServer.h"
#include "bindings/v8/ScriptController.h"
#include "bindings/v8/V8Binding.h"
-#include "bindings/v8/V8Utilities.h"
+#include "core/InspectorBackendDispatcher.h"
+#include "core/InspectorFrontend.h"
#include "core/dom/ExceptionCode.h"
#include "core/fetch/MemoryCache.h"
-#include "core/frame/Frame.h"
#include "core/frame/FrameView.h"
+#include "core/frame/LocalFrame.h"
+#include "core/frame/Settings.h"
#include "core/inspector/InjectedScriptHost.h"
#include "core/inspector/InspectorController.h"
+#include "core/page/FocusController.h"
#include "core/page/Page.h"
-#include "core/page/PageGroup.h"
#include "core/rendering/RenderView.h"
#include "platform/JSONValues.h"
+#include "platform/RuntimeEnabledFeatures.h"
+#include "platform/TraceEvent.h"
#include "platform/graphics/GraphicsContext.h"
#include "platform/network/ResourceError.h"
#include "platform/network/ResourceRequest.h"
@@ -68,13 +60,21 @@
#include "public/platform/WebURLError.h"
#include "public/platform/WebURLRequest.h"
#include "public/platform/WebURLResponse.h"
+#include "public/web/WebDataSource.h"
+#include "public/web/WebDevToolsAgentClient.h"
+#include "public/web/WebDeviceEmulationParams.h"
+#include "public/web/WebMemoryUsageInfo.h"
+#include "public/web/WebSettings.h"
+#include "public/web/WebViewClient.h"
+#include "web/WebInputEventConversion.h"
+#include "web/WebLocalFrameImpl.h"
+#include "web/WebViewImpl.h"
#include "wtf/CurrentTime.h"
#include "wtf/MathExtras.h"
#include "wtf/Noncopyable.h"
#include "wtf/text/WTFString.h"
using namespace WebCore;
-using namespace std;
namespace OverlayZOrders {
// Use 99 as a big z-order number so that highlight is above other overlays.
@@ -119,11 +119,17 @@ private:
return;
m_running = true;
+ // 0. Flush pending frontend messages.
+ WebViewImpl* viewImpl = WebViewImpl::fromPage(page);
+ WebDevToolsAgentImpl* agent = static_cast<WebDevToolsAgentImpl*>(viewImpl->devToolsAgent());
+ agent->flushPendingFrontendMessages();
+
Vector<WebViewImpl*> views;
// 1. Disable input events.
- HashSet<Page*>::const_iterator end = page->group().pages().end();
- for (HashSet<Page*>::const_iterator it = page->group().pages().begin(); it != end; ++it) {
+ const HashSet<Page*>& pages = Page::ordinaryPages();
+ HashSet<Page*>::const_iterator end = pages.end();
+ for (HashSet<Page*>::const_iterator it = pages.begin(); it != end; ++it) {
WebViewImpl* view = WebViewImpl::fromPage(*it);
if (!view)
continue;
@@ -131,6 +137,8 @@ private:
views.append(view);
view->setIgnoreInputEvents(true);
}
+ // Notify embedder about pausing.
+ agent->client()->willEnterDebugLoop();
// 2. Disable active objects
WebView::willEnterModalLoop();
@@ -148,6 +156,7 @@ private:
(*it)->setIgnoreInputEvents(false);
}
}
+ agent->client()->didExitDebugLoop();
// 6. All views have been resumed, clear the set.
m_frozenViews.clear();
@@ -191,7 +200,8 @@ private:
WebDevToolsAgentImpl::WebDevToolsAgentImpl(
WebViewImpl* webViewImpl,
WebDevToolsAgentClient* client)
- : m_hostId(client->hostIdentifier())
+ : m_debuggerId(client->debuggerId())
+ , m_layerTreeId(0)
, m_client(client)
, m_webViewImpl(webViewImpl)
, m_attached(false)
@@ -200,8 +210,12 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl(
, m_emulateViewportEnabled(false)
, m_originalViewportEnabled(false)
, m_isOverlayScrollbarsEnabled(false)
+ , m_originalMinimumPageScaleFactor(0)
+ , m_originalMaximumPageScaleFactor(0)
+ , m_pageScaleLimitsOverriden(false)
+ , m_touchEventEmulationEnabled(false)
{
- ASSERT(m_hostId > 0);
+ ASSERT(m_debuggerId > 0);
ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client);
}
@@ -214,21 +228,30 @@ WebDevToolsAgentImpl::~WebDevToolsAgentImpl()
void WebDevToolsAgentImpl::attach()
{
+ attach("");
+}
+
+void WebDevToolsAgentImpl::reattach(const WebString& savedState)
+{
+ reattach("", savedState);
+}
+
+void WebDevToolsAgentImpl::attach(const WebString& hostId)
+{
if (m_attached)
return;
- inspectorController()->connectFrontend(this);
- inspectorController()->webViewResized(m_webViewImpl->size());
+ inspectorController()->connectFrontend(hostId, this);
blink::Platform::current()->currentThread()->addTaskObserver(this);
m_attached = true;
}
-void WebDevToolsAgentImpl::reattach(const WebString& savedState)
+void WebDevToolsAgentImpl::reattach(const WebString& hostId, const WebString& savedState)
{
if (m_attached)
return;
- inspectorController()->reuseFrontend(this, savedState);
+ inspectorController()->reuseFrontend(hostId, this, savedState);
blink::Platform::current()->currentThread()->addTaskObserver(this);
m_attached = true;
}
@@ -240,7 +263,6 @@ void WebDevToolsAgentImpl::detach()
// Prevent controller from sending messages to the frontend.
InspectorController* ic = inspectorController();
ic->disconnectFrontend();
- ic->hideHighlight();
m_attached = false;
}
@@ -251,6 +273,7 @@ void WebDevToolsAgentImpl::didNavigate()
void WebDevToolsAgentImpl::didBeginFrame(int frameId)
{
+ TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "BeginMainThreadFrame", "layerTreeId", m_layerTreeId);
if (InspectorController* ic = inspectorController())
ic->didBeginFrame(frameId);
}
@@ -263,29 +286,25 @@ void WebDevToolsAgentImpl::didCancelFrame()
void WebDevToolsAgentImpl::willComposite()
{
+ TRACE_EVENT_BEGIN1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "CompositeLayers", "layerTreeId", m_layerTreeId);
if (InspectorController* ic = inspectorController())
ic->willComposite();
}
void WebDevToolsAgentImpl::didComposite()
{
+ TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "CompositeLayers");
if (InspectorController* ic = inspectorController())
ic->didComposite();
}
-void WebDevToolsAgentImpl::didCreateScriptContext(WebFrameImpl* webframe, int worldId)
+void WebDevToolsAgentImpl::didCreateScriptContext(WebLocalFrameImpl* webframe, int worldId)
{
// Skip non main world contexts.
if (worldId)
return;
- if (WebCore::Frame* frame = webframe->frame())
- frame->script().setContextDebugId(m_hostId);
-}
-
-void WebDevToolsAgentImpl::webViewResized(const WebSize& size)
-{
- if (InspectorController* ic = inspectorController())
- ic->webViewResized(IntSize());
+ if (WebCore::LocalFrame* frame = webframe->frame())
+ frame->script().setContextDebugId(m_debuggerId);
}
bool WebDevToolsAgentImpl::handleInputEvent(WebCore::Page* page, const WebInputEvent& inputEvent)
@@ -293,81 +312,142 @@ bool WebDevToolsAgentImpl::handleInputEvent(WebCore::Page* page, const WebInputE
if (!m_attached && !m_generatingEvent)
return false;
+ // FIXME: This workaround is required for touch emulation on Mac, where
+ // compositor-side pinch handling is not enabled. See http://crbug.com/138003.
+ bool isPinch = inputEvent.type == WebInputEvent::GesturePinchBegin || inputEvent.type == WebInputEvent::GesturePinchUpdate || inputEvent.type == WebInputEvent::GesturePinchEnd;
+ if (isPinch && m_touchEventEmulationEnabled && m_emulateViewportEnabled) {
+ FrameView* frameView = page->deprecatedLocalMainFrame()->view();
+ PlatformGestureEventBuilder gestureEvent(frameView, *static_cast<const WebGestureEvent*>(&inputEvent));
+ float pageScaleFactor = page->pageScaleFactor();
+ if (gestureEvent.type() == PlatformEvent::GesturePinchBegin) {
+ m_lastPinchAnchorCss = adoptPtr(new WebCore::IntPoint(frameView->scrollPosition() + gestureEvent.position()));
+ m_lastPinchAnchorDip = adoptPtr(new WebCore::IntPoint(gestureEvent.position()));
+ m_lastPinchAnchorDip->scale(pageScaleFactor, pageScaleFactor);
+ }
+ if (gestureEvent.type() == PlatformEvent::GesturePinchUpdate && m_lastPinchAnchorCss) {
+ float newPageScaleFactor = pageScaleFactor * gestureEvent.scale();
+ WebCore::IntPoint anchorCss(*m_lastPinchAnchorDip.get());
+ anchorCss.scale(1.f / newPageScaleFactor, 1.f / newPageScaleFactor);
+ m_webViewImpl->setPageScaleFactor(newPageScaleFactor);
+ m_webViewImpl->setMainFrameScrollOffset(*m_lastPinchAnchorCss.get() - toIntSize(anchorCss));
+ }
+ if (gestureEvent.type() == PlatformEvent::GesturePinchEnd) {
+ m_lastPinchAnchorCss.clear();
+ m_lastPinchAnchorDip.clear();
+ }
+ return true;
+ }
+
InspectorController* ic = inspectorController();
if (!ic)
return false;
if (WebInputEvent::isGestureEventType(inputEvent.type) && inputEvent.type == WebInputEvent::GestureTap) {
// Only let GestureTab in (we only need it and we know PlatformGestureEventBuilder supports it).
- PlatformGestureEvent gestureEvent = PlatformGestureEventBuilder(page->mainFrame()->view(), *static_cast<const WebGestureEvent*>(&inputEvent));
- return ic->handleGestureEvent(page->mainFrame(), gestureEvent);
+ PlatformGestureEvent gestureEvent = PlatformGestureEventBuilder(page->deprecatedLocalMainFrame()->view(), *static_cast<const WebGestureEvent*>(&inputEvent));
+ return ic->handleGestureEvent(toLocalFrame(page->mainFrame()), gestureEvent);
}
if (WebInputEvent::isMouseEventType(inputEvent.type) && inputEvent.type != WebInputEvent::MouseEnter) {
// PlatformMouseEventBuilder does not work with MouseEnter type, so we filter it out manually.
- PlatformMouseEvent mouseEvent = PlatformMouseEventBuilder(page->mainFrame()->view(), *static_cast<const WebMouseEvent*>(&inputEvent));
- return ic->handleMouseEvent(page->mainFrame(), mouseEvent);
+ PlatformMouseEvent mouseEvent = PlatformMouseEventBuilder(page->deprecatedLocalMainFrame()->view(), *static_cast<const WebMouseEvent*>(&inputEvent));
+ return ic->handleMouseEvent(toLocalFrame(page->mainFrame()), mouseEvent);
}
if (WebInputEvent::isTouchEventType(inputEvent.type)) {
- PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(page->mainFrame()->view(), *static_cast<const WebTouchEvent*>(&inputEvent));
- return ic->handleTouchEvent(page->mainFrame(), touchEvent);
+ PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(page->deprecatedLocalMainFrame()->view(), *static_cast<const WebTouchEvent*>(&inputEvent));
+ return ic->handleTouchEvent(toLocalFrame(page->mainFrame()), touchEvent);
}
if (WebInputEvent::isKeyboardEventType(inputEvent.type)) {
PlatformKeyboardEvent keyboardEvent = PlatformKeyboardEventBuilder(*static_cast<const WebKeyboardEvent*>(&inputEvent));
- return ic->handleKeyboardEvent(page->mainFrame(), keyboardEvent);
+ return ic->handleKeyboardEvent(page->deprecatedLocalMainFrame(), keyboardEvent);
}
return false;
}
-void WebDevToolsAgentImpl::overrideDeviceMetrics(int width, int height, float deviceScaleFactor, bool emulateViewport, bool fitWindow)
+void WebDevToolsAgentImpl::setDeviceMetricsOverride(int width, int height, float deviceScaleFactor, bool emulateViewport, bool fitWindow)
{
- if (!width && !height) {
- if (m_deviceMetricsEnabled) {
- m_deviceMetricsEnabled = false;
- m_webViewImpl->setBackgroundColorOverride(Color::transparent);
- RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrollbarsEnabled);
- disableViewportEmulation();
- m_client->disableDeviceEmulation();
- }
- } else {
- if (!m_deviceMetricsEnabled) {
- m_deviceMetricsEnabled = true;
- m_webViewImpl->setBackgroundColorOverride(Color::darkGray);
- m_isOverlayScrollbarsEnabled = RuntimeEnabledFeatures::overlayScrollbarsEnabled();
- RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(true);
- }
- if (emulateViewport)
- enableViewportEmulation();
- else
- disableViewportEmulation();
- m_client->enableDeviceEmulation(IntRect(10, 10, width, height), IntRect(0, 0, width, height), deviceScaleFactor, fitWindow);
+ if (!m_deviceMetricsEnabled) {
+ m_deviceMetricsEnabled = true;
+ m_webViewImpl->setBackgroundColorOverride(Color::darkGray);
+ }
+ if (emulateViewport)
+ enableViewportEmulation();
+ else
+ disableViewportEmulation();
+
+ WebDeviceEmulationParams params;
+ params.screenPosition = emulateViewport ? WebDeviceEmulationParams::Mobile : WebDeviceEmulationParams::Desktop;
+ params.deviceScaleFactor = deviceScaleFactor;
+ params.viewSize = WebSize(width, height);
+ params.fitToView = fitWindow;
+ params.viewInsets = WebSize(0, 0);
+ m_client->enableDeviceEmulation(params);
+}
+
+void WebDevToolsAgentImpl::clearDeviceMetricsOverride()
+{
+ if (m_deviceMetricsEnabled) {
+ m_deviceMetricsEnabled = false;
+ m_webViewImpl->setBackgroundColorOverride(Color::transparent);
+ disableViewportEmulation();
+ m_client->disableDeviceEmulation();
}
}
+void WebDevToolsAgentImpl::setTouchEventEmulationEnabled(bool enabled)
+{
+ m_client->setTouchEventEmulationEnabled(enabled, enabled);
+ m_touchEventEmulationEnabled = enabled;
+ updatePageScaleFactorLimits();
+}
+
void WebDevToolsAgentImpl::enableViewportEmulation()
{
if (m_emulateViewportEnabled)
return;
m_emulateViewportEnabled = true;
+ m_isOverlayScrollbarsEnabled = RuntimeEnabledFeatures::overlayScrollbarsEnabled();
+ RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(true);
m_originalViewportEnabled = RuntimeEnabledFeatures::cssViewportEnabled();
RuntimeEnabledFeatures::setCSSViewportEnabled(true);
m_webViewImpl->settings()->setViewportEnabled(true);
m_webViewImpl->settings()->setViewportMetaEnabled(true);
+ m_webViewImpl->settings()->setShrinksViewportContentToFit(true);
m_webViewImpl->setIgnoreViewportTagScaleLimits(true);
- m_webViewImpl->setPageScaleFactorLimits(-1, -1);
m_webViewImpl->setZoomFactorOverride(1);
+ // FIXME: with touch and viewport emulation enabled, we may want to disable overscroll navigation.
+ updatePageScaleFactorLimits();
}
void WebDevToolsAgentImpl::disableViewportEmulation()
{
if (!m_emulateViewportEnabled)
return;
+ RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrollbarsEnabled);
RuntimeEnabledFeatures::setCSSViewportEnabled(m_originalViewportEnabled);
m_webViewImpl->settings()->setViewportEnabled(false);
m_webViewImpl->settings()->setViewportMetaEnabled(false);
+ m_webViewImpl->settings()->setShrinksViewportContentToFit(false);
m_webViewImpl->setIgnoreViewportTagScaleLimits(false);
- m_webViewImpl->setPageScaleFactorLimits(1, 1);
m_webViewImpl->setZoomFactorOverride(0);
m_emulateViewportEnabled = false;
+ updatePageScaleFactorLimits();
+}
+
+void WebDevToolsAgentImpl::updatePageScaleFactorLimits()
+{
+ if (m_touchEventEmulationEnabled || m_emulateViewportEnabled) {
+ if (!m_pageScaleLimitsOverriden) {
+ m_originalMinimumPageScaleFactor = m_webViewImpl->minimumPageScaleFactor();
+ m_originalMaximumPageScaleFactor = m_webViewImpl->maximumPageScaleFactor();
+ m_pageScaleLimitsOverriden = true;
+ }
+ m_webViewImpl->setPageScaleFactorLimits(1, 4);
+ } else {
+ if (m_pageScaleLimitsOverriden) {
+ m_pageScaleLimitsOverriden = false;
+ m_webViewImpl->setPageScaleFactorLimits(m_originalMinimumPageScaleFactor, m_originalMaximumPageScaleFactor);
+ }
+ }
}
void WebDevToolsAgentImpl::getAllocatedObjects(HashSet<const void*>& set)
@@ -466,9 +546,24 @@ void WebDevToolsAgentImpl::dumpUncountedAllocatedObjects(const HashMap<const voi
m_client->dumpUncountedAllocatedObjects(&provider);
}
-void WebDevToolsAgentImpl::setTraceEventCallback(TraceEventCallback callback)
+void WebDevToolsAgentImpl::setTraceEventCallback(const String& categoryFilter, TraceEventCallback callback)
{
- m_client->setTraceEventCallback(callback);
+ m_client->setTraceEventCallback(categoryFilter, callback);
+}
+
+void WebDevToolsAgentImpl::resetTraceEventCallback()
+{
+ m_client->resetTraceEventCallback();
+}
+
+void WebDevToolsAgentImpl::enableTracing(const String& categoryFilter)
+{
+ m_client->enableTracing(categoryFilter);
+}
+
+void WebDevToolsAgentImpl::disableTracing()
+{
+ m_client->disableTracing();
}
void WebDevToolsAgentImpl::startGPUEventsRecording()
@@ -481,20 +576,17 @@ void WebDevToolsAgentImpl::stopGPUEventsRecording()
m_client->stopGPUEventsRecording();
}
-void WebDevToolsAgentImpl::processGPUEvent(double timestamp, int phase, bool foreign)
-{
- if (InspectorController* ic = inspectorController())
- ic->processGPUEvent(timestamp, phase, foreign, 0);
-}
-
void WebDevToolsAgentImpl::processGPUEvent(const GPUEvent& event)
{
if (InspectorController* ic = inspectorController())
- ic->processGPUEvent(event.timestamp, event.phase, event.foreign, event.usedGPUMemoryBytes);
+ ic->processGPUEvent(event.timestamp, event.phase, event.foreign, event.usedGPUMemoryBytes, event.limitGPUMemoryBytes);
}
void WebDevToolsAgentImpl::dispatchKeyEvent(const PlatformKeyboardEvent& event)
{
+ if (!m_webViewImpl->page()->focusController().isFocused())
+ m_webViewImpl->setFocus(true);
+
m_generatingEvent = true;
WebKeyboardEvent webEvent = WebKeyboardEventBuilder(event);
if (!webEvent.keyIdentifier[0] && webEvent.type != WebInputEvent::Char)
@@ -505,6 +597,9 @@ void WebDevToolsAgentImpl::dispatchKeyEvent(const PlatformKeyboardEvent& event)
void WebDevToolsAgentImpl::dispatchMouseEvent(const PlatformMouseEvent& event)
{
+ if (!m_webViewImpl->page()->focusController().isFocused())
+ m_webViewImpl->setFocus(true);
+
m_generatingEvent = true;
WebMouseEvent webEvent = WebMouseEventBuilder(m_webViewImpl->mainFrameImpl()->frameView(), event);
m_webViewImpl->handleInputEvent(webEvent);
@@ -528,10 +623,10 @@ InspectorController* WebDevToolsAgentImpl::inspectorController()
return 0;
}
-Frame* WebDevToolsAgentImpl::mainFrame()
+LocalFrame* WebDevToolsAgentImpl::mainFrame()
{
if (Page* page = m_webViewImpl->page())
- return page->mainFrame();
+ return page->deprecatedLocalMainFrame();
return 0;
}
@@ -556,28 +651,19 @@ void WebDevToolsAgentImpl::hideHighlight()
m_webViewImpl->removePageOverlay(this);
}
-bool WebDevToolsAgentImpl::sendMessageToFrontend(const String& message)
-{
- WebDevToolsAgentImpl* devToolsAgent = static_cast<WebDevToolsAgentImpl*>(m_webViewImpl->devToolsAgent());
- if (!devToolsAgent)
- return false;
- m_client->sendMessageToInspectorFrontend(message);
- return true;
-}
-
-void WebDevToolsAgentImpl::updateInspectorStateCookie(const String& state)
+void WebDevToolsAgentImpl::sendMessageToFrontend(PassRefPtr<WebCore::JSONObject> message)
{
- m_client->saveAgentRuntimeState(state);
+ m_frontendMessageQueue.append(message);
}
-void WebDevToolsAgentImpl::clearBrowserCache()
+void WebDevToolsAgentImpl::flush()
{
- m_client->clearBrowserCache();
+ flushPendingFrontendMessages();
}
-void WebDevToolsAgentImpl::clearBrowserCookies()
+void WebDevToolsAgentImpl::updateInspectorStateCookie(const String& state)
{
- m_client->clearBrowserCookies();
+ m_client->saveAgentRuntimeState(state);
}
void WebDevToolsAgentImpl::setProcessId(long processId)
@@ -587,6 +673,7 @@ void WebDevToolsAgentImpl::setProcessId(long processId)
void WebDevToolsAgentImpl::setLayerTreeId(int layerTreeId)
{
+ m_layerTreeId = layerTreeId;
inspectorController()->setLayerTreeId(layerTreeId);
}
@@ -596,26 +683,33 @@ void WebDevToolsAgentImpl::evaluateInWebInspector(long callId, const WebString&
ic->evaluateForTestInFrontend(callId, script);
}
+void WebDevToolsAgentImpl::flushPendingFrontendMessages()
+{
+ InspectorController* ic = inspectorController();
+ ic->flushPendingFrontendMessages();
+
+ for (size_t i = 0; i < m_frontendMessageQueue.size(); ++i)
+ m_client->sendMessageToInspectorFrontend(m_frontendMessageQueue[i]->toJSONString());
+ m_frontendMessageQueue.clear();
+}
+
void WebDevToolsAgentImpl::willProcessTask()
{
+ if (!m_attached)
+ return;
if (InspectorController* ic = inspectorController())
ic->willProcessTask();
+ TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Program");
}
void WebDevToolsAgentImpl::didProcessTask()
{
+ if (!m_attached)
+ return;
if (InspectorController* ic = inspectorController())
ic->didProcessTask();
-}
-
-WebString WebDevToolsAgent::inspectorProtocolVersion()
-{
- return WebCore::inspectorProtocolVersion();
-}
-
-bool WebDevToolsAgent::supportsInspectorProtocolVersion(const WebString& version)
-{
- return WebCore::supportsInspectorProtocolVersion(version);
+ TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Program");
+ flushPendingFrontendMessages();
}
void WebDevToolsAgent::interruptAndDispatch(MessageDescriptor* rawDescriptor)
@@ -623,7 +717,7 @@ void WebDevToolsAgent::interruptAndDispatch(MessageDescriptor* rawDescriptor)
// rawDescriptor can't be a PassOwnPtr because interruptAndDispatch is a WebKit API function.
OwnPtr<MessageDescriptor> descriptor = adoptPtr(rawDescriptor);
OwnPtr<DebuggerTask> task = adoptPtr(new DebuggerTask(descriptor.release()));
- PageScriptDebugServer::interruptAndRun(task.release(), v8::Isolate::GetCurrent());
+ PageScriptDebugServer::interruptAndRun(task.release());
}
bool WebDevToolsAgent::shouldInterruptForMessage(const WebString& message)
@@ -635,10 +729,7 @@ bool WebDevToolsAgent::shouldInterruptForMessage(const WebString& message)
|| commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kDebugger_setBreakpointCmd)
|| commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kDebugger_setBreakpointByUrlCmd)
|| commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kDebugger_removeBreakpointCmd)
- || commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kDebugger_setBreakpointsActiveCmd)
- || commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kProfiler_startCmd)
- || commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kProfiler_stopCmd)
- || commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kHeapProfiler_getHeapSnapshotCmd);
+ || commandName == InspectorBackendDispatcher::commandName(InspectorBackendDispatcher::kDebugger_setBreakpointsActiveCmd);
}
void WebDevToolsAgent::processPendingMessages()