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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/memory/shared_memory.h" | 9 #include "base/memory/shared_memory.h" |
10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 "data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="; | 399 "data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="; |
400 | 400 |
401 view()->saveImageFromDataURL(WebString::fromUTF8(image_data_url)); | 401 view()->saveImageFromDataURL(WebString::fromUTF8(image_data_url)); |
402 ProcessPendingMessages(); | 402 ProcessPendingMessages(); |
403 const IPC::Message* msg2 = render_thread_->sink().GetFirstMessageMatching( | 403 const IPC::Message* msg2 = render_thread_->sink().GetFirstMessageMatching( |
404 ViewHostMsg_SaveImageFromDataURL::ID); | 404 ViewHostMsg_SaveImageFromDataURL::ID); |
405 EXPECT_TRUE(msg2); | 405 EXPECT_TRUE(msg2); |
406 | 406 |
407 ViewHostMsg_SaveImageFromDataURL::Param param1; | 407 ViewHostMsg_SaveImageFromDataURL::Param param1; |
408 ViewHostMsg_SaveImageFromDataURL::Read(msg2, ¶m1); | 408 ViewHostMsg_SaveImageFromDataURL::Read(msg2, ¶m1); |
409 EXPECT_EQ(get<1>(param1).length(), image_data_url.length()); | 409 EXPECT_EQ(base::get<1>(param1).length(), image_data_url.length()); |
410 EXPECT_EQ(get<1>(param1), image_data_url); | 410 EXPECT_EQ(base::get<1>(param1), image_data_url); |
411 | 411 |
412 ProcessPendingMessages(); | 412 ProcessPendingMessages(); |
413 render_thread_->sink().ClearMessages(); | 413 render_thread_->sink().ClearMessages(); |
414 | 414 |
415 const std::string large_data_url(1024 * 1024 * 10 - 1, 'd'); | 415 const std::string large_data_url(1024 * 1024 * 10 - 1, 'd'); |
416 | 416 |
417 view()->saveImageFromDataURL(WebString::fromUTF8(large_data_url)); | 417 view()->saveImageFromDataURL(WebString::fromUTF8(large_data_url)); |
418 ProcessPendingMessages(); | 418 ProcessPendingMessages(); |
419 const IPC::Message* msg3 = render_thread_->sink().GetFirstMessageMatching( | 419 const IPC::Message* msg3 = render_thread_->sink().GetFirstMessageMatching( |
420 ViewHostMsg_SaveImageFromDataURL::ID); | 420 ViewHostMsg_SaveImageFromDataURL::ID); |
421 EXPECT_TRUE(msg3); | 421 EXPECT_TRUE(msg3); |
422 | 422 |
423 ViewHostMsg_SaveImageFromDataURL::Param param2; | 423 ViewHostMsg_SaveImageFromDataURL::Param param2; |
424 ViewHostMsg_SaveImageFromDataURL::Read(msg3, ¶m2); | 424 ViewHostMsg_SaveImageFromDataURL::Read(msg3, ¶m2); |
425 EXPECT_EQ(get<1>(param2).length(), large_data_url.length()); | 425 EXPECT_EQ(base::get<1>(param2).length(), large_data_url.length()); |
426 EXPECT_EQ(get<1>(param2), large_data_url); | 426 EXPECT_EQ(base::get<1>(param2), large_data_url); |
427 | 427 |
428 ProcessPendingMessages(); | 428 ProcessPendingMessages(); |
429 render_thread_->sink().ClearMessages(); | 429 render_thread_->sink().ClearMessages(); |
430 | 430 |
431 const std::string exceeded_data_url(1024 * 1024 * 10 + 1, 'd'); | 431 const std::string exceeded_data_url(1024 * 1024 * 10 + 1, 'd'); |
432 | 432 |
433 view()->saveImageFromDataURL(WebString::fromUTF8(exceeded_data_url)); | 433 view()->saveImageFromDataURL(WebString::fromUTF8(exceeded_data_url)); |
434 ProcessPendingMessages(); | 434 ProcessPendingMessages(); |
435 const IPC::Message* msg4 = render_thread_->sink().GetFirstMessageMatching( | 435 const IPC::Message* msg4 = render_thread_->sink().GetFirstMessageMatching( |
436 ViewHostMsg_SaveImageFromDataURL::ID); | 436 ViewHostMsg_SaveImageFromDataURL::ID); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 ProcessPendingMessages(); | 481 ProcessPendingMessages(); |
482 | 482 |
483 const IPC::Message* frame_navigate_msg = | 483 const IPC::Message* frame_navigate_msg = |
484 render_thread_->sink().GetUniqueMessageMatching( | 484 render_thread_->sink().GetUniqueMessageMatching( |
485 FrameHostMsg_DidCommitProvisionalLoad::ID); | 485 FrameHostMsg_DidCommitProvisionalLoad::ID); |
486 EXPECT_TRUE(frame_navigate_msg); | 486 EXPECT_TRUE(frame_navigate_msg); |
487 | 487 |
488 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params; | 488 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params; |
489 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, | 489 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, |
490 &host_nav_params); | 490 &host_nav_params); |
491 EXPECT_TRUE(get<0>(host_nav_params).is_post); | 491 EXPECT_TRUE(base::get<0>(host_nav_params).is_post); |
492 | 492 |
493 // Check post data sent to browser matches | 493 // Check post data sent to browser matches |
494 EXPECT_TRUE(get<0>(host_nav_params).page_state.IsValid()); | 494 EXPECT_TRUE(base::get<0>(host_nav_params).page_state.IsValid()); |
495 scoped_ptr<HistoryEntry> entry = | 495 scoped_ptr<HistoryEntry> entry = |
496 PageStateToHistoryEntry(get<0>(host_nav_params).page_state); | 496 PageStateToHistoryEntry(base::get<0>(host_nav_params).page_state); |
497 blink::WebHTTPBody body = entry->root().httpBody(); | 497 blink::WebHTTPBody body = entry->root().httpBody(); |
498 blink::WebHTTPBody::Element element; | 498 blink::WebHTTPBody::Element element; |
499 bool successful = body.elementAt(0, element); | 499 bool successful = body.elementAt(0, element); |
500 EXPECT_TRUE(successful); | 500 EXPECT_TRUE(successful); |
501 EXPECT_EQ(blink::WebHTTPBody::Element::TypeData, element.type); | 501 EXPECT_EQ(blink::WebHTTPBody::Element::TypeData, element.type); |
502 EXPECT_EQ(length, element.data.size()); | 502 EXPECT_EQ(length, element.data.size()); |
503 EXPECT_EQ(0, memcmp(raw_data, element.data.data(), length)); | 503 EXPECT_EQ(0, memcmp(raw_data, element.data.data(), length)); |
504 } | 504 } |
505 | 505 |
506 TEST_F(RenderViewImplTest, DecideNavigationPolicy) { | 506 TEST_F(RenderViewImplTest, DecideNavigationPolicy) { |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 // Load page B, which will trigger an UpdateState message for page A. | 692 // Load page B, which will trigger an UpdateState message for page A. |
693 LoadHTML("<div>Page B</div>"); | 693 LoadHTML("<div>Page B</div>"); |
694 | 694 |
695 // Check for a valid UpdateState message for page A. | 695 // Check for a valid UpdateState message for page A. |
696 ProcessPendingMessages(); | 696 ProcessPendingMessages(); |
697 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 697 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
698 ViewHostMsg_UpdateState::ID); | 698 ViewHostMsg_UpdateState::ID); |
699 ASSERT_TRUE(msg_A); | 699 ASSERT_TRUE(msg_A); |
700 ViewHostMsg_UpdateState::Param params; | 700 ViewHostMsg_UpdateState::Param params; |
701 ViewHostMsg_UpdateState::Read(msg_A, ¶ms); | 701 ViewHostMsg_UpdateState::Read(msg_A, ¶ms); |
702 int page_id_A = get<0>(params); | 702 int page_id_A = base::get<0>(params); |
703 PageState state_A = get<1>(params); | 703 PageState state_A = base::get<1>(params); |
704 EXPECT_EQ(1, page_id_A); | 704 EXPECT_EQ(1, page_id_A); |
705 render_thread_->sink().ClearMessages(); | 705 render_thread_->sink().ClearMessages(); |
706 | 706 |
707 // Back to page A (page_id 1) and commit. | 707 // Back to page A (page_id 1) and commit. |
708 CommonNavigationParams common_params_A; | 708 CommonNavigationParams common_params_A; |
709 RequestNavigationParams request_params_A; | 709 RequestNavigationParams request_params_A; |
710 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 710 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
711 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 711 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
712 request_params_A.current_history_list_length = 2; | 712 request_params_A.current_history_list_length = 2; |
713 request_params_A.current_history_list_offset = 1; | 713 request_params_A.current_history_list_offset = 1; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 // Verify page A committed, not swappedout://. | 751 // Verify page A committed, not swappedout://. |
752 const IPC::Message* frame_navigate_msg = | 752 const IPC::Message* frame_navigate_msg = |
753 render_thread_->sink().GetUniqueMessageMatching( | 753 render_thread_->sink().GetUniqueMessageMatching( |
754 FrameHostMsg_DidCommitProvisionalLoad::ID); | 754 FrameHostMsg_DidCommitProvisionalLoad::ID); |
755 EXPECT_TRUE(frame_navigate_msg); | 755 EXPECT_TRUE(frame_navigate_msg); |
756 | 756 |
757 // Read URL out of the parent trait of the params object. | 757 // Read URL out of the parent trait of the params object. |
758 FrameHostMsg_DidCommitProvisionalLoad::Param commit_load_params; | 758 FrameHostMsg_DidCommitProvisionalLoad::Param commit_load_params; |
759 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, | 759 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, |
760 &commit_load_params); | 760 &commit_load_params); |
761 EXPECT_NE(GURL("swappedout://"), get<0>(commit_load_params).url); | 761 EXPECT_NE(GURL("swappedout://"), base::get<0>(commit_load_params).url); |
762 } | 762 } |
763 | 763 |
764 // Verify that security origins are replicated properly to RenderFrameProxies | 764 // Verify that security origins are replicated properly to RenderFrameProxies |
765 // when swapping out. | 765 // when swapping out. |
766 TEST_F(RenderViewImplTest, OriginReplicationForSwapOut) { | 766 TEST_F(RenderViewImplTest, OriginReplicationForSwapOut) { |
767 // This test should only run with --site-per-process, since origin | 767 // This test should only run with --site-per-process, since origin |
768 // replication only happens in that mode. | 768 // replication only happens in that mode. |
769 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 769 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
770 switches::kSitePerProcess)) | 770 switches::kSitePerProcess)) |
771 return; | 771 return; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 // Load page B, which will trigger an UpdateState message for page A. | 811 // Load page B, which will trigger an UpdateState message for page A. |
812 LoadHTML("<div>Page B</div>"); | 812 LoadHTML("<div>Page B</div>"); |
813 | 813 |
814 // Check for a valid UpdateState message for page A. | 814 // Check for a valid UpdateState message for page A. |
815 ProcessPendingMessages(); | 815 ProcessPendingMessages(); |
816 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 816 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
817 ViewHostMsg_UpdateState::ID); | 817 ViewHostMsg_UpdateState::ID); |
818 ASSERT_TRUE(msg_A); | 818 ASSERT_TRUE(msg_A); |
819 ViewHostMsg_UpdateState::Param param; | 819 ViewHostMsg_UpdateState::Param param; |
820 ViewHostMsg_UpdateState::Read(msg_A, ¶m); | 820 ViewHostMsg_UpdateState::Read(msg_A, ¶m); |
821 int page_id_A = get<0>(param); | 821 int page_id_A = base::get<0>(param); |
822 PageState state_A = get<1>(param); | 822 PageState state_A = base::get<1>(param); |
823 EXPECT_EQ(1, page_id_A); | 823 EXPECT_EQ(1, page_id_A); |
824 render_thread_->sink().ClearMessages(); | 824 render_thread_->sink().ClearMessages(); |
825 | 825 |
826 // Load page C, which will trigger an UpdateState message for page B. | 826 // Load page C, which will trigger an UpdateState message for page B. |
827 LoadHTML("<div>Page C</div>"); | 827 LoadHTML("<div>Page C</div>"); |
828 | 828 |
829 // Check for a valid UpdateState for page B. | 829 // Check for a valid UpdateState for page B. |
830 ProcessPendingMessages(); | 830 ProcessPendingMessages(); |
831 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( | 831 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( |
832 ViewHostMsg_UpdateState::ID); | 832 ViewHostMsg_UpdateState::ID); |
833 ASSERT_TRUE(msg_B); | 833 ASSERT_TRUE(msg_B); |
834 ViewHostMsg_UpdateState::Read(msg_B, ¶m); | 834 ViewHostMsg_UpdateState::Read(msg_B, ¶m); |
835 int page_id_B = get<0>(param); | 835 int page_id_B = base::get<0>(param); |
836 PageState state_B = get<1>(param); | 836 PageState state_B = base::get<1>(param); |
837 EXPECT_EQ(2, page_id_B); | 837 EXPECT_EQ(2, page_id_B); |
838 EXPECT_NE(state_A, state_B); | 838 EXPECT_NE(state_A, state_B); |
839 render_thread_->sink().ClearMessages(); | 839 render_thread_->sink().ClearMessages(); |
840 | 840 |
841 // Load page D, which will trigger an UpdateState message for page C. | 841 // Load page D, which will trigger an UpdateState message for page C. |
842 LoadHTML("<div>Page D</div>"); | 842 LoadHTML("<div>Page D</div>"); |
843 | 843 |
844 // Check for a valid UpdateState for page C. | 844 // Check for a valid UpdateState for page C. |
845 ProcessPendingMessages(); | 845 ProcessPendingMessages(); |
846 const IPC::Message* msg_C = render_thread_->sink().GetUniqueMessageMatching( | 846 const IPC::Message* msg_C = render_thread_->sink().GetUniqueMessageMatching( |
847 ViewHostMsg_UpdateState::ID); | 847 ViewHostMsg_UpdateState::ID); |
848 ASSERT_TRUE(msg_C); | 848 ASSERT_TRUE(msg_C); |
849 ViewHostMsg_UpdateState::Read(msg_C, ¶m); | 849 ViewHostMsg_UpdateState::Read(msg_C, ¶m); |
850 int page_id_C = get<0>(param); | 850 int page_id_C = base::get<0>(param); |
851 PageState state_C = get<1>(param); | 851 PageState state_C = base::get<1>(param); |
852 EXPECT_EQ(3, page_id_C); | 852 EXPECT_EQ(3, page_id_C); |
853 EXPECT_NE(state_B, state_C); | 853 EXPECT_NE(state_B, state_C); |
854 render_thread_->sink().ClearMessages(); | 854 render_thread_->sink().ClearMessages(); |
855 | 855 |
856 // Go back to C and commit, preparing for our real test. | 856 // Go back to C and commit, preparing for our real test. |
857 CommonNavigationParams common_params_C; | 857 CommonNavigationParams common_params_C; |
858 RequestNavigationParams request_params_C; | 858 RequestNavigationParams request_params_C; |
859 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 859 common_params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
860 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 860 common_params_C.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
861 request_params_C.current_history_list_length = 4; | 861 request_params_C.current_history_list_length = 4; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
895 request_params.page_state = state_A; | 895 request_params.page_state = state_A; |
896 NavigateMainFrame(common_params, StartNavigationParams(), request_params); | 896 NavigateMainFrame(common_params, StartNavigationParams(), request_params); |
897 ProcessPendingMessages(); | 897 ProcessPendingMessages(); |
898 | 898 |
899 // Now ensure that the UpdateState message we receive is consistent | 899 // Now ensure that the UpdateState message we receive is consistent |
900 // and represents page C in both page_id and state. | 900 // and represents page C in both page_id and state. |
901 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 901 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
902 ViewHostMsg_UpdateState::ID); | 902 ViewHostMsg_UpdateState::ID); |
903 ASSERT_TRUE(msg); | 903 ASSERT_TRUE(msg); |
904 ViewHostMsg_UpdateState::Read(msg, ¶m); | 904 ViewHostMsg_UpdateState::Read(msg, ¶m); |
905 int page_id = get<0>(param); | 905 int page_id = base::get<0>(param); |
906 PageState state = get<1>(param); | 906 PageState state = base::get<1>(param); |
907 EXPECT_EQ(page_id_C, page_id); | 907 EXPECT_EQ(page_id_C, page_id); |
908 EXPECT_NE(state_A, state); | 908 EXPECT_NE(state_A, state); |
909 EXPECT_NE(state_B, state); | 909 EXPECT_NE(state_B, state); |
910 EXPECT_EQ(state_C, state); | 910 EXPECT_EQ(state_C, state); |
911 } | 911 } |
912 | 912 |
913 // Test that stale back/forward navigations arriving from the browser are | 913 // Test that stale back/forward navigations arriving from the browser are |
914 // ignored. See http://crbug.com/86758. | 914 // ignored. See http://crbug.com/86758. |
915 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { | 915 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { |
916 // Load page A. | 916 // Load page A. |
917 LoadHTML("<div id=pagename>Page A</div>"); | 917 LoadHTML("<div id=pagename>Page A</div>"); |
918 EXPECT_EQ(1, view()->history_list_length_); | 918 EXPECT_EQ(1, view()->history_list_length_); |
919 EXPECT_EQ(0, view()->history_list_offset_); | 919 EXPECT_EQ(0, view()->history_list_offset_); |
920 | 920 |
921 // Load page B, which will trigger an UpdateState message for page A. | 921 // Load page B, which will trigger an UpdateState message for page A. |
922 LoadHTML("<div id=pagename>Page B</div>"); | 922 LoadHTML("<div id=pagename>Page B</div>"); |
923 EXPECT_EQ(2, view()->history_list_length_); | 923 EXPECT_EQ(2, view()->history_list_length_); |
924 EXPECT_EQ(1, view()->history_list_offset_); | 924 EXPECT_EQ(1, view()->history_list_offset_); |
925 | 925 |
926 // Check for a valid UpdateState message for page A. | 926 // Check for a valid UpdateState message for page A. |
927 ProcessPendingMessages(); | 927 ProcessPendingMessages(); |
928 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 928 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
929 ViewHostMsg_UpdateState::ID); | 929 ViewHostMsg_UpdateState::ID); |
930 ASSERT_TRUE(msg_A); | 930 ASSERT_TRUE(msg_A); |
931 ViewHostMsg_UpdateState::Param param; | 931 ViewHostMsg_UpdateState::Param param; |
932 ViewHostMsg_UpdateState::Read(msg_A, ¶m); | 932 ViewHostMsg_UpdateState::Read(msg_A, ¶m); |
933 int page_id_A = get<0>(param); | 933 int page_id_A = base::get<0>(param); |
934 PageState state_A = get<1>(param); | 934 PageState state_A = base::get<1>(param); |
935 EXPECT_EQ(1, page_id_A); | 935 EXPECT_EQ(1, page_id_A); |
936 render_thread_->sink().ClearMessages(); | 936 render_thread_->sink().ClearMessages(); |
937 | 937 |
938 // Back to page A (nav_entry_id 1) and commit. | 938 // Back to page A (nav_entry_id 1) and commit. |
939 CommonNavigationParams common_params_A; | 939 CommonNavigationParams common_params_A; |
940 RequestNavigationParams request_params_A; | 940 RequestNavigationParams request_params_A; |
941 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 941 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
942 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 942 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
943 request_params_A.current_history_list_length = 2; | 943 request_params_A.current_history_list_length = 2; |
944 request_params_A.current_history_list_offset = 1; | 944 request_params_A.current_history_list_offset = 1; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1053 render_thread_->sink().ClearMessages(); | 1053 render_thread_->sink().ClearMessages(); |
1054 | 1054 |
1055 // Update the IME status and verify if our IME backend sends an IPC message | 1055 // Update the IME status and verify if our IME backend sends an IPC message |
1056 // to activate IMEs. | 1056 // to activate IMEs. |
1057 view()->UpdateTextInputType(); | 1057 view()->UpdateTextInputType(); |
1058 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); | 1058 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); |
1059 EXPECT_TRUE(msg != NULL); | 1059 EXPECT_TRUE(msg != NULL); |
1060 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); | 1060 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); |
1061 ViewHostMsg_TextInputTypeChanged::Param params; | 1061 ViewHostMsg_TextInputTypeChanged::Param params; |
1062 ViewHostMsg_TextInputTypeChanged::Read(msg, ¶ms); | 1062 ViewHostMsg_TextInputTypeChanged::Read(msg, ¶ms); |
1063 ui::TextInputType type = get<0>(params); | 1063 ui::TextInputType type = base::get<0>(params); |
1064 ui::TextInputMode input_mode = get<1>(params); | 1064 ui::TextInputMode input_mode = base::get<1>(params); |
1065 bool can_compose_inline = get<2>(params); | 1065 bool can_compose_inline = base::get<2>(params); |
1066 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, type); | 1066 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, type); |
1067 EXPECT_EQ(true, can_compose_inline); | 1067 EXPECT_EQ(true, can_compose_inline); |
1068 | 1068 |
1069 // Move the input focus to the second <input> element, where we should | 1069 // Move the input focus to the second <input> element, where we should |
1070 // de-activate IMEs. | 1070 // de-activate IMEs. |
1071 ExecuteJavaScript("document.getElementById('test2').focus();"); | 1071 ExecuteJavaScript("document.getElementById('test2').focus();"); |
1072 ProcessPendingMessages(); | 1072 ProcessPendingMessages(); |
1073 render_thread_->sink().ClearMessages(); | 1073 render_thread_->sink().ClearMessages(); |
1074 | 1074 |
1075 // Update the IME status and verify if our IME backend sends an IPC message | 1075 // Update the IME status and verify if our IME backend sends an IPC message |
1076 // to de-activate IMEs. | 1076 // to de-activate IMEs. |
1077 view()->UpdateTextInputType(); | 1077 view()->UpdateTextInputType(); |
1078 msg = render_thread_->sink().GetMessageAt(0); | 1078 msg = render_thread_->sink().GetMessageAt(0); |
1079 EXPECT_TRUE(msg != NULL); | 1079 EXPECT_TRUE(msg != NULL); |
1080 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); | 1080 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); |
1081 ViewHostMsg_TextInputTypeChanged::Read(msg, & params); | 1081 ViewHostMsg_TextInputTypeChanged::Read(msg, & params); |
1082 type = get<0>(params); | 1082 type = base::get<0>(params); |
1083 input_mode = get<1>(params); | 1083 input_mode = base::get<1>(params); |
1084 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, type); | 1084 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, type); |
1085 | 1085 |
1086 for (size_t i = 0; i < arraysize(kInputModeTestCases); i++) { | 1086 for (size_t i = 0; i < arraysize(kInputModeTestCases); i++) { |
1087 const InputModeTestCase* test_case = &kInputModeTestCases[i]; | 1087 const InputModeTestCase* test_case = &kInputModeTestCases[i]; |
1088 std::string javascript = | 1088 std::string javascript = |
1089 base::StringPrintf("document.getElementById('%s').focus();", | 1089 base::StringPrintf("document.getElementById('%s').focus();", |
1090 test_case->input_id); | 1090 test_case->input_id); |
1091 // Move the input focus to the target <input> element, where we should | 1091 // Move the input focus to the target <input> element, where we should |
1092 // activate IMEs. | 1092 // activate IMEs. |
1093 ExecuteJavaScriptAndReturnIntValue(base::ASCIIToUTF16(javascript), NULL); | 1093 ExecuteJavaScriptAndReturnIntValue(base::ASCIIToUTF16(javascript), NULL); |
1094 ProcessPendingMessages(); | 1094 ProcessPendingMessages(); |
1095 render_thread_->sink().ClearMessages(); | 1095 render_thread_->sink().ClearMessages(); |
1096 | 1096 |
1097 // Update the IME status and verify if our IME backend sends an IPC | 1097 // Update the IME status and verify if our IME backend sends an IPC |
1098 // message to activate IMEs. | 1098 // message to activate IMEs. |
1099 view()->UpdateTextInputType(); | 1099 view()->UpdateTextInputType(); |
1100 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); | 1100 const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); |
1101 EXPECT_TRUE(msg != NULL); | 1101 EXPECT_TRUE(msg != NULL); |
1102 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); | 1102 EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); |
1103 ViewHostMsg_TextInputTypeChanged::Read(msg, & params); | 1103 ViewHostMsg_TextInputTypeChanged::Read(msg, & params); |
1104 type = get<0>(params); | 1104 type = base::get<0>(params); |
1105 input_mode = get<1>(params); | 1105 input_mode = base::get<1>(params); |
1106 EXPECT_EQ(test_case->expected_mode, input_mode); | 1106 EXPECT_EQ(test_case->expected_mode, input_mode); |
1107 } | 1107 } |
1108 } | 1108 } |
1109 } | 1109 } |
1110 | 1110 |
1111 // Test that our IME backend can compose CJK words. | 1111 // Test that our IME backend can compose CJK words. |
1112 // Our IME front-end sends many platform-independent messages to the IME backend | 1112 // Our IME front-end sends many platform-independent messages to the IME backend |
1113 // while it composes CJK words. This test sends the minimal messages captured | 1113 // while it composes CJK words. This test sends the minimal messages captured |
1114 // on my local environment directly to the IME backend to verify if the backend | 1114 // on my local environment directly to the IME backend to verify if the backend |
1115 // can compose CJK words without any problems. | 1115 // can compose CJK words without any problems. |
(...skipping 1104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2220 LoadHTML("<input id='test1' value='hello1'></input>" | 2220 LoadHTML("<input id='test1' value='hello1'></input>" |
2221 "<input id='test2' value='hello2'></input>"); | 2221 "<input id='test2' value='hello2'></input>"); |
2222 | 2222 |
2223 ExecuteJavaScript("document.getElementById('test1').focus();"); | 2223 ExecuteJavaScript("document.getElementById('test1').focus();"); |
2224 const IPC::Message* msg1 = render_thread_->sink().GetFirstMessageMatching( | 2224 const IPC::Message* msg1 = render_thread_->sink().GetFirstMessageMatching( |
2225 ViewHostMsg_FocusedNodeChanged::ID); | 2225 ViewHostMsg_FocusedNodeChanged::ID); |
2226 EXPECT_TRUE(msg1); | 2226 EXPECT_TRUE(msg1); |
2227 | 2227 |
2228 ViewHostMsg_FocusedNodeChanged::Param params; | 2228 ViewHostMsg_FocusedNodeChanged::Param params; |
2229 ViewHostMsg_FocusedNodeChanged::Read(msg1, ¶ms); | 2229 ViewHostMsg_FocusedNodeChanged::Read(msg1, ¶ms); |
2230 EXPECT_TRUE(get<0>(params)); | 2230 EXPECT_TRUE(base::get<0>(params)); |
2231 render_thread_->sink().ClearMessages(); | 2231 render_thread_->sink().ClearMessages(); |
2232 | 2232 |
2233 ExecuteJavaScript("document.getElementById('test2').focus();"); | 2233 ExecuteJavaScript("document.getElementById('test2').focus();"); |
2234 const IPC::Message* msg2 = render_thread_->sink().GetFirstMessageMatching( | 2234 const IPC::Message* msg2 = render_thread_->sink().GetFirstMessageMatching( |
2235 ViewHostMsg_FocusedNodeChanged::ID); | 2235 ViewHostMsg_FocusedNodeChanged::ID); |
2236 EXPECT_TRUE(msg2); | 2236 EXPECT_TRUE(msg2); |
2237 ViewHostMsg_FocusedNodeChanged::Read(msg2, ¶ms); | 2237 ViewHostMsg_FocusedNodeChanged::Read(msg2, ¶ms); |
2238 EXPECT_TRUE(get<0>(params)); | 2238 EXPECT_TRUE(base::get<0>(params)); |
2239 render_thread_->sink().ClearMessages(); | 2239 render_thread_->sink().ClearMessages(); |
2240 | 2240 |
2241 view()->webview()->clearFocusedElement(); | 2241 view()->webview()->clearFocusedElement(); |
2242 const IPC::Message* msg3 = render_thread_->sink().GetFirstMessageMatching( | 2242 const IPC::Message* msg3 = render_thread_->sink().GetFirstMessageMatching( |
2243 ViewHostMsg_FocusedNodeChanged::ID); | 2243 ViewHostMsg_FocusedNodeChanged::ID); |
2244 EXPECT_TRUE(msg3); | 2244 EXPECT_TRUE(msg3); |
2245 ViewHostMsg_FocusedNodeChanged::Read(msg3, ¶ms); | 2245 ViewHostMsg_FocusedNodeChanged::Read(msg3, ¶ms); |
2246 EXPECT_FALSE(get<0>(params)); | 2246 EXPECT_FALSE(base::get<0>(params)); |
2247 render_thread_->sink().ClearMessages(); | 2247 render_thread_->sink().ClearMessages(); |
2248 } | 2248 } |
2249 | 2249 |
2250 TEST_F(RenderViewImplTest, ServiceWorkerNetworkProviderSetup) { | 2250 TEST_F(RenderViewImplTest, ServiceWorkerNetworkProviderSetup) { |
2251 ServiceWorkerNetworkProvider* provider = NULL; | 2251 ServiceWorkerNetworkProvider* provider = NULL; |
2252 RequestExtraData* extra_data = NULL; | 2252 RequestExtraData* extra_data = NULL; |
2253 | 2253 |
2254 // Make sure each new document has a new provider and | 2254 // Make sure each new document has a new provider and |
2255 // that the main request is tagged with the provider's id. | 2255 // that the main request is tagged with the provider's id. |
2256 LoadHTML("<b>A Document</b>"); | 2256 LoadHTML("<b>A Document</b>"); |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2432 FROM_HERE, | 2432 FROM_HERE, |
2433 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); | 2433 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); |
2434 ExecuteJavaScript("debugger;"); | 2434 ExecuteJavaScript("debugger;"); |
2435 | 2435 |
2436 // CloseWhilePaused should resume execution and continue here. | 2436 // CloseWhilePaused should resume execution and continue here. |
2437 EXPECT_FALSE(IsPaused()); | 2437 EXPECT_FALSE(IsPaused()); |
2438 Detach(); | 2438 Detach(); |
2439 } | 2439 } |
2440 | 2440 |
2441 } // namespace content | 2441 } // namespace content |
OLD | NEW |