OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
60 using blink::WebScrollbarLayer; | 60 using blink::WebScrollbarLayer; |
61 using blink::FrameHost; | 61 using blink::FrameHost; |
62 using blink::GraphicsLayer; | 62 using blink::GraphicsLayer; |
63 using blink::GraphicsLayerFactory; | 63 using blink::GraphicsLayerFactory; |
64 | 64 |
65 namespace blink { | 65 namespace blink { |
66 | 66 |
67 PinchViewport::PinchViewport(FrameHost& owner) | 67 PinchViewport::PinchViewport(FrameHost& owner) |
68 : m_frameHost(owner) | 68 : m_frameHost(owner) |
69 , m_scale(1) | 69 , m_scale(1) |
70 , m_hasHorizontalScrollbar(false) | |
71 , m_hasVerticalScrollbar(false) | |
70 { | 72 { |
71 reset(); | 73 reset(); |
72 } | 74 } |
73 | 75 |
74 PinchViewport::~PinchViewport() { } | 76 PinchViewport::~PinchViewport() { } |
75 | 77 |
76 void PinchViewport::setSize(const IntSize& size) | 78 void PinchViewport::setSize(const IntSize& size) |
77 { | 79 { |
78 if (m_size == size) | 80 if (m_size == size) |
79 return; | 81 return; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
152 } | 154 } |
153 | 155 |
154 void PinchViewport::move(const FloatPoint& delta) | 156 void PinchViewport::move(const FloatPoint& delta) |
155 { | 157 { |
156 setLocation(m_offset + delta); | 158 setLocation(m_offset + delta); |
157 } | 159 } |
158 | 160 |
159 void PinchViewport::setScale(float scale) | 161 void PinchViewport::setScale(float scale) |
160 { | 162 { |
161 setScaleAndLocation(scale, m_offset); | 163 setScaleAndLocation(scale, m_offset); |
164 adjustScrollbarExistence(); | |
bokan
2014/10/09 15:22:14
Should we also call this in setSize?
| |
162 } | 165 } |
163 | 166 |
164 void PinchViewport::setScaleAndLocation(float scale, const FloatPoint& location) | 167 void PinchViewport::setScaleAndLocation(float scale, const FloatPoint& location) |
165 { | 168 { |
166 bool valuesChanged = false; | 169 bool valuesChanged = false; |
167 | 170 |
168 if (scale != m_scale) { | 171 if (scale != m_scale) { |
169 m_scale = scale; | 172 m_scale = scale; |
170 valuesChanged = true; | 173 valuesChanged = true; |
171 } | 174 } |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
307 int yPosition = isHorizontal ? m_innerViewportContainerLayer->size().height( ) - scrollbarThickness : 0; | 310 int yPosition = isHorizontal ? m_innerViewportContainerLayer->size().height( ) - scrollbarThickness : 0; |
308 int width = isHorizontal ? m_innerViewportContainerLayer->size().width() - s crollbarThickness : scrollbarThickness; | 311 int width = isHorizontal ? m_innerViewportContainerLayer->size().width() - s crollbarThickness : scrollbarThickness; |
309 int height = isHorizontal ? scrollbarThickness : m_innerViewportContainerLay er->size().height() - scrollbarThickness; | 312 int height = isHorizontal ? scrollbarThickness : m_innerViewportContainerLay er->size().height() - scrollbarThickness; |
310 | 313 |
311 // Use the GraphicsLayer to position the scrollbars. | 314 // Use the GraphicsLayer to position the scrollbars. |
312 scrollbarGraphicsLayer->setPosition(IntPoint(xPosition, yPosition)); | 315 scrollbarGraphicsLayer->setPosition(IntPoint(xPosition, yPosition)); |
313 scrollbarGraphicsLayer->setSize(IntSize(width, height)); | 316 scrollbarGraphicsLayer->setSize(IntSize(width, height)); |
314 scrollbarGraphicsLayer->setContentsRect(IntRect(0, 0, width, height)); | 317 scrollbarGraphicsLayer->setContentsRect(IntRect(0, 0, width, height)); |
315 } | 318 } |
316 | 319 |
320 void PinchViewport::adjustScrollbarExistence() | |
321 { | |
322 IntSize visibleSize = enclosingIntRect(visibleRect()).size(); | |
323 | |
324 ASSERT(mainFrame()); | |
325 ASSERT(mainFrame()->contentRenderer()); | |
326 IntSize documentSize = mainFrame()->contentRenderer()->documentRect().size() ; | |
327 | |
328 bool oldHasHorizontal = m_hasHorizontalScrollbar; | |
329 bool oldHasVertical = m_hasVerticalScrollbar; | |
330 m_hasHorizontalScrollbar = visibleSize.width() < documentSize.width(); | |
331 m_hasVerticalScrollbar = visibleSize.height() < documentSize.height(); | |
bokan
2014/10/09 15:22:14
Rather than comparing the sizes yourself here, jus
| |
332 | |
333 if (oldHasHorizontal != m_hasHorizontalScrollbar || oldHasVertical != m_hasV erticalScrollbar) { | |
334 GraphicsLayerVector children; | |
335 children.append(m_pageScaleLayer.get()); | |
336 | |
337 if (m_hasHorizontalScrollbar) | |
338 children.append(m_overlayScrollbarHorizontal.get()); | |
339 if (m_hasVerticalScrollbar) | |
340 children.append(m_overlayScrollbarVertical.get()); | |
341 | |
342 m_innerViewportContainerLayer->setChildren(children); | |
bokan
2014/10/09 15:22:14
Hmm...I'm not sure what the implications of freque
| |
343 } | |
344 } | |
345 | |
317 void PinchViewport::registerLayersWithTreeView(WebLayerTreeView* layerTreeView) const | 346 void PinchViewport::registerLayersWithTreeView(WebLayerTreeView* layerTreeView) const |
318 { | 347 { |
319 TRACE_EVENT0("blink", "PinchViewport::registerLayersWithTreeView"); | 348 TRACE_EVENT0("blink", "PinchViewport::registerLayersWithTreeView"); |
320 ASSERT(layerTreeView); | 349 ASSERT(layerTreeView); |
321 ASSERT(m_frameHost.page().mainFrame()); | 350 ASSERT(m_frameHost.page().mainFrame()); |
322 ASSERT(m_frameHost.page().mainFrame()->isLocalFrame()); | 351 ASSERT(m_frameHost.page().mainFrame()->isLocalFrame()); |
323 ASSERT(m_frameHost.page().deprecatedLocalMainFrame()->contentRenderer()); | 352 ASSERT(m_frameHost.page().deprecatedLocalMainFrame()->contentRenderer()); |
324 | 353 |
325 RenderLayerCompositor* compositor = m_frameHost.page().deprecatedLocalMainFr ame()->contentRenderer()->compositor(); | 354 RenderLayerCompositor* compositor = m_frameHost.page().deprecatedLocalMainFr ame()->contentRenderer()->compositor(); |
326 // Get the outer viewport scroll layer. | 355 // Get the outer viewport scroll layer. |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
420 return m_innerViewportContainerLayer.get(); | 449 return m_innerViewportContainerLayer.get(); |
421 } | 450 } |
422 | 451 |
423 GraphicsLayer* PinchViewport::layerForScrolling() const | 452 GraphicsLayer* PinchViewport::layerForScrolling() const |
424 { | 453 { |
425 return m_innerViewportScrollLayer.get(); | 454 return m_innerViewportScrollLayer.get(); |
426 } | 455 } |
427 | 456 |
428 GraphicsLayer* PinchViewport::layerForHorizontalScrollbar() const | 457 GraphicsLayer* PinchViewport::layerForHorizontalScrollbar() const |
429 { | 458 { |
430 return m_overlayScrollbarHorizontal.get(); | 459 return m_hasHorizontalScrollbar ? m_overlayScrollbarHorizontal.get() : nullp tr; |
431 } | 460 } |
432 | 461 |
433 GraphicsLayer* PinchViewport::layerForVerticalScrollbar() const | 462 GraphicsLayer* PinchViewport::layerForVerticalScrollbar() const |
434 { | 463 { |
435 return m_overlayScrollbarVertical.get(); | 464 return m_hasVerticalScrollbar ? m_overlayScrollbarVertical.get() : nullptr; |
436 } | 465 } |
437 | 466 |
438 void PinchViewport::notifyAnimationStarted(const GraphicsLayer*, double monotoni cTime) | 467 void PinchViewport::notifyAnimationStarted(const GraphicsLayer*, double monotoni cTime) |
439 { | 468 { |
440 } | 469 } |
441 | 470 |
442 void PinchViewport::paintContents(const GraphicsLayer*, GraphicsContext&, Graphi csLayerPaintingPhase, const IntRect& inClip) | 471 void PinchViewport::paintContents(const GraphicsLayer*, GraphicsContext&, Graphi csLayerPaintingPhase, const IntRect& inClip) |
443 { | 472 { |
444 } | 473 } |
445 | 474 |
(...skipping 29 matching lines...) Expand all Loading... | |
475 } else if (graphicsLayer == m_overlayScrollbarVertical.get()) { | 504 } else if (graphicsLayer == m_overlayScrollbarVertical.get()) { |
476 name = "Overlay Scrollbar Vertical Layer"; | 505 name = "Overlay Scrollbar Vertical Layer"; |
477 } else { | 506 } else { |
478 ASSERT_NOT_REACHED(); | 507 ASSERT_NOT_REACHED(); |
479 } | 508 } |
480 | 509 |
481 return name; | 510 return name; |
482 } | 511 } |
483 | 512 |
484 } // namespace blink | 513 } // namespace blink |
OLD | NEW |