| OLD | NEW |
| 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 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 , m_overlayHost(InspectorOverlayHost::create()) | 175 , m_overlayHost(InspectorOverlayHost::create()) |
| 176 , m_drawViewSize(false) | 176 , m_drawViewSize(false) |
| 177 , m_drawViewSizeWithGrid(false) | 177 , m_drawViewSizeWithGrid(false) |
| 178 , m_resizeTimerActive(false) | 178 , m_resizeTimerActive(false) |
| 179 , m_omitTooltip(false) | 179 , m_omitTooltip(false) |
| 180 , m_timer(this, &InspectorOverlayImpl::onTimer) | 180 , m_timer(this, &InspectorOverlayImpl::onTimer) |
| 181 , m_suspendCount(0) | 181 , m_suspendCount(0) |
| 182 , m_inLayout(false) | 182 , m_inLayout(false) |
| 183 , m_needsUpdate(false) | 183 , m_needsUpdate(false) |
| 184 , m_inspectMode(InspectorDOMAgent::NotSearching) | 184 , m_inspectMode(InspectorDOMAgent::NotSearching) |
| 185 , m_searchingInLayoutEditor(true) |
| 185 { | 186 { |
| 186 } | 187 } |
| 187 | 188 |
| 188 InspectorOverlayImpl::~InspectorOverlayImpl() | 189 InspectorOverlayImpl::~InspectorOverlayImpl() |
| 189 { | 190 { |
| 190 ASSERT(!m_overlayPage); | 191 ASSERT(!m_overlayPage); |
| 191 } | 192 } |
| 192 | 193 |
| 193 DEFINE_TRACE(InspectorOverlayImpl) | 194 DEFINE_TRACE(InspectorOverlayImpl) |
| 194 { | 195 { |
| 195 visitor->trace(m_highlightNode); | 196 visitor->trace(m_highlightNode); |
| 196 visitor->trace(m_eventTargetNode); | 197 visitor->trace(m_eventTargetNode); |
| 197 visitor->trace(m_overlayPage); | 198 visitor->trace(m_overlayPage); |
| 198 visitor->trace(m_overlayChromeClient); | 199 visitor->trace(m_overlayChromeClient); |
| 199 visitor->trace(m_overlayHost); | 200 visitor->trace(m_overlayHost); |
| 200 visitor->trace(m_debuggerAgent); | 201 visitor->trace(m_debuggerAgent); |
| 201 visitor->trace(m_domAgent); | 202 visitor->trace(m_domAgent); |
| 202 visitor->trace(m_layoutEditor); | 203 visitor->trace(m_layoutEditor); |
| 203 visitor->trace(m_hoveredNodeForInspectMode); | 204 visitor->trace(m_hoveredNodeForInspectMode); |
| 204 } | 205 } |
| 205 | 206 |
| 206 void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAg
ent* debuggerAgent, InspectorDOMAgent* domAgent) | 207 void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAg
ent* debuggerAgent, InspectorDOMAgent* domAgent) |
| 207 { | 208 { |
| 208 m_layoutEditor = LayoutEditor::create(cssAgent); | 209 m_layoutEditor = LayoutEditor::create(cssAgent, domAgent); |
| 209 m_debuggerAgent = debuggerAgent; | 210 m_debuggerAgent = debuggerAgent; |
| 210 m_domAgent = domAgent; | 211 m_domAgent = domAgent; |
| 211 m_overlayHost->setListener(this); | 212 m_overlayHost->setListener(this); |
| 212 } | 213 } |
| 213 | 214 |
| 214 void InspectorOverlayImpl::invalidate() | 215 void InspectorOverlayImpl::invalidate() |
| 215 { | 216 { |
| 216 if (!m_pageOverlay) | 217 if (!m_pageOverlay) |
| 217 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver
layDelegate(*this)); | 218 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver
layDelegate(*this)); |
| 218 | 219 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 } | 285 } |
| 285 | 286 |
| 286 void InspectorOverlayImpl::setPausedInDebuggerMessage(const String* message) | 287 void InspectorOverlayImpl::setPausedInDebuggerMessage(const String* message) |
| 287 { | 288 { |
| 288 m_pausedInDebuggerMessage = message ? *message : String(); | 289 m_pausedInDebuggerMessage = message ? *message : String(); |
| 289 update(); | 290 update(); |
| 290 } | 291 } |
| 291 | 292 |
| 292 void InspectorOverlayImpl::hideHighlight() | 293 void InspectorOverlayImpl::hideHighlight() |
| 293 { | 294 { |
| 294 if (m_layoutEditor) | |
| 295 m_layoutEditor->setNode(nullptr); | |
| 296 m_highlightNode.clear(); | 295 m_highlightNode.clear(); |
| 297 m_eventTargetNode.clear(); | 296 m_eventTargetNode.clear(); |
| 298 m_highlightQuad.clear(); | 297 m_highlightQuad.clear(); |
| 299 update(); | 298 |
| 299 if (m_inspectMode == InspectorDOMAgent::ShowLayoutEditor && !m_searchingInLa
youtEditor && m_layoutEditor->node() && m_inspectModeHighlightConfig) |
| 300 highlightNode(m_layoutEditor->node(), *m_inspectModeHighlightConfig, fal
se); |
| 301 else |
| 302 update(); |
| 300 } | 303 } |
| 301 | 304 |
| 302 void InspectorOverlayImpl::highlightNode(Node* node, const InspectorHighlightCon
fig& highlightConfig, bool omitTooltip) | 305 void InspectorOverlayImpl::highlightNode(Node* node, const InspectorHighlightCon
fig& highlightConfig, bool omitTooltip) |
| 303 { | 306 { |
| 304 highlightNode(node, nullptr, highlightConfig, omitTooltip); | 307 highlightNode(node, nullptr, highlightConfig, omitTooltip); |
| 305 } | 308 } |
| 306 | 309 |
| 307 void InspectorOverlayImpl::highlightNode(Node* node, Node* eventTarget, const In
spectorHighlightConfig& highlightConfig, bool omitTooltip) | 310 void InspectorOverlayImpl::highlightNode(Node* node, Node* eventTarget, const In
spectorHighlightConfig& highlightConfig, bool omitTooltip) |
| 308 { | 311 { |
| 309 m_nodeHighlightConfig = highlightConfig; | 312 m_nodeHighlightConfig = highlightConfig; |
| 310 m_highlightNode = node; | 313 m_highlightNode = node; |
| 311 if (m_layoutEditor && highlightConfig.showLayoutEditor) | |
| 312 m_layoutEditor->setNode(node); | |
| 313 m_eventTargetNode = eventTarget; | 314 m_eventTargetNode = eventTarget; |
| 314 m_omitTooltip = omitTooltip; | 315 m_omitTooltip = omitTooltip; |
| 315 update(); | 316 update(); |
| 316 } | 317 } |
| 317 | 318 |
| 318 void InspectorOverlayImpl::setInspectMode(InspectorDOMAgent::SearchMode searchMo
de, PassOwnPtr<InspectorHighlightConfig> highlightConfig) | 319 void InspectorOverlayImpl::setInspectMode(InspectorDOMAgent::SearchMode searchMo
de, PassOwnPtr<InspectorHighlightConfig> highlightConfig) |
| 319 { | 320 { |
| 320 m_inspectMode = searchMode; | 321 m_inspectMode = searchMode; |
| 321 update(); | 322 update(); |
| 322 | 323 |
| 323 if (searchMode != InspectorDOMAgent::NotSearching) { | 324 if (searchMode != InspectorDOMAgent::NotSearching) { |
| 324 m_inspectModeHighlightConfig = highlightConfig; | 325 m_inspectModeHighlightConfig = highlightConfig; |
| 325 } else { | 326 } else { |
| 327 m_searchingInLayoutEditor = true; |
| 326 m_hoveredNodeForInspectMode.clear(); | 328 m_hoveredNodeForInspectMode.clear(); |
| 327 hideHighlight(); | 329 hideHighlight(); |
| 328 } | 330 } |
| 329 } | 331 } |
| 330 | 332 |
| 331 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe
ctorHighlightConfig& highlightConfig) | 333 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe
ctorHighlightConfig& highlightConfig) |
| 332 { | 334 { |
| 333 m_quadHighlightConfig = highlightConfig; | 335 m_quadHighlightConfig = highlightConfig; |
| 334 m_highlightQuad = quad; | 336 m_highlightQuad = quad; |
| 335 m_omitTooltip = false; | 337 m_omitTooltip = false; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 if (!m_highlightNode) | 387 if (!m_highlightNode) |
| 386 return; | 388 return; |
| 387 | 389 |
| 388 bool appendElementInfo = m_highlightNode->isElementNode() && !m_omitTooltip
&& m_nodeHighlightConfig.showInfo && m_highlightNode->layoutObject() && m_highli
ghtNode->document().frame(); | 390 bool appendElementInfo = m_highlightNode->isElementNode() && !m_omitTooltip
&& m_nodeHighlightConfig.showInfo && m_highlightNode->layoutObject() && m_highli
ghtNode->document().frame(); |
| 389 InspectorHighlight highlight(m_highlightNode.get(), m_nodeHighlightConfig, a
ppendElementInfo); | 391 InspectorHighlight highlight(m_highlightNode.get(), m_nodeHighlightConfig, a
ppendElementInfo); |
| 390 if (m_eventTargetNode) | 392 if (m_eventTargetNode) |
| 391 highlight.appendEventTargetQuads(m_eventTargetNode.get(), m_nodeHighligh
tConfig); | 393 highlight.appendEventTargetQuads(m_eventTargetNode.get(), m_nodeHighligh
tConfig); |
| 392 | 394 |
| 393 RefPtr<JSONObject> highlightJSON = highlight.asJSONObject(); | 395 RefPtr<JSONObject> highlightJSON = highlight.asJSONObject(); |
| 394 evaluateInOverlay("drawHighlight", highlightJSON.release()); | 396 evaluateInOverlay("drawHighlight", highlightJSON.release()); |
| 395 if (m_layoutEditor && m_nodeHighlightConfig.showLayoutEditor) { | 397 if (m_highlightNode == m_layoutEditor->node() && m_inspectMode == InspectorD
OMAgent::ShowLayoutEditor) { |
| 398 ASSERT(!m_searchingInLayoutEditor); |
| 396 RefPtr<JSONObject> layoutEditorInfo = m_layoutEditor->buildJSONInfo(); | 399 RefPtr<JSONObject> layoutEditorInfo = m_layoutEditor->buildJSONInfo(); |
| 397 if (layoutEditorInfo) | 400 if (layoutEditorInfo) |
| 398 evaluateInOverlay("showLayoutEditor", layoutEditorInfo.release()); | 401 evaluateInOverlay("showLayoutEditor", layoutEditorInfo.release()); |
| 399 } | 402 } |
| 400 } | 403 } |
| 401 | 404 |
| 402 void InspectorOverlayImpl::drawQuadHighlight() | 405 void InspectorOverlayImpl::drawQuadHighlight() |
| 403 { | 406 { |
| 404 if (!m_highlightQuad) | 407 if (!m_highlightQuad) |
| 405 return; | 408 return; |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 void InspectorOverlayImpl::overlayPropertyChanged(float value) | 566 void InspectorOverlayImpl::overlayPropertyChanged(float value) |
| 564 { | 567 { |
| 565 m_layoutEditor->overlayPropertyChanged(value); | 568 m_layoutEditor->overlayPropertyChanged(value); |
| 566 } | 569 } |
| 567 | 570 |
| 568 void InspectorOverlayImpl::overlayEndedPropertyChange() | 571 void InspectorOverlayImpl::overlayEndedPropertyChange() |
| 569 { | 572 { |
| 570 m_layoutEditor->overlayEndedPropertyChange(); | 573 m_layoutEditor->overlayEndedPropertyChange(); |
| 571 } | 574 } |
| 572 | 575 |
| 576 void InspectorOverlayImpl::overlayClearSelection(bool commitChanges) |
| 577 { |
| 578 if (m_inspectMode != InspectorDOMAgent::ShowLayoutEditor) |
| 579 return; |
| 580 |
| 581 m_searchingInLayoutEditor = true; |
| 582 if (m_layoutEditor->node() && m_inspectModeHighlightConfig) { |
| 583 m_hoveredNodeForInspectMode = m_layoutEditor->node(); |
| 584 highlightNode(m_layoutEditor->node(), *m_inspectModeHighlightConfig, fal
se); |
| 585 } |
| 586 |
| 587 m_layoutEditor->clearSelection(commitChanges); |
| 588 } |
| 589 |
| 573 void InspectorOverlayImpl::profilingStarted() | 590 void InspectorOverlayImpl::profilingStarted() |
| 574 { | 591 { |
| 575 if (!m_suspendCount++) | 592 if (!m_suspendCount++) |
| 576 clear(); | 593 clear(); |
| 577 } | 594 } |
| 578 | 595 |
| 579 void InspectorOverlayImpl::profilingStopped() | 596 void InspectorOverlayImpl::profilingStopped() |
| 580 { | 597 { |
| 581 --m_suspendCount; | 598 --m_suspendCount; |
| 582 } | 599 } |
| 583 | 600 |
| 584 void InspectorOverlayImpl::pageLayoutInvalidated(bool resized) | 601 void InspectorOverlayImpl::pageLayoutInvalidated(bool resized) |
| 585 { | 602 { |
| 586 if (resized && m_drawViewSize) { | 603 if (resized && m_drawViewSize) { |
| 587 m_resizeTimerActive = true; | 604 m_resizeTimerActive = true; |
| 588 m_timer.startOneShot(1, FROM_HERE); | 605 m_timer.startOneShot(1, FROM_HERE); |
| 589 } | 606 } |
| 590 update(); | 607 update(); |
| 591 } | 608 } |
| 592 | 609 |
| 593 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid) | 610 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid) |
| 594 { | 611 { |
| 595 m_drawViewSize = show; | 612 m_drawViewSize = show; |
| 596 m_drawViewSizeWithGrid = showGrid; | 613 m_drawViewSizeWithGrid = showGrid; |
| 597 } | 614 } |
| 598 | 615 |
| 599 bool InspectorOverlayImpl::handleMouseMove(const PlatformMouseEvent& event) | 616 bool InspectorOverlayImpl::handleMouseMove(const PlatformMouseEvent& event) |
| 600 { | 617 { |
| 601 if (m_inspectMode == InspectorDOMAgent::NotSearching) | 618 if (!shouldSearchForNode()) |
| 602 return false; | 619 return false; |
| 603 | 620 |
| 604 LocalFrame* frame = m_webViewImpl->mainFrameImpl()->frame(); | 621 LocalFrame* frame = m_webViewImpl->mainFrameImpl()->frame(); |
| 605 if (!frame->view() || !frame->contentLayoutObject()) | 622 if (!frame->view() || !frame->contentLayoutObject()) |
| 606 return false; | 623 return false; |
| 607 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); | 624 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); |
| 608 | 625 |
| 609 // Do not highlight within user agent shadow root unless requested. | 626 // Do not highlight within user agent shadow root unless requested. |
| 610 if (m_inspectMode != InspectorDOMAgent::SearchingForUAShadow) { | 627 if (m_inspectMode != InspectorDOMAgent::SearchingForUAShadow) { |
| 611 ShadowRoot* shadowRoot = InspectorDOMAgent::userAgentShadowRoot(node); | 628 ShadowRoot* shadowRoot = InspectorDOMAgent::userAgentShadowRoot(node); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 626 | 643 |
| 627 if (node && m_inspectModeHighlightConfig) { | 644 if (node && m_inspectModeHighlightConfig) { |
| 628 m_hoveredNodeForInspectMode = node; | 645 m_hoveredNodeForInspectMode = node; |
| 629 highlightNode(node, eventTarget, *m_inspectModeHighlightConfig, event.ct
rlKey() || event.metaKey()); | 646 highlightNode(node, eventTarget, *m_inspectModeHighlightConfig, event.ct
rlKey() || event.metaKey()); |
| 630 } | 647 } |
| 631 return true; | 648 return true; |
| 632 } | 649 } |
| 633 | 650 |
| 634 bool InspectorOverlayImpl::handleMousePress() | 651 bool InspectorOverlayImpl::handleMousePress() |
| 635 { | 652 { |
| 636 if (m_inspectMode == InspectorDOMAgent::NotSearching) | 653 if (!shouldSearchForNode()) |
| 637 return false; | 654 return false; |
| 638 | 655 |
| 639 if (m_hoveredNodeForInspectMode) { | 656 if (m_hoveredNodeForInspectMode) { |
| 640 if (m_domAgent) | 657 inspect(m_hoveredNodeForInspectMode.get()); |
| 641 m_domAgent->inspect(m_hoveredNodeForInspectMode.get()); | |
| 642 m_hoveredNodeForInspectMode.clear(); | 658 m_hoveredNodeForInspectMode.clear(); |
| 643 return true; | 659 return true; |
| 644 } | 660 } |
| 645 return false; | 661 return false; |
| 646 } | 662 } |
| 647 | 663 |
| 648 bool InspectorOverlayImpl::handleGestureEvent(const PlatformGestureEvent& event) | 664 bool InspectorOverlayImpl::handleGestureEvent(const PlatformGestureEvent& event) |
| 649 { | 665 { |
| 650 if (m_inspectMode == InspectorDOMAgent::NotSearching || event.type() != Plat
formEvent::GestureTap) | 666 if (!shouldSearchForNode() || event.type() != PlatformEvent::GestureTap) |
| 651 return false; | 667 return false; |
| 652 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev
ent, false); | 668 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev
ent, false); |
| 653 if (node && m_inspectModeHighlightConfig) { | 669 if (node && m_inspectModeHighlightConfig) { |
| 654 highlightNode(node, *m_inspectModeHighlightConfig, false); | 670 highlightNode(node, *m_inspectModeHighlightConfig, false); |
| 655 if (m_domAgent) | 671 inspect(node); |
| 656 m_domAgent->inspect(node); | |
| 657 return true; | 672 return true; |
| 658 } | 673 } |
| 659 return false; | 674 return false; |
| 660 } | 675 } |
| 661 | 676 |
| 662 bool InspectorOverlayImpl::handleTouchEvent(const PlatformTouchEvent& event) | 677 bool InspectorOverlayImpl::handleTouchEvent(const PlatformTouchEvent& event) |
| 663 { | 678 { |
| 664 if (m_inspectMode == InspectorDOMAgent::NotSearching) | 679 if (!shouldSearchForNode()) |
| 665 return false; | 680 return false; |
| 666 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev
ent, false); | 681 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev
ent, false); |
| 667 if (node && m_inspectModeHighlightConfig) { | 682 if (node && m_inspectModeHighlightConfig) { |
| 668 highlightNode(node, *m_inspectModeHighlightConfig, false); | 683 highlightNode(node, *m_inspectModeHighlightConfig, false); |
| 669 if (m_domAgent) | 684 inspect(node); |
| 670 m_domAgent->inspect(node); | |
| 671 return true; | 685 return true; |
| 672 } | 686 } |
| 673 return false; | 687 return false; |
| 674 } | 688 } |
| 675 | 689 |
| 690 |
| 691 bool InspectorOverlayImpl::shouldSearchForNode() |
| 692 { |
| 693 return !(m_inspectMode == InspectorDOMAgent::NotSearching || (m_inspectMode
== InspectorDOMAgent::ShowLayoutEditor && !m_searchingInLayoutEditor)); |
| 694 } |
| 695 |
| 696 void InspectorOverlayImpl::inspect(Node* node) |
| 697 { |
| 698 if (m_domAgent) |
| 699 m_domAgent->inspect(node); |
| 700 |
| 701 if (m_layoutEditor && m_inspectMode == InspectorDOMAgent::ShowLayoutEditor &
& m_searchingInLayoutEditor) { |
| 702 m_searchingInLayoutEditor = false; |
| 703 m_layoutEditor->selectNode(node); |
| 704 highlightNode(node, *m_inspectModeHighlightConfig, false); |
| 705 } |
| 706 } |
| 707 |
| 676 } // namespace blink | 708 } // namespace blink |
| OLD | NEW |