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 |