OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/android/compositor/layer/toolbar_layer.h" | 5 #include "chrome/browser/android/compositor/layer/toolbar_layer.h" |
6 | 6 |
7 #include "cc/layers/nine_patch_layer.h" | 7 #include "cc/layers/nine_patch_layer.h" |
8 #include "cc/layers/solid_color_layer.h" | 8 #include "cc/layers/solid_color_layer.h" |
9 #include "cc/layers/ui_resource_layer.h" | 9 #include "cc/layers/ui_resource_layer.h" |
10 #include "cc/resources/scoped_ui_resource.h" | 10 #include "cc/resources/scoped_ui_resource.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 return layer_; | 24 return layer_; |
25 } | 25 } |
26 | 26 |
27 void ToolbarLayer::PushResource( | 27 void ToolbarLayer::PushResource( |
28 int toolbar_resource_id, | 28 int toolbar_resource_id, |
29 int toolbar_background_color, | 29 int toolbar_background_color, |
30 bool anonymize, | 30 bool anonymize, |
31 int toolbar_textbox_background_color, | 31 int toolbar_textbox_background_color, |
32 int url_bar_background_resource_id, | 32 int url_bar_background_resource_id, |
33 float url_bar_alpha, | 33 float url_bar_alpha, |
34 float view_height, | 34 float window_height, |
| 35 float y_offset, |
35 bool show_debug, | 36 bool show_debug, |
36 bool clip_shadow, | 37 bool clip_shadow, |
37 bool browser_controls_at_bottom) { | 38 bool browser_controls_at_bottom) { |
38 ui::ResourceManager::Resource* resource = | 39 ui::ResourceManager::Resource* resource = |
39 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, | 40 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, |
40 toolbar_resource_id); | 41 toolbar_resource_id); |
41 | 42 |
42 // Ensure the toolbar resource is available before making the layer visible. | 43 // Ensure the toolbar resource is available before making the layer visible. |
43 layer_->SetHideLayerAndSubtree(!resource); | 44 layer_->SetHideLayerAndSubtree(!resource); |
44 if (!resource) | 45 if (!resource) |
45 return; | 46 return; |
46 | 47 |
47 // This layer effectively draws over the space it takes for shadows. Set the | 48 // This layer effectively draws over the space it takes for shadows. Set the |
48 // bounds to the non-shadow size so that other things can properly line up. | 49 // bounds to the non-shadow size so that other things can properly line up. |
49 // Padding height does not include the height of the tabstrip, so we add | 50 // Padding height does not include the height of the tabstrip, so we add |
50 // it explicitly by adding y offset. | 51 // it explicitly by adding y offset. |
51 gfx::Size size = gfx::Size( | 52 gfx::Size size = gfx::Size( |
52 resource->padding.width(), | 53 resource->padding.width(), |
53 resource->padding.height() + resource->padding.y()); | 54 resource->padding.height() + resource->padding.y()); |
54 layer_->SetBounds(size); | 55 layer_->SetBounds(size); |
55 | 56 |
56 // The toolbar_root_ contains all of the layers that make up the toolbar. The | 57 // The toolbar_root_ contains all of the layers that make up the toolbar. The |
57 // toolbar_root_ is moved around inside of layer_ to allow appropriate | 58 // toolbar_root_ is moved around inside of layer_ to allow appropriate |
58 // clipping of the shadow. | 59 // clipping of the shadow. |
59 toolbar_root_->SetBounds(resource->padding.size()); | 60 toolbar_root_->SetBounds(resource->padding.size()); |
60 | 61 |
| 62 gfx::PointF root_layer_position(0, y_offset); |
61 gfx::PointF background_position(resource->padding.origin()); | 63 gfx::PointF background_position(resource->padding.origin()); |
62 if (browser_controls_at_bottom) { | 64 if (browser_controls_at_bottom) { |
| 65 // The toolbar's position as if it were completely shown. |
| 66 float base_toolbar_y = window_height - resource->padding.size().height(); |
63 float layer_offset = | 67 float layer_offset = |
64 resource->size.height() - resource->padding.size().height(); | 68 resource->size.height() - resource->padding.size().height(); |
65 layer_->SetPosition(gfx::PointF(0, view_height)); | 69 |
| 70 root_layer_position.set_y(base_toolbar_y + y_offset); |
66 toolbar_root_->SetPosition(gfx::PointF(0, -layer_offset)); | 71 toolbar_root_->SetPosition(gfx::PointF(0, -layer_offset)); |
67 background_position.set_y(layer_offset); | 72 background_position.set_y(layer_offset); |
68 } | 73 } |
| 74 layer_->SetPosition(root_layer_position); |
69 | 75 |
70 toolbar_background_layer_->SetBounds(resource->padding.size()); | 76 toolbar_background_layer_->SetBounds(resource->padding.size()); |
71 toolbar_background_layer_->SetPosition(background_position); | 77 toolbar_background_layer_->SetPosition(background_position); |
72 toolbar_background_layer_->SetBackgroundColor(toolbar_background_color); | 78 toolbar_background_layer_->SetBackgroundColor(toolbar_background_color); |
73 | 79 |
74 bool url_bar_visible = (resource->aperture.width() != 0); | 80 bool url_bar_visible = (resource->aperture.width() != 0); |
75 url_bar_background_layer_->SetHideLayerAndSubtree(!url_bar_visible); | 81 url_bar_background_layer_->SetHideLayerAndSubtree(!url_bar_visible); |
76 if (url_bar_visible) { | 82 if (url_bar_visible) { |
77 ui::ResourceManager::Resource* url_bar_background_resource = | 83 ui::ResourceManager::Resource* url_bar_background_resource = |
78 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 84 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 | 195 |
190 debug_layer_->SetIsDrawable(true); | 196 debug_layer_->SetIsDrawable(true); |
191 debug_layer_->SetBackgroundColor(SK_ColorGREEN); | 197 debug_layer_->SetBackgroundColor(SK_ColorGREEN); |
192 debug_layer_->SetOpacity(0.5f); | 198 debug_layer_->SetOpacity(0.5f); |
193 } | 199 } |
194 | 200 |
195 ToolbarLayer::~ToolbarLayer() { | 201 ToolbarLayer::~ToolbarLayer() { |
196 } | 202 } |
197 | 203 |
198 } // namespace android | 204 } // namespace android |
OLD | NEW |