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

Side by Side Diff: Source/web/InspectorOverlayImpl.cpp

Issue 1311783003: Devtools[LayoutEditor]: Rework layout-editor workflow (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@resize
Patch Set: Small improvements Created 5 years, 3 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 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW
« Source/web/InspectorOverlayImpl.h ('K') | « Source/web/InspectorOverlayImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698