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 "chrome/browser/ui/views/ash/tab_scrubber.h" | 5 #include "chrome/browser/ui/views/ash/tab_scrubber.h" |
6 | 6 |
7 #include "ash/display/event_transformation_handler.h" | 7 #include "ash/display/event_transformation_handler.h" |
8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 } | 73 } |
74 | 74 |
75 int GetTabCenter(Browser* browser, int index) { | 75 int GetTabCenter(Browser* browser, int index) { |
76 return GetTabStrip(browser)->tab_at(index)->bounds().CenterPoint().x(); | 76 return GetTabStrip(browser)->tab_at(index)->bounds().CenterPoint().x(); |
77 } | 77 } |
78 | 78 |
79 // Sends one scroll event synchronously without initial or final | 79 // Sends one scroll event synchronously without initial or final |
80 // fling events. | 80 // fling events. |
81 void SendScrubEvent(Browser* browser, int index) { | 81 void SendScrubEvent(Browser* browser, int index) { |
82 aura::Window* window = browser->window()->GetNativeWindow(); | 82 aura::Window* window = browser->window()->GetNativeWindow(); |
83 aura::RootWindow* root = window->GetRootWindow(); | 83 aura::Window* root = window->GetRootWindow(); |
84 aura::test::EventGenerator event_generator(root, window); | 84 aura::test::EventGenerator event_generator(root, window); |
85 int active_index = browser->tab_strip_model()->active_index(); | 85 int active_index = browser->tab_strip_model()->active_index(); |
86 TabScrubber::Direction direction = index < active_index ? | 86 TabScrubber::Direction direction = index < active_index ? |
87 TabScrubber::LEFT : TabScrubber::RIGHT; | 87 TabScrubber::LEFT : TabScrubber::RIGHT; |
88 int offset = GetTabCenter(browser, index) - | 88 int offset = GetTabCenter(browser, index) - |
89 GetStartX(browser, active_index, direction); | 89 GetStartX(browser, active_index, direction); |
90 ui::ScrollEvent scroll_event(ui::ET_SCROLL, | 90 ui::ScrollEvent scroll_event(ui::ET_SCROLL, |
91 gfx::Point(0, 0), | 91 gfx::Point(0, 0), |
92 ui::EventTimeForNow(), | 92 ui::EventTimeForNow(), |
93 0, | 93 0, |
94 offset, 0, | 94 offset, 0, |
95 offset, 0, | 95 offset, 0, |
96 3); | 96 3); |
97 event_generator.Dispatch(&scroll_event); | 97 event_generator.Dispatch(&scroll_event); |
98 } | 98 } |
99 | 99 |
100 enum ScrubType { | 100 enum ScrubType { |
101 EACH_TAB, | 101 EACH_TAB, |
102 SKIP_TABS, | 102 SKIP_TABS, |
103 REPEAT_TABS, | 103 REPEAT_TABS, |
104 }; | 104 }; |
105 | 105 |
106 // Sends asynchronous events and waits for tab at |index| to become | 106 // Sends asynchronous events and waits for tab at |index| to become |
107 // active. | 107 // active. |
108 void Scrub(Browser* browser, int index, ScrubType scrub_type) { | 108 void Scrub(Browser* browser, int index, ScrubType scrub_type) { |
109 aura::Window* window = browser->window()->GetNativeWindow(); | 109 aura::Window* window = browser->window()->GetNativeWindow(); |
110 aura::RootWindow* root = window->GetRootWindow(); | 110 aura::Window* root = window->GetRootWindow(); |
111 aura::test::EventGenerator event_generator(root, window); | 111 aura::test::EventGenerator event_generator(root, window); |
112 event_generator.set_async(true); | 112 event_generator.set_async(true); |
113 activation_order_.clear(); | 113 activation_order_.clear(); |
114 int active_index = browser->tab_strip_model()->active_index(); | 114 int active_index = browser->tab_strip_model()->active_index(); |
115 ASSERT_NE(index, active_index); | 115 ASSERT_NE(index, active_index); |
116 ASSERT_TRUE(scrub_type != SKIP_TABS || ((index - active_index) % 2) == 0); | 116 ASSERT_TRUE(scrub_type != SKIP_TABS || ((index - active_index) % 2) == 0); |
117 TabScrubber::Direction direction; | 117 TabScrubber::Direction direction; |
118 int increment; | 118 int increment; |
119 if (index < active_index) { | 119 if (index < active_index) { |
120 direction = TabScrubber::LEFT; | 120 direction = TabScrubber::LEFT; |
(...skipping 22 matching lines...) Expand all Loading... |
143 3); | 143 3); |
144 RunUntilTabActive(browser, index); | 144 RunUntilTabActive(browser, index); |
145 } | 145 } |
146 | 146 |
147 // Sends events and waits for tab at |index| to become active | 147 // Sends events and waits for tab at |index| to become active |
148 // if it's different from the currently active tab. | 148 // if it's different from the currently active tab. |
149 // If the active tab is expected to stay the same, send events | 149 // If the active tab is expected to stay the same, send events |
150 // synchronously (as we don't have anything to wait for). | 150 // synchronously (as we don't have anything to wait for). |
151 void SendScrubSequence(Browser* browser, int x_offset, int index) { | 151 void SendScrubSequence(Browser* browser, int x_offset, int index) { |
152 aura::Window* window = browser->window()->GetNativeWindow(); | 152 aura::Window* window = browser->window()->GetNativeWindow(); |
153 aura::RootWindow* root = window->GetRootWindow(); | 153 aura::Window* root = window->GetRootWindow(); |
154 aura::test::EventGenerator event_generator(root, window); | 154 aura::test::EventGenerator event_generator(root, window); |
155 bool wait_for_active = false; | 155 bool wait_for_active = false; |
156 if (index != browser->tab_strip_model()->active_index()) { | 156 if (index != browser->tab_strip_model()->active_index()) { |
157 wait_for_active = true; | 157 wait_for_active = true; |
158 event_generator.set_async(true); | 158 event_generator.set_async(true); |
159 } | 159 } |
160 event_generator.ScrollSequence(gfx::Point(0, 0), | 160 event_generator.ScrollSequence(gfx::Point(0, 0), |
161 ui::EventTimeForNow(), | 161 ui::EventTimeForNow(), |
162 x_offset, | 162 x_offset, |
163 0, | 163 0, |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 IN_PROC_BROWSER_TEST_F(TabScrubberTest, CloseBrowser) { | 415 IN_PROC_BROWSER_TEST_F(TabScrubberTest, CloseBrowser) { |
416 AddTabs(browser(), 1); | 416 AddTabs(browser(), 1); |
417 | 417 |
418 SendScrubEvent(browser(), 0); | 418 SendScrubEvent(browser(), 0); |
419 EXPECT_TRUE(TabScrubber::GetInstance()->IsActivationPending()); | 419 EXPECT_TRUE(TabScrubber::GetInstance()->IsActivationPending()); |
420 browser()->window()->Close(); | 420 browser()->window()->Close(); |
421 EXPECT_FALSE(TabScrubber::GetInstance()->IsActivationPending()); | 421 EXPECT_FALSE(TabScrubber::GetInstance()->IsActivationPending()); |
422 } | 422 } |
423 | 423 |
424 #endif // OS_CHROMEOS | 424 #endif // OS_CHROMEOS |
OLD | NEW |