Skip to content

Commit

Permalink
Convert enum to enum class for FocusManager::Direction
Browse files Browse the repository at this point in the history
Use enum class instead of enum for FocusManager::Direction.
enum class is more type safety.

Bug: 940736
Change-Id: I2cce66fe638739b602637f756e6470d3a553e75c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2497733
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Hwanseung Lee <hwanseung@chromium.org>
Cr-Commit-Position: refs/heads/master@{#821568}
  • Loading branch information
hwanseung authored and Commit Bot committed Oct 28, 2020
1 parent 8e4ca09 commit 5b02078
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 24 deletions.
13 changes: 7 additions & 6 deletions ash/focus_cycler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,11 @@ void FocusCycler::RotateFocus(Direction direction) {
views::Widget* widget = views::Widget::GetWidgetForNativeView(window);
// First try to rotate focus within the active widget. If that succeeds,
// we're done.
if (widget && widget->GetFocusManager()->RotatePaneFocus(
direction == BACKWARD ? views::FocusManager::kBackward
: views::FocusManager::kForward,
views::FocusManager::FocusCycleWrapping::kDisabled)) {
if (widget &&
widget->GetFocusManager()->RotatePaneFocus(
direction == BACKWARD ? views::FocusManager::Direction::kBackward
: views::FocusManager::Direction::kForward,
views::FocusManager::FocusCycleWrapping::kDisabled)) {
return;
}
}
Expand Down Expand Up @@ -94,8 +95,8 @@ void FocusCycler::RotateFocus(Direction direction) {
views::FocusManager* focus_manager = widget->GetFocusManager();
focus_manager->ClearFocus();
focus_manager->RotatePaneFocus(
direction == BACKWARD ? views::FocusManager::kBackward
: views::FocusManager::kForward,
direction == BACKWARD ? views::FocusManager::Direction::kBackward
: views::FocusManager::Direction::kForward,
views::FocusManager::FocusCycleWrapping::kEnabled);
break;
} else {
Expand Down
3 changes: 2 additions & 1 deletion chrome/browser/ui/views/frame/browser_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1570,7 +1570,8 @@ void BrowserView::RotatePaneFocus(bool forwards) {
return;

GetFocusManager()->RotatePaneFocus(
forwards ? views::FocusManager::kForward : views::FocusManager::kBackward,
forwards ? views::FocusManager::Direction::kForward
: views::FocusManager::Direction::kBackward,
views::FocusManager::FocusCycleWrapping::kEnabled);
}

Expand Down
4 changes: 2 additions & 2 deletions ui/views/focus/focus_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ bool FocusManager::RotatePaneFocus(Direction direction,

// Initialize |index| to an appropriate starting index if nothing is
// focused initially.
int index = direction == kBackward ? 0 : count - 1;
int index = direction == Direction::kBackward ? 0 : count - 1;

// Check to see if a pane already has focus and update the index accordingly.
const views::View* focused_view = GetFocusedView();
Expand All @@ -185,7 +185,7 @@ bool FocusManager::RotatePaneFocus(Direction direction,
// Rotate focus.
int start_index = index;
for (;;) {
if (direction == kBackward)
if (direction == Direction::kBackward)
index--;
else
index++;
Expand Down
2 changes: 1 addition & 1 deletion ui/views/focus/focus_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ class VIEWS_EXPORT FocusManager : public ViewObserver {
};

// TODO(dmazzoni): use Direction in place of bool reverse throughout.
enum Direction { kForward, kBackward };
enum class Direction { kForward, kBackward };

enum class FocusCycleWrapping { kEnabled, kDisabled };

Expand Down
30 changes: 16 additions & 14 deletions ui/views/focus/focus_manager_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -509,44 +509,46 @@ TEST_F(FocusManagerTest, RotatePaneFocus) {
FocusManager* focus_manager = GetWidget()->GetFocusManager();

// Advance forwards. Focus should stay trapped within each pane.
EXPECT_TRUE(focus_manager->RotatePaneFocus(
FocusManager::kForward, FocusManager::FocusCycleWrapping::kEnabled));
using Direction = FocusManager::Direction;
using FocusCycleWrapping = FocusManager::FocusCycleWrapping;
EXPECT_TRUE(focus_manager->RotatePaneFocus(Direction::kForward,
FocusCycleWrapping::kEnabled));
EXPECT_EQ(v1, focus_manager->GetFocusedView());
focus_manager->AdvanceFocus(false);
EXPECT_EQ(v2, focus_manager->GetFocusedView());
focus_manager->AdvanceFocus(false);
EXPECT_EQ(v1, focus_manager->GetFocusedView());

EXPECT_TRUE(focus_manager->RotatePaneFocus(
FocusManager::kForward, FocusManager::FocusCycleWrapping::kEnabled));
EXPECT_TRUE(focus_manager->RotatePaneFocus(Direction::kForward,
FocusCycleWrapping::kEnabled));
EXPECT_EQ(v3, focus_manager->GetFocusedView());
focus_manager->AdvanceFocus(false);
EXPECT_EQ(v4, focus_manager->GetFocusedView());
focus_manager->AdvanceFocus(false);
EXPECT_EQ(v3, focus_manager->GetFocusedView());

EXPECT_TRUE(focus_manager->RotatePaneFocus(
FocusManager::kForward, FocusManager::FocusCycleWrapping::kEnabled));
EXPECT_TRUE(focus_manager->RotatePaneFocus(Direction::kForward,
FocusCycleWrapping::kEnabled));
EXPECT_EQ(v1, focus_manager->GetFocusedView());

// Advance backwards.
EXPECT_TRUE(focus_manager->RotatePaneFocus(
FocusManager::kBackward, FocusManager::FocusCycleWrapping::kEnabled));
EXPECT_TRUE(focus_manager->RotatePaneFocus(Direction::kBackward,
FocusCycleWrapping::kEnabled));
EXPECT_EQ(v3, focus_manager->GetFocusedView());

EXPECT_TRUE(focus_manager->RotatePaneFocus(
FocusManager::kBackward, FocusManager::FocusCycleWrapping::kEnabled));
EXPECT_TRUE(focus_manager->RotatePaneFocus(Direction::kBackward,
FocusCycleWrapping::kEnabled));
EXPECT_EQ(v1, focus_manager->GetFocusedView());

// Advance without wrap. When it gets to the end of the list of
// panes, RotatePaneFocus should return false but the current
// focused view shouldn't change.
EXPECT_TRUE(focus_manager->RotatePaneFocus(
FocusManager::kForward, FocusManager::FocusCycleWrapping::kDisabled));
EXPECT_TRUE(focus_manager->RotatePaneFocus(Direction::kForward,
FocusCycleWrapping::kDisabled));
EXPECT_EQ(v3, focus_manager->GetFocusedView());

EXPECT_FALSE(focus_manager->RotatePaneFocus(
FocusManager::kForward, FocusManager::FocusCycleWrapping::kDisabled));
EXPECT_FALSE(focus_manager->RotatePaneFocus(Direction::kForward,
FocusCycleWrapping::kDisabled));
EXPECT_EQ(v3, focus_manager->GetFocusedView());
}

Expand Down

0 comments on commit 5b02078

Please sign in to comment.