OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/views/view.h" |
| 6 |
5 #include <stddef.h> | 7 #include <stddef.h> |
6 | 8 |
7 #include <map> | 9 #include <map> |
| 10 #include <memory> |
8 | 11 |
9 #include "base/i18n/rtl.h" | 12 #include "base/i18n/rtl.h" |
10 #include "base/macros.h" | 13 #include "base/macros.h" |
11 #include "base/memory/scoped_ptr.h" | |
12 #include "base/rand_util.h" | 14 #include "base/rand_util.h" |
13 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
14 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
15 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
16 #include "build/build_config.h" | 18 #include "build/build_config.h" |
17 #include "cc/playback/display_item_list.h" | 19 #include "cc/playback/display_item_list.h" |
18 #include "cc/playback/display_item_list_settings.h" | 20 #include "cc/playback/display_item_list_settings.h" |
19 #include "ui/base/accelerators/accelerator.h" | 21 #include "ui/base/accelerators/accelerator.h" |
20 #include "ui/base/clipboard/clipboard.h" | 22 #include "ui/base/clipboard/clipboard.h" |
21 #include "ui/base/l10n/l10n_util.h" | 23 #include "ui/base/l10n/l10n_util.h" |
(...skipping 10 matching lines...) Expand all Loading... |
32 #include "ui/gfx/path.h" | 34 #include "ui/gfx/path.h" |
33 #include "ui/gfx/transform.h" | 35 #include "ui/gfx/transform.h" |
34 #include "ui/native_theme/native_theme.h" | 36 #include "ui/native_theme/native_theme.h" |
35 #include "ui/strings/grit/ui_strings.h" | 37 #include "ui/strings/grit/ui_strings.h" |
36 #include "ui/views/background.h" | 38 #include "ui/views/background.h" |
37 #include "ui/views/controls/native/native_view_host.h" | 39 #include "ui/views/controls/native/native_view_host.h" |
38 #include "ui/views/controls/scroll_view.h" | 40 #include "ui/views/controls/scroll_view.h" |
39 #include "ui/views/controls/textfield/textfield.h" | 41 #include "ui/views/controls/textfield/textfield.h" |
40 #include "ui/views/focus/view_storage.h" | 42 #include "ui/views/focus/view_storage.h" |
41 #include "ui/views/test/views_test_base.h" | 43 #include "ui/views/test/views_test_base.h" |
42 #include "ui/views/view.h" | |
43 #include "ui/views/widget/native_widget.h" | 44 #include "ui/views/widget/native_widget.h" |
44 #include "ui/views/widget/root_view.h" | 45 #include "ui/views/widget/root_view.h" |
45 #include "ui/views/window/dialog_client_view.h" | 46 #include "ui/views/window/dialog_client_view.h" |
46 #include "ui/views/window/dialog_delegate.h" | 47 #include "ui/views/window/dialog_delegate.h" |
47 | 48 |
48 using base::ASCIIToUTF16; | 49 using base::ASCIIToUTF16; |
49 | 50 |
50 namespace { | 51 namespace { |
51 | 52 |
52 // Returns true if |ancestor| is an ancestor of |layer|. | 53 // Returns true if |ancestor| is an ancestor of |layer|. |
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 received_mouse_exit_ = true; | 379 received_mouse_exit_ = true; |
379 } | 380 } |
380 | 381 |
381 TEST_F(ViewTest, MouseEvent) { | 382 TEST_F(ViewTest, MouseEvent) { |
382 TestView* v1 = new TestView(); | 383 TestView* v1 = new TestView(); |
383 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); | 384 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); |
384 | 385 |
385 TestView* v2 = new TestView(); | 386 TestView* v2 = new TestView(); |
386 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100)); | 387 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100)); |
387 | 388 |
388 scoped_ptr<Widget> widget(new Widget); | 389 std::unique_ptr<Widget> widget(new Widget); |
389 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 390 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
390 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 391 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
391 params.bounds = gfx::Rect(50, 50, 650, 650); | 392 params.bounds = gfx::Rect(50, 50, 650, 650); |
392 widget->Init(params); | 393 widget->Init(params); |
393 internal::RootView* root = | 394 internal::RootView* root = |
394 static_cast<internal::RootView*>(widget->GetRootView()); | 395 static_cast<internal::RootView*>(widget->GetRootView()); |
395 | 396 |
396 root->AddChildView(v1); | 397 root->AddChildView(v1); |
397 v1->AddChildView(v2); | 398 v1->AddChildView(v2); |
398 | 399 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 TEST_F(ViewTest, DeleteOnPressed) { | 442 TEST_F(ViewTest, DeleteOnPressed) { |
442 TestView* v1 = new TestView(); | 443 TestView* v1 = new TestView(); |
443 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); | 444 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); |
444 | 445 |
445 TestView* v2 = new TestView(); | 446 TestView* v2 = new TestView(); |
446 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100)); | 447 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100)); |
447 | 448 |
448 v1->Reset(); | 449 v1->Reset(); |
449 v2->Reset(); | 450 v2->Reset(); |
450 | 451 |
451 scoped_ptr<Widget> widget(new Widget); | 452 std::unique_ptr<Widget> widget(new Widget); |
452 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 453 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
453 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 454 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
454 params.bounds = gfx::Rect(50, 50, 650, 650); | 455 params.bounds = gfx::Rect(50, 50, 650, 650); |
455 widget->Init(params); | 456 widget->Init(params); |
456 View* root = widget->GetRootView(); | 457 View* root = widget->GetRootView(); |
457 | 458 |
458 root->AddChildView(v1); | 459 root->AddChildView(v1); |
459 v1->AddChildView(v2); | 460 v1->AddChildView(v2); |
460 | 461 |
461 v2->delete_on_pressed_ = true; | 462 v2->delete_on_pressed_ = true; |
(...skipping 1644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2106 // handle accelerators or not (see View::CanHandleAccelerators for details). | 2107 // handle accelerators or not (see View::CanHandleAccelerators for details). |
2107 // This test targets that extra logic, but should also work on other platforms. | 2108 // This test targets that extra logic, but should also work on other platforms. |
2108 TEST_F(ViewTest, HandleAccelerator) { | 2109 TEST_F(ViewTest, HandleAccelerator) { |
2109 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); | 2110 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); |
2110 TestView* view = new TestView(); | 2111 TestView* view = new TestView(); |
2111 view->Reset(); | 2112 view->Reset(); |
2112 view->AddAccelerator(return_accelerator); | 2113 view->AddAccelerator(return_accelerator); |
2113 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); | 2114 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); |
2114 | 2115 |
2115 // Create a window and add the view as its child. | 2116 // Create a window and add the view as its child. |
2116 scoped_ptr<Widget> widget(new Widget); | 2117 std::unique_ptr<Widget> widget(new Widget); |
2117 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 2118 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
2118 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2119 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2119 params.bounds = gfx::Rect(0, 0, 100, 100); | 2120 params.bounds = gfx::Rect(0, 0, 100, 100); |
2120 widget->Init(params); | 2121 widget->Init(params); |
2121 View* root = widget->GetRootView(); | 2122 View* root = widget->GetRootView(); |
2122 root->AddChildView(view); | 2123 root->AddChildView(view); |
2123 widget->Show(); | 2124 widget->Show(); |
2124 | 2125 |
2125 FocusManager* focus_manager = widget->GetFocusManager(); | 2126 FocusManager* focus_manager = widget->GetFocusManager(); |
2126 ASSERT_TRUE(focus_manager); | 2127 ASSERT_TRUE(focus_manager); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2185 #if 0 | 2186 #if 0 |
2186 TEST_F(ViewTest, ActivateAccelerator) { | 2187 TEST_F(ViewTest, ActivateAccelerator) { |
2187 // Register a keyboard accelerator before the view is added to a window. | 2188 // Register a keyboard accelerator before the view is added to a window. |
2188 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); | 2189 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); |
2189 TestView* view = new TestView(); | 2190 TestView* view = new TestView(); |
2190 view->Reset(); | 2191 view->Reset(); |
2191 view->AddAccelerator(return_accelerator); | 2192 view->AddAccelerator(return_accelerator); |
2192 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); | 2193 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); |
2193 | 2194 |
2194 // Create a window and add the view as its child. | 2195 // Create a window and add the view as its child. |
2195 scoped_ptr<Widget> widget(new Widget); | 2196 std::unique_ptr<Widget> widget(new Widget); |
2196 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 2197 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
2197 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2198 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2198 params.bounds = gfx::Rect(0, 0, 100, 100); | 2199 params.bounds = gfx::Rect(0, 0, 100, 100); |
2199 widget->Init(params); | 2200 widget->Init(params); |
2200 View* root = widget->GetRootView(); | 2201 View* root = widget->GetRootView(); |
2201 root->AddChildView(view); | 2202 root->AddChildView(view); |
2202 widget->Show(); | 2203 widget->Show(); |
2203 | 2204 |
2204 // Get the focus manager. | 2205 // Get the focus manager. |
2205 FocusManager* focus_manager = widget->GetFocusManager(); | 2206 FocusManager* focus_manager = widget->GetFocusManager(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2248 widget->CloseNow(); | 2249 widget->CloseNow(); |
2249 } | 2250 } |
2250 | 2251 |
2251 TEST_F(ViewTest, HiddenViewWithAccelerator) { | 2252 TEST_F(ViewTest, HiddenViewWithAccelerator) { |
2252 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); | 2253 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); |
2253 TestView* view = new TestView(); | 2254 TestView* view = new TestView(); |
2254 view->Reset(); | 2255 view->Reset(); |
2255 view->AddAccelerator(return_accelerator); | 2256 view->AddAccelerator(return_accelerator); |
2256 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); | 2257 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); |
2257 | 2258 |
2258 scoped_ptr<Widget> widget(new Widget); | 2259 std::unique_ptr<Widget> widget(new Widget); |
2259 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 2260 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
2260 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2261 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2261 params.bounds = gfx::Rect(0, 0, 100, 100); | 2262 params.bounds = gfx::Rect(0, 0, 100, 100); |
2262 widget->Init(params); | 2263 widget->Init(params); |
2263 View* root = widget->GetRootView(); | 2264 View* root = widget->GetRootView(); |
2264 root->AddChildView(view); | 2265 root->AddChildView(view); |
2265 widget->Show(); | 2266 widget->Show(); |
2266 | 2267 |
2267 FocusManager* focus_manager = widget->GetFocusManager(); | 2268 FocusManager* focus_manager = widget->GetFocusManager(); |
2268 ASSERT_TRUE(focus_manager); | 2269 ASSERT_TRUE(focus_manager); |
2269 | 2270 |
2270 view->SetVisible(false); | 2271 view->SetVisible(false); |
2271 EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator)); | 2272 EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator)); |
2272 | 2273 |
2273 view->SetVisible(true); | 2274 view->SetVisible(true); |
2274 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); | 2275 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); |
2275 | 2276 |
2276 widget->CloseNow(); | 2277 widget->CloseNow(); |
2277 } | 2278 } |
2278 | 2279 |
2279 TEST_F(ViewTest, ViewInHiddenWidgetWithAccelerator) { | 2280 TEST_F(ViewTest, ViewInHiddenWidgetWithAccelerator) { |
2280 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); | 2281 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); |
2281 TestView* view = new TestView(); | 2282 TestView* view = new TestView(); |
2282 view->Reset(); | 2283 view->Reset(); |
2283 view->AddAccelerator(return_accelerator); | 2284 view->AddAccelerator(return_accelerator); |
2284 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); | 2285 EXPECT_EQ(view->accelerator_count_map_[return_accelerator], 0); |
2285 | 2286 |
2286 scoped_ptr<Widget> widget(new Widget); | 2287 std::unique_ptr<Widget> widget(new Widget); |
2287 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 2288 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
2288 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2289 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2289 params.bounds = gfx::Rect(0, 0, 100, 100); | 2290 params.bounds = gfx::Rect(0, 0, 100, 100); |
2290 widget->Init(params); | 2291 widget->Init(params); |
2291 View* root = widget->GetRootView(); | 2292 View* root = widget->GetRootView(); |
2292 root->AddChildView(view); | 2293 root->AddChildView(view); |
2293 | 2294 |
2294 FocusManager* focus_manager = widget->GetFocusManager(); | 2295 FocusManager* focus_manager = widget->GetFocusManager(); |
2295 ASSERT_TRUE(focus_manager); | 2296 ASSERT_TRUE(focus_manager); |
2296 | 2297 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2422 // No ReparentNativeView on Mac. See http://crbug.com/514920. | 2423 // No ReparentNativeView on Mac. See http://crbug.com/514920. |
2423 #if defined(OS_MACOSX) && !defined(USE_AURA) | 2424 #if defined(OS_MACOSX) && !defined(USE_AURA) |
2424 #define MAYBE_NativeViewHierarchyChanged DISABLED_NativeViewHierarchyChanged | 2425 #define MAYBE_NativeViewHierarchyChanged DISABLED_NativeViewHierarchyChanged |
2425 #else | 2426 #else |
2426 #define MAYBE_NativeViewHierarchyChanged NativeViewHierarchyChanged | 2427 #define MAYBE_NativeViewHierarchyChanged NativeViewHierarchyChanged |
2427 #endif | 2428 #endif |
2428 | 2429 |
2429 // Test that a view can track the current top level widget by overriding | 2430 // Test that a view can track the current top level widget by overriding |
2430 // View::ViewHierarchyChanged() and View::NativeViewHierarchyChanged(). | 2431 // View::ViewHierarchyChanged() and View::NativeViewHierarchyChanged(). |
2431 TEST_F(ViewTest, MAYBE_NativeViewHierarchyChanged) { | 2432 TEST_F(ViewTest, MAYBE_NativeViewHierarchyChanged) { |
2432 scoped_ptr<Widget> toplevel1(new Widget); | 2433 std::unique_ptr<Widget> toplevel1(new Widget); |
2433 Widget::InitParams toplevel1_params = | 2434 Widget::InitParams toplevel1_params = |
2434 CreateParams(Widget::InitParams::TYPE_POPUP); | 2435 CreateParams(Widget::InitParams::TYPE_POPUP); |
2435 toplevel1_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2436 toplevel1_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2436 toplevel1->Init(toplevel1_params); | 2437 toplevel1->Init(toplevel1_params); |
2437 | 2438 |
2438 scoped_ptr<Widget> toplevel2(new Widget); | 2439 std::unique_ptr<Widget> toplevel2(new Widget); |
2439 Widget::InitParams toplevel2_params = | 2440 Widget::InitParams toplevel2_params = |
2440 CreateParams(Widget::InitParams::TYPE_POPUP); | 2441 CreateParams(Widget::InitParams::TYPE_POPUP); |
2441 toplevel2_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2442 toplevel2_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2442 toplevel2->Init(toplevel2_params); | 2443 toplevel2->Init(toplevel2_params); |
2443 | 2444 |
2444 Widget* child = new Widget; | 2445 Widget* child = new Widget; |
2445 Widget::InitParams child_params(Widget::InitParams::TYPE_CONTROL); | 2446 Widget::InitParams child_params(Widget::InitParams::TYPE_CONTROL); |
2446 child_params.parent = toplevel1->GetNativeView(); | 2447 child_params.parent = toplevel1->GetNativeView(); |
2447 child->Init(child_params); | 2448 child->Init(child_params); |
2448 | 2449 |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2669 EXPECT_EQ(25, v3->location_.y()); | 2670 EXPECT_EQ(25, v3->location_.y()); |
2670 | 2671 |
2671 root->OnMouseReleased(released); | 2672 root->OnMouseReleased(released); |
2672 | 2673 |
2673 widget->CloseNow(); | 2674 widget->CloseNow(); |
2674 } | 2675 } |
2675 | 2676 |
2676 TEST_F(ViewTest, TransformVisibleBound) { | 2677 TEST_F(ViewTest, TransformVisibleBound) { |
2677 gfx::Rect viewport_bounds(0, 0, 100, 100); | 2678 gfx::Rect viewport_bounds(0, 0, 100, 100); |
2678 | 2679 |
2679 scoped_ptr<Widget> widget(new Widget); | 2680 std::unique_ptr<Widget> widget(new Widget); |
2680 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 2681 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
2681 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2682 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2682 params.bounds = viewport_bounds; | 2683 params.bounds = viewport_bounds; |
2683 widget->Init(params); | 2684 widget->Init(params); |
2684 widget->GetRootView()->SetBoundsRect(viewport_bounds); | 2685 widget->GetRootView()->SetBoundsRect(viewport_bounds); |
2685 | 2686 |
2686 View* viewport = new View; | 2687 View* viewport = new View; |
2687 widget->SetContentsView(viewport); | 2688 widget->SetContentsView(viewport); |
2688 View* contents = new View; | 2689 View* contents = new View; |
2689 viewport->AddChildView(contents); | 2690 viewport->AddChildView(contents); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2726 void OnVisibleBoundsChanged() override { received_notification_ = true; } | 2727 void OnVisibleBoundsChanged() override { received_notification_ = true; } |
2727 | 2728 |
2728 bool received_notification_; | 2729 bool received_notification_; |
2729 | 2730 |
2730 DISALLOW_COPY_AND_ASSIGN(VisibleBoundsView); | 2731 DISALLOW_COPY_AND_ASSIGN(VisibleBoundsView); |
2731 }; | 2732 }; |
2732 | 2733 |
2733 TEST_F(ViewTest, OnVisibleBoundsChanged) { | 2734 TEST_F(ViewTest, OnVisibleBoundsChanged) { |
2734 gfx::Rect viewport_bounds(0, 0, 100, 100); | 2735 gfx::Rect viewport_bounds(0, 0, 100, 100); |
2735 | 2736 |
2736 scoped_ptr<Widget> widget(new Widget); | 2737 std::unique_ptr<Widget> widget(new Widget); |
2737 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 2738 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
2738 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2739 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2739 params.bounds = viewport_bounds; | 2740 params.bounds = viewport_bounds; |
2740 widget->Init(params); | 2741 widget->Init(params); |
2741 widget->GetRootView()->SetBoundsRect(viewport_bounds); | 2742 widget->GetRootView()->SetBoundsRect(viewport_bounds); |
2742 | 2743 |
2743 View* viewport = new View; | 2744 View* viewport = new View; |
2744 widget->SetContentsView(viewport); | 2745 widget->SetContentsView(viewport); |
2745 View* contents = new View; | 2746 View* contents = new View; |
2746 viewport->AddChildView(contents); | 2747 viewport->AddChildView(contents); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2828 view.SetBoundsRect(gfx::Rect(0, 0, 100, 100)); | 2829 view.SetBoundsRect(gfx::Rect(0, 0, 100, 100)); |
2829 EXPECT_TRUE(view.scheduled_paint_rects_.empty()); | 2830 EXPECT_TRUE(view.scheduled_paint_rects_.empty()); |
2830 } | 2831 } |
2831 | 2832 |
2832 // Verifies AddChildView() and RemoveChildView() schedule appropriate paints. | 2833 // Verifies AddChildView() and RemoveChildView() schedule appropriate paints. |
2833 TEST_F(ViewTest, AddAndRemoveSchedulePaints) { | 2834 TEST_F(ViewTest, AddAndRemoveSchedulePaints) { |
2834 gfx::Rect viewport_bounds(0, 0, 100, 100); | 2835 gfx::Rect viewport_bounds(0, 0, 100, 100); |
2835 | 2836 |
2836 // We have to put the View hierarchy into a Widget or no paints will be | 2837 // We have to put the View hierarchy into a Widget or no paints will be |
2837 // scheduled. | 2838 // scheduled. |
2838 scoped_ptr<Widget> widget(new Widget); | 2839 std::unique_ptr<Widget> widget(new Widget); |
2839 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 2840 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
2840 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 2841 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
2841 params.bounds = viewport_bounds; | 2842 params.bounds = viewport_bounds; |
2842 widget->Init(params); | 2843 widget->Init(params); |
2843 widget->GetRootView()->SetBoundsRect(viewport_bounds); | 2844 widget->GetRootView()->SetBoundsRect(viewport_bounds); |
2844 | 2845 |
2845 TestView* parent_view = new TestView; | 2846 TestView* parent_view = new TestView; |
2846 widget->SetContentsView(parent_view); | 2847 widget->SetContentsView(parent_view); |
2847 parent_view->SetBoundsRect(viewport_bounds); | 2848 parent_view->SetBoundsRect(viewport_bounds); |
2848 parent_view->scheduled_paint_rects_.clear(); | 2849 parent_view->scheduled_paint_rects_.clear(); |
2849 | 2850 |
2850 View* child_view = new View; | 2851 View* child_view = new View; |
2851 child_view->SetBoundsRect(gfx::Rect(0, 0, 20, 20)); | 2852 child_view->SetBoundsRect(gfx::Rect(0, 0, 20, 20)); |
2852 parent_view->AddChildView(child_view); | 2853 parent_view->AddChildView(child_view); |
2853 ASSERT_EQ(1U, parent_view->scheduled_paint_rects_.size()); | 2854 ASSERT_EQ(1U, parent_view->scheduled_paint_rects_.size()); |
2854 EXPECT_EQ(child_view->bounds(), parent_view->scheduled_paint_rects_.front()); | 2855 EXPECT_EQ(child_view->bounds(), parent_view->scheduled_paint_rects_.front()); |
2855 | 2856 |
2856 parent_view->scheduled_paint_rects_.clear(); | 2857 parent_view->scheduled_paint_rects_.clear(); |
2857 parent_view->RemoveChildView(child_view); | 2858 parent_view->RemoveChildView(child_view); |
2858 scoped_ptr<View> child_deleter(child_view); | 2859 std::unique_ptr<View> child_deleter(child_view); |
2859 ASSERT_EQ(1U, parent_view->scheduled_paint_rects_.size()); | 2860 ASSERT_EQ(1U, parent_view->scheduled_paint_rects_.size()); |
2860 EXPECT_EQ(child_view->bounds(), parent_view->scheduled_paint_rects_.front()); | 2861 EXPECT_EQ(child_view->bounds(), parent_view->scheduled_paint_rects_.front()); |
2861 | 2862 |
2862 widget->CloseNow(); | 2863 widget->CloseNow(); |
2863 } | 2864 } |
2864 | 2865 |
2865 // Tests conversion methods with a transform. | 2866 // Tests conversion methods with a transform. |
2866 TEST_F(ViewTest, ConversionsWithTransform) { | 2867 TEST_F(ViewTest, ConversionsWithTransform) { |
2867 TestView top_view; | 2868 TestView top_view; |
2868 | 2869 |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3044 View::ConvertRectToTarget(&top_view, child_2, &rect); | 3045 View::ConvertRectToTarget(&top_view, child_2, &rect); |
3045 EXPECT_FLOAT_EQ(50.0f, rect.x()); | 3046 EXPECT_FLOAT_EQ(50.0f, rect.x()); |
3046 EXPECT_FLOAT_EQ(55.0f, rect.y()); | 3047 EXPECT_FLOAT_EQ(55.0f, rect.y()); |
3047 EXPECT_FLOAT_EQ(20.0f, rect.width()); | 3048 EXPECT_FLOAT_EQ(20.0f, rect.width()); |
3048 EXPECT_FLOAT_EQ(30.0f, rect.height()); | 3049 EXPECT_FLOAT_EQ(30.0f, rect.height()); |
3049 } | 3050 } |
3050 } | 3051 } |
3051 | 3052 |
3052 // Tests conversion methods to and from screen coordinates. | 3053 // Tests conversion methods to and from screen coordinates. |
3053 TEST_F(ViewTest, ConversionsToFromScreen) { | 3054 TEST_F(ViewTest, ConversionsToFromScreen) { |
3054 scoped_ptr<Widget> widget(new Widget); | 3055 std::unique_ptr<Widget> widget(new Widget); |
3055 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 3056 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
3056 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 3057 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
3057 params.bounds = gfx::Rect(50, 50, 650, 650); | 3058 params.bounds = gfx::Rect(50, 50, 650, 650); |
3058 widget->Init(params); | 3059 widget->Init(params); |
3059 | 3060 |
3060 View* child = new View; | 3061 View* child = new View; |
3061 widget->GetRootView()->AddChildView(child); | 3062 widget->GetRootView()->AddChildView(child); |
3062 child->SetBounds(10, 10, 100, 200); | 3063 child->SetBounds(10, 10, 100, 200); |
3063 gfx::Transform t; | 3064 gfx::Transform t; |
3064 t.Scale(0.5, 0.5); | 3065 t.Scale(0.5, 0.5); |
3065 child->SetTransform(t); | 3066 child->SetTransform(t); |
3066 | 3067 |
3067 gfx::Point point_in_screen(100, 90); | 3068 gfx::Point point_in_screen(100, 90); |
3068 gfx::Point point_in_child(80, 60); | 3069 gfx::Point point_in_child(80, 60); |
3069 | 3070 |
3070 gfx::Point point = point_in_screen; | 3071 gfx::Point point = point_in_screen; |
3071 View::ConvertPointFromScreen(child, &point); | 3072 View::ConvertPointFromScreen(child, &point); |
3072 EXPECT_EQ(point_in_child.ToString(), point.ToString()); | 3073 EXPECT_EQ(point_in_child.ToString(), point.ToString()); |
3073 | 3074 |
3074 View::ConvertPointToScreen(child, &point); | 3075 View::ConvertPointToScreen(child, &point); |
3075 EXPECT_EQ(point_in_screen.ToString(), point.ToString()); | 3076 EXPECT_EQ(point_in_screen.ToString(), point.ToString()); |
3076 } | 3077 } |
3077 | 3078 |
3078 // Tests conversion methods for rectangles. | 3079 // Tests conversion methods for rectangles. |
3079 TEST_F(ViewTest, ConvertRectWithTransform) { | 3080 TEST_F(ViewTest, ConvertRectWithTransform) { |
3080 scoped_ptr<Widget> widget(new Widget); | 3081 std::unique_ptr<Widget> widget(new Widget); |
3081 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 3082 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
3082 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 3083 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
3083 params.bounds = gfx::Rect(50, 50, 650, 650); | 3084 params.bounds = gfx::Rect(50, 50, 650, 650); |
3084 widget->Init(params); | 3085 widget->Init(params); |
3085 View* root = widget->GetRootView(); | 3086 View* root = widget->GetRootView(); |
3086 | 3087 |
3087 TestView* v1 = new TestView; | 3088 TestView* v1 = new TestView; |
3088 TestView* v2 = new TestView; | 3089 TestView* v2 = new TestView; |
3089 root->AddChildView(v1); | 3090 root->AddChildView(v1); |
3090 v1->AddChildView(v2); | 3091 v1->AddChildView(v2); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3185 // v1 | 3186 // v1 |
3186 // +-- v2 | 3187 // +-- v2 |
3187 // +-- v3 | 3188 // +-- v3 |
3188 // +-- v4 (starts here, then get reparented to v1) | 3189 // +-- v4 (starts here, then get reparented to v1) |
3189 TEST_F(ViewTest, ViewHierarchyChanged) { | 3190 TEST_F(ViewTest, ViewHierarchyChanged) { |
3190 ObserverView v1; | 3191 ObserverView v1; |
3191 | 3192 |
3192 ObserverView* v3 = new ObserverView(); | 3193 ObserverView* v3 = new ObserverView(); |
3193 | 3194 |
3194 // Add |v3| to |v2|. | 3195 // Add |v3| to |v2|. |
3195 scoped_ptr<ObserverView> v2(new ObserverView()); | 3196 std::unique_ptr<ObserverView> v2(new ObserverView()); |
3196 v2->AddChildView(v3); | 3197 v2->AddChildView(v3); |
3197 | 3198 |
3198 // Make sure both |v2| and |v3| receive the ViewHierarchyChanged() | 3199 // Make sure both |v2| and |v3| receive the ViewHierarchyChanged() |
3199 // notification. | 3200 // notification. |
3200 EXPECT_TRUE(v2->has_add_details()); | 3201 EXPECT_TRUE(v2->has_add_details()); |
3201 EXPECT_FALSE(v2->has_remove_details()); | 3202 EXPECT_FALSE(v2->has_remove_details()); |
3202 EXPECT_EQ(v2.get(), v2->add_details().parent); | 3203 EXPECT_EQ(v2.get(), v2->add_details().parent); |
3203 EXPECT_EQ(v3, v2->add_details().child); | 3204 EXPECT_EQ(v3, v2->add_details().child); |
3204 EXPECT_EQ(NULL, v2->add_details().move_view); | 3205 EXPECT_EQ(NULL, v2->add_details().move_view); |
3205 | 3206 |
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4200 // Move c1 to the front. The layers should have moved too. | 4201 // Move c1 to the front. The layers should have moved too. |
4201 content->ReorderChildView(c1, -1); | 4202 content->ReorderChildView(c1, -1); |
4202 EXPECT_EQ(c1->layer(), parent_layer->children()[1]); | 4203 EXPECT_EQ(c1->layer(), parent_layer->children()[1]); |
4203 EXPECT_EQ(c2->layer(), parent_layer->children()[0]); | 4204 EXPECT_EQ(c2->layer(), parent_layer->children()[0]); |
4204 } | 4205 } |
4205 | 4206 |
4206 // Verifies that the layer of a view can be acquired properly. | 4207 // Verifies that the layer of a view can be acquired properly. |
4207 TEST_F(ViewLayerTest, AcquireLayer) { | 4208 TEST_F(ViewLayerTest, AcquireLayer) { |
4208 View* content = new View; | 4209 View* content = new View; |
4209 widget()->SetContentsView(content); | 4210 widget()->SetContentsView(content); |
4210 scoped_ptr<View> c1(new View); | 4211 std::unique_ptr<View> c1(new View); |
4211 c1->SetPaintToLayer(true); | 4212 c1->SetPaintToLayer(true); |
4212 EXPECT_TRUE(c1->layer()); | 4213 EXPECT_TRUE(c1->layer()); |
4213 content->AddChildView(c1.get()); | 4214 content->AddChildView(c1.get()); |
4214 | 4215 |
4215 scoped_ptr<ui::Layer> layer(c1->AcquireLayer()); | 4216 std::unique_ptr<ui::Layer> layer(c1->AcquireLayer()); |
4216 EXPECT_EQ(layer.get(), c1->layer()); | 4217 EXPECT_EQ(layer.get(), c1->layer()); |
4217 | 4218 |
4218 scoped_ptr<ui::Layer> layer2(c1->RecreateLayer()); | 4219 std::unique_ptr<ui::Layer> layer2(c1->RecreateLayer()); |
4219 EXPECT_NE(c1->layer(), layer2.get()); | 4220 EXPECT_NE(c1->layer(), layer2.get()); |
4220 | 4221 |
4221 // Destroy view before destroying layer. | 4222 // Destroy view before destroying layer. |
4222 c1.reset(); | 4223 c1.reset(); |
4223 } | 4224 } |
4224 | 4225 |
4225 // Verify the z-order of the layers as a result of calling RecreateLayer(). | 4226 // Verify the z-order of the layers as a result of calling RecreateLayer(). |
4226 TEST_F(ViewLayerTest, RecreateLayerZOrder) { | 4227 TEST_F(ViewLayerTest, RecreateLayerZOrder) { |
4227 scoped_ptr<View> v(new View()); | 4228 std::unique_ptr<View> v(new View()); |
4228 v->SetPaintToLayer(true); | 4229 v->SetPaintToLayer(true); |
4229 | 4230 |
4230 View* v1 = new View(); | 4231 View* v1 = new View(); |
4231 v1->SetPaintToLayer(true); | 4232 v1->SetPaintToLayer(true); |
4232 v->AddChildView(v1); | 4233 v->AddChildView(v1); |
4233 View* v2 = new View(); | 4234 View* v2 = new View(); |
4234 v2->SetPaintToLayer(true); | 4235 v2->SetPaintToLayer(true); |
4235 v->AddChildView(v2); | 4236 v->AddChildView(v2); |
4236 | 4237 |
4237 // Test the initial z-order. | 4238 // Test the initial z-order. |
4238 const std::vector<ui::Layer*>& child_layers_pre = v->layer()->children(); | 4239 const std::vector<ui::Layer*>& child_layers_pre = v->layer()->children(); |
4239 ASSERT_EQ(2u, child_layers_pre.size()); | 4240 ASSERT_EQ(2u, child_layers_pre.size()); |
4240 EXPECT_EQ(v1->layer(), child_layers_pre[0]); | 4241 EXPECT_EQ(v1->layer(), child_layers_pre[0]); |
4241 EXPECT_EQ(v2->layer(), child_layers_pre[1]); | 4242 EXPECT_EQ(v2->layer(), child_layers_pre[1]); |
4242 | 4243 |
4243 scoped_ptr<ui::Layer> v1_old_layer(v1->RecreateLayer()); | 4244 std::unique_ptr<ui::Layer> v1_old_layer(v1->RecreateLayer()); |
4244 | 4245 |
4245 // Test the new layer order. We expect: |v1| |v1_old_layer| |v2|. | 4246 // Test the new layer order. We expect: |v1| |v1_old_layer| |v2|. |
4246 // for |v1| and |v2|. | 4247 // for |v1| and |v2|. |
4247 const std::vector<ui::Layer*>& child_layers_post = v->layer()->children(); | 4248 const std::vector<ui::Layer*>& child_layers_post = v->layer()->children(); |
4248 ASSERT_EQ(3u, child_layers_post.size()); | 4249 ASSERT_EQ(3u, child_layers_post.size()); |
4249 EXPECT_EQ(v1->layer(), child_layers_post[0]); | 4250 EXPECT_EQ(v1->layer(), child_layers_post[0]); |
4250 EXPECT_EQ(v1_old_layer.get(), child_layers_post[1]); | 4251 EXPECT_EQ(v1_old_layer.get(), child_layers_post[1]); |
4251 EXPECT_EQ(v2->layer(), child_layers_post[2]); | 4252 EXPECT_EQ(v2->layer(), child_layers_post[2]); |
4252 } | 4253 } |
4253 | 4254 |
(...skipping 11 matching lines...) Expand all Loading... |
4265 v->AddChildView(v2); | 4266 v->AddChildView(v2); |
4266 | 4267 |
4267 ui::Layer* root_layer = GetRootLayer(); | 4268 ui::Layer* root_layer = GetRootLayer(); |
4268 | 4269 |
4269 // Test the initial z-order. | 4270 // Test the initial z-order. |
4270 const std::vector<ui::Layer*>& child_layers_pre = root_layer->children(); | 4271 const std::vector<ui::Layer*>& child_layers_pre = root_layer->children(); |
4271 ASSERT_EQ(2u, child_layers_pre.size()); | 4272 ASSERT_EQ(2u, child_layers_pre.size()); |
4272 EXPECT_EQ(v1->layer(), child_layers_pre[0]); | 4273 EXPECT_EQ(v1->layer(), child_layers_pre[0]); |
4273 EXPECT_EQ(v2->layer(), child_layers_pre[1]); | 4274 EXPECT_EQ(v2->layer(), child_layers_pre[1]); |
4274 | 4275 |
4275 scoped_ptr<ui::Layer> v1_old_layer(v1->RecreateLayer()); | 4276 std::unique_ptr<ui::Layer> v1_old_layer(v1->RecreateLayer()); |
4276 | 4277 |
4277 // Test the new layer order. We expect: |v1| |v1_old_layer| |v2|. | 4278 // Test the new layer order. We expect: |v1| |v1_old_layer| |v2|. |
4278 const std::vector<ui::Layer*>& child_layers_post = root_layer->children(); | 4279 const std::vector<ui::Layer*>& child_layers_post = root_layer->children(); |
4279 ASSERT_EQ(3u, child_layers_post.size()); | 4280 ASSERT_EQ(3u, child_layers_post.size()); |
4280 EXPECT_EQ(v1->layer(), child_layers_post[0]); | 4281 EXPECT_EQ(v1->layer(), child_layers_post[0]); |
4281 EXPECT_EQ(v1_old_layer.get(), child_layers_post[1]); | 4282 EXPECT_EQ(v1_old_layer.get(), child_layers_post[1]); |
4282 EXPECT_EQ(v2->layer(), child_layers_post[2]); | 4283 EXPECT_EQ(v2->layer(), child_layers_post[2]); |
4283 } | 4284 } |
4284 | 4285 |
4285 // Verifies RecreateLayer() moves all Layers over, even those that don't have | 4286 // Verifies RecreateLayer() moves all Layers over, even those that don't have |
4286 // a View. | 4287 // a View. |
4287 TEST_F(ViewLayerTest, RecreateLayerMovesNonViewChildren) { | 4288 TEST_F(ViewLayerTest, RecreateLayerMovesNonViewChildren) { |
4288 View v; | 4289 View v; |
4289 v.SetPaintToLayer(true); | 4290 v.SetPaintToLayer(true); |
4290 View child; | 4291 View child; |
4291 child.SetPaintToLayer(true); | 4292 child.SetPaintToLayer(true); |
4292 v.AddChildView(&child); | 4293 v.AddChildView(&child); |
4293 ASSERT_TRUE(v.layer() != NULL); | 4294 ASSERT_TRUE(v.layer() != NULL); |
4294 ASSERT_EQ(1u, v.layer()->children().size()); | 4295 ASSERT_EQ(1u, v.layer()->children().size()); |
4295 EXPECT_EQ(v.layer()->children()[0], child.layer()); | 4296 EXPECT_EQ(v.layer()->children()[0], child.layer()); |
4296 | 4297 |
4297 ui::Layer layer(ui::LAYER_NOT_DRAWN); | 4298 ui::Layer layer(ui::LAYER_NOT_DRAWN); |
4298 v.layer()->Add(&layer); | 4299 v.layer()->Add(&layer); |
4299 v.layer()->StackAtBottom(&layer); | 4300 v.layer()->StackAtBottom(&layer); |
4300 | 4301 |
4301 scoped_ptr<ui::Layer> old_layer(v.RecreateLayer()); | 4302 std::unique_ptr<ui::Layer> old_layer(v.RecreateLayer()); |
4302 | 4303 |
4303 // All children should be moved from old layer to new layer. | 4304 // All children should be moved from old layer to new layer. |
4304 ASSERT_TRUE(old_layer.get() != NULL); | 4305 ASSERT_TRUE(old_layer.get() != NULL); |
4305 EXPECT_TRUE(old_layer->children().empty()); | 4306 EXPECT_TRUE(old_layer->children().empty()); |
4306 | 4307 |
4307 // And new layer should have the two children. | 4308 // And new layer should have the two children. |
4308 ASSERT_TRUE(v.layer() != NULL); | 4309 ASSERT_TRUE(v.layer() != NULL); |
4309 ASSERT_EQ(2u, v.layer()->children().size()); | 4310 ASSERT_EQ(2u, v.layer()->children().size()); |
4310 EXPECT_EQ(v.layer()->children()[0], &layer); | 4311 EXPECT_EQ(v.layer()->children()[0], &layer); |
4311 EXPECT_EQ(v.layer()->children()[1], child.layer()); | 4312 EXPECT_EQ(v.layer()->children()[1], child.layer()); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4397 TEST_F(ViewTest, OnNativeThemeChanged) { | 4398 TEST_F(ViewTest, OnNativeThemeChanged) { |
4398 TestView* test_view = new TestView(); | 4399 TestView* test_view = new TestView(); |
4399 EXPECT_FALSE(test_view->native_theme_); | 4400 EXPECT_FALSE(test_view->native_theme_); |
4400 TestView* test_view_child = new TestView(); | 4401 TestView* test_view_child = new TestView(); |
4401 EXPECT_FALSE(test_view_child->native_theme_); | 4402 EXPECT_FALSE(test_view_child->native_theme_); |
4402 | 4403 |
4403 // Child view added before the widget hierarchy exists should get the | 4404 // Child view added before the widget hierarchy exists should get the |
4404 // new native theme notification. | 4405 // new native theme notification. |
4405 test_view->AddChildView(test_view_child); | 4406 test_view->AddChildView(test_view_child); |
4406 | 4407 |
4407 scoped_ptr<Widget> widget(new Widget); | 4408 std::unique_ptr<Widget> widget(new Widget); |
4408 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); | 4409 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); |
4409 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 4410 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
4410 widget->Init(params); | 4411 widget->Init(params); |
4411 | 4412 |
4412 widget->GetRootView()->AddChildView(test_view); | 4413 widget->GetRootView()->AddChildView(test_view); |
4413 EXPECT_TRUE(test_view->native_theme_); | 4414 EXPECT_TRUE(test_view->native_theme_); |
4414 EXPECT_EQ(widget->GetNativeTheme(), test_view->native_theme_); | 4415 EXPECT_EQ(widget->GetNativeTheme(), test_view->native_theme_); |
4415 EXPECT_TRUE(test_view_child->native_theme_); | 4416 EXPECT_TRUE(test_view_child->native_theme_); |
4416 EXPECT_EQ(widget->GetNativeTheme(), test_view_child->native_theme_); | 4417 EXPECT_EQ(widget->GetNativeTheme(), test_view_child->native_theme_); |
4417 | 4418 |
(...skipping 19 matching lines...) Expand all Loading... |
4437 } | 4438 } |
4438 | 4439 |
4439 TestView* view_; | 4440 TestView* view_; |
4440 bool had_mouse_event_; | 4441 bool had_mouse_event_; |
4441 }; | 4442 }; |
4442 | 4443 |
4443 TEST_F(ViewTest, ScopedTargetHandlerReceivesEvents) { | 4444 TEST_F(ViewTest, ScopedTargetHandlerReceivesEvents) { |
4444 TestView* v = new TestView(); | 4445 TestView* v = new TestView(); |
4445 v->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); | 4446 v->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); |
4446 | 4447 |
4447 scoped_ptr<Widget> widget(new Widget); | 4448 std::unique_ptr<Widget> widget(new Widget); |
4448 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 4449 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
4449 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 4450 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
4450 params.bounds = gfx::Rect(50, 50, 350, 350); | 4451 params.bounds = gfx::Rect(50, 50, 350, 350); |
4451 widget->Init(params); | 4452 widget->Init(params); |
4452 View* root = widget->GetRootView(); | 4453 View* root = widget->GetRootView(); |
4453 root->AddChildView(v); | 4454 root->AddChildView(v); |
4454 v->Reset(); | 4455 v->Reset(); |
4455 { | 4456 { |
4456 TestEventHandler handler(v); | 4457 TestEventHandler handler(v); |
4457 ui::ScopedTargetHandler scoped_target_handler(v, &handler); | 4458 ui::ScopedTargetHandler scoped_target_handler(v, &handler); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4564 widget.Init(params); | 4565 widget.Init(params); |
4565 | 4566 |
4566 AddViewWithChildLayer(widget.GetRootView()); | 4567 AddViewWithChildLayer(widget.GetRootView()); |
4567 ViewThatAddsViewInOnNativeThemeChanged* v = | 4568 ViewThatAddsViewInOnNativeThemeChanged* v = |
4568 new ViewThatAddsViewInOnNativeThemeChanged; | 4569 new ViewThatAddsViewInOnNativeThemeChanged; |
4569 widget.GetRootView()->AddChildView(v); | 4570 widget.GetRootView()->AddChildView(v); |
4570 EXPECT_TRUE(v->on_native_theme_changed_called()); | 4571 EXPECT_TRUE(v->on_native_theme_changed_called()); |
4571 } | 4572 } |
4572 | 4573 |
4573 } // namespace views | 4574 } // namespace views |
OLD | NEW |