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

Side by Side Diff: third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 1511003003: Use refs for non-null GraphicsContext, Scrollbar, etc. in scrollbar related code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ScrollbarRemove
Patch Set: yet another mac fix Created 5 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple 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 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 removeWebScrollbarLayer(scrollableArea, VerticalScrollbar); 269 removeWebScrollbarLayer(scrollableArea, VerticalScrollbar);
270 } 270 }
271 271
272 void ScrollingCoordinator::removeWebScrollbarLayer(ScrollableArea* scrollableAre a, ScrollbarOrientation orientation) 272 void ScrollingCoordinator::removeWebScrollbarLayer(ScrollableArea* scrollableAre a, ScrollbarOrientation orientation)
273 { 273 {
274 ScrollbarMap& scrollbars = orientation == HorizontalScrollbar ? m_horizontal Scrollbars : m_verticalScrollbars; 274 ScrollbarMap& scrollbars = orientation == HorizontalScrollbar ? m_horizontal Scrollbars : m_verticalScrollbars;
275 if (OwnPtr<WebScrollbarLayer> scrollbarLayer = scrollbars.take(scrollableAre a)) 275 if (OwnPtr<WebScrollbarLayer> scrollbarLayer = scrollbars.take(scrollableAre a))
276 GraphicsLayer::unregisterContentsLayer(scrollbarLayer->layer()); 276 GraphicsLayer::unregisterContentsLayer(scrollbarLayer->layer());
277 } 277 }
278 278
279 static PassOwnPtr<WebScrollbarLayer> createScrollbarLayer(Scrollbar* scrollbar, float deviceScaleFactor) 279 static PassOwnPtr<WebScrollbarLayer> createScrollbarLayer(Scrollbar& scrollbar, float deviceScaleFactor)
280 { 280 {
281 ScrollbarTheme* theme = scrollbar->theme(); 281 ScrollbarTheme& theme = scrollbar.theme();
282 WebScrollbarThemePainter painter(theme, scrollbar, deviceScaleFactor); 282 WebScrollbarThemePainter painter(theme, scrollbar, deviceScaleFactor);
283 OwnPtr<WebScrollbarThemeGeometry> geometry(WebScrollbarThemeGeometryNative:: create(theme)); 283 OwnPtr<WebScrollbarThemeGeometry> geometry(WebScrollbarThemeGeometryNative:: create(theme));
284 284
285 OwnPtr<WebScrollbarLayer> scrollbarLayer = adoptPtr(Platform::current()->com positorSupport()->createScrollbarLayer(WebScrollbarImpl::create(scrollbar), pain ter, geometry.leakPtr())); 285 OwnPtr<WebScrollbarLayer> scrollbarLayer = adoptPtr(Platform::current()->com positorSupport()->createScrollbarLayer(WebScrollbarImpl::create(&scrollbar), pai nter, geometry.leakPtr()));
286 GraphicsLayer::registerContentsLayer(scrollbarLayer->layer()); 286 GraphicsLayer::registerContentsLayer(scrollbarLayer->layer());
287 return scrollbarLayer.release(); 287 return scrollbarLayer.release();
288 } 288 }
289 289
290 PassOwnPtr<WebScrollbarLayer> ScrollingCoordinator::createSolidColorScrollbarLay er(ScrollbarOrientation orientation, int thumbThickness, int trackStart, bool is LeftSideVerticalScrollbar) 290 PassOwnPtr<WebScrollbarLayer> ScrollingCoordinator::createSolidColorScrollbarLay er(ScrollbarOrientation orientation, int thumbThickness, int trackStart, bool is LeftSideVerticalScrollbar)
291 { 291 {
292 WebScrollbar::Orientation webOrientation = (orientation == HorizontalScrollb ar) ? WebScrollbar::Horizontal : WebScrollbar::Vertical; 292 WebScrollbar::Orientation webOrientation = (orientation == HorizontalScrollb ar) ? WebScrollbar::Horizontal : WebScrollbar::Vertical;
293 OwnPtr<WebScrollbarLayer> scrollbarLayer = adoptPtr(Platform::current()->com positorSupport()->createSolidColorScrollbarLayer(webOrientation, thumbThickness, trackStart, isLeftSideVerticalScrollbar)); 293 OwnPtr<WebScrollbarLayer> scrollbarLayer = adoptPtr(Platform::current()->com positorSupport()->createSolidColorScrollbarLayer(webOrientation, thumbThickness, trackStart, isLeftSideVerticalScrollbar));
294 GraphicsLayer::registerContentsLayer(scrollbarLayer->layer()); 294 GraphicsLayer::registerContentsLayer(scrollbarLayer->layer());
295 return scrollbarLayer.release(); 295 return scrollbarLayer.release();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 345
346 if (!platformSupportsCoordinatedScrollbar) { 346 if (!platformSupportsCoordinatedScrollbar) {
347 if (scrollbarGraphicsLayer) { 347 if (scrollbarGraphicsLayer) {
348 WebLayer* scrollbarLayer = toWebLayer(scrollbarGraphicsLayer); 348 WebLayer* scrollbarLayer = toWebLayer(scrollbarGraphicsLayer);
349 scrollbarLayer->setShouldScrollOnMainThread(true); 349 scrollbarLayer->setShouldScrollOnMainThread(true);
350 } 350 }
351 return; 351 return;
352 } 352 }
353 353
354 if (scrollbarGraphicsLayer) { 354 if (scrollbarGraphicsLayer) {
355 Scrollbar* scrollbar = orientation == HorizontalScrollbar ? scrollableAr ea->horizontalScrollbar() : scrollableArea->verticalScrollbar(); 355 Scrollbar& scrollbar = orientation == HorizontalScrollbar ? *scrollableA rea->horizontalScrollbar() : *scrollableArea->verticalScrollbar();
356 if (scrollbar->isCustomScrollbar()) { 356 if (scrollbar.isCustomScrollbar()) {
357 detachScrollbarLayer(scrollbarGraphicsLayer); 357 detachScrollbarLayer(scrollbarGraphicsLayer);
358 return; 358 return;
359 } 359 }
360 360
361 WebScrollbarLayer* scrollbarLayer = getWebScrollbarLayer(scrollableArea, orientation); 361 WebScrollbarLayer* scrollbarLayer = getWebScrollbarLayer(scrollableArea, orientation);
362 if (!scrollbarLayer) { 362 if (!scrollbarLayer) {
363 Settings* settings = m_page->mainFrame()->settings(); 363 Settings* settings = m_page->mainFrame()->settings();
364 364
365 OwnPtr<WebScrollbarLayer> webScrollbarLayer; 365 OwnPtr<WebScrollbarLayer> webScrollbarLayer;
366 if (settings->useSolidColorScrollbars()) { 366 if (settings->useSolidColorScrollbars()) {
367 ASSERT(RuntimeEnabledFeatures::overlayScrollbarsEnabled()); 367 ASSERT(RuntimeEnabledFeatures::overlayScrollbarsEnabled());
368 webScrollbarLayer = createSolidColorScrollbarLayer(orientation, scrollbar->theme()->thumbThickness(scrollbar), scrollbar->theme()->trackPosition (scrollbar), scrollableArea->shouldPlaceVerticalScrollbarOnLeft()); 368 webScrollbarLayer = createSolidColorScrollbarLayer(orientation, scrollbar.theme().thumbThickness(scrollbar), scrollbar.theme().trackPosition(scr ollbar), scrollableArea->shouldPlaceVerticalScrollbarOnLeft());
369 } else { 369 } else {
370 webScrollbarLayer = createScrollbarLayer(scrollbar, m_page->devi ceScaleFactor()); 370 webScrollbarLayer = createScrollbarLayer(scrollbar, m_page->devi ceScaleFactor());
371 } 371 }
372 scrollbarLayer = addWebScrollbarLayer(scrollableArea, orientation, w ebScrollbarLayer.release()); 372 scrollbarLayer = addWebScrollbarLayer(scrollableArea, orientation, w ebScrollbarLayer.release());
373 } 373 }
374 374
375 WebLayer* scrollLayer = toWebLayer(scrollableArea->layerForScrolling()); 375 WebLayer* scrollLayer = toWebLayer(scrollableArea->layerForScrolling());
376 setupScrollbarLayer(scrollbarGraphicsLayer, scrollbarLayer, scrollLayer) ; 376 setupScrollbarLayer(scrollbarGraphicsLayer, scrollbarLayer, scrollLayer) ;
377 377
378 // Root layer non-overlay scrollbars should be marked opaque to disable 378 // Root layer non-overlay scrollbars should be marked opaque to disable
379 // blending. 379 // blending.
380 bool isOpaqueScrollbar = !scrollbar->isOverlayScrollbar(); 380 bool isOpaqueScrollbar = !scrollbar.isOverlayScrollbar();
381 scrollbarGraphicsLayer->setContentsOpaque(isMainFrame && isOpaqueScrollb ar); 381 scrollbarGraphicsLayer->setContentsOpaque(isMainFrame && isOpaqueScrollb ar);
382 } else 382 } else
383 removeWebScrollbarLayer(scrollableArea, orientation); 383 removeWebScrollbarLayer(scrollableArea, orientation);
384 } 384 }
385 385
386 bool ScrollingCoordinator::scrollableAreaScrollLayerDidChange(ScrollableArea* sc rollableArea) 386 bool ScrollingCoordinator::scrollableAreaScrollLayerDidChange(ScrollableArea* sc rollableArea)
387 { 387 {
388 GraphicsLayer* scrollLayer = scrollableArea->layerForScrolling(); 388 GraphicsLayer* scrollLayer = scrollableArea->layerForScrolling();
389 389
390 if (scrollLayer) { 390 if (scrollLayer) {
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 { 975 {
976 ASSERT(isMainThread()); 976 ASSERT(isMainThread());
977 977
978 if (!m_page) 978 if (!m_page)
979 return; 979 return;
980 980
981 FrameView* frameView = m_page->deprecatedLocalMainFrame()->view(); 981 FrameView* frameView = m_page->deprecatedLocalMainFrame()->view();
982 if (!frameView) 982 if (!frameView)
983 return; 983 return;
984 984
985 frameView->scrollAnimator()->handleWheelEventPhase(phase); 985 frameView->scrollAnimator().handleWheelEventPhase(phase);
986 } 986 }
987 #endif 987 #endif
988 988
989 bool ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects(Frame View* frameView) const 989 bool ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects(Frame View* frameView) const
990 { 990 {
991 const FrameView::ViewportConstrainedObjectSet* viewportConstrainedObjects = frameView->viewportConstrainedObjects(); 991 const FrameView::ViewportConstrainedObjectSet* viewportConstrainedObjects = frameView->viewportConstrainedObjects();
992 if (!viewportConstrainedObjects) 992 if (!viewportConstrainedObjects)
993 return false; 993 return false;
994 994
995 for (const LayoutObject* layoutObject : *viewportConstrainedObjects) { 995 for (const LayoutObject* layoutObject : *viewportConstrainedObjects) {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 bool frameIsScrollable = frameView && frameView->isScrollable(); 1079 bool frameIsScrollable = frameView && frameView->isScrollable();
1080 if (frameIsScrollable != m_wasFrameScrollable) 1080 if (frameIsScrollable != m_wasFrameScrollable)
1081 return true; 1081 return true;
1082 1082
1083 if (WebLayer* scrollLayer = frameView ? toWebLayer(frameView->layerForScroll ing()) : nullptr) 1083 if (WebLayer* scrollLayer = frameView ? toWebLayer(frameView->layerForScroll ing()) : nullptr)
1084 return WebSize(frameView->contentsSize()) != scrollLayer->bounds(); 1084 return WebSize(frameView->contentsSize()) != scrollLayer->bounds();
1085 return false; 1085 return false;
1086 } 1086 }
1087 1087
1088 } // namespace blink 1088 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/page/PrintContextTest.cpp ('k') | third_party/WebKit/Source/core/paint/BlockPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698