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 |