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

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: Fix win compilation 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
« no previous file with comments | « Source/web/InspectorOverlayImpl.h ('k') | Source/web/WebDevToolsAgentImpl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
53 #include "web/WebGraphicsContextImpl.h" 54 #include "web/WebGraphicsContextImpl.h"
54 #include "web/WebInputEventConversion.h" 55 #include "web/WebInputEventConversion.h"
55 #include "web/WebLocalFrameImpl.h" 56 #include "web/WebLocalFrameImpl.h"
56 #include "web/WebViewImpl.h" 57 #include "web/WebViewImpl.h"
57 #include <v8.h> 58 #include <v8.h>
58 59
59 namespace blink { 60 namespace blink {
60 61
62 namespace {
63
64 Node* hoveredNodeForPoint(LocalFrame* frame, const IntPoint& pointInRootFrame, b ool ignorePointerEventsNone)
65 {
66 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Move | HitTestR equest::ReadOnly | HitTestRequest::AllowChildFrameContent;
67 if (ignorePointerEventsNone)
68 hitType |= HitTestRequest::IgnorePointerEventsNone;
69 HitTestRequest request(hitType);
70 HitTestResult result(request, frame->view()->rootFrameToContents(pointInRoot Frame));
71 frame->contentLayoutObject()->hitTest(result);
72 Node* node = result.innerPossiblyPseudoNode();
73 while (node && node->nodeType() == Node::TEXT_NODE)
74 node = node->parentNode();
75 return node;
76 }
77
78 Node* hoveredNodeForEvent(LocalFrame* frame, const PlatformGestureEvent& event, bool ignorePointerEventsNone)
79 {
80 return hoveredNodeForPoint(frame, event.position(), ignorePointerEventsNone) ;
81 }
82
83 Node* hoveredNodeForEvent(LocalFrame* frame, const PlatformMouseEvent& event, bo ol ignorePointerEventsNone)
84 {
85 return hoveredNodeForPoint(frame, event.position(), ignorePointerEventsNone) ;
86 }
87
88 Node* hoveredNodeForEvent(LocalFrame* frame, const PlatformTouchEvent& event, bo ol ignorePointerEventsNone)
89 {
90 const Vector<PlatformTouchPoint>& points = event.touchPoints();
91 if (!points.size())
92 return nullptr;
93 return hoveredNodeForPoint(frame, roundedIntPoint(points[0].pos()), ignorePo interEventsNone);
94 }
95 } // namespace
96
61 class InspectorOverlayImpl::InspectorPageOverlayDelegate final : public PageOver lay::Delegate { 97 class InspectorOverlayImpl::InspectorPageOverlayDelegate final : public PageOver lay::Delegate {
62 public: 98 public:
63 explicit InspectorPageOverlayDelegate(InspectorOverlayImpl& overlay) 99 explicit InspectorPageOverlayDelegate(InspectorOverlayImpl& overlay)
64 : m_overlay(&overlay) 100 : m_overlay(&overlay)
65 { } 101 { }
66 102
67 DEFINE_INLINE_VIRTUAL_TRACE() 103 DEFINE_INLINE_VIRTUAL_TRACE()
68 { 104 {
69 visitor->trace(m_overlay); 105 visitor->trace(m_overlay);
70 PageOverlay::Delegate::trace(visitor); 106 PageOverlay::Delegate::trace(visitor);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 , m_overlay(&overlay) 165 , m_overlay(&overlay)
130 { } 166 { }
131 167
132 RawPtrWillBeMember<ChromeClient> m_client; 168 RawPtrWillBeMember<ChromeClient> m_client;
133 RawPtrWillBeMember<InspectorOverlayImpl> m_overlay; 169 RawPtrWillBeMember<InspectorOverlayImpl> m_overlay;
134 }; 170 };
135 171
136 172
137 InspectorOverlayImpl::InspectorOverlayImpl(WebViewImpl* webViewImpl) 173 InspectorOverlayImpl::InspectorOverlayImpl(WebViewImpl* webViewImpl)
138 : m_webViewImpl(webViewImpl) 174 : m_webViewImpl(webViewImpl)
139 , m_inspectModeEnabled(false)
140 , m_overlayHost(InspectorOverlayHost::create()) 175 , m_overlayHost(InspectorOverlayHost::create())
141 , m_drawViewSize(false) 176 , m_drawViewSize(false)
142 , m_drawViewSizeWithGrid(false) 177 , m_drawViewSizeWithGrid(false)
143 , m_resizeTimerActive(false) 178 , m_resizeTimerActive(false)
144 , m_omitTooltip(false) 179 , m_omitTooltip(false)
145 , m_timer(this, &InspectorOverlayImpl::onTimer) 180 , m_timer(this, &InspectorOverlayImpl::onTimer)
146 , m_suspendCount(0) 181 , m_suspendCount(0)
147 , m_inLayout(false) 182 , m_inLayout(false)
148 , m_needsUpdate(false) 183 , m_needsUpdate(false)
184 , m_inspectMode(InspectorDOMAgent::NotSearching)
149 { 185 {
150 } 186 }
151 187
152 InspectorOverlayImpl::~InspectorOverlayImpl() 188 InspectorOverlayImpl::~InspectorOverlayImpl()
153 { 189 {
154 ASSERT(!m_overlayPage); 190 ASSERT(!m_overlayPage);
155 } 191 }
156 192
157 DEFINE_TRACE(InspectorOverlayImpl) 193 DEFINE_TRACE(InspectorOverlayImpl)
158 { 194 {
159 visitor->trace(m_highlightNode); 195 visitor->trace(m_highlightNode);
160 visitor->trace(m_eventTargetNode); 196 visitor->trace(m_eventTargetNode);
161 visitor->trace(m_overlayPage); 197 visitor->trace(m_overlayPage);
162 visitor->trace(m_overlayChromeClient); 198 visitor->trace(m_overlayChromeClient);
163 visitor->trace(m_overlayHost); 199 visitor->trace(m_overlayHost);
164 visitor->trace(m_debuggerAgent); 200 visitor->trace(m_debuggerAgent);
201 visitor->trace(m_domAgent);
165 visitor->trace(m_layoutEditor); 202 visitor->trace(m_layoutEditor);
203 visitor->trace(m_hoveredNodeForInspectMode);
166 } 204 }
167 205
168 void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAg ent* debuggerAgent) 206 void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAg ent* debuggerAgent, InspectorDOMAgent* domAgent)
169 { 207 {
170 m_layoutEditor = LayoutEditor::create(cssAgent); 208 m_layoutEditor = LayoutEditor::create(cssAgent);
171 m_debuggerAgent = debuggerAgent; 209 m_debuggerAgent = debuggerAgent;
210 m_domAgent = domAgent;
172 m_overlayHost->setListener(this); 211 m_overlayHost->setListener(this);
173 } 212 }
174 213
175 void InspectorOverlayImpl::invalidate() 214 void InspectorOverlayImpl::invalidate()
176 { 215 {
177 if (!m_pageOverlay) 216 if (!m_pageOverlay)
178 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver layDelegate(*this)); 217 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver layDelegate(*this));
179 218
180 m_pageOverlay->update(); 219 m_pageOverlay->update();
181 } 220 }
182 221
183 void InspectorOverlayImpl::layout() 222 void InspectorOverlayImpl::layout()
184 { 223 {
185 if (isEmpty()) 224 if (isEmpty())
186 return; 225 return;
187 226
188 TemporaryChange<bool> scoped(m_inLayout, true); 227 TemporaryChange<bool> scoped(m_inLayout, true);
189 if (m_needsUpdate) { 228 if (m_needsUpdate) {
190 m_needsUpdate = false; 229 m_needsUpdate = false;
191 rebuildOverlayPage(); 230 rebuildOverlayPage();
192 } 231 }
193 overlayMainFrame()->view()->updateAllLifecyclePhases(); 232 overlayMainFrame()->view()->updateAllLifecyclePhases();
194 } 233 }
195 234
196 bool InspectorOverlayImpl::handleInputEvent(const WebInputEvent& inputEvent) 235 bool InspectorOverlayImpl::handleInputEvent(const WebInputEvent& inputEvent)
197 { 236 {
198 bool handled = false; 237 bool handled = false;
238
199 if (isEmpty()) 239 if (isEmpty())
200 return handled; 240 return false;
201 241
202 if (WebInputEvent::isGestureEventType(inputEvent.type) && inputEvent.type == WebInputEvent::GestureTap) { 242 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). 243 // 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)); 244 PlatformGestureEvent gestureEvent = PlatformGestureEventBuilder(m_webVie wImpl->mainFrameImpl()->frameView(), static_cast<const WebGestureEvent&>(inputEv ent));
245 handled = handleGestureEvent(gestureEvent);
246 if (handled)
247 return true;
248
205 overlayMainFrame()->eventHandler().handleGestureEvent(gestureEvent); 249 overlayMainFrame()->eventHandler().handleGestureEvent(gestureEvent);
206 } 250 }
207 if (WebInputEvent::isMouseEventType(inputEvent.type) && inputEvent.type != W ebInputEvent::MouseEnter) { 251 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. 252 // 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)); 253 PlatformMouseEvent mouseEvent = PlatformMouseEventBuilder(m_webViewImpl- >mainFrameImpl()->frameView(), static_cast<const WebMouseEvent&>(inputEvent));
254
255 if (mouseEvent.type() == PlatformEvent::MouseMoved)
256 handled = handleMouseMove(mouseEvent);
257 else if (mouseEvent.type() == PlatformEvent::MousePressed)
258 handled = handleMousePress();
259
260 if (handled)
261 return true;
262
210 if (mouseEvent.type() == PlatformEvent::MouseMoved) 263 if (mouseEvent.type() == PlatformEvent::MouseMoved)
211 handled = overlayMainFrame()->eventHandler().handleMouseMoveEvent(mo useEvent); 264 handled = overlayMainFrame()->eventHandler().handleMouseMoveEvent(mo useEvent);
212 if (mouseEvent.type() == PlatformEvent::MousePressed) 265 if (mouseEvent.type() == PlatformEvent::MousePressed)
213 handled = overlayMainFrame()->eventHandler().handleMousePressEvent(m ouseEvent); 266 handled = overlayMainFrame()->eventHandler().handleMousePressEvent(m ouseEvent);
214 if (mouseEvent.type() == PlatformEvent::MouseReleased) 267 if (mouseEvent.type() == PlatformEvent::MouseReleased)
215 handled = overlayMainFrame()->eventHandler().handleMouseReleaseEvent (mouseEvent); 268 handled = overlayMainFrame()->eventHandler().handleMouseReleaseEvent (mouseEvent);
216 } 269 }
270
217 if (WebInputEvent::isTouchEventType(inputEvent.type)) { 271 if (WebInputEvent::isTouchEventType(inputEvent.type)) {
218 PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(m_webViewImpl- >mainFrameImpl()->frameView(), static_cast<const WebTouchEvent&>(inputEvent)); 272 PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(m_webViewImpl- >mainFrameImpl()->frameView(), static_cast<const WebTouchEvent&>(inputEvent));
273 handled = handleTouchEvent(touchEvent);
274 if (handled)
275 return true;
219 overlayMainFrame()->eventHandler().handleTouchEvent(touchEvent); 276 overlayMainFrame()->eventHandler().handleTouchEvent(touchEvent);
220 } 277 }
221 if (WebInputEvent::isKeyboardEventType(inputEvent.type)) { 278 if (WebInputEvent::isKeyboardEventType(inputEvent.type)) {
222 PlatformKeyboardEvent keyboardEvent = PlatformKeyboardEventBuilder(stati c_cast<const WebKeyboardEvent&>(inputEvent)); 279 PlatformKeyboardEvent keyboardEvent = PlatformKeyboardEventBuilder(stati c_cast<const WebKeyboardEvent&>(inputEvent));
223 overlayMainFrame()->eventHandler().keyEvent(keyboardEvent); 280 overlayMainFrame()->eventHandler().keyEvent(keyboardEvent);
224 } 281 }
225 282
226 return handled; 283 return handled;
227 } 284 }
228 285
229 void InspectorOverlayImpl::setPausedInDebuggerMessage(const String* message) 286 void InspectorOverlayImpl::setPausedInDebuggerMessage(const String* message)
230 { 287 {
231 m_pausedInDebuggerMessage = message ? *message : String(); 288 m_pausedInDebuggerMessage = message ? *message : String();
232 update(); 289 update();
233 } 290 }
234 291
235 void InspectorOverlayImpl::setInspectModeEnabled(bool enabled)
236 {
237 m_inspectModeEnabled = enabled;
238 update();
239 }
240
241 void InspectorOverlayImpl::hideHighlight() 292 void InspectorOverlayImpl::hideHighlight()
242 { 293 {
243 if (m_layoutEditor) 294 if (m_layoutEditor)
244 m_layoutEditor->setNode(nullptr); 295 m_layoutEditor->setNode(nullptr);
245 m_highlightNode.clear(); 296 m_highlightNode.clear();
246 m_eventTargetNode.clear(); 297 m_eventTargetNode.clear();
247 m_highlightQuad.clear(); 298 m_highlightQuad.clear();
248 update(); 299 update();
249 } 300 }
250 301
302 void InspectorOverlayImpl::highlightNode(Node* node, const InspectorHighlightCon fig& highlightConfig, bool omitTooltip)
303 {
304 highlightNode(node, nullptr, highlightConfig, omitTooltip);
305 }
306
251 void InspectorOverlayImpl::highlightNode(Node* node, Node* eventTarget, const In spectorHighlightConfig& highlightConfig, bool omitTooltip) 307 void InspectorOverlayImpl::highlightNode(Node* node, Node* eventTarget, const In spectorHighlightConfig& highlightConfig, bool omitTooltip)
252 { 308 {
253 m_nodeHighlightConfig = highlightConfig; 309 m_nodeHighlightConfig = highlightConfig;
254 m_highlightNode = node; 310 m_highlightNode = node;
255 if (m_layoutEditor && highlightConfig.showLayoutEditor) 311 if (m_layoutEditor && highlightConfig.showLayoutEditor)
256 m_layoutEditor->setNode(node); 312 m_layoutEditor->setNode(node);
257 m_eventTargetNode = eventTarget; 313 m_eventTargetNode = eventTarget;
258 m_omitTooltip = omitTooltip; 314 m_omitTooltip = omitTooltip;
259 update(); 315 update();
260 } 316 }
261 317
318 void InspectorOverlayImpl::setInspectMode(InspectorDOMAgent::SearchMode searchMo de, PassOwnPtr<InspectorHighlightConfig> highlightConfig)
319 {
320 m_inspectMode = searchMode;
321 update();
322
323 if (searchMode != InspectorDOMAgent::NotSearching) {
324 m_inspectModeHighlightConfig = highlightConfig;
325 } else {
326 m_hoveredNodeForInspectMode.clear();
327 hideHighlight();
328 }
329 }
330
262 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe ctorHighlightConfig& highlightConfig) 331 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe ctorHighlightConfig& highlightConfig)
263 { 332 {
264 m_quadHighlightConfig = highlightConfig; 333 m_quadHighlightConfig = highlightConfig;
265 m_highlightQuad = quad; 334 m_highlightQuad = quad;
266 m_omitTooltip = false; 335 m_omitTooltip = false;
267 update(); 336 update();
268 } 337 }
269 338
270 bool InspectorOverlayImpl::isEmpty() 339 bool InspectorOverlayImpl::isEmpty()
271 { 340 {
272 if (m_suspendCount) 341 if (m_suspendCount)
273 return true; 342 return true;
274 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || (m_resizeTimerActive && m_drawViewSize); 343 bool hasVisibleElements = m_highlightNode || m_eventTargetNode || m_highligh tQuad || (m_resizeTimerActive && m_drawViewSize) || !m_pausedInDebuggerMessage. isNull();
275 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ; 344 return !hasVisibleElements && m_inspectMode == InspectorDOMAgent::NotSearchi ng;
276 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled));
277 } 345 }
278 346
279 void InspectorOverlayImpl::update() 347 void InspectorOverlayImpl::update()
280 { 348 {
281 if (isEmpty()) { 349 if (isEmpty()) {
282 if (m_pageOverlay) 350 if (m_pageOverlay)
283 m_pageOverlay.clear(); 351 m_pageOverlay.clear();
284 return; 352 return;
285 } 353 }
286 m_needsUpdate = true; 354 m_needsUpdate = true;
287 m_webViewImpl->page()->chromeClient().scheduleAnimation(); 355 m_webViewImpl->page()->chromeClient().scheduleAnimation();
288 } 356 }
289 357
290 void InspectorOverlayImpl::rebuildOverlayPage() 358 void InspectorOverlayImpl::rebuildOverlayPage()
291 { 359 {
292 FrameView* view = m_webViewImpl->mainFrameImpl()->frameView(); 360 FrameView* view = m_webViewImpl->mainFrameImpl()->frameView();
293 if (!view) 361 if (!view)
294 return; 362 return;
295 363
296 IntRect visibleRectInDocument = view->scrollableArea()->visibleContentRect() ; 364 IntRect visibleRectInDocument = view->scrollableArea()->visibleContentRect() ;
297 IntSize viewportSize = m_webViewImpl->page()->frameHost().visualViewport().s ize(); 365 IntSize viewportSize = m_webViewImpl->page()->frameHost().visualViewport().s ize();
298 toLocalFrame(overlayPage()->mainFrame())->view()->resize(viewportSize); 366 toLocalFrame(overlayPage()->mainFrame())->view()->resize(viewportSize);
299 reset(viewportSize, visibleRectInDocument.location()); 367 reset(viewportSize, visibleRectInDocument.location());
300 368
301 drawNodeHighlight(); 369 drawNodeHighlight();
302 drawQuadHighlight(); 370 drawQuadHighlight();
303 if (!m_inspectModeEnabled) 371 drawPausedInDebuggerMessage();
304 drawPausedInDebuggerMessage();
305 drawViewSize(); 372 drawViewSize();
306 } 373 }
307 374
308 static PassRefPtr<JSONObject> buildObjectForSize(const IntSize& size) 375 static PassRefPtr<JSONObject> buildObjectForSize(const IntSize& size)
309 { 376 {
310 RefPtr<JSONObject> result = JSONObject::create(); 377 RefPtr<JSONObject> result = JSONObject::create();
311 result->setNumber("width", size.width()); 378 result->setNumber("width", size.width());
312 result->setNumber("height", size.height()); 379 result->setNumber("height", size.height());
313 return result.release(); 380 return result.release();
314 } 381 }
(...skipping 22 matching lines...) Expand all
337 if (!m_highlightQuad) 404 if (!m_highlightQuad)
338 return; 405 return;
339 406
340 InspectorHighlight highlight; 407 InspectorHighlight highlight;
341 highlight.appendQuad(*m_highlightQuad, m_quadHighlightConfig.content, m_quad HighlightConfig.contentOutline); 408 highlight.appendQuad(*m_highlightQuad, m_quadHighlightConfig.content, m_quad HighlightConfig.contentOutline);
342 evaluateInOverlay("drawHighlight", highlight.asJSONObject()); 409 evaluateInOverlay("drawHighlight", highlight.asJSONObject());
343 } 410 }
344 411
345 void InspectorOverlayImpl::drawPausedInDebuggerMessage() 412 void InspectorOverlayImpl::drawPausedInDebuggerMessage()
346 { 413 {
347 if (!m_pausedInDebuggerMessage.isNull()) 414 if (m_inspectMode == InspectorDOMAgent::NotSearching && !m_pausedInDebuggerM essage.isNull())
348 evaluateInOverlay("drawPausedInDebuggerMessage", m_pausedInDebuggerMessa ge); 415 evaluateInOverlay("drawPausedInDebuggerMessage", m_pausedInDebuggerMessa ge);
349 } 416 }
350 417
351 void InspectorOverlayImpl::drawViewSize() 418 void InspectorOverlayImpl::drawViewSize()
352 { 419 {
353 if (m_resizeTimerActive && m_drawViewSize) 420 if (m_resizeTimerActive && m_drawViewSize)
354 evaluateInOverlay("drawViewSize", m_drawViewSizeWithGrid ? "true" : "fal se"); 421 evaluateInOverlay("drawViewSize", m_drawViewSizeWithGrid ? "true" : "fal se");
355 } 422 }
356 423
357 Page* InspectorOverlayImpl::overlayPage() 424 Page* InspectorOverlayImpl::overlayPage()
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 527
461 void InspectorOverlayImpl::clear() 528 void InspectorOverlayImpl::clear()
462 { 529 {
463 if (m_overlayPage) { 530 if (m_overlayPage) {
464 m_overlayPage->willBeDestroyed(); 531 m_overlayPage->willBeDestroyed();
465 m_overlayPage.clear(); 532 m_overlayPage.clear();
466 m_overlayChromeClient.clear(); 533 m_overlayChromeClient.clear();
467 } 534 }
468 m_resizeTimerActive = false; 535 m_resizeTimerActive = false;
469 m_pausedInDebuggerMessage = String(); 536 m_pausedInDebuggerMessage = String();
470 m_inspectModeEnabled = false; 537 m_inspectMode = InspectorDOMAgent::NotSearching;
471 m_timer.stop(); 538 m_timer.stop();
472 hideHighlight(); 539 hideHighlight();
473 } 540 }
474 541
475 void InspectorOverlayImpl::overlayResumed() 542 void InspectorOverlayImpl::overlayResumed()
476 { 543 {
477 if (m_debuggerAgent) { 544 if (m_debuggerAgent) {
478 ErrorString error; 545 ErrorString error;
479 m_debuggerAgent->resume(&error); 546 m_debuggerAgent->resume(&error);
480 } 547 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 } 589 }
523 update(); 590 update();
524 } 591 }
525 592
526 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid) 593 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid)
527 { 594 {
528 m_drawViewSize = show; 595 m_drawViewSize = show;
529 m_drawViewSizeWithGrid = showGrid; 596 m_drawViewSizeWithGrid = showGrid;
530 } 597 }
531 598
599 bool InspectorOverlayImpl::handleMouseMove(const PlatformMouseEvent& event)
600 {
601 if (m_inspectMode == InspectorDOMAgent::NotSearching)
602 return false;
603
604 LocalFrame* frame = m_webViewImpl->mainFrameImpl()->frame();
605 if (!frame->view() || !frame->contentLayoutObject())
606 return false;
607 Node* node = hoveredNodeForEvent(frame, event, event.shiftKey());
608
609 // Do not highlight within user agent shadow root unless requested.
610 if (m_inspectMode != InspectorDOMAgent::SearchingForUAShadow) {
611 ShadowRoot* shadowRoot = InspectorDOMAgent::userAgentShadowRoot(node);
612 if (shadowRoot)
613 node = shadowRoot->host();
614 }
615
616 // Shadow roots don't have boxes - use host element instead.
617 if (node && node->isShadowRoot())
618 node = node->parentOrShadowHostNode();
619
620 if (!node)
621 return true;
622
623 Node* eventTarget = event.shiftKey() ? hoveredNodeForEvent(m_webViewImpl->ma inFrameImpl()->frame(), event, false) : nullptr;
624 if (eventTarget == node)
625 eventTarget = nullptr;
626
627 if (node && m_inspectModeHighlightConfig) {
628 m_hoveredNodeForInspectMode = node;
629 highlightNode(node, eventTarget, *m_inspectModeHighlightConfig, event.ct rlKey() || event.metaKey());
630 }
631 return true;
632 }
633
634 bool InspectorOverlayImpl::handleMousePress()
635 {
636 if (m_inspectMode == InspectorDOMAgent::NotSearching)
637 return false;
638
639 if (m_hoveredNodeForInspectMode) {
640 if (m_domAgent)
641 m_domAgent->inspect(m_hoveredNodeForInspectMode.get());
642 m_hoveredNodeForInspectMode.clear();
643 return true;
644 }
645 return false;
646 }
647
648 bool InspectorOverlayImpl::handleGestureEvent(const PlatformGestureEvent& event)
649 {
650 if (m_inspectMode == InspectorDOMAgent::NotSearching || event.type() != Plat formEvent::GestureTap)
651 return false;
652 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev ent, false);
653 if (node && m_inspectModeHighlightConfig) {
654 highlightNode(node, *m_inspectModeHighlightConfig, false);
655 if (m_domAgent)
656 m_domAgent->inspect(node);
657 return true;
658 }
659 return false;
660 }
661
662 bool InspectorOverlayImpl::handleTouchEvent(const PlatformTouchEvent& event)
663 {
664 if (m_inspectMode == InspectorDOMAgent::NotSearching)
665 return false;
666 Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), ev ent, false);
667 if (node && m_inspectModeHighlightConfig) {
668 highlightNode(node, *m_inspectModeHighlightConfig, false);
669 if (m_domAgent)
670 m_domAgent->inspect(node);
671 return true;
672 }
673 return false;
674 }
675
532 } // namespace blink 676 } // namespace blink
OLDNEW
« no previous file with comments | « Source/web/InspectorOverlayImpl.h ('k') | Source/web/WebDevToolsAgentImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698