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

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

Issue 1322053002: Devtools: Move inspectMode logic from InspectorDomAgent to InspectorOverlayImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: 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 22 matching lines...) Expand all
33 #include "bindings/core/v8/V8InspectorOverlayHost.h" 33 #include "bindings/core/v8/V8InspectorOverlayHost.h"
34 #include "core/dom/Node.h" 34 #include "core/dom/Node.h"
35 #include "core/frame/FrameHost.h" 35 #include "core/frame/FrameHost.h"
36 #include "core/frame/FrameView.h" 36 #include "core/frame/FrameView.h"
37 #include "core/frame/LocalFrame.h" 37 #include "core/frame/LocalFrame.h"
38 #include "core/frame/Settings.h" 38 #include "core/frame/Settings.h"
39 #include "core/input/EventHandler.h" 39 #include "core/input/EventHandler.h"
40 #include "core/inspector/InspectorDebuggerAgent.h" 40 #include "core/inspector/InspectorDebuggerAgent.h"
41 #include "core/inspector/InspectorOverlayHost.h" 41 #include "core/inspector/InspectorOverlayHost.h"
42 #include "core/inspector/LayoutEditor.h" 42 #include "core/inspector/LayoutEditor.h"
43 #include "core/layout/LayoutView.h"
43 #include "core/loader/EmptyClients.h" 44 #include "core/loader/EmptyClients.h"
44 #include "core/loader/FrameLoadRequest.h" 45 #include "core/loader/FrameLoadRequest.h"
45 #include "core/page/ChromeClient.h" 46 #include "core/page/ChromeClient.h"
46 #include "core/page/Page.h" 47 #include "core/page/Page.h"
47 #include "platform/JSONValues.h" 48 #include "platform/JSONValues.h"
48 #include "platform/ScriptForbiddenScope.h" 49 #include "platform/ScriptForbiddenScope.h"
49 #include "platform/graphics/GraphicsContext.h" 50 #include "platform/graphics/GraphicsContext.h"
50 #include "public/platform/Platform.h" 51 #include "public/platform/Platform.h"
51 #include "public/platform/WebData.h" 52 #include "public/platform/WebData.h"
52 #include "web/PageOverlay.h" 53 #include "web/PageOverlay.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 , m_overlay(&overlay) 130 , m_overlay(&overlay)
130 { } 131 { }
131 132
132 RawPtrWillBeMember<ChromeClient> m_client; 133 RawPtrWillBeMember<ChromeClient> m_client;
133 RawPtrWillBeMember<InspectorOverlayImpl> m_overlay; 134 RawPtrWillBeMember<InspectorOverlayImpl> m_overlay;
134 }; 135 };
135 136
136 137
137 InspectorOverlayImpl::InspectorOverlayImpl(WebViewImpl* webViewImpl) 138 InspectorOverlayImpl::InspectorOverlayImpl(WebViewImpl* webViewImpl)
138 : m_webViewImpl(webViewImpl) 139 : m_webViewImpl(webViewImpl)
139 , m_inspectModeEnabled(false)
140 , m_overlayHost(InspectorOverlayHost::create()) 140 , m_overlayHost(InspectorOverlayHost::create())
141 , m_drawViewSize(false) 141 , m_drawViewSize(false)
142 , m_drawViewSizeWithGrid(false) 142 , m_drawViewSizeWithGrid(false)
143 , m_resizeTimerActive(false) 143 , m_resizeTimerActive(false)
144 , m_omitTooltip(false) 144 , m_omitTooltip(false)
145 , m_timer(this, &InspectorOverlayImpl::onTimer) 145 , m_timer(this, &InspectorOverlayImpl::onTimer)
146 , m_suspendCount(0) 146 , m_suspendCount(0)
147 , m_inLayout(false) 147 , m_inLayout(false)
148 , m_needsUpdate(false) 148 , m_needsUpdate(false)
149 , m_searchingForNode(InspectorDOMAgent::NotSearching)
149 { 150 {
150 } 151 }
151 152
152 InspectorOverlayImpl::~InspectorOverlayImpl() 153 InspectorOverlayImpl::~InspectorOverlayImpl()
153 { 154 {
154 ASSERT(!m_overlayPage); 155 ASSERT(!m_overlayPage);
155 } 156 }
156 157
157 DEFINE_TRACE(InspectorOverlayImpl) 158 DEFINE_TRACE(InspectorOverlayImpl)
158 { 159 {
159 visitor->trace(m_highlightNode); 160 visitor->trace(m_highlightNode);
160 visitor->trace(m_eventTargetNode); 161 visitor->trace(m_eventTargetNode);
161 visitor->trace(m_overlayPage); 162 visitor->trace(m_overlayPage);
162 visitor->trace(m_overlayChromeClient); 163 visitor->trace(m_overlayChromeClient);
163 visitor->trace(m_overlayHost); 164 visitor->trace(m_overlayHost);
164 visitor->trace(m_debuggerAgent); 165 visitor->trace(m_debuggerAgent);
166 visitor->trace(m_domAgent);
165 visitor->trace(m_layoutEditor); 167 visitor->trace(m_layoutEditor);
168 visitor->trace(m_hoveredNodeForInspectMode);
166 } 169 }
167 170
168 void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAg ent* debuggerAgent) 171 void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAg ent* debuggerAgent, InspectorDOMAgent* domAgent)
169 { 172 {
170 m_layoutEditor = LayoutEditor::create(cssAgent); 173 m_layoutEditor = LayoutEditor::create(cssAgent);
171 m_debuggerAgent = debuggerAgent; 174 m_debuggerAgent = debuggerAgent;
175 m_domAgent = domAgent;
172 m_overlayHost->setListener(this); 176 m_overlayHost->setListener(this);
173 } 177 }
174 178
175 void InspectorOverlayImpl::invalidate() 179 void InspectorOverlayImpl::invalidate()
176 { 180 {
177 if (!m_pageOverlay) 181 if (!m_pageOverlay)
178 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver layDelegate(*this)); 182 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver layDelegate(*this));
179 183
180 m_pageOverlay->update(); 184 m_pageOverlay->update();
181 } 185 }
182 186
183 void InspectorOverlayImpl::layout() 187 void InspectorOverlayImpl::layout()
184 { 188 {
185 if (isEmpty()) 189 if (isEmpty())
186 return; 190 return;
187 191
188 TemporaryChange<bool> scoped(m_inLayout, true); 192 TemporaryChange<bool> scoped(m_inLayout, true);
189 if (m_needsUpdate) { 193 if (m_needsUpdate) {
190 m_needsUpdate = false; 194 m_needsUpdate = false;
191 rebuildOverlayPage(); 195 rebuildOverlayPage();
192 } 196 }
193 overlayMainFrame()->view()->updateAllLifecyclePhases(); 197 overlayMainFrame()->view()->updateAllLifecyclePhases();
194 } 198 }
195 199
196 bool InspectorOverlayImpl::handleInputEvent(const WebInputEvent& inputEvent) 200 bool InspectorOverlayImpl::handleInputEvent(const WebInputEvent& inputEvent)
197 { 201 {
198 bool handled = false; 202 bool handled = false;
199 if (isEmpty())
dgozman 2015/09/01 00:53:29 Please bring it back.
sergeyv 2015/09/01 03:41:20 Done. Had to change isEmpty method: now it is not
200 return handled;
201 203
202 if (WebInputEvent::isGestureEventType(inputEvent.type) && inputEvent.type == WebInputEvent::GestureTap) { 204 if (WebInputEvent::isGestureEventType(inputEvent.type) && inputEvent.type == WebInputEvent::GestureTap) {
203 // Only let GestureTab in (we only need it and we know PlatformGestureEv entBuilder supports it). 205 // Only let GestureTab in (we only need it and we know PlatformGestureEv entBuilder supports it).
204 PlatformGestureEvent gestureEvent = PlatformGestureEventBuilder(m_webVie wImpl->mainFrameImpl()->frameView(), static_cast<const WebGestureEvent&>(inputEv ent)); 206 PlatformGestureEvent gestureEvent = PlatformGestureEventBuilder(m_webVie wImpl->mainFrameImpl()->frameView(), static_cast<const WebGestureEvent&>(inputEv ent));
207 handled = handleGestureEvent(m_webViewImpl->mainFrameImpl()->frame(), ge stureEvent);
dgozman 2015/09/01 00:53:29 Let's drop the first parameter.
sergeyv 2015/09/01 03:41:20 Done.
208 if (handled)
209 return true;
210
205 overlayMainFrame()->eventHandler().handleGestureEvent(gestureEvent); 211 overlayMainFrame()->eventHandler().handleGestureEvent(gestureEvent);
206 } 212 }
207 if (WebInputEvent::isMouseEventType(inputEvent.type) && inputEvent.type != W ebInputEvent::MouseEnter) { 213 if (WebInputEvent::isMouseEventType(inputEvent.type) && inputEvent.type != W ebInputEvent::MouseEnter) {
208 // PlatformMouseEventBuilder does not work with MouseEnter type, so we f ilter it out manually. 214 // PlatformMouseEventBuilder does not work with MouseEnter type, so we f ilter it out manually.
209 PlatformMouseEvent mouseEvent = PlatformMouseEventBuilder(m_webViewImpl- >mainFrameImpl()->frameView(), static_cast<const WebMouseEvent&>(inputEvent)); 215 PlatformMouseEvent mouseEvent = PlatformMouseEventBuilder(m_webViewImpl- >mainFrameImpl()->frameView(), static_cast<const WebMouseEvent&>(inputEvent));
216
217 if (mouseEvent.type() == PlatformEvent::MouseMoved)
218 handled = handleMouseMove(m_webViewImpl->mainFrameImpl()->frame(), m ouseEvent);
219 else if (mouseEvent.type() == PlatformEvent::MousePressed)
220 handled = handleMousePress();
221
222 if (handled)
223 return true;
224
210 if (mouseEvent.type() == PlatformEvent::MouseMoved) 225 if (mouseEvent.type() == PlatformEvent::MouseMoved)
211 handled = overlayMainFrame()->eventHandler().handleMouseMoveEvent(mo useEvent); 226 handled = overlayMainFrame()->eventHandler().handleMouseMoveEvent(mo useEvent);
212 if (mouseEvent.type() == PlatformEvent::MousePressed) 227 if (mouseEvent.type() == PlatformEvent::MousePressed)
213 handled = overlayMainFrame()->eventHandler().handleMousePressEvent(m ouseEvent); 228 handled = overlayMainFrame()->eventHandler().handleMousePressEvent(m ouseEvent);
214 if (mouseEvent.type() == PlatformEvent::MouseReleased) 229 if (mouseEvent.type() == PlatformEvent::MouseReleased)
215 handled = overlayMainFrame()->eventHandler().handleMouseReleaseEvent (mouseEvent); 230 handled = overlayMainFrame()->eventHandler().handleMouseReleaseEvent (mouseEvent);
216 } 231 }
232
dgozman 2015/09/01 00:53:29 Two blank lines at the same time!
sergeyv 2015/09/01 03:41:20 Done.
233
217 if (WebInputEvent::isTouchEventType(inputEvent.type)) { 234 if (WebInputEvent::isTouchEventType(inputEvent.type)) {
218 PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(m_webViewImpl- >mainFrameImpl()->frameView(), static_cast<const WebTouchEvent&>(inputEvent)); 235 PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(m_webViewImpl- >mainFrameImpl()->frameView(), static_cast<const WebTouchEvent&>(inputEvent));
236 handled = handleTouchEvent(m_webViewImpl->mainFrameImpl()->frame(), touc hEvent);
237 if (handled)
238 return true;
219 overlayMainFrame()->eventHandler().handleTouchEvent(touchEvent); 239 overlayMainFrame()->eventHandler().handleTouchEvent(touchEvent);
220 } 240 }
221 if (WebInputEvent::isKeyboardEventType(inputEvent.type)) { 241 if (WebInputEvent::isKeyboardEventType(inputEvent.type)) {
222 PlatformKeyboardEvent keyboardEvent = PlatformKeyboardEventBuilder(stati c_cast<const WebKeyboardEvent&>(inputEvent)); 242 PlatformKeyboardEvent keyboardEvent = PlatformKeyboardEventBuilder(stati c_cast<const WebKeyboardEvent&>(inputEvent));
223 overlayMainFrame()->eventHandler().keyEvent(keyboardEvent); 243 overlayMainFrame()->eventHandler().keyEvent(keyboardEvent);
224 } 244 }
225 245
226 return handled; 246 return handled;
227 } 247 }
228 248
229 void InspectorOverlayImpl::setPausedInDebuggerMessage(const String* message) 249 void InspectorOverlayImpl::setPausedInDebuggerMessage(const String* message)
230 { 250 {
231 m_pausedInDebuggerMessage = message ? *message : String(); 251 m_pausedInDebuggerMessage = message ? *message : String();
232 update(); 252 update();
233 } 253 }
234 254
235 void InspectorOverlayImpl::setInspectModeEnabled(bool enabled)
236 {
237 m_inspectModeEnabled = enabled;
238 update();
239 }
240
241 void InspectorOverlayImpl::hideHighlight() 255 void InspectorOverlayImpl::hideHighlight()
242 { 256 {
243 if (m_layoutEditor) 257 if (m_layoutEditor)
244 m_layoutEditor->setNode(nullptr); 258 m_layoutEditor->setNode(nullptr);
245 m_highlightNode.clear(); 259 m_highlightNode.clear();
246 m_eventTargetNode.clear(); 260 m_eventTargetNode.clear();
247 m_highlightQuad.clear(); 261 m_highlightQuad.clear();
248 update(); 262 update();
249 } 263 }
250 264
251 void InspectorOverlayImpl::highlightNode(Node* node, Node* eventTarget, const In spectorHighlightConfig& highlightConfig, bool omitTooltip) 265 void InspectorOverlayImpl::highlightNode(Node* node, Node* eventTarget, const In spectorHighlightConfig& highlightConfig, bool omitTooltip)
252 { 266 {
253 m_nodeHighlightConfig = highlightConfig; 267 m_nodeHighlightConfig = highlightConfig;
254 m_highlightNode = node; 268 m_highlightNode = node;
255 if (m_layoutEditor && highlightConfig.showLayoutEditor) 269 if (m_layoutEditor && highlightConfig.showLayoutEditor)
256 m_layoutEditor->setNode(node); 270 m_layoutEditor->setNode(node);
257 m_eventTargetNode = eventTarget; 271 m_eventTargetNode = eventTarget;
258 m_omitTooltip = omitTooltip; 272 m_omitTooltip = omitTooltip;
259 update(); 273 update();
260 } 274 }
261 275
276 void InspectorOverlayImpl::setSearchingForNode(InspectorDOMAgent::SearchMode sea rchMode, PassOwnPtr<InspectorHighlightConfig> highlightConfig)
277 {
278 m_searchingForNode = searchMode;
279 update();
dgozman 2015/09/01 00:53:29 We can probably rename this in a follow-up.
sergeyv 2015/09/01 03:41:20 Yep
280
281 if (searchMode != InspectorDOMAgent::NotSearching) {
282 m_inspectModeHighlightConfig = highlightConfig;
283 } else {
284 m_hoveredNodeForInspectMode.clear();
285 hideHighlight();
286 }
287 }
288
262 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe ctorHighlightConfig& highlightConfig) 289 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe ctorHighlightConfig& highlightConfig)
263 { 290 {
264 m_quadHighlightConfig = highlightConfig; 291 m_quadHighlightConfig = highlightConfig;
265 m_highlightQuad = quad; 292 m_highlightQuad = quad;
266 m_omitTooltip = false; 293 m_omitTooltip = false;
267 update(); 294 update();
268 } 295 }
269 296
270 bool InspectorOverlayImpl::isEmpty() 297 bool InspectorOverlayImpl::isEmpty()
271 { 298 {
272 if (m_suspendCount) 299 if (m_suspendCount)
273 return true; 300 return true;
274 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || (m_resizeTimerActive && m_drawViewSize); 301 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || (m_resizeTimerActive && m_drawViewSize);
275 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ; 302 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ;
276 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled)); 303 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && m _searchingForNode == InspectorDOMAgent::NotSearching));
277 } 304 }
278 305
279 void InspectorOverlayImpl::update() 306 void InspectorOverlayImpl::update()
280 { 307 {
281 if (isEmpty()) { 308 if (isEmpty()) {
282 if (m_pageOverlay) 309 if (m_pageOverlay)
283 m_pageOverlay.clear(); 310 m_pageOverlay.clear();
284 return; 311 return;
285 } 312 }
286 m_needsUpdate = true; 313 m_needsUpdate = true;
287 m_webViewImpl->page()->chromeClient().scheduleAnimation(); 314 m_webViewImpl->page()->chromeClient().scheduleAnimation();
288 } 315 }
289 316
290 void InspectorOverlayImpl::rebuildOverlayPage() 317 void InspectorOverlayImpl::rebuildOverlayPage()
291 { 318 {
292 FrameView* view = m_webViewImpl->mainFrameImpl()->frameView(); 319 FrameView* view = m_webViewImpl->mainFrameImpl()->frameView();
293 if (!view) 320 if (!view)
294 return; 321 return;
295 322
296 IntRect visibleRectInDocument = view->scrollableArea()->visibleContentRect() ; 323 IntRect visibleRectInDocument = view->scrollableArea()->visibleContentRect() ;
297 IntSize viewportSize = m_webViewImpl->page()->frameHost().visualViewport().s ize(); 324 IntSize viewportSize = m_webViewImpl->page()->frameHost().visualViewport().s ize();
298 toLocalFrame(overlayPage()->mainFrame())->view()->resize(viewportSize); 325 toLocalFrame(overlayPage()->mainFrame())->view()->resize(viewportSize);
299 reset(viewportSize, visibleRectInDocument.location()); 326 reset(viewportSize, visibleRectInDocument.location());
300 327
301 drawNodeHighlight(); 328 drawNodeHighlight();
302 drawQuadHighlight(); 329 drawQuadHighlight();
303 if (!m_inspectModeEnabled) 330 if (m_searchingForNode == InspectorDOMAgent::NotSearching)
304 drawPausedInDebuggerMessage(); 331 drawPausedInDebuggerMessage();
305 drawViewSize(); 332 drawViewSize();
306 } 333 }
307 334
308 static PassRefPtr<JSONObject> buildObjectForSize(const IntSize& size) 335 static PassRefPtr<JSONObject> buildObjectForSize(const IntSize& size)
309 { 336 {
310 RefPtr<JSONObject> result = JSONObject::create(); 337 RefPtr<JSONObject> result = JSONObject::create();
311 result->setNumber("width", size.width()); 338 result->setNumber("width", size.width());
312 result->setNumber("height", size.height()); 339 result->setNumber("height", size.height());
313 return result.release(); 340 return result.release();
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 487
461 void InspectorOverlayImpl::clear() 488 void InspectorOverlayImpl::clear()
462 { 489 {
463 if (m_overlayPage) { 490 if (m_overlayPage) {
464 m_overlayPage->willBeDestroyed(); 491 m_overlayPage->willBeDestroyed();
465 m_overlayPage.clear(); 492 m_overlayPage.clear();
466 m_overlayChromeClient.clear(); 493 m_overlayChromeClient.clear();
467 } 494 }
468 m_resizeTimerActive = false; 495 m_resizeTimerActive = false;
469 m_pausedInDebuggerMessage = String(); 496 m_pausedInDebuggerMessage = String();
470 m_inspectModeEnabled = false; 497 m_searchingForNode = InspectorDOMAgent::NotSearching;
471 m_timer.stop(); 498 m_timer.stop();
472 hideHighlight(); 499 hideHighlight();
473 } 500 }
474 501
475 void InspectorOverlayImpl::overlayResumed() 502 void InspectorOverlayImpl::overlayResumed()
476 { 503 {
477 if (m_debuggerAgent) { 504 if (m_debuggerAgent) {
478 ErrorString error; 505 ErrorString error;
479 m_debuggerAgent->resume(&error); 506 m_debuggerAgent->resume(&error);
480 } 507 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 } 549 }
523 update(); 550 update();
524 } 551 }
525 552
526 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid) 553 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid)
527 { 554 {
528 m_drawViewSize = show; 555 m_drawViewSize = show;
529 m_drawViewSizeWithGrid = showGrid; 556 m_drawViewSizeWithGrid = showGrid;
530 } 557 }
531 558
559 Node* hoveredNodeForPoint(LocalFrame* frame, const IntPoint& pointInRootFrame, b ool ignorePointerEventsNone)
dgozman 2015/09/01 00:53:29 These should go to anonymous namespace.
sergeyv 2015/09/01 03:41:20 Done.
560 {
561 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Move | HitTestR equest::ReadOnly | HitTestRequest::AllowChildFrameContent;
562 if (ignorePointerEventsNone)
563 hitType |= HitTestRequest::IgnorePointerEventsNone;
564 HitTestRequest request(hitType);
565 HitTestResult result(request, frame->view()->rootFrameToContents(pointInRoot Frame));
566 frame->contentLayoutObject()->hitTest(result);
567 Node* node = result.innerPossiblyPseudoNode();
568 while (node && node->nodeType() == Node::TEXT_NODE)
569 node = node->parentNode();
570 return node;
571 }
572
573 Node* hoveredNodeForEvent(LocalFrame* frame, const PlatformGestureEvent& event, bool ignorePointerEventsNone)
574 {
575 return hoveredNodeForPoint(frame, event.position(), ignorePointerEventsNone) ;
576 }
577
578 Node* hoveredNodeForEvent(LocalFrame* frame, const PlatformMouseEvent& event, bo ol ignorePointerEventsNone)
579 {
580 return hoveredNodeForPoint(frame, event.position(), ignorePointerEventsNone) ;
581 }
582
583 Node* hoveredNodeForEvent(LocalFrame* frame, const PlatformTouchEvent& event, bo ol ignorePointerEventsNone)
584 {
585 const Vector<PlatformTouchPoint>& points = event.touchPoints();
586 if (!points.size())
587 return nullptr;
588 return hoveredNodeForPoint(frame, roundedIntPoint(points[0].pos()), ignorePo interEventsNone);
589 }
590
591 bool InspectorOverlayImpl::handleMouseMove(LocalFrame* frame, const PlatformMous eEvent& event)
592 {
593 if (m_searchingForNode == InspectorDOMAgent::NotSearching)
594 return false;
595
596 if (!frame->view() || !frame->contentLayoutObject())
597 return true;
dgozman 2015/09/01 00:53:29 false
sergeyv 2015/09/01 03:41:20 Done.
598 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey());
599
600 // Do not highlight within user agent shadow root unless requested.
601 if (m_searchingForNode != InspectorDOMAgent::SearchingForUAShadow) {
602 ShadowRoot* shadowRoot = InspectorDOMAgent::userAgentShadowRoot(node);
603 if (shadowRoot)
604 node = shadowRoot->host();
605 }
606
607 // Shadow roots don't have boxes - use host element instead.
608 if (node && node->isShadowRoot())
609 node = node->parentOrShadowHostNode();
610
611 if (!node)
612 return true;
613
614 Node* eventTarget = event.shiftKey() ? hoveredNodeForEvent(frame, event, fal se) : nullptr;
615 if (eventTarget == node)
616 eventTarget = 0;
dgozman 2015/09/01 00:53:29 nullptr
sergeyv 2015/09/01 03:41:20 Done.
617
618 if (node && m_inspectModeHighlightConfig) {
619 m_hoveredNodeForInspectMode = node;
620 highlightNode(node, eventTarget, *m_inspectModeHighlightConfig, event.ct rlKey() || event.metaKey());
621 }
622 return true;
623 }
624
625 bool InspectorOverlayImpl::handleMousePress()
626 {
627 if (m_searchingForNode == InspectorDOMAgent::NotSearching)
628 return false;
629
630 if (m_hoveredNodeForInspectMode) {
631 if (m_domAgent)
632 m_domAgent->inspect(m_hoveredNodeForInspectMode.get());
633 m_hoveredNodeForInspectMode.clear();
634 return true;
635 }
636 return false;
637 }
638
639 bool InspectorOverlayImpl::handleGestureEvent(LocalFrame* frame, const PlatformG estureEvent& event)
640 {
641 if (m_searchingForNode == InspectorDOMAgent::NotSearching || event.type() != PlatformEvent::GestureTap)
642 return false;
643 Node* node = hoveredNodeForEvent(frame, event, false);
644 if (node && m_inspectModeHighlightConfig) {
645 highlightNode(node, 0 /* eventTarget */, *m_inspectModeHighlightConfig, false);
dgozman 2015/09/01 00:53:29 nullptr
sergeyv 2015/09/01 03:41:20 Done.
646 if (m_domAgent)
647 m_domAgent->inspect(node);
648 return true;
649 }
650 return false;
651 }
652
653 bool InspectorOverlayImpl::handleTouchEvent(LocalFrame* frame, const PlatformTou chEvent& event)
654 {
655 if (m_searchingForNode == InspectorDOMAgent::NotSearching)
656 return false;
657 Node* node = hoveredNodeForEvent(frame, event, false);
658 if (node && m_inspectModeHighlightConfig) {
659 highlightNode(node, 0 /* eventTarget */, *m_inspectModeHighlightConfig, false);
dgozman 2015/09/01 00:53:29 0 -> nullptr
sergeyv 2015/09/01 03:41:20 Done.
660 if (m_domAgent)
661 m_domAgent->inspect(node);
662 return true;
663 }
664 return false;
665 }
666
532 } // namespace blink 667 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698