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

Side by Side Diff: ui/views/view_unittest.cc

Issue 1898633004: Views: Add new SetFocusBehavior method. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 4 years, 7 months 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
« no previous file with comments | « ui/views/view_targeter_unittest.cc ('k') | ui/views/widget/native_widget_mac_unittest.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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" 5 #include "ui/views/view.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 3408 matching lines...) Expand 10 before | Expand all | Expand 10 after
3419 3419
3420 View* child = new View(); 3420 View* child = new View();
3421 root.AddChildView(child); 3421 root.AddChildView(child);
3422 3422
3423 View* foo1 = new View(); 3423 View* foo1 = new View();
3424 child->AddChildView(foo1); 3424 child->AddChildView(foo1);
3425 View* foo2 = new View(); 3425 View* foo2 = new View();
3426 child->AddChildView(foo2); 3426 child->AddChildView(foo2);
3427 View* foo3 = new View(); 3427 View* foo3 = new View();
3428 child->AddChildView(foo3); 3428 child->AddChildView(foo3);
3429 foo1->SetFocusable(true); 3429 foo1->SetFocusBehavior(View::FocusBehavior::ALWAYS);
3430 foo2->SetFocusable(true); 3430 foo2->SetFocusBehavior(View::FocusBehavior::ALWAYS);
3431 foo3->SetFocusable(true); 3431 foo3->SetFocusBehavior(View::FocusBehavior::ALWAYS);
3432 3432
3433 ASSERT_EQ(0, child->GetIndexOf(foo1)); 3433 ASSERT_EQ(0, child->GetIndexOf(foo1));
3434 ASSERT_EQ(1, child->GetIndexOf(foo2)); 3434 ASSERT_EQ(1, child->GetIndexOf(foo2));
3435 ASSERT_EQ(2, child->GetIndexOf(foo3)); 3435 ASSERT_EQ(2, child->GetIndexOf(foo3));
3436 ASSERT_EQ(foo2, foo1->GetNextFocusableView()); 3436 ASSERT_EQ(foo2, foo1->GetNextFocusableView());
3437 ASSERT_EQ(foo3, foo2->GetNextFocusableView()); 3437 ASSERT_EQ(foo3, foo2->GetNextFocusableView());
3438 ASSERT_EQ(NULL, foo3->GetNextFocusableView()); 3438 ASSERT_EQ(NULL, foo3->GetNextFocusableView());
3439 3439
3440 // Move |foo2| at the end. 3440 // Move |foo2| at the end.
3441 child->ReorderChildView(foo2, -1); 3441 child->ReorderChildView(foo2, -1);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
3566 }; 3566 };
3567 3567
3568 TEST_F(ViewTest, AdvanceFocusIfNecessaryForUnfocusableView) { 3568 TEST_F(ViewTest, AdvanceFocusIfNecessaryForUnfocusableView) {
3569 // Create a widget with two views and give the first one focus. 3569 // Create a widget with two views and give the first one focus.
3570 ActiveWidget widget; 3570 ActiveWidget widget;
3571 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 3571 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
3572 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 3572 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
3573 widget.Init(params); 3573 widget.Init(params);
3574 3574
3575 View* view1 = new View(); 3575 View* view1 = new View();
3576 view1->SetFocusable(true); 3576 view1->SetFocusBehavior(View::FocusBehavior::ALWAYS);
3577
3577 widget.GetRootView()->AddChildView(view1); 3578 widget.GetRootView()->AddChildView(view1);
3578 View* view2 = new View(); 3579 View* view2 = new View();
3579 view2->SetFocusable(true); 3580 view2->SetFocusBehavior(View::FocusBehavior::ALWAYS);
3580 widget.GetRootView()->AddChildView(view2); 3581 widget.GetRootView()->AddChildView(view2);
3581 3582
3582 FocusManager* focus_manager = widget.GetFocusManager(); 3583 FocusManager* focus_manager = widget.GetFocusManager();
3583 ASSERT_TRUE(focus_manager); 3584 ASSERT_TRUE(focus_manager);
3584 3585
3585 focus_manager->SetFocusedView(view1); 3586 focus_manager->SetFocusedView(view1);
3586 EXPECT_EQ(view1, focus_manager->GetFocusedView()); 3587 EXPECT_EQ(view1, focus_manager->GetFocusedView());
3587 3588
3588 // Disable the focused view and check if the next view gets focused. 3589 // Disable the focused view and check if the next view gets focused.
3589 view1->SetEnabled(false); 3590 view1->SetEnabled(false);
3590 EXPECT_EQ(view2, focus_manager->GetFocusedView()); 3591 EXPECT_EQ(view2, focus_manager->GetFocusedView());
3591 3592
3592 // Re-enable and re-focus. 3593 // Re-enable and re-focus.
3593 view1->SetEnabled(true); 3594 view1->SetEnabled(true);
3594 focus_manager->SetFocusedView(view1); 3595 focus_manager->SetFocusedView(view1);
3595 EXPECT_EQ(view1, focus_manager->GetFocusedView()); 3596 EXPECT_EQ(view1, focus_manager->GetFocusedView());
3596 3597
3597 // Hide the focused view and check it the next view gets focused. 3598 // Hide the focused view and check it the next view gets focused.
3598 view1->SetVisible(false); 3599 view1->SetVisible(false);
3599 EXPECT_EQ(view2, focus_manager->GetFocusedView()); 3600 EXPECT_EQ(view2, focus_manager->GetFocusedView());
3600 3601
3601 // Re-show and re-focus. 3602 // Re-show and re-focus.
3602 view1->SetVisible(true); 3603 view1->SetVisible(true);
3603 focus_manager->SetFocusedView(view1); 3604 focus_manager->SetFocusedView(view1);
3604 EXPECT_EQ(view1, focus_manager->GetFocusedView()); 3605 EXPECT_EQ(view1, focus_manager->GetFocusedView());
3605 3606
3606 // Set the focused view as not focusable and check if the next view gets 3607 // Set the focused view as not focusable and check if the next view gets
3607 // focused. 3608 // focused.
3608 view1->SetFocusable(false); 3609 view1->SetFocusBehavior(View::FocusBehavior::NEVER);
3609 EXPECT_EQ(view2, focus_manager->GetFocusedView()); 3610 EXPECT_EQ(view2, focus_manager->GetFocusedView());
3610 } 3611 }
3611 3612
3612 //////////////////////////////////////////////////////////////////////////////// 3613 ////////////////////////////////////////////////////////////////////////////////
3613 // Layers 3614 // Layers
3614 //////////////////////////////////////////////////////////////////////////////// 3615 ////////////////////////////////////////////////////////////////////////////////
3615 3616
3616 namespace { 3617 namespace {
3617 3618
3618 // Test implementation of LayerAnimator. 3619 // Test implementation of LayerAnimator.
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
4356 EXPECT_EQ("0.33 0.33", ToString(v11->layer()->subpixel_position_offset())); 4357 EXPECT_EQ("0.33 0.33", ToString(v11->layer()->subpixel_position_offset()));
4357 4358
4358 // Setting integral DSF should reset the offset. 4359 // Setting integral DSF should reset the offset.
4359 GetRootLayer()->GetCompositor()->SetScaleAndSize(2.0f, size); 4360 GetRootLayer()->GetCompositor()->SetScaleAndSize(2.0f, size);
4360 EXPECT_EQ("0.00 0.00", ToString(v11->layer()->subpixel_position_offset())); 4361 EXPECT_EQ("0.00 0.00", ToString(v11->layer()->subpixel_position_offset()));
4361 } 4362 }
4362 4363
4363 TEST_F(ViewTest, FocusableAssertions) { 4364 TEST_F(ViewTest, FocusableAssertions) {
4364 // View subclasses may change insets based on whether they are focusable, 4365 // View subclasses may change insets based on whether they are focusable,
4365 // which effects the preferred size. To avoid preferred size changing around 4366 // which effects the preferred size. To avoid preferred size changing around
4366 // these Views need to key off the last value set to SetFocusable(), not 4367 // these Views need to key off the last value set to SetFocusBehavior(), not
4367 // whether the View is focusable right now. For this reason it's important 4368 // whether the View is focusable right now. For this reason it's important
4368 // that focusable() return the last value passed to SetFocusable and not 4369 // that the return value of focusable() depends on the last value passed to
4369 // whether the View is focusable right now. 4370 // SetFocusBehavior and not whether the View is focusable right now.
4370 TestView view; 4371 TestView view;
4371 view.SetFocusable(true); 4372 view.SetFocusBehavior(View::FocusBehavior::ALWAYS);
4372 EXPECT_TRUE(view.focusable()); 4373 EXPECT_TRUE(view.focusable());
4373 view.SetEnabled(false); 4374 view.SetEnabled(false);
4374 EXPECT_TRUE(view.focusable()); 4375 EXPECT_TRUE(view.focusable());
4375 view.SetFocusable(false); 4376 view.SetFocusBehavior(View::FocusBehavior::NEVER);
4376 EXPECT_FALSE(view.focusable()); 4377 EXPECT_FALSE(view.focusable());
4377 } 4378 }
4378 4379
4379 // Verifies when a view is deleted it is removed from ViewStorage. 4380 // Verifies when a view is deleted it is removed from ViewStorage.
4380 TEST_F(ViewTest, UpdateViewStorageOnDelete) { 4381 TEST_F(ViewTest, UpdateViewStorageOnDelete) {
4381 ViewStorage* view_storage = ViewStorage::GetInstance(); 4382 ViewStorage* view_storage = ViewStorage::GetInstance();
4382 const int storage_id = view_storage->CreateStorageID(); 4383 const int storage_id = view_storage->CreateStorageID();
4383 { 4384 {
4384 View view; 4385 View view;
4385 view_storage->StoreView(storage_id, &view); 4386 view_storage->StoreView(storage_id, &view);
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
4565 widget.Init(params); 4566 widget.Init(params);
4566 4567
4567 AddViewWithChildLayer(widget.GetRootView()); 4568 AddViewWithChildLayer(widget.GetRootView());
4568 ViewThatAddsViewInOnNativeThemeChanged* v = 4569 ViewThatAddsViewInOnNativeThemeChanged* v =
4569 new ViewThatAddsViewInOnNativeThemeChanged; 4570 new ViewThatAddsViewInOnNativeThemeChanged;
4570 widget.GetRootView()->AddChildView(v); 4571 widget.GetRootView()->AddChildView(v);
4571 EXPECT_TRUE(v->on_native_theme_changed_called()); 4572 EXPECT_TRUE(v->on_native_theme_changed_called());
4572 } 4573 }
4573 4574
4574 } // namespace views 4575 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/view_targeter_unittest.cc ('k') | ui/views/widget/native_widget_mac_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698