Chromium Code Reviews| 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_layoutEditorEnabled(false) | |
| 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_layoutEditorEn abled && 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_layoutEditorEnabled = false; | |
| 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 && m_layoutEditorEnabled) { |
|
dgozman
2015/09/02 01:17:22
Let's instead ASSERT(m_layoutEditorEnabled).
sergeyv
2015/09/02 01:49:16
Done.
| |
| 396 RefPtr<JSONObject> layoutEditorInfo = m_layoutEditor->buildJSONInfo(); | 398 RefPtr<JSONObject> layoutEditorInfo = m_layoutEditor->buildJSONInfo(); |
| 397 if (layoutEditorInfo) | 399 if (layoutEditorInfo) |
| 398 evaluateInOverlay("showLayoutEditor", layoutEditorInfo.release()); | 400 evaluateInOverlay("showLayoutEditor", layoutEditorInfo.release()); |
| 399 } | 401 } |
| 400 } | 402 } |
| 401 | 403 |
| 402 void InspectorOverlayImpl::drawQuadHighlight() | 404 void InspectorOverlayImpl::drawQuadHighlight() |
| 403 { | 405 { |
| 404 if (!m_highlightQuad) | 406 if (!m_highlightQuad) |
| 405 return; | 407 return; |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 563 void InspectorOverlayImpl::overlayPropertyChanged(float value) | 565 void InspectorOverlayImpl::overlayPropertyChanged(float value) |
| 564 { | 566 { |
| 565 m_layoutEditor->overlayPropertyChanged(value); | 567 m_layoutEditor->overlayPropertyChanged(value); |
| 566 } | 568 } |
| 567 | 569 |
| 568 void InspectorOverlayImpl::overlayEndedPropertyChange() | 570 void InspectorOverlayImpl::overlayEndedPropertyChange() |
| 569 { | 571 { |
| 570 m_layoutEditor->overlayEndedPropertyChange(); | 572 m_layoutEditor->overlayEndedPropertyChange(); |
| 571 } | 573 } |
| 572 | 574 |
| 575 void InspectorOverlayImpl::clearSelection(bool commitChanges) | |
| 576 { | |
| 577 if (m_inspectMode != InspectorDOMAgent::ShowLayoutEditor) | |
| 578 return; | |
| 579 | |
| 580 m_layoutEditorEnabled = false; | |
| 581 if (m_layoutEditor->node() && m_inspectModeHighlightConfig) { | |
| 582 m_hoveredNodeForInspectMode = m_layoutEditor->node(); | |
| 583 highlightNode(m_layoutEditor->node(), *m_inspectModeHighlightConfig, fal se); | |
| 584 } | |
| 585 | |
| 586 m_layoutEditor->clearSelection(commitChanges); | |
|
dgozman
2015/09/02 01:17:22
Let's rename setNode to selectNode.
sergeyv
2015/09/02 01:49:16
Done.
| |
| 587 } | |
| 588 | |
| 573 void InspectorOverlayImpl::profilingStarted() | 589 void InspectorOverlayImpl::profilingStarted() |
| 574 { | 590 { |
| 575 if (!m_suspendCount++) | 591 if (!m_suspendCount++) |
| 576 clear(); | 592 clear(); |
| 577 } | 593 } |
| 578 | 594 |
| 579 void InspectorOverlayImpl::profilingStopped() | 595 void InspectorOverlayImpl::profilingStopped() |
| 580 { | 596 { |
| 581 --m_suspendCount; | 597 --m_suspendCount; |
| 582 } | 598 } |
| 583 | 599 |
| 584 void InspectorOverlayImpl::pageLayoutInvalidated(bool resized) | 600 void InspectorOverlayImpl::pageLayoutInvalidated(bool resized) |
| 585 { | 601 { |
| 586 if (resized && m_drawViewSize) { | 602 if (resized && m_drawViewSize) { |
| 587 m_resizeTimerActive = true; | 603 m_resizeTimerActive = true; |
| 588 m_timer.startOneShot(1, FROM_HERE); | 604 m_timer.startOneShot(1, FROM_HERE); |
| 589 } | 605 } |
| 590 update(); | 606 update(); |
| 591 } | 607 } |
| 592 | 608 |
| 593 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid) | 609 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid) |
| 594 { | 610 { |
| 595 m_drawViewSize = show; | 611 m_drawViewSize = show; |
| 596 m_drawViewSizeWithGrid = showGrid; | 612 m_drawViewSizeWithGrid = showGrid; |
| 597 } | 613 } |
| 598 | 614 |
| 599 bool InspectorOverlayImpl::handleMouseMove(const PlatformMouseEvent& event) | 615 bool InspectorOverlayImpl::handleMouseMove(const PlatformMouseEvent& event) |
| 600 { | 616 { |
| 601 if (m_inspectMode == InspectorDOMAgent::NotSearching) | 617 if (!shouldSearchForNode()) |
| 602 return false; | 618 return false; |
| 603 | 619 |
| 604 LocalFrame* frame = m_webViewImpl->mainFrameImpl()->frame(); | 620 LocalFrame* frame = m_webViewImpl->mainFrameImpl()->frame(); |
| 605 if (!frame->view() || !frame->contentLayoutObject()) | 621 if (!frame->view() || !frame->contentLayoutObject()) |
| 606 return false; | 622 return false; |
| 607 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); | 623 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey()); |
| 608 | 624 |
| 609 // Do not highlight within user agent shadow root unless requested. | 625 // Do not highlight within user agent shadow root unless requested. |
| 610 if (m_inspectMode != InspectorDOMAgent::SearchingForUAShadow) { | 626 if (m_inspectMode != InspectorDOMAgent::SearchingForUAShadow) { |
| 611 ShadowRoot* shadowRoot = InspectorDOMAgent::userAgentShadowRoot(node); | 627 ShadowRoot* shadowRoot = InspectorDOMAgent::userAgentShadowRoot(node); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 626 | 642 |
| 627 if (node && m_inspectModeHighlightConfig) { | 643 if (node && m_inspectModeHighlightConfig) { |
| 628 m_hoveredNodeForInspectMode = node; | 644 m_hoveredNodeForInspectMode = node; |
| 629 highlightNode(node, eventTarget, *m_inspectModeHighlightConfig, event.ct rlKey() || event.metaKey()); | 645 highlightNode(node, eventTarget, *m_inspectModeHighlightConfig, event.ct rlKey() || event.metaKey()); |
| 630 } | 646 } |
| 631 return true; | 647 return true; |
| 632 } | 648 } |
| 633 | 649 |
| 634 bool InspectorOverlayImpl::handleMousePress() | 650 bool InspectorOverlayImpl::handleMousePress() |
| 635 { | 651 { |
| 636 if (m_inspectMode == InspectorDOMAgent::NotSearching) | 652 if (!shouldSearchForNode()) |
| 637 return false; | 653 return false; |
| 638 | 654 |
| 639 if (m_hoveredNodeForInspectMode) { | 655 if (m_hoveredNodeForInspectMode) { |
| 640 if (m_domAgent) | 656 inspect(m_hoveredNodeForInspectMode.get()); |
| 641 m_domAgent->inspect(m_hoveredNodeForInspectMode.get()); | |
| 642 m_hoveredNodeForInspectMode.clear(); | 657 m_hoveredNodeForInspectMode.clear(); |
| 643 return true; | 658 return true; |
| 644 } | 659 } |
| 645 return false; | 660 return false; |
| 646 } | 661 } |
| 647 | 662 |
| 648 bool InspectorOverlayImpl::handleGestureEvent(const PlatformGestureEvent& event) | 663 bool InspectorOverlayImpl::handleGestureEvent(const PlatformGestureEvent& event) |
| 649 { | 664 { |
| 650 if (m_inspectMode == InspectorDOMAgent::NotSearching || event.type() != Plat formEvent::GestureTap) | 665 if (!shouldSearchForNode() || event.type() != PlatformEvent::GestureTap) |
| 651 return false; | 666 return false; |
| 652 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev ent, false); | 667 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev ent, false); |
| 653 if (node && m_inspectModeHighlightConfig) { | 668 if (node && m_inspectModeHighlightConfig) { |
| 654 highlightNode(node, *m_inspectModeHighlightConfig, false); | 669 highlightNode(node, *m_inspectModeHighlightConfig, false); |
| 655 if (m_domAgent) | 670 inspect(node); |
| 656 m_domAgent->inspect(node); | |
| 657 return true; | 671 return true; |
| 658 } | 672 } |
| 659 return false; | 673 return false; |
| 660 } | 674 } |
| 661 | 675 |
| 662 bool InspectorOverlayImpl::handleTouchEvent(const PlatformTouchEvent& event) | 676 bool InspectorOverlayImpl::handleTouchEvent(const PlatformTouchEvent& event) |
| 663 { | 677 { |
| 664 if (m_inspectMode == InspectorDOMAgent::NotSearching) | 678 if (!shouldSearchForNode()) |
| 665 return false; | 679 return false; |
| 666 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev ent, false); | 680 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev ent, false); |
| 667 if (node && m_inspectModeHighlightConfig) { | 681 if (node && m_inspectModeHighlightConfig) { |
| 668 highlightNode(node, *m_inspectModeHighlightConfig, false); | 682 highlightNode(node, *m_inspectModeHighlightConfig, false); |
| 669 if (m_domAgent) | 683 inspect(node); |
| 670 m_domAgent->inspect(node); | |
| 671 return true; | 684 return true; |
| 672 } | 685 } |
| 673 return false; | 686 return false; |
| 674 } | 687 } |
| 675 | 688 |
| 689 | |
| 690 bool InspectorOverlayImpl::shouldSearchForNode() | |
| 691 { | |
| 692 return !(m_inspectMode == InspectorDOMAgent::NotSearching || (m_inspectMode == InspectorDOMAgent::ShowLayoutEditor && m_layoutEditorEnabled)); | |
| 693 } | |
| 694 | |
| 695 void InspectorOverlayImpl::inspect(Node* node) | |
| 696 { | |
| 697 if (m_domAgent) | |
| 698 m_domAgent->inspect(node); | |
| 699 | |
| 700 if (m_layoutEditor && m_inspectMode == InspectorDOMAgent::ShowLayoutEditor & & !m_layoutEditorEnabled) { | |
| 701 m_layoutEditorEnabled = true; | |
| 702 m_layoutEditor->setNode(node); | |
| 703 highlightNode(node, *m_inspectModeHighlightConfig, false); | |
| 704 } | |
| 705 } | |
| 706 | |
| 676 } // namespace blink | 707 } // namespace blink |
| OLD | NEW |