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

Side by Side Diff: third_party/WebKit/Source/web/InspectorOverlay.cpp

Issue 1738073002: DevTools: introduce protocol::Value, baseline for hierarchical data in remote debugging protocol. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 29 matching lines...) Expand all
40 #include "core/input/EventHandler.h" 40 #include "core/input/EventHandler.h"
41 #include "core/inspector/InspectorCSSAgent.h" 41 #include "core/inspector/InspectorCSSAgent.h"
42 #include "core/inspector/InspectorDebuggerAgent.h" 42 #include "core/inspector/InspectorDebuggerAgent.h"
43 #include "core/inspector/InspectorOverlayHost.h" 43 #include "core/inspector/InspectorOverlayHost.h"
44 #include "core/inspector/LayoutEditor.h" 44 #include "core/inspector/LayoutEditor.h"
45 #include "core/layout/LayoutView.h" 45 #include "core/layout/LayoutView.h"
46 #include "core/loader/EmptyClients.h" 46 #include "core/loader/EmptyClients.h"
47 #include "core/loader/FrameLoadRequest.h" 47 #include "core/loader/FrameLoadRequest.h"
48 #include "core/page/ChromeClient.h" 48 #include "core/page/ChromeClient.h"
49 #include "core/page/Page.h" 49 #include "core/page/Page.h"
50 #include "platform/JSONValues.h"
51 #include "platform/ScriptForbiddenScope.h" 50 #include "platform/ScriptForbiddenScope.h"
52 #include "platform/graphics/GraphicsContext.h" 51 #include "platform/graphics/GraphicsContext.h"
53 #include "platform/graphics/paint/CullRect.h" 52 #include "platform/graphics/paint/CullRect.h"
54 #include "platform/graphics/paint/DisplayItemCacheSkipper.h" 53 #include "platform/graphics/paint/DisplayItemCacheSkipper.h"
54 #include "platform/inspector_protocol/Values.h"
55 #include "public/platform/Platform.h" 55 #include "public/platform/Platform.h"
56 #include "public/platform/WebData.h" 56 #include "public/platform/WebData.h"
57 #include "web/PageOverlay.h" 57 #include "web/PageOverlay.h"
58 #include "web/WebInputEventConversion.h" 58 #include "web/WebInputEventConversion.h"
59 #include "web/WebLocalFrameImpl.h" 59 #include "web/WebLocalFrameImpl.h"
60 #include "web/WebViewImpl.h" 60 #include "web/WebViewImpl.h"
61 #include <v8.h> 61 #include <v8.h>
62 62
63 namespace blink { 63 namespace blink {
64 64
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 reset(viewportSize, visibleRectInDocument.location()); 393 reset(viewportSize, visibleRectInDocument.location());
394 394
395 drawNodeHighlight(); 395 drawNodeHighlight();
396 drawQuadHighlight(); 396 drawQuadHighlight();
397 drawPausedInDebuggerMessage(); 397 drawPausedInDebuggerMessage();
398 drawViewSize(); 398 drawViewSize();
399 if (m_layoutEditor && !m_highlightNode) 399 if (m_layoutEditor && !m_highlightNode)
400 m_layoutEditor->rebuild(); 400 m_layoutEditor->rebuild();
401 } 401 }
402 402
403 static PassRefPtr<JSONObject> buildObjectForSize(const IntSize& size) 403 static PassRefPtr<protocol::DictionaryValue> buildObjectForSize(const IntSize& s ize)
404 { 404 {
405 RefPtr<JSONObject> result = JSONObject::create(); 405 RefPtr<protocol::DictionaryValue> result = protocol::DictionaryValue::create ();
406 result->setNumber("width", size.width()); 406 result->setNumber("width", size.width());
407 result->setNumber("height", size.height()); 407 result->setNumber("height", size.height());
408 return result.release(); 408 return result.release();
409 } 409 }
410 410
411 void InspectorOverlay::drawNodeHighlight() 411 void InspectorOverlay::drawNodeHighlight()
412 { 412 {
413 if (!m_highlightNode) 413 if (!m_highlightNode)
414 return; 414 return;
415 415
416 String selectors = m_nodeHighlightConfig.selectorList; 416 String selectors = m_nodeHighlightConfig.selectorList;
417 RefPtrWillBeRawPtr<StaticElementList> elements = nullptr; 417 RefPtrWillBeRawPtr<StaticElementList> elements = nullptr;
418 TrackExceptionState exceptionState; 418 TrackExceptionState exceptionState;
419 ContainerNode* queryBase = m_highlightNode->containingShadowRoot(); 419 ContainerNode* queryBase = m_highlightNode->containingShadowRoot();
420 if (!queryBase) 420 if (!queryBase)
421 queryBase = m_highlightNode->ownerDocument(); 421 queryBase = m_highlightNode->ownerDocument();
422 if (selectors.length()) 422 if (selectors.length())
423 elements = queryBase->querySelectorAll(AtomicString(selectors), exceptio nState); 423 elements = queryBase->querySelectorAll(AtomicString(selectors), exceptio nState);
424 if (elements && !exceptionState.hadException()) { 424 if (elements && !exceptionState.hadException()) {
425 for (unsigned i = 0; i < elements->length(); ++i) { 425 for (unsigned i = 0; i < elements->length(); ++i) {
426 Element* element = elements->item(i); 426 Element* element = elements->item(i);
427 InspectorHighlight highlight(element, m_nodeHighlightConfig, false); 427 InspectorHighlight highlight(element, m_nodeHighlightConfig, false);
428 RefPtr<JSONObject> highlightJSON = highlight.asJSONObject(); 428 RefPtr<protocol::DictionaryValue> highlightJSON = highlight.asProtoc olValue();
429 evaluateInOverlay("drawHighlight", highlightJSON.release()); 429 evaluateInOverlay("drawHighlight", highlightJSON.release());
430 } 430 }
431 } 431 }
432 432
433 bool appendElementInfo = m_highlightNode->isElementNode() && !m_omitTooltip && m_nodeHighlightConfig.showInfo && m_highlightNode->layoutObject() && m_highli ghtNode->document().frame(); 433 bool appendElementInfo = m_highlightNode->isElementNode() && !m_omitTooltip && m_nodeHighlightConfig.showInfo && m_highlightNode->layoutObject() && m_highli ghtNode->document().frame();
434 InspectorHighlight highlight(m_highlightNode.get(), m_nodeHighlightConfig, a ppendElementInfo); 434 InspectorHighlight highlight(m_highlightNode.get(), m_nodeHighlightConfig, a ppendElementInfo);
435 if (m_eventTargetNode) 435 if (m_eventTargetNode)
436 highlight.appendEventTargetQuads(m_eventTargetNode.get(), m_nodeHighligh tConfig); 436 highlight.appendEventTargetQuads(m_eventTargetNode.get(), m_nodeHighligh tConfig);
437 437
438 RefPtr<JSONObject> highlightJSON = highlight.asJSONObject(); 438 RefPtr<protocol::DictionaryValue> highlightJSON = highlight.asProtocolValue( );
439 evaluateInOverlay("drawHighlight", highlightJSON.release()); 439 evaluateInOverlay("drawHighlight", highlightJSON.release());
440 } 440 }
441 441
442 void InspectorOverlay::drawQuadHighlight() 442 void InspectorOverlay::drawQuadHighlight()
443 { 443 {
444 if (!m_highlightQuad) 444 if (!m_highlightQuad)
445 return; 445 return;
446 446
447 InspectorHighlight highlight; 447 InspectorHighlight highlight;
448 highlight.appendQuad(*m_highlightQuad, m_quadHighlightConfig.content, m_quad HighlightConfig.contentOutline); 448 highlight.appendQuad(*m_highlightQuad, m_quadHighlightConfig.content, m_quad HighlightConfig.contentOutline);
449 evaluateInOverlay("drawHighlight", highlight.asJSONObject()); 449 evaluateInOverlay("drawHighlight", highlight.asProtocolValue());
450 } 450 }
451 451
452 void InspectorOverlay::drawPausedInDebuggerMessage() 452 void InspectorOverlay::drawPausedInDebuggerMessage()
453 { 453 {
454 if (m_inspectMode == InspectorDOMAgent::NotSearching && !m_pausedInDebuggerM essage.isNull()) 454 if (m_inspectMode == InspectorDOMAgent::NotSearching && !m_pausedInDebuggerM essage.isNull())
455 evaluateInOverlay("drawPausedInDebuggerMessage", m_pausedInDebuggerMessa ge); 455 evaluateInOverlay("drawPausedInDebuggerMessage", m_pausedInDebuggerMessa ge);
456 } 456 }
457 457
458 void InspectorOverlay::drawViewSize() 458 void InspectorOverlay::drawViewSize()
459 { 459 {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 return m_overlayPage.get(); 525 return m_overlayPage.get();
526 } 526 }
527 527
528 LocalFrame* InspectorOverlay::overlayMainFrame() 528 LocalFrame* InspectorOverlay::overlayMainFrame()
529 { 529 {
530 return toLocalFrame(overlayPage()->mainFrame()); 530 return toLocalFrame(overlayPage()->mainFrame());
531 } 531 }
532 532
533 void InspectorOverlay::reset(const IntSize& viewportSize, const IntPoint& docume ntScrollOffset) 533 void InspectorOverlay::reset(const IntSize& viewportSize, const IntPoint& docume ntScrollOffset)
534 { 534 {
535 RefPtr<JSONObject> resetData = JSONObject::create(); 535 RefPtr<protocol::DictionaryValue> resetData = protocol::DictionaryValue::cre ate();
536 resetData->setNumber("deviceScaleFactor", m_webViewImpl->page()->deviceScale Factor()); 536 resetData->setNumber("deviceScaleFactor", m_webViewImpl->page()->deviceScale Factor());
537 resetData->setNumber("pageScaleFactor", m_webViewImpl->page()->pageScaleFact or()); 537 resetData->setNumber("pageScaleFactor", m_webViewImpl->page()->pageScaleFact or());
538 resetData->setObject("viewportSize", buildObjectForSize(viewportSize)); 538 resetData->setObject("viewportSize", buildObjectForSize(viewportSize));
539 resetData->setNumber("pageZoomFactor", m_webViewImpl->mainFrameImpl()->frame ()->pageZoomFactor()); 539 resetData->setNumber("pageZoomFactor", m_webViewImpl->mainFrameImpl()->frame ()->pageZoomFactor());
540 resetData->setNumber("scrollX", documentScrollOffset.x()); 540 resetData->setNumber("scrollX", documentScrollOffset.x());
541 resetData->setNumber("scrollY", documentScrollOffset.y()); 541 resetData->setNumber("scrollY", documentScrollOffset.y());
542 evaluateInOverlay("reset", resetData.release()); 542 evaluateInOverlay("reset", resetData.release());
543 } 543 }
544 544
545 void InspectorOverlay::evaluateInOverlay(const String& method, const String& arg ument) 545 void InspectorOverlay::evaluateInOverlay(const String& method, const String& arg ument)
546 { 546 {
547 ScriptForbiddenScope::AllowUserAgentScript allowScript; 547 ScriptForbiddenScope::AllowUserAgentScript allowScript;
548 RefPtr<JSONArray> command = JSONArray::create(); 548 RefPtr<protocol::ListValue> command = protocol::ListValue::create();
549 command->pushString(method); 549 command->pushValue(protocol::StringValue::create(method));
550 command->pushString(argument); 550 command->pushValue(protocol::StringValue::create(argument));
551 toLocalFrame(overlayPage()->mainFrame())->script().executeScriptInMainWorld( "dispatch(" + command->toJSONString() + ")", ScriptController::ExecuteScriptWhen ScriptsDisabled); 551 toLocalFrame(overlayPage()->mainFrame())->script().executeScriptInMainWorld( "dispatch(" + command->toJSONString() + ")", ScriptController::ExecuteScriptWhen ScriptsDisabled);
552 } 552 }
553 553
554 void InspectorOverlay::evaluateInOverlay(const String& method, PassRefPtr<JSONVa lue> argument) 554 void InspectorOverlay::evaluateInOverlay(const String& method, PassRefPtr<protoc ol::Value> argument)
555 { 555 {
556 ScriptForbiddenScope::AllowUserAgentScript allowScript; 556 ScriptForbiddenScope::AllowUserAgentScript allowScript;
557 RefPtr<JSONArray> command = JSONArray::create(); 557 RefPtr<protocol::ListValue> command = protocol::ListValue::create();
558 command->pushString(method); 558 command->pushValue(protocol::StringValue::create(method));
559 command->pushValue(argument); 559 command->pushValue(argument);
560 toLocalFrame(overlayPage()->mainFrame())->script().executeScriptInMainWorld( "dispatch(" + command->toJSONString() + ")", ScriptController::ExecuteScriptWhen ScriptsDisabled); 560 toLocalFrame(overlayPage()->mainFrame())->script().executeScriptInMainWorld( "dispatch(" + command->toJSONString() + ")", ScriptController::ExecuteScriptWhen ScriptsDisabled);
561 } 561 }
562 562
563 String InspectorOverlay::evaluateInOverlayForTest(const String& script) 563 String InspectorOverlay::evaluateInOverlayForTest(const String& script)
564 { 564 {
565 ScriptForbiddenScope::AllowUserAgentScript allowScript; 565 ScriptForbiddenScope::AllowUserAgentScript allowScript;
566 v8::HandleScope handleScope(toIsolate(overlayMainFrame())); 566 v8::HandleScope handleScope(toIsolate(overlayMainFrame()));
567 v8::Local<v8::Value> string = toLocalFrame(overlayPage()->mainFrame())->scri pt().executeScriptInMainWorldAndReturnValue(ScriptSourceCode(script), ScriptCont roller::ExecuteScriptWhenScriptsDisabled); 567 v8::Local<v8::Value> string = toLocalFrame(overlayPage()->mainFrame())->scri pt().executeScriptInMainWorldAndReturnValue(ScriptSourceCode(script), ScriptCont roller::ExecuteScriptWhenScriptsDisabled);
568 return toCoreStringWithUndefinedOrNullCheck(string); 568 return toCoreStringWithUndefinedOrNullCheck(string);
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 774
775 void InspectorOverlay::initializeLayoutEditorIfNeeded(Node* node) 775 void InspectorOverlay::initializeLayoutEditorIfNeeded(Node* node)
776 { 776 {
777 if (m_inspectMode != InspectorDOMAgent::ShowLayoutEditor || !node || !node-> isElementNode() || !node->ownerDocument()->isActive()) 777 if (m_inspectMode != InspectorDOMAgent::ShowLayoutEditor || !node || !node-> isElementNode() || !node->ownerDocument()->isActive())
778 return; 778 return;
779 m_layoutEditor = LayoutEditor::create(toElement(node), m_cssAgent, m_domAgen t, &overlayMainFrame()->script()); 779 m_layoutEditor = LayoutEditor::create(toElement(node), m_cssAgent, m_domAgen t, &overlayMainFrame()->script());
780 toChromeClientImpl(m_webViewImpl->page()->chromeClient()).setCursorOverridde n(true); 780 toChromeClientImpl(m_webViewImpl->page()->chromeClient()).setCursorOverridde n(true);
781 } 781 }
782 782
783 } // namespace blink 783 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/InspectorOverlay.h ('k') | third_party/WebKit/Source/web/WebDevToolsAgentImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698