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

Side by Side Diff: Source/core/inspector/InspectorOverlay.cpp

Issue 309473002: [DevTools] Cleanup inspector overlay and make it work with virtual viewport. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 6 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 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 328
329 return overlayPage()->mainFrame()->eventHandler().keyEvent(event); 329 return overlayPage()->mainFrame()->eventHandler().keyEvent(event);
330 } 330 }
331 331
332 void InspectorOverlay::drawOutline(GraphicsContext* context, const LayoutRect& r ect, const Color& color) 332 void InspectorOverlay::drawOutline(GraphicsContext* context, const LayoutRect& r ect, const Color& color)
333 { 333 {
334 FloatRect outlineRect = rect; 334 FloatRect outlineRect = rect;
335 drawOutlinedQuad(context, outlineRect, Color(), color); 335 drawOutlinedQuad(context, outlineRect, Color(), color);
336 } 336 }
337 337
338 void InspectorOverlay::resize(const IntSize& size)
339 {
340 m_size = size;
341 update();
342 }
343
344 void InspectorOverlay::setPausedInDebuggerMessage(const String* message) 338 void InspectorOverlay::setPausedInDebuggerMessage(const String* message)
345 { 339 {
346 m_pausedInDebuggerMessage = message ? *message : String(); 340 m_pausedInDebuggerMessage = message ? *message : String();
347 update(); 341 update();
348 } 342 }
349 343
350 void InspectorOverlay::setInspectModeEnabled(bool enabled) 344 void InspectorOverlay::setInspectModeEnabled(bool enabled)
351 { 345 {
352 m_inspectModeEnabled = enabled; 346 m_inspectModeEnabled = enabled;
353 update(); 347 update();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 382
389 Node* InspectorOverlay::highlightedNode() const 383 Node* InspectorOverlay::highlightedNode() const
390 { 384 {
391 return m_highlightNode.get(); 385 return m_highlightNode.get();
392 } 386 }
393 387
394 bool InspectorOverlay::isEmpty() 388 bool InspectorOverlay::isEmpty()
395 { 389 {
396 if (m_activeProfilerCount) 390 if (m_activeProfilerCount)
397 return true; 391 return true;
398 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || !m_size.isEmpty() || m_drawViewSize; 392 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || m_drawViewSize;
399 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ; 393 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ;
400 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled)); 394 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled));
401 } 395 }
402 396
403 void InspectorOverlay::update() 397 void InspectorOverlay::update()
404 { 398 {
405 if (isEmpty()) { 399 if (isEmpty()) {
406 m_client->hideHighlight(); 400 m_client->hideHighlight();
407 return; 401 return;
408 } 402 }
409 403
410 FrameView* view = m_page->mainFrame()->view(); 404 FrameView* view = m_page->mainFrame()->view();
411 if (!view) 405 if (!view)
412 return; 406 return;
413 IntRect viewRect = view->visibleContentRect();
414 407
415 // Include scrollbars to avoid masking them by the gutter. 408 // Include scrollbars to avoid masking them by the gutter.
416 IntSize frameViewFullSize = view->visibleContentRect(IncludeScrollbars).size (); 409 IntSize size = view->unscaledVisibleContentSize(IncludeScrollbars);
417 IntSize size = m_size.isEmpty() ? frameViewFullSize : m_size;
418 size.scale(m_page->pageScaleFactor());
419 overlayPage()->mainFrame()->view()->resize(size); 410 overlayPage()->mainFrame()->view()->resize(size);
420 411
421 // Clear canvas and paint things. 412 // Clear canvas and paint things.
422 reset(size, m_size.isEmpty() ? IntSize() : frameViewFullSize, viewRect.x(), viewRect.y()); 413 IntRect viewRect = view->visibleContentRect();
414 reset(size, viewRect.x(), viewRect.y());
423 415
424 drawNodeHighlight(); 416 drawNodeHighlight();
425 drawQuadHighlight(); 417 drawQuadHighlight();
426 if (!m_inspectModeEnabled) 418 if (!m_inspectModeEnabled)
427 drawPausedInDebuggerMessage(); 419 drawPausedInDebuggerMessage();
428 drawViewSize(); 420 drawViewSize();
429 421
430 // Position DOM elements. 422 // Position DOM elements.
431 overlayPage()->mainFrame()->document()->setNeedsStyleRecalc(SubtreeStyleChan ge); 423 overlayPage()->mainFrame()->document()->setNeedsStyleRecalc(SubtreeStyleChan ge);
432 overlayPage()->mainFrame()->document()->updateLayout(); 424 overlayPage()->mainFrame()->document()->updateLayout();
433 425
434 // Kick paint. 426 // Kick paint.
435 m_client->highlight(); 427 m_client->highlight();
436 } 428 }
437 429
438 void InspectorOverlay::hide() 430 void InspectorOverlay::hide()
439 { 431 {
440 m_timer.stop(); 432 m_timer.stop();
441 m_highlightNode.clear(); 433 m_highlightNode.clear();
442 m_eventTargetNode.clear(); 434 m_eventTargetNode.clear();
443 m_highlightQuad.clear(); 435 m_highlightQuad.clear();
444 m_pausedInDebuggerMessage = String(); 436 m_pausedInDebuggerMessage = String();
445 m_size = IntSize();
446 m_drawViewSize = false; 437 m_drawViewSize = false;
447 m_drawViewSizeWithGrid = false; 438 m_drawViewSizeWithGrid = false;
448 update(); 439 update();
449 } 440 }
450 441
451 static PassRefPtr<JSONObject> buildObjectForPoint(const FloatPoint& point) 442 static PassRefPtr<JSONObject> buildObjectForPoint(const FloatPoint& point)
452 { 443 {
453 RefPtr<JSONObject> object = JSONObject::create(); 444 RefPtr<JSONObject> object = JSONObject::create();
454 object->setNumber("x", point.x()); 445 object->setNumber("x", point.x());
455 object->setNumber("y", point.y()); 446 object->setNumber("y", point.y());
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 evaluateInOverlay("setPlatform", "windows"); 725 evaluateInOverlay("setPlatform", "windows");
735 #elif OS(MACOSX) 726 #elif OS(MACOSX)
736 evaluateInOverlay("setPlatform", "mac"); 727 evaluateInOverlay("setPlatform", "mac");
737 #elif OS(POSIX) 728 #elif OS(POSIX)
738 evaluateInOverlay("setPlatform", "linux"); 729 evaluateInOverlay("setPlatform", "linux");
739 #endif 730 #endif
740 731
741 return m_overlayPage.get(); 732 return m_overlayPage.get();
742 } 733 }
743 734
744 void InspectorOverlay::reset(const IntSize& viewportSize, const IntSize& frameVi ewFullSize, int scrollX, int scrollY) 735 void InspectorOverlay::reset(const IntSize& viewportSize, int scrollX, int scrol lY)
745 { 736 {
746 RefPtr<JSONObject> resetData = JSONObject::create(); 737 RefPtr<JSONObject> resetData = JSONObject::create();
747 resetData->setNumber("pageScaleFactor", m_page->pageScaleFactor()); 738 resetData->setNumber("pageScaleFactor", m_page->settings().pinchVirtualViewp ortEnabled() ? 1 : m_page->pageScaleFactor());
dgozman 2014/05/29 13:58:13 I think there should be utility method instead of
bokan 2014/05/29 15:09:06 page->pageScaleFactor() returns the actual, correc
dgozman 2014/05/29 15:15:08 We use pageScaleFactor to scale from css values (l
bokan 2014/05/29 15:21:16 Ok, in that case, once we remove the old path this
748 resetData->setNumber("deviceScaleFactor", m_page->deviceScaleFactor()); 739 resetData->setNumber("deviceScaleFactor", m_page->deviceScaleFactor());
749 resetData->setObject("viewportSize", buildObjectForSize(viewportSize)); 740 resetData->setObject("viewportSize", buildObjectForSize(viewportSize));
750 resetData->setObject("frameViewFullSize", buildObjectForSize(frameViewFullSi ze));
751 resetData->setNumber("pageZoomFactor", m_page->mainFrame()->pageZoomFactor() ); 741 resetData->setNumber("pageZoomFactor", m_page->mainFrame()->pageZoomFactor() );
752 resetData->setNumber("scrollX", scrollX); 742 resetData->setNumber("scrollX", scrollX);
753 resetData->setNumber("scrollY", scrollY); 743 resetData->setNumber("scrollY", scrollY);
754 evaluateInOverlay("reset", resetData.release()); 744 evaluateInOverlay("reset", resetData.release());
755 } 745 }
756 746
757 void InspectorOverlay::evaluateInOverlay(const String& method, const String& arg ument) 747 void InspectorOverlay::evaluateInOverlay(const String& method, const String& arg ument)
758 { 748 {
759 RefPtr<JSONArray> command = JSONArray::create(); 749 RefPtr<JSONArray> command = JSONArray::create();
760 command->pushString(method); 750 command->pushString(method);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 hideHighlight(); 787 hideHighlight();
798 } 788 }
799 789
800 void InspectorOverlay::startedRecordingProfile() 790 void InspectorOverlay::startedRecordingProfile()
801 { 791 {
802 if (!m_activeProfilerCount++) 792 if (!m_activeProfilerCount++)
803 freePage(); 793 freePage();
804 } 794 }
805 795
806 } // namespace WebCore 796 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698