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

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

Issue 777213002: Fix for InspectorOverlay violating document lifecycle expectations (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Oops removing files meant for a different CL. Created 6 years 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/core/inspector/InspectorOverlay.h ('k') | no next file » | 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 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 InspectorOverlay::InspectorOverlay(Page* page, InspectorClient* client) 338 InspectorOverlay::InspectorOverlay(Page* page, InspectorClient* client)
339 : m_page(page) 339 : m_page(page)
340 , m_client(client) 340 , m_client(client)
341 , m_inspectModeEnabled(false) 341 , m_inspectModeEnabled(false)
342 , m_overlayHost(InspectorOverlayHost::create()) 342 , m_overlayHost(InspectorOverlayHost::create())
343 , m_drawViewSize(false) 343 , m_drawViewSize(false)
344 , m_drawViewSizeWithGrid(false) 344 , m_drawViewSizeWithGrid(false)
345 , m_omitTooltip(false) 345 , m_omitTooltip(false)
346 , m_timer(this, &InspectorOverlay::onTimer) 346 , m_timer(this, &InspectorOverlay::onTimer)
347 , m_activeProfilerCount(0) 347 , m_activeProfilerCount(0)
348 , m_updating(false)
348 { 349 {
349 } 350 }
350 351
351 InspectorOverlay::~InspectorOverlay() 352 InspectorOverlay::~InspectorOverlay()
352 { 353 {
353 ASSERT(!m_overlayPage); 354 ASSERT(!m_overlayPage);
354 } 355 }
355 356
356 void InspectorOverlay::paint(GraphicsContext& context) 357 void InspectorOverlay::paint(GraphicsContext& context)
357 { 358 {
358 if (isEmpty()) 359 if (isEmpty())
359 return; 360 return;
360 GraphicsContextStateSaver stateSaver(context); 361 GraphicsContextStateSaver stateSaver(context);
361 FrameView* view = toLocalFrame(overlayPage()->mainFrame())->view(); 362 FrameView* view = toLocalFrame(overlayPage()->mainFrame())->view();
362 ASSERT(!view->needsLayout()); 363 ASSERT(!view->needsLayout());
363 view->paint(&context, IntRect(0, 0, view->width(), view->height())); 364 view->paint(&context, IntRect(0, 0, view->width(), view->height()));
364 } 365 }
365 366
366 void InspectorOverlay::invalidate() 367 void InspectorOverlay::invalidate()
367 { 368 {
369 // Don't invalidate during an update, because that will lead to Document::sc heduleRenderTreeUpdate
370 // being called within Document::updateRenderTree which violates document li fecycle expectations.
371 if (m_updating)
372 return;
373
368 m_client->highlight(); 374 m_client->highlight();
369 } 375 }
370 376
371 bool InspectorOverlay::handleGestureEvent(const PlatformGestureEvent& event) 377 bool InspectorOverlay::handleGestureEvent(const PlatformGestureEvent& event)
372 { 378 {
373 if (isEmpty()) 379 if (isEmpty())
374 return false; 380 return false;
375 381
376 return toLocalFrame(overlayPage()->mainFrame())->eventHandler().handleGestur eEvent(event); 382 return toLocalFrame(overlayPage()->mainFrame())->eventHandler().handleGestur eEvent(event);
377 } 383 }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 { 476 {
471 if (m_activeProfilerCount) 477 if (m_activeProfilerCount)
472 return true; 478 return true;
473 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || m_drawViewSize; 479 bool hasAlwaysVisibleElements = m_highlightNode || m_eventTargetNode || m_hi ghlightQuad || m_drawViewSize;
474 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ; 480 bool hasInvisibleInInspectModeElements = !m_pausedInDebuggerMessage.isNull() ;
475 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled)); 481 return !(hasAlwaysVisibleElements || (hasInvisibleInInspectModeElements && ! m_inspectModeEnabled));
476 } 482 }
477 483
478 void InspectorOverlay::update() 484 void InspectorOverlay::update()
479 { 485 {
486 TemporaryChange<bool> scoped(m_updating, true);
487
480 if (isEmpty()) { 488 if (isEmpty()) {
481 m_client->hideHighlight(); 489 m_client->hideHighlight();
482 return; 490 return;
483 } 491 }
484 492
485 FrameView* view = m_page->deprecatedLocalMainFrame()->view(); 493 FrameView* view = m_page->deprecatedLocalMainFrame()->view();
486 if (!view) 494 if (!view)
487 return; 495 return;
488 496
489 // Include scrollbars to avoid masking them by the gutter. 497 // Include scrollbars to avoid masking them by the gutter.
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 hideHighlight(); 878 hideHighlight();
871 } 879 }
872 880
873 void InspectorOverlay::startedRecordingProfile() 881 void InspectorOverlay::startedRecordingProfile()
874 { 882 {
875 if (!m_activeProfilerCount++) 883 if (!m_activeProfilerCount++)
876 freePage(); 884 freePage();
877 } 885 }
878 886
879 } // namespace blink 887 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorOverlay.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698