OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "app/app_switches.h" | 7 #include "app/app_switches.h" |
8 #include "app/message_box_flags.h" | 8 #include "app/message_box_flags.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 "data:text/html,<html><head><title>External tab test</title></head>" | 630 "data:text/html,<html><head><title>External tab test</title></head>" |
631 "<body>A simple page for testing a floating/invisible tab<br></div>" | 631 "<body>A simple page for testing a floating/invisible tab<br></div>" |
632 "</body></html>"; | 632 "</body></html>"; |
633 | 633 |
634 ExternalTabUITestMockClient::ExternalTabUITestMockClient(int execution_timeout) | 634 ExternalTabUITestMockClient::ExternalTabUITestMockClient(int execution_timeout) |
635 : AutomationProxy(execution_timeout, false), | 635 : AutomationProxy(execution_timeout, false), |
636 host_window_style_(WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_VISIBLE), | 636 host_window_style_(WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_VISIBLE), |
637 host_window_(NULL) { | 637 host_window_(NULL) { |
638 } | 638 } |
639 | 639 |
| 640 ExternalTabUITestMockClient::~ExternalTabUITestMockClient() { |
| 641 EXPECT_TRUE(host_window_ == NULL); |
| 642 } |
| 643 |
640 void ExternalTabUITestMockClient::ReplyStarted( | 644 void ExternalTabUITestMockClient::ReplyStarted( |
641 const IPC::AutomationURLResponse* response, | 645 const IPC::AutomationURLResponse* response, |
642 int tab_handle, int request_id) { | 646 int tab_handle, int request_id) { |
643 AutomationProxy::Send(new AutomationMsg_RequestStarted(0, tab_handle, | 647 AutomationProxy::Send(new AutomationMsg_RequestStarted(0, tab_handle, |
644 request_id, *response)); | 648 request_id, *response)); |
645 } | 649 } |
646 | 650 |
647 void ExternalTabUITestMockClient::ReplyData( | 651 void ExternalTabUITestMockClient::ReplyData( |
648 const std::string* data, int tab_handle, int request_id) { | 652 const std::string* data, int tab_handle, int request_id) { |
649 AutomationProxy::Send(new AutomationMsg_RequestData(0, tab_handle, | 653 AutomationProxy::Send(new AutomationMsg_RequestData(0, tab_handle, |
650 request_id, *data)); | 654 request_id, *data)); |
651 } | 655 } |
652 | 656 |
653 void ExternalTabUITestMockClient::ReplyEOF(int tab_handle, int request_id) { | 657 void ExternalTabUITestMockClient::ReplyEOF(int tab_handle, int request_id) { |
654 ReplyEnd(URLRequestStatus(), tab_handle, request_id); | 658 ReplyEnd(URLRequestStatus(), tab_handle, request_id); |
655 } | 659 } |
656 | 660 |
657 void ExternalTabUITestMockClient::ReplyEnd(const URLRequestStatus& status, | 661 void ExternalTabUITestMockClient::ReplyEnd(const URLRequestStatus& status, |
658 int tab_handle, int request_id) { | 662 int tab_handle, int request_id) { |
659 AutomationProxy::Send(new AutomationMsg_RequestEnd(0, tab_handle, | 663 AutomationProxy::Send(new AutomationMsg_RequestEnd(0, tab_handle, |
660 request_id, status)); | 664 request_id, status)); |
661 } | 665 } |
662 | 666 |
663 void ExternalTabUITestMockClient::Reply404(int tab_handle, int request_id) { | 667 void ExternalTabUITestMockClient::Reply404(int tab_handle, int request_id) { |
664 const IPC::AutomationURLResponse notfound = {"", "HTTP/1.1 404\r\n\r\n"}; | 668 const IPC::AutomationURLResponse notfound("", "HTTP/1.1 404\r\n\r\n", 0, |
| 669 base::Time(), "", 0); |
665 ReplyStarted(¬found, tab_handle, request_id); | 670 ReplyStarted(¬found, tab_handle, request_id); |
666 ReplyEOF(tab_handle, request_id); | 671 ReplyEOF(tab_handle, request_id); |
667 } | 672 } |
668 | 673 |
669 void ExternalTabUITestMockClient::ServeHTMLData(int tab_handle, | 674 void ExternalTabUITestMockClient::ServeHTMLData(int tab_handle, |
670 const GURL& url, | 675 const GURL& url, |
671 const std::string& data) { | 676 const std::string& data) { |
672 EXPECT_CALL(*this, OnRequestStart(tab_handle, _, testing::AllOf( | 677 EXPECT_CALL(*this, OnRequestStart(tab_handle, _, testing::AllOf( |
673 testing::Field(&IPC::AutomationURLRequest::url, url.spec()), | 678 testing::Field(&IPC::AutomationURLRequest::url, url.spec()), |
674 testing::Field(&IPC::AutomationURLRequest::method, StrEq("GET"))))) | 679 testing::Field(&IPC::AutomationURLRequest::method, StrEq("GET"))))) |
(...skipping 26 matching lines...) Expand all Loading... |
701 void* iter = NULL; | 706 void* iter = NULL; |
702 int handle; | 707 int handle; |
703 ASSERT_TRUE(message.ReadInt(&iter, &handle)); | 708 ASSERT_TRUE(message.ReadInt(&iter, &handle)); |
704 | 709 |
705 // Call base class | 710 // Call base class |
706 AutomationProxy::InvalidateHandle(message); | 711 AutomationProxy::InvalidateHandle(message); |
707 HandleClosed(handle); | 712 HandleClosed(handle); |
708 } | 713 } |
709 | 714 |
710 // Most of the time we need external tab with these settings. | 715 // Most of the time we need external tab with these settings. |
711 const IPC::ExternalTabSettings ExternalTabUITestMockClient::default_settings = { | 716 const IPC::ExternalTabSettings ExternalTabUITestMockClient::default_settings( |
712 NULL, gfx::Rect(), // will be replaced by CreateHostWindowAndTab | 717 NULL, gfx::Rect(), // will be replaced by CreateHostWindowAndTab |
713 WS_CHILD | WS_VISIBLE, | 718 WS_CHILD | WS_VISIBLE, |
714 false, // is_off_the_record | 719 false, // is_off_the_record |
715 true, // load_requests_via_automation | 720 true, // load_requests_via_automation |
716 true, // handle_top_level_requests | 721 true, // handle_top_level_requests |
717 GURL() // initial_url | 722 GURL(), // initial_url |
718 }; | 723 GURL(), // referrer |
| 724 false, // infobars_enabled |
| 725 false); // route_all_top_level_navigations |
719 | 726 |
720 // static | 727 // static |
721 const IPC::AutomationURLResponse ExternalTabUITestMockClient::http_200 = | 728 const IPC::AutomationURLResponse ExternalTabUITestMockClient::http_200( |
722 {"", "HTTP/0.9 200\r\n\r\n", }; | 729 "", |
| 730 "HTTP/0.9 200\r\n\r\n", |
| 731 0, |
| 732 base::Time(), |
| 733 "", |
| 734 0); |
723 | 735 |
724 void ExternalTabUITestMockClient::OnMessageReceived(const IPC::Message& msg) { | 736 void ExternalTabUITestMockClient::OnMessageReceived(const IPC::Message& msg) { |
725 IPC_BEGIN_MESSAGE_MAP(ExternalTabUITestMockClient, msg) | 737 IPC_BEGIN_MESSAGE_MAP(ExternalTabUITestMockClient, msg) |
726 IPC_MESSAGE_HANDLER(AutomationMsg_DidNavigate, OnDidNavigate) | 738 IPC_MESSAGE_HANDLER(AutomationMsg_DidNavigate, OnDidNavigate) |
727 IPC_MESSAGE_HANDLER(AutomationMsg_ForwardMessageToExternalHost, | 739 IPC_MESSAGE_HANDLER(AutomationMsg_ForwardMessageToExternalHost, |
728 OnForwardMessageToExternalHost) | 740 OnForwardMessageToExternalHost) |
729 IPC_MESSAGE_HANDLER(AutomationMsg_RequestStart, OnRequestStart) | 741 IPC_MESSAGE_HANDLER(AutomationMsg_RequestStart, OnRequestStart) |
730 IPC_MESSAGE_HANDLER(AutomationMsg_RequestRead, OnRequestRead) | 742 IPC_MESSAGE_HANDLER(AutomationMsg_RequestRead, OnRequestRead) |
731 IPC_MESSAGE_HANDLER(AutomationMsg_RequestEnd, OnRequestEnd) | 743 IPC_MESSAGE_HANDLER(AutomationMsg_RequestEnd, OnRequestEnd) |
732 IPC_MESSAGE_HANDLER(AutomationMsg_SetCookieAsync, OnSetCookieAsync) | 744 IPC_MESSAGE_HANDLER(AutomationMsg_SetCookieAsync, OnSetCookieAsync) |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 | 1107 |
1096 // Flaky, http://crbug.com/61023. | 1108 // Flaky, http://crbug.com/61023. |
1097 TEST_F(ExternalTabUITest, FLAKY_HostNetworkStackAbortRequest) { | 1109 TEST_F(ExternalTabUITest, FLAKY_HostNetworkStackAbortRequest) { |
1098 scoped_refptr<TabProxy> tab; | 1110 scoped_refptr<TabProxy> tab; |
1099 TimedMessageLoopRunner loop(MessageLoop::current()); | 1111 TimedMessageLoopRunner loop(MessageLoop::current()); |
1100 ASSERT_THAT(mock_, testing::NotNull()); | 1112 ASSERT_THAT(mock_, testing::NotNull()); |
1101 EXPECT_CALL(*mock_, OnNavigationStateChanged(_, _, _)) | 1113 EXPECT_CALL(*mock_, OnNavigationStateChanged(_, _, _)) |
1102 .Times(testing::AnyNumber()); | 1114 .Times(testing::AnyNumber()); |
1103 | 1115 |
1104 std::string url = "http://placetogo.org"; | 1116 std::string url = "http://placetogo.org"; |
1105 const IPC::AutomationURLResponse http_200 = {"", "HTTP/0.9 200\r\n\r\n", }; | |
1106 | 1117 |
1107 testing::InSequence sequence; | 1118 testing::InSequence sequence; |
1108 EXPECT_CALL(*mock_, OnRequestStart(1, 2, testing::AllOf( | 1119 EXPECT_CALL(*mock_, OnRequestStart(1, 2, testing::AllOf( |
1109 testing::Field(&IPC::AutomationURLRequest::url, StrEq(url + "/")), | 1120 testing::Field(&IPC::AutomationURLRequest::url, StrEq(url + "/")), |
1110 testing::Field(&IPC::AutomationURLRequest::method, StrEq("GET"))))) | 1121 testing::Field(&IPC::AutomationURLRequest::method, StrEq("GET"))))) |
1111 .Times(1) | 1122 .Times(1) |
1112 // We can simply do CreateFunctor(1, 2, &http_200) since we know the | 1123 // We can simply do CreateFunctor(1, 2, &http_200) since we know the |
1113 // tab handle and request id, but using WithArgs<> is much more fancy :) | 1124 // tab handle and request id, but using WithArgs<> is much more fancy :) |
1114 .WillOnce(testing::WithArgs<0, 1>(testing::Invoke(CreateFunctor(mock_, | 1125 .WillOnce(testing::WithArgs<0, 1>(testing::Invoke(CreateFunctor(mock_, |
1115 &ExternalTabUITestMockClient::ReplyStarted, &http_200)))); | 1126 &ExternalTabUITestMockClient::ReplyStarted, |
| 1127 &ExternalTabUITestMockClient::http_200)))); |
1116 | 1128 |
1117 // Return some trivial page, that have a link to a "logo.gif" image | 1129 // Return some trivial page, that have a link to a "logo.gif" image |
1118 const std::string data = "<!DOCTYPE html><title>Hello"; | 1130 const std::string data = "<!DOCTYPE html><title>Hello"; |
1119 | 1131 |
1120 EXPECT_CALL(*mock_, OnRequestRead(1, 2, testing::Gt(0))) | 1132 EXPECT_CALL(*mock_, OnRequestRead(1, 2, testing::Gt(0))) |
1121 .Times(2) | 1133 .Times(2) |
1122 .WillOnce(testing::InvokeWithoutArgs(CreateFunctor(mock_, | 1134 .WillOnce(testing::InvokeWithoutArgs(CreateFunctor(mock_, |
1123 &ExternalTabUITestMockClient::ReplyData, &data, 1, 2))) | 1135 &ExternalTabUITestMockClient::ReplyData, &data, 1, 2))) |
1124 .WillOnce(testing::WithArgs<0, 1>( | 1136 .WillOnce(testing::WithArgs<0, 1>( |
1125 testing::InvokeWithoutArgs(CreateFunctor(mock_, | 1137 testing::InvokeWithoutArgs(CreateFunctor(mock_, |
(...skipping 12 matching lines...) Expand all Loading... |
1138 // Flaky, http://crbug.com/61023. | 1150 // Flaky, http://crbug.com/61023. |
1139 TEST_F(ExternalTabUITest, FLAKY_HostNetworkStackUnresponsiveRenderer) { | 1151 TEST_F(ExternalTabUITest, FLAKY_HostNetworkStackUnresponsiveRenderer) { |
1140 scoped_refptr<TabProxy> tab; | 1152 scoped_refptr<TabProxy> tab; |
1141 TimedMessageLoopRunner loop(MessageLoop::current()); | 1153 TimedMessageLoopRunner loop(MessageLoop::current()); |
1142 ASSERT_THAT(mock_, testing::NotNull()); | 1154 ASSERT_THAT(mock_, testing::NotNull()); |
1143 EXPECT_CALL(*mock_, OnNavigationStateChanged(_, _, _)) | 1155 EXPECT_CALL(*mock_, OnNavigationStateChanged(_, _, _)) |
1144 .Times(testing::AnyNumber()); | 1156 .Times(testing::AnyNumber()); |
1145 EXPECT_CALL(*mock_, OnLoad(_, _)).Times(testing::AnyNumber()); | 1157 EXPECT_CALL(*mock_, OnLoad(_, _)).Times(testing::AnyNumber()); |
1146 | 1158 |
1147 std::string url = "http://placetogo.org"; | 1159 std::string url = "http://placetogo.org"; |
1148 const IPC::AutomationURLResponse http_200 = {"", "HTTP/0.9 200\r\n\r\n", }; | |
1149 | 1160 |
1150 EXPECT_CALL(*mock_, OnRequestStart(1, 3, testing::_)) | 1161 EXPECT_CALL(*mock_, OnRequestStart(1, 3, testing::_)) |
1151 .Times(testing::AnyNumber()); | 1162 .Times(testing::AnyNumber()); |
1152 EXPECT_CALL(*mock_, OnDidNavigate(_, _)).Times(testing::AnyNumber()); | 1163 EXPECT_CALL(*mock_, OnDidNavigate(_, _)).Times(testing::AnyNumber()); |
1153 | 1164 |
1154 testing::InSequence sequence; | 1165 testing::InSequence sequence; |
1155 EXPECT_CALL(*mock_, OnRequestStart(1, 2, testing::AllOf( | 1166 EXPECT_CALL(*mock_, OnRequestStart(1, 2, testing::AllOf( |
1156 testing::Field(&IPC::AutomationURLRequest::url, StrEq(url + "/")), | 1167 testing::Field(&IPC::AutomationURLRequest::url, StrEq(url + "/")), |
1157 testing::Field(&IPC::AutomationURLRequest::method, StrEq("GET"))))) | 1168 testing::Field(&IPC::AutomationURLRequest::method, StrEq("GET"))))) |
1158 .Times(1) | 1169 .Times(1) |
1159 // We can simply do CreateFunctor(1, 2, &http_200) since we know the | 1170 // We can simply do CreateFunctor(1, 2, &http_200) since we know the |
1160 // tab handle and request id, but using WithArgs<> is much more fancy :) | 1171 // tab handle and request id, but using WithArgs<> is much more fancy :) |
1161 .WillOnce(testing::WithArgs<0, 1>(testing::Invoke(CreateFunctor(mock_, | 1172 .WillOnce(testing::WithArgs<0, 1>(testing::Invoke(CreateFunctor(mock_, |
1162 &ExternalTabUITestMockClient::ReplyStarted, &http_200)))); | 1173 &ExternalTabUITestMockClient::ReplyStarted, |
| 1174 &ExternalTabUITestMockClient::http_200)))); |
1163 | 1175 |
1164 const std::string head = "<html><title>Hello</title><body>"; | 1176 const std::string head = "<html><title>Hello</title><body>"; |
1165 | 1177 |
1166 const std::string data = "<table border=\"1\"><tr><th>Month</th>" | 1178 const std::string data = "<table border=\"1\"><tr><th>Month</th>" |
1167 "<th>Savings</th></tr><tr><td>January</td>" | 1179 "<th>Savings</th></tr><tr><td>January</td>" |
1168 "<td>$100</td></tr><tr><td>February</td>" | 1180 "<td>$100</td></tr><tr><td>February</td>" |
1169 "<td>$100</td></tr><tr><td>March</td>" | 1181 "<td>$100</td></tr><tr><td>March</td>" |
1170 "<td>$100</td></tr><tr><td>April</td>" | 1182 "<td>$100</td></tr><tr><td>April</td>" |
1171 "<td>$100</td></tr><tr><td>May</td>" | 1183 "<td>$100</td></tr><tr><td>May</td>" |
1172 "<td>$100</td></tr><tr><td>June</td>" | 1184 "<td>$100</td></tr><tr><td>June</td>" |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1697 int diff_pixels_count = 0; | 1709 int diff_pixels_count = 0; |
1698 for (int x = 0; x < img_size.width(); ++x) { | 1710 for (int x = 0; x < img_size.width(); ++x) { |
1699 for (int y = 0; y < img_size.height(); ++y) { | 1711 for (int y = 0; y < img_size.height(); ++y) { |
1700 if (*snapshot_bmp.getAddr32(x, y) != *reference_bmp.getAddr32(x, y)) { | 1712 if (*snapshot_bmp.getAddr32(x, y) != *reference_bmp.getAddr32(x, y)) { |
1701 ++diff_pixels_count; | 1713 ++diff_pixels_count; |
1702 } | 1714 } |
1703 } | 1715 } |
1704 } | 1716 } |
1705 ASSERT_EQ(diff_pixels_count, 0); | 1717 ASSERT_EQ(diff_pixels_count, 0); |
1706 } | 1718 } |
OLD | NEW |