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

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

Issue 1315283002: [DevTools] Reverse dependencies between InspectorOverlay and agents. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: more compile 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 | Annotate | Revision Log
« 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 19 matching lines...) Expand all
30 #include "web/InspectorOverlayImpl.h" 30 #include "web/InspectorOverlayImpl.h"
31 31
32 #include "bindings/core/v8/ScriptController.h" 32 #include "bindings/core/v8/ScriptController.h"
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/InspectorOverlayHost.h" 41 #include "core/inspector/InspectorOverlayHost.h"
41 #include "core/inspector/LayoutEditor.h" 42 #include "core/inspector/LayoutEditor.h"
42 #include "core/loader/EmptyClients.h" 43 #include "core/loader/EmptyClients.h"
43 #include "core/loader/FrameLoadRequest.h" 44 #include "core/loader/FrameLoadRequest.h"
44 #include "core/page/ChromeClient.h" 45 #include "core/page/ChromeClient.h"
45 #include "core/page/Page.h" 46 #include "core/page/Page.h"
46 #include "platform/JSONValues.h" 47 #include "platform/JSONValues.h"
47 #include "platform/ScriptForbiddenScope.h" 48 #include "platform/ScriptForbiddenScope.h"
48 #include "platform/graphics/GraphicsContext.h" 49 #include "platform/graphics/GraphicsContext.h"
49 #include "public/platform/Platform.h" 50 #include "public/platform/Platform.h"
50 #include "public/platform/WebData.h" 51 #include "public/platform/WebData.h"
51 #include "web/PageOverlay.h" 52 #include "web/PageOverlay.h"
52 #include "web/WebGraphicsContextImpl.h" 53 #include "web/WebGraphicsContextImpl.h"
53 #include "web/WebInputEventConversion.h" 54 #include "web/WebInputEventConversion.h"
54 #include "web/WebLocalFrameImpl.h" 55 #include "web/WebLocalFrameImpl.h"
55 #include "web/WebViewImpl.h" 56 #include "web/WebViewImpl.h"
56 #include <v8.h> 57 #include <v8.h>
57 58
58 namespace blink { 59 namespace blink {
59 60
60 namespace {
61
62 class InspectorOverlayStub : public NoBaseWillBeGarbageCollectedFinalized<Inspec torOverlayStub>, public InspectorOverlay {
63 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(InspectorOverlayStub);
64 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(InspectorOverlayStub);
65 public:
66 InspectorOverlayStub() { }
67 DECLARE_TRACE();
68
69 // InspectorOverlay implementation.
70 void update() override { }
71 void setPausedInDebuggerMessage(const String*) override { }
72 void setInspectModeEnabled(bool) override { }
73 void hideHighlight() override { }
74 void highlightNode(Node*, Node* eventTarget, const InspectorHighlightConfig& , bool omitTooltip) override { }
75 void highlightQuad(PassOwnPtr<FloatQuad>, const InspectorHighlightConfig&) o verride { }
76 void showAndHideViewSize(bool showGrid) override { }
77 void setListener(InspectorOverlay::Listener* listener) override { }
78 void suspendUpdates() override { }
79 void resumeUpdates() override { }
80 void clear() override { }
81 void setLayoutEditor(PassOwnPtrWillBeRawPtr<LayoutEditor>) override { }
82 };
83
84 DEFINE_TRACE(InspectorOverlayStub)
85 {
86 InspectorOverlay::trace(visitor);
87 }
88
89 } // anonymous namespace
90
91 class InspectorOverlayImpl::InspectorPageOverlayDelegate final : public PageOver lay::Delegate { 61 class InspectorOverlayImpl::InspectorPageOverlayDelegate final : public PageOver lay::Delegate {
92 public: 62 public:
93 explicit InspectorPageOverlayDelegate(InspectorOverlayImpl& overlay) 63 explicit InspectorPageOverlayDelegate(InspectorOverlayImpl& overlay)
94 : m_overlay(&overlay) 64 : m_overlay(&overlay)
95 { } 65 { }
96 66
97 DEFINE_INLINE_VIRTUAL_TRACE() 67 DEFINE_INLINE_VIRTUAL_TRACE()
98 { 68 {
99 visitor->trace(m_overlay); 69 visitor->trace(m_overlay);
100 PageOverlay::Delegate::trace(visitor); 70 PageOverlay::Delegate::trace(visitor);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 InspectorOverlayChromeClient(ChromeClient& client, InspectorOverlayImpl& ove rlay) 127 InspectorOverlayChromeClient(ChromeClient& client, InspectorOverlayImpl& ove rlay)
158 : m_client(&client) 128 : m_client(&client)
159 , m_overlay(&overlay) 129 , m_overlay(&overlay)
160 { } 130 { }
161 131
162 RawPtrWillBeMember<ChromeClient> m_client; 132 RawPtrWillBeMember<ChromeClient> m_client;
163 RawPtrWillBeMember<InspectorOverlayImpl> m_overlay; 133 RawPtrWillBeMember<InspectorOverlayImpl> m_overlay;
164 }; 134 };
165 135
166 136
167 // static
168 PassOwnPtrWillBeRawPtr<InspectorOverlay> InspectorOverlayImpl::createEmpty()
169 {
170 return adoptPtrWillBeNoop(new InspectorOverlayStub());
171 }
172
173 InspectorOverlayImpl::InspectorOverlayImpl(WebViewImpl* webViewImpl) 137 InspectorOverlayImpl::InspectorOverlayImpl(WebViewImpl* webViewImpl)
174 : m_webViewImpl(webViewImpl) 138 : m_webViewImpl(webViewImpl)
175 , m_inspectModeEnabled(false) 139 , m_inspectModeEnabled(false)
176 , m_overlayHost(InspectorOverlayHost::create()) 140 , m_overlayHost(InspectorOverlayHost::create())
177 , m_drawViewSize(false) 141 , m_drawViewSize(false)
178 , m_drawViewSizeWithGrid(false) 142 , m_drawViewSizeWithGrid(false)
143 , m_resizeTimerActive(false)
179 , m_omitTooltip(false) 144 , m_omitTooltip(false)
180 , m_timer(this, &InspectorOverlayImpl::onTimer) 145 , m_timer(this, &InspectorOverlayImpl::onTimer)
181 , m_suspendCount(0) 146 , m_suspendCount(0)
182 , m_inLayout(false) 147 , m_inLayout(false)
183 , m_needsUpdate(false) 148 , m_needsUpdate(false)
184 { 149 {
185 m_overlayHost->setDebuggerListener(this); 150 m_overlayHost->setDebuggerListener(this);
186 } 151 }
187 152
188 InspectorOverlayImpl::~InspectorOverlayImpl() 153 InspectorOverlayImpl::~InspectorOverlayImpl()
189 { 154 {
190 ASSERT(!m_overlayPage); 155 ASSERT(!m_overlayPage);
191 } 156 }
192 157
193 DEFINE_TRACE(InspectorOverlayImpl) 158 DEFINE_TRACE(InspectorOverlayImpl)
194 { 159 {
195 visitor->trace(m_highlightNode); 160 visitor->trace(m_highlightNode);
196 visitor->trace(m_eventTargetNode); 161 visitor->trace(m_eventTargetNode);
197 visitor->trace(m_overlayPage); 162 visitor->trace(m_overlayPage);
198 visitor->trace(m_overlayChromeClient); 163 visitor->trace(m_overlayChromeClient);
199 visitor->trace(m_overlayHost); 164 visitor->trace(m_overlayHost);
200 visitor->trace(m_listener);
201 visitor->trace(m_layoutEditor); 165 visitor->trace(m_layoutEditor);
202 InspectorOverlay::trace(visitor); 166 }
167
168 void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAg ent* debuggerAgent)
169 {
170 m_layoutEditor = LayoutEditor::create(cssAgent);
171 // TODO(dgozman): overlay should be a listener, not layout editor.
172 m_overlayHost->setLayoutEditorListener(m_layoutEditor.get());
173 m_debuggerAgent = debuggerAgent;
203 } 174 }
204 175
205 void InspectorOverlayImpl::invalidate() 176 void InspectorOverlayImpl::invalidate()
206 { 177 {
207 if (!m_pageOverlay) 178 if (!m_pageOverlay)
208 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver layDelegate(*this)); 179 m_pageOverlay = PageOverlay::create(m_webViewImpl, new InspectorPageOver layDelegate(*this));
209 180
210 m_pageOverlay->update(); 181 m_pageOverlay->update();
211 } 182 }
212 183
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 } 261 }
291 262
292 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe ctorHighlightConfig& highlightConfig) 263 void InspectorOverlayImpl::highlightQuad(PassOwnPtr<FloatQuad> quad, const Inspe ctorHighlightConfig& highlightConfig)
293 { 264 {
294 m_quadHighlightConfig = highlightConfig; 265 m_quadHighlightConfig = highlightConfig;
295 m_highlightQuad = quad; 266 m_highlightQuad = quad;
296 m_omitTooltip = false; 267 m_omitTooltip = false;
297 update(); 268 update();
298 } 269 }
299 270
300 void InspectorOverlayImpl::showAndHideViewSize(bool showGrid)
301 {
302 m_drawViewSize = true;
303 m_drawViewSizeWithGrid = showGrid;
304 update();
305 m_timer.startOneShot(1, FROM_HERE);
306 }
307
308 bool InspectorOverlayImpl::isEmpty() 271 bool InspectorOverlayImpl::isEmpty()
309 { 272 {
310 if (m_suspendCount) 273 if (m_suspendCount)
311 return true; 274 return true;
312 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || m_drawViewSize; 275 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || (m_resizeTimerActive && m_drawViewSize);
313 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ; 276 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ;
314 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled)); 277 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled));
315 } 278 }
316 279
317 void InspectorOverlayImpl::update() 280 void InspectorOverlayImpl::update()
318 { 281 {
319 if (isEmpty()) { 282 if (isEmpty()) {
320 if (m_pageOverlay) 283 if (m_pageOverlay)
321 m_pageOverlay.clear(); 284 m_pageOverlay.clear();
322 return; 285 return;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 } 344 }
382 345
383 void InspectorOverlayImpl::drawPausedInDebuggerMessage() 346 void InspectorOverlayImpl::drawPausedInDebuggerMessage()
384 { 347 {
385 if (!m_pausedInDebuggerMessage.isNull()) 348 if (!m_pausedInDebuggerMessage.isNull())
386 evaluateInOverlay("drawPausedInDebuggerMessage", m_pausedInDebuggerMessa ge); 349 evaluateInOverlay("drawPausedInDebuggerMessage", m_pausedInDebuggerMessa ge);
387 } 350 }
388 351
389 void InspectorOverlayImpl::drawViewSize() 352 void InspectorOverlayImpl::drawViewSize()
390 { 353 {
391 if (m_drawViewSize) 354 if (m_resizeTimerActive && m_drawViewSize)
392 evaluateInOverlay("drawViewSize", m_drawViewSizeWithGrid ? "true" : "fal se"); 355 evaluateInOverlay("drawViewSize", m_drawViewSizeWithGrid ? "true" : "fal se");
393 } 356 }
394 357
395 Page* InspectorOverlayImpl::overlayPage() 358 Page* InspectorOverlayImpl::overlayPage()
396 { 359 {
397 if (m_overlayPage) 360 if (m_overlayPage)
398 return m_overlayPage.get(); 361 return m_overlayPage.get();
399 362
400 ScriptForbiddenScope::AllowUserAgentScript allowScript; 363 ScriptForbiddenScope::AllowUserAgentScript allowScript;
401 364
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 { 448 {
486 ScriptForbiddenScope::AllowUserAgentScript allowScript; 449 ScriptForbiddenScope::AllowUserAgentScript allowScript;
487 RefPtr<JSONArray> command = JSONArray::create(); 450 RefPtr<JSONArray> command = JSONArray::create();
488 command->pushString(method); 451 command->pushString(method);
489 command->pushValue(argument); 452 command->pushValue(argument);
490 toLocalFrame(overlayPage()->mainFrame())->script().executeScriptInMainWorld( "dispatch(" + command->toJSONString() + ")", ScriptController::ExecuteScriptWhen ScriptsDisabled); 453 toLocalFrame(overlayPage()->mainFrame())->script().executeScriptInMainWorld( "dispatch(" + command->toJSONString() + ")", ScriptController::ExecuteScriptWhen ScriptsDisabled);
491 } 454 }
492 455
493 void InspectorOverlayImpl::onTimer(Timer<InspectorOverlayImpl>*) 456 void InspectorOverlayImpl::onTimer(Timer<InspectorOverlayImpl>*)
494 { 457 {
495 m_drawViewSize = false; 458 m_resizeTimerActive = false;
496 update(); 459 update();
497 } 460 }
498 461
499 void InspectorOverlayImpl::clear() 462 void InspectorOverlayImpl::clear()
500 { 463 {
501 if (m_overlayPage) { 464 if (m_overlayPage) {
502 m_overlayPage->willBeDestroyed(); 465 m_overlayPage->willBeDestroyed();
503 m_overlayPage.clear(); 466 m_overlayPage.clear();
504 m_overlayChromeClient.clear(); 467 m_overlayChromeClient.clear();
505 } 468 }
506 m_drawViewSize = false; 469 m_resizeTimerActive = false;
507 m_pausedInDebuggerMessage = String(); 470 m_pausedInDebuggerMessage = String();
508 m_inspectModeEnabled = false; 471 m_inspectModeEnabled = false;
509 m_timer.stop(); 472 m_timer.stop();
510 hideHighlight(); 473 hideHighlight();
511 } 474 }
512 475
513 void InspectorOverlayImpl::overlayResumed() 476 void InspectorOverlayImpl::overlayResumed()
514 { 477 {
515 if (m_listener) 478 if (m_debuggerAgent) {
516 m_listener->overlayResumed(); 479 ErrorString error;
480 m_debuggerAgent->resume(&error);
481 }
517 } 482 }
518 483
519 void InspectorOverlayImpl::overlaySteppedOver() 484 void InspectorOverlayImpl::overlaySteppedOver()
520 { 485 {
521 if (m_listener) 486 if (m_debuggerAgent) {
522 m_listener->overlaySteppedOver(); 487 ErrorString error;
488 m_debuggerAgent->stepOver(&error);
489 }
523 } 490 }
524 491
525 void InspectorOverlayImpl::suspendUpdates() 492 void InspectorOverlayImpl::profilingStarted()
526 { 493 {
527 if (!m_suspendCount++) 494 if (!m_suspendCount++)
528 clear(); 495 clear();
529 } 496 }
530 497
531 void InspectorOverlayImpl::resumeUpdates() 498 void InspectorOverlayImpl::profilingStopped()
532 { 499 {
533 --m_suspendCount; 500 --m_suspendCount;
534 } 501 }
535 502
536 void InspectorOverlayImpl::setLayoutEditor(PassOwnPtrWillBeRawPtr<LayoutEditor> layoutEditor) 503 void InspectorOverlayImpl::pageLayoutInvalidated(bool resized)
537 { 504 {
538 m_layoutEditor = layoutEditor; 505 if (resized && m_drawViewSize) {
539 m_overlayHost->setLayoutEditorListener(m_layoutEditor.get()); 506 m_resizeTimerActive = true;
507 m_timer.startOneShot(1, FROM_HERE);
508 }
509 update();
510 }
511
512 void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid)
513 {
514 m_drawViewSize = show;
515 m_drawViewSizeWithGrid = showGrid;
540 } 516 }
541 517
542 } // namespace blink 518 } // 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