| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/ref_counted.h" | 6 #include "base/ref_counted.h" |
| 7 #include "chrome/browser/automation/ui_controls.h" | 7 #include "chrome/browser/automation/ui_controls.h" |
| 8 #include "chrome/browser/browser.h" | 8 #include "chrome/browser/browser.h" |
| 9 #include "chrome/browser/tab_contents/web_contents.h" | 9 #include "chrome/browser/tab_contents/web_contents.h" |
| 10 #include "chrome/browser/view_ids.h" | 10 #include "chrome/browser/view_ids.h" |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 }; | 257 }; |
| 258 | 258 |
| 259 // Test forward focus traversal. | 259 // Test forward focus traversal. |
| 260 for (int i = 0; i < 3; ++i) { | 260 for (int i = 0; i < 3; ++i) { |
| 261 // Location bar should be focused. | 261 // Location bar should be focused. |
| 262 EXPECT_EQ(location_bar, focus_manager->GetFocusedView()); | 262 EXPECT_EQ(location_bar, focus_manager->GetFocusedView()); |
| 263 | 263 |
| 264 // Now let's press tab to move the focus. | 264 // Now let's press tab to move the focus. |
| 265 for (int j = 0; j < 7; ++j) { | 265 for (int j = 0; j < 7; ++j) { |
| 266 // Let's make sure the focus is on the expected element in the page. | 266 // Let's make sure the focus is on the expected element in the page. |
| 267 ui_test_utils::JavaScriptRunner js_runner( | 267 std::string actual; |
| 268 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
| 268 browser()->GetSelectedTabContents()->AsWebContents(), | 269 browser()->GetSelectedTabContents()->AsWebContents(), |
| 269 L"", | 270 L"", |
| 270 L"window.domAutomationController.send(getFocusedElement());"); | 271 L"window.domAutomationController.send(getFocusedElement());", |
| 271 std::string actual = js_runner.Run(); | 272 &actual)); |
| 272 ASSERT_STREQ(kExpElementIDs[j], actual.c_str()); | 273 ASSERT_STREQ(kExpElementIDs[j], actual.c_str()); |
| 273 | 274 |
| 274 ui_controls::SendKeyPressNotifyWhenDone(L'\t', false, false, false, | 275 ui_controls::SendKeyPressNotifyWhenDone(L'\t', false, false, false, |
| 275 new MessageLoop::QuitTask()); | 276 new MessageLoop::QuitTask()); |
| 276 ui_test_utils::RunMessageLoop(); | 277 ui_test_utils::RunMessageLoop(); |
| 277 // Ideally, we wouldn't sleep here and instead would use the event | 278 // Ideally, we wouldn't sleep here and instead would use the event |
| 278 // processed ack notification from the renderer. I am reluctant to create | 279 // processed ack notification from the renderer. I am reluctant to create |
| 279 // a new notification/callback for that purpose just for this test. | 280 // a new notification/callback for that purpose just for this test. |
| 280 ::Sleep(kActionDelayMs); | 281 ::Sleep(kActionDelayMs); |
| 281 } | 282 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 293 EXPECT_EQ(location_bar, focus_manager->GetFocusedView()); | 294 EXPECT_EQ(location_bar, focus_manager->GetFocusedView()); |
| 294 | 295 |
| 295 // Now let's press shift-tab to move the focus in reverse. | 296 // Now let's press shift-tab to move the focus in reverse. |
| 296 for (int j = 0; j < 7; ++j) { | 297 for (int j = 0; j < 7; ++j) { |
| 297 ui_controls::SendKeyPressNotifyWhenDone(L'\t', false, true, false, | 298 ui_controls::SendKeyPressNotifyWhenDone(L'\t', false, true, false, |
| 298 new MessageLoop::QuitTask()); | 299 new MessageLoop::QuitTask()); |
| 299 ui_test_utils::RunMessageLoop(); | 300 ui_test_utils::RunMessageLoop(); |
| 300 ::Sleep(kActionDelayMs); | 301 ::Sleep(kActionDelayMs); |
| 301 | 302 |
| 302 // Let's make sure the focus is on the expected element in the page. | 303 // Let's make sure the focus is on the expected element in the page. |
| 303 ui_test_utils::JavaScriptRunner js_runner( | 304 std::string actual; |
| 305 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
| 304 browser()->GetSelectedTabContents()->AsWebContents(), | 306 browser()->GetSelectedTabContents()->AsWebContents(), |
| 305 L"", | 307 L"", |
| 306 L"window.domAutomationController.send(getFocusedElement());"); | 308 L"window.domAutomationController.send(getFocusedElement());", |
| 307 std::string actual = js_runner.Run(); | 309 &actual)); |
| 308 ASSERT_STREQ(kExpElementIDs[6 - j], actual.c_str()); | 310 ASSERT_STREQ(kExpElementIDs[6 - j], actual.c_str()); |
| 309 } | 311 } |
| 310 | 312 |
| 311 // At this point the renderer has sent us a message asking to advance the | 313 // At this point the renderer has sent us a message asking to advance the |
| 312 // focus (as the end of the focus loop was reached in the renderer). | 314 // focus (as the end of the focus loop was reached in the renderer). |
| 313 // We need to run the message loop to process it. | 315 // We need to run the message loop to process it. |
| 314 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); | 316 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
| 315 ui_test_utils::RunMessageLoop(); | 317 ui_test_utils::RunMessageLoop(); |
| 316 } | 318 } |
| 317 } | 319 } |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 | 408 |
| 407 // Open the new tab, focus should be on the location bar. | 409 // Open the new tab, focus should be on the location bar. |
| 408 browser()->NewTab(); | 410 browser()->NewTab(); |
| 409 EXPECT_EQ(browser_view->GetLocationBarView(), | 411 EXPECT_EQ(browser_view->GetLocationBarView(), |
| 410 focus_manager->GetFocusedView()); | 412 focus_manager->GetFocusedView()); |
| 411 | 413 |
| 412 // Open the download tab, focus should be on the tab contents. | 414 // Open the download tab, focus should be on the tab contents. |
| 413 browser()->ShowDownloadsTab(); | 415 browser()->ShowDownloadsTab(); |
| 414 EXPECT_EQ(browser_view->GetContentsView(), focus_manager->GetFocusedView()); | 416 EXPECT_EQ(browser_view->GetContentsView(), focus_manager->GetFocusedView()); |
| 415 } | 417 } |
| OLD | NEW |