172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/gtk_chrome_shrinkable_hbox.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector> 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kSpacing = 3; 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kBorderWidth = 5; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GtkChromeShrinkableHBoxTest : public testing::Test { 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkChromeShrinkableHBoxTest() 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : window_(gtk_window_new(GTK_WINDOW_TOPLEVEL)), 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch box_(gtk_chrome_shrinkable_hbox_new(FALSE, FALSE, kSpacing)) { 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_direction(box_, GTK_TEXT_DIR_LTR); 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_window_set_default_size(GTK_WINDOW(window_), 200, 200); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_container_add(GTK_CONTAINER(window_), box_); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_container_set_border_width(GTK_CONTAINER(box_), kBorderWidth); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ~GtkChromeShrinkableHBoxTest() { 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_destroy(window_); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Add some children widgets with arbitrary width and padding. 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void AddChildren(bool pack_start) { 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static struct { 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int width; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int padding; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } kChildrenData[] = { 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 60, 2 }, 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 70, 3 }, 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 80, 5 }, 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 50, 7 }, 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 40, 11 }, 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 60, 0 }, 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 0, 0 } 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (size_t i = 0; kChildrenData[i].width; ++i) { 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* child = gtk_fixed_new(); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_size_request(child, kChildrenData[i].width, -1); 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (pack_start) { 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_chrome_shrinkable_hbox_pack_start( 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTK_CHROME_SHRINKABLE_HBOX(box_), child, kChildrenData[i].padding); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else { 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_chrome_shrinkable_hbox_pack_end( 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTK_CHROME_SHRINKABLE_HBOX(box_), child, kChildrenData[i].padding); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Check if all children's size allocation are inside the |box_|'s boundary. 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Validate(bool pack_start) { 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<ChildData> children_data; 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_container_foreach(GTK_CONTAINER(box_), CollectChildData, 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &children_data); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch size_t children_count = children_data.size(); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch size_t visible_children_count = 0; 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (size_t i = 0; i < children_count; ++i) { 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (children_data[i].visible) 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++visible_children_count; 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (visible_children_count == 0) 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return; 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int border_width = gtk_container_get_border_width(GTK_CONTAINER(box_)); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int x = box_->allocation.x + border_width; 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int width = box_->allocation.width - border_width * 2; 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int spacing = gtk_box_get_spacing(GTK_BOX(box_)); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool homogeneous = gtk_box_get_homogeneous(GTK_BOX(box_)); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (homogeneous) { 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // If the |box_| is in homogeneous mode, then check if the visible 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // children are not overlapped with each other. 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int homogeneous_child_width = 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (width - (visible_children_count - 1) * spacing) / 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch visible_children_count; 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (size_t i = 0; i < children_count; ++i) { 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE(testing::Message() << "Validate homogeneous child " << i 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " visible: " << children_data[i].visible 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " padding: " << children_data[i].padding 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " x: " << children_data[i].x 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " width: " << children_data[i].width); 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (children_data[i].visible) 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_LE(children_data[i].width, homogeneous_child_width); 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else { 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // If the |box_| is not in homogeneous mode, then just check if all 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // visible children are inside the |box_|'s boundary. And for those 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // hidden children which are out of the boundary, they should only 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // be hidden one by one from the end of the |box_|. 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool last_visible = pack_start; 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool visibility_changed = false; 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (size_t i = 0; i < children_count; ++i) { 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE(testing::Message() << "Validate child " << i 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " visible: " << children_data[i].visible 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " padding: " << children_data[i].padding 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " x: " << children_data[i].x 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " width: " << children_data[i].width); 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (last_visible != children_data[i].visible) { 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(visibility_changed); 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch visibility_changed = true; 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch last_visible = children_data[i].visible; 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (children_data[i].visible) { 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_GE(children_data[i].x, 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch x + children_data[i].padding); 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_LE(children_data[i].x + children_data[i].width, 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch x + width - children_data[i].padding); 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Test(bool pack_start) { 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_show_all(window_); 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkAllocation allocation = { 0, 0, 0, 200 }; 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_chrome_shrinkable_hbox_set_hide_child_directly( 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTK_CHROME_SHRINKABLE_HBOX(box_), FALSE); 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int width = 500; width > kBorderWidth * 2; --width) { 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE(testing::Message() << "Shrink hide_child_directly = FALSE," 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " width = " << width); 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch allocation.width = width; 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Reducing the width may cause some children to be hidden, which will 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // cause queue resize, so it's necessary to do another size allocation to 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // emulate the queue resize. 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_NO_FATAL_FAILURE(Validate(pack_start)) << "width = " << width; 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int width = kBorderWidth * 2; width <= 500; ++width) { 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE(testing::Message() << "Expand hide_child_directly = FALSE," 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " width = " << width); 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch allocation.width = width; 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Expanding the width may cause some invisible children to be shown, 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // which will cause queue resize, so it's necessary to do another size 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // allocation to emulate the queue resize. 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_NO_FATAL_FAILURE(Validate(pack_start)); 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_chrome_shrinkable_hbox_set_hide_child_directly( 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GTK_CHROME_SHRINKABLE_HBOX(box_), TRUE); 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int width = 500; width > kBorderWidth * 2; --width) { 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE(testing::Message() << "Shrink hide_child_directly = TRUE," 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " width = " << width); 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch allocation.width = width; 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_NO_FATAL_FAILURE(Validate(pack_start)); 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int width = kBorderWidth * 2; width <= 500; ++width) { 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE(testing::Message() << "Expand hide_child_directly = TRUE," 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " width = " << width); 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch allocation.width = width; 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_size_allocate(box_, &allocation); 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_NO_FATAL_FAILURE(Validate(pack_start)); 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* window_; 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* box_; 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch struct ChildData { 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool visible; 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int padding; 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int x; 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int width; 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static void CollectChildData(GtkWidget* child, gpointer userdata) { 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch guint padding; 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_box_query_child_packing(GTK_BOX(gtk_widget_get_parent(child)), child, 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NULL, NULL, &padding, NULL); 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ChildData data; 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch data.visible = GTK_WIDGET_VISIBLE(child); 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch data.padding = padding; 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch data.x = child->allocation.x; 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch data.width = child->allocation.width; 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch reinterpret_cast<std::vector<ChildData>*>(userdata)->push_back(data); 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(GtkChromeShrinkableHBoxTest, PackStart) { 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddChildren(true); 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE("Test LTR"); 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_direction(box_, GTK_TEXT_DIR_LTR); 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NO_FATAL_FAILURE(Test(true)); 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE("Test RTL"); 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_direction(box_, GTK_TEXT_DIR_RTL); 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NO_FATAL_FAILURE(Test(true)); 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(GtkChromeShrinkableHBoxTest, PackEnd) { 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddChildren(false); 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE("Test LTR"); 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_direction(box_, GTK_TEXT_DIR_LTR); 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NO_FATAL_FAILURE(Test(false)); 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE("Test RTL"); 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_direction(box_, GTK_TEXT_DIR_RTL); 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NO_FATAL_FAILURE(Test(false)); 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(GtkChromeShrinkableHBoxTest, Homogeneous) { 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddChildren(true); 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_box_set_homogeneous(GTK_BOX(box_), true); 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE("Test LTR"); 246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_direction(box_, GTK_TEXT_DIR_LTR); 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NO_FATAL_FAILURE(Test(true)); 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SCOPED_TRACE("Test RTL"); 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gtk_widget_set_direction(box_, GTK_TEXT_DIR_RTL); 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NO_FATAL_FAILURE(Test(true)); 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 255