| Index: chrome_frame/test/automation_client_mock.cc
|
| diff --git a/chrome_frame/test/automation_client_mock.cc b/chrome_frame/test/automation_client_mock.cc
|
| index c1c927de516628dfe4b4c1e7a0583a0e468c6f94..3b362c639f70e958507e1f5e984fa0e4536a6656 100644
|
| --- a/chrome_frame/test/automation_client_mock.cc
|
| +++ b/chrome_frame/test/automation_client_mock.cc
|
| @@ -10,6 +10,7 @@
|
| #include "chrome_frame/custom_sync_call_context.h"
|
| #include "chrome_frame/navigation_constraints.h"
|
| #include "chrome_frame/test/chrome_frame_test_utils.h"
|
| +#include "chrome_frame/test/test_scrubber.h"
|
| #include "net/base/net_errors.h"
|
|
|
| #define GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
|
| @@ -19,6 +20,18 @@ using testing::_;
|
| using testing::CreateFunctor;
|
| using testing::Return;
|
|
|
| +namespace {
|
| +
|
| +#ifndef NDEBUG
|
| +const int kChromeLaunchTimeout = 15;
|
| +#else
|
| +const int kChromeLaunchTimeout = 10;
|
| +#endif
|
| +
|
| +const int kSaneAutomationTimeoutMs = 10 * 1000;
|
| +
|
| +} // namespace
|
| +
|
| MATCHER_P(LaunchParamProfileEq, profile_name, "Check for profile name") {
|
| return arg->profile_name().compare(profile_name) == 0;
|
| }
|
| @@ -89,162 +102,140 @@ ACTION_P4(InitiateNavigation, client, url, referrer, constraints) {
|
| client->InitiateNavigation(url, referrer, constraints);
|
| }
|
|
|
| -// We mock ChromeFrameDelegate only. The rest is with real AutomationProxy
|
| -TEST(CFACWithChrome, CreateTooFast) {
|
| - MockCFDelegate cfd;
|
| - chrome_frame_test::TimedMsgLoop loop;
|
| - int timeout = 0; // Chrome cannot send Hello message so fast.
|
| - const FilePath profile_path(
|
| - chrome_frame_test::GetProfilePath(L"Adam.N.Epilinter"));
|
| +// ChromeFrameAutomationClient tests that launch Chrome.
|
| +class CFACWithChrome : public testing::Test {
|
| + protected:
|
| + static void SetUpTestCase();
|
| + static void TearDownTestCase();
|
|
|
| - scoped_refptr<ChromeFrameAutomationClient> client;
|
| - client = new ChromeFrameAutomationClient();
|
| + virtual void SetUp() OVERRIDE;
|
| + virtual void TearDown() OVERRIDE;
|
|
|
| - EXPECT_CALL(cfd, OnAutomationServerLaunchFailed(AUTOMATION_TIMEOUT, _))
|
| - .Times(1)
|
| - .WillOnce(QUIT_LOOP(loop));
|
| + static FilePath profile_path_;
|
| + MockCFDelegate cfd_;
|
| + scoped_refptr<ChromeFrameAutomationClient> client_;
|
| + scoped_refptr<ChromeFrameLaunchParams> launch_params_;
|
| + chrome_frame_test::TimedMsgLoop loop_;
|
| +};
|
| +
|
| +// static
|
| +FilePath CFACWithChrome::profile_path_;
|
| +
|
| +// static
|
| +void CFACWithChrome::SetUpTestCase() {
|
| + profile_path_ = chrome_frame_test::GetProfilePath(L"Adam.N.Epilinter");
|
| +}
|
| +
|
| +// static
|
| +void CFACWithChrome::TearDownTestCase() {
|
| + profile_path_.clear();
|
| +}
|
|
|
| +void CFACWithChrome::SetUp() {
|
| + chrome_frame_test::OverrideDataDirectoryForThisTest(profile_path_.value());
|
| + client_ = new ChromeFrameAutomationClient();
|
| GURL empty;
|
| - scoped_refptr<ChromeFrameLaunchParams> clp(new ChromeFrameLaunchParams(
|
| - empty, empty, profile_path, profile_path.BaseName().value(), L"",
|
| - false, false, false));
|
| - clp->set_launch_timeout(timeout);
|
| - clp->set_version_check(false);
|
| - EXPECT_TRUE(client->Initialize(&cfd, clp));
|
| - loop.RunFor(10);
|
| - client->Uninitialize();
|
| + launch_params_ = new ChromeFrameLaunchParams(
|
| + empty, empty, profile_path_, profile_path_.BaseName().value(), L"",
|
| + false, false, false);
|
| + launch_params_->set_version_check(false);
|
| + launch_params_->set_launch_timeout(kSaneAutomationTimeoutMs);
|
| +}
|
| +
|
| +void CFACWithChrome::TearDown() {
|
| + client_->Uninitialize();
|
| +}
|
| +
|
| +// We mock ChromeFrameDelegate only. The rest is with real AutomationProxy
|
| +TEST_F(CFACWithChrome, CreateTooFast) {
|
| + int timeout = 0; // Chrome cannot send Hello message so fast.
|
| +
|
| + EXPECT_CALL(cfd_, OnAutomationServerLaunchFailed(AUTOMATION_TIMEOUT, _))
|
| + .WillOnce(QUIT_LOOP(loop_));
|
| +
|
| + launch_params_->set_launch_timeout(timeout);
|
| + EXPECT_TRUE(client_->Initialize(&cfd_, launch_params_));
|
| + loop_.RunFor(kChromeLaunchTimeout);
|
| }
|
|
|
| // This test may fail if Chrome take more that 10 seconds (timeout var) to
|
| // launch. In this case GMock shall print something like "unexpected call to
|
| // OnAutomationServerLaunchFailed". I'm yet to find out how to specify
|
| // that this is an unexpected call, and still to execute an action.
|
| -TEST(CFACWithChrome, CreateNotSoFast) {
|
| - MockCFDelegate cfd;
|
| - chrome_frame_test::TimedMsgLoop loop;
|
| - const FilePath profile_path(
|
| - chrome_frame_test::GetProfilePath(L"Adam.N.Epilinter"));
|
| - int timeout = 10000;
|
| -
|
| - scoped_refptr<ChromeFrameAutomationClient> client;
|
| - client = new ChromeFrameAutomationClient;
|
| -
|
| - EXPECT_CALL(cfd, OnAutomationServerReady())
|
| - .Times(1)
|
| - .WillOnce(QUIT_LOOP(loop));
|
| +TEST_F(CFACWithChrome, CreateNotSoFast) {
|
| + EXPECT_CALL(cfd_, OnAutomationServerReady())
|
| + .WillOnce(QUIT_LOOP(loop_));
|
|
|
| - EXPECT_CALL(cfd, OnAutomationServerLaunchFailed(_, _))
|
| + EXPECT_CALL(cfd_, OnAutomationServerLaunchFailed(_, _))
|
| .Times(0);
|
|
|
| - GURL empty;
|
| - scoped_refptr<ChromeFrameLaunchParams> clp(new ChromeFrameLaunchParams(
|
| - empty, empty, profile_path, profile_path.BaseName().value(), L"",
|
| - false, false, false));
|
| - clp->set_launch_timeout(timeout);
|
| - clp->set_version_check(false);
|
| - EXPECT_TRUE(client->Initialize(&cfd, clp));
|
| + EXPECT_TRUE(client_->Initialize(&cfd_, launch_params_));
|
|
|
| - loop.RunFor(11);
|
| - client->Uninitialize();
|
| - client = NULL;
|
| + loop_.RunFor(kChromeLaunchTimeout);
|
| }
|
|
|
| -// FLAKY: 114386.
|
| -TEST(CFACWithChrome, DISABLED_NavigateOk) {
|
| - MockCFDelegate cfd;
|
| +TEST_F(CFACWithChrome, NavigateOk) {
|
| NavigationConstraintsImpl navigation_constraints;
|
|
|
| - chrome_frame_test::TimedMsgLoop loop;
|
| const std::string url = "about:version";
|
| - const FilePath profile_path(
|
| - chrome_frame_test::GetProfilePath(L"Adam.N.Epilinter"));
|
| - int timeout = 10000;
|
|
|
| - scoped_refptr<ChromeFrameAutomationClient> client;
|
| - client = new ChromeFrameAutomationClient;
|
| -
|
| - EXPECT_CALL(cfd, OnAutomationServerReady())
|
| - .WillOnce(InitiateNavigation(client.get(),
|
| - url, std::string(),
|
| + EXPECT_CALL(cfd_, OnAutomationServerReady())
|
| + .WillOnce(InitiateNavigation(client_.get(), url, std::string(),
|
| &navigation_constraints));
|
|
|
| - EXPECT_CALL(cfd, GetBounds(_)).Times(testing::AnyNumber());
|
| + EXPECT_CALL(cfd_, GetBounds(_)).Times(testing::AnyNumber());
|
|
|
| - EXPECT_CALL(cfd, OnNavigationStateChanged(_))
|
| + EXPECT_CALL(cfd_, OnNavigationStateChanged(_))
|
| .Times(testing::AnyNumber());
|
|
|
| {
|
| testing::InSequence s;
|
|
|
| - EXPECT_CALL(cfd, OnDidNavigate(EqNavigationInfoUrl(GURL())))
|
| + EXPECT_CALL(cfd_, OnDidNavigate(EqNavigationInfoUrl(GURL())))
|
| .Times(1);
|
|
|
| - EXPECT_CALL(cfd, OnUpdateTargetUrl(_)).Times(testing::AtMost(1));
|
| + EXPECT_CALL(cfd_, OnUpdateTargetUrl(_)).Times(testing::AtMost(1));
|
|
|
| - EXPECT_CALL(cfd, OnLoad(_))
|
| - .Times(1)
|
| - .WillOnce(QUIT_LOOP(loop));
|
| + EXPECT_CALL(cfd_, OnLoad(_))
|
| + .WillOnce(QUIT_LOOP(loop_));
|
| }
|
|
|
| - GURL empty;
|
| - scoped_refptr<ChromeFrameLaunchParams> clp(new ChromeFrameLaunchParams(
|
| - empty, empty, profile_path, profile_path.BaseName().value(), L"",
|
| - false, false, false));
|
| - clp->set_launch_timeout(timeout);
|
| - clp->set_version_check(false);
|
| - EXPECT_TRUE(client->Initialize(&cfd, clp));
|
| - loop.RunFor(10);
|
| - client->Uninitialize();
|
| - client = NULL;
|
| + EXPECT_TRUE(client_->Initialize(&cfd_, launch_params_));
|
| + loop_.RunFor(kChromeLaunchTimeout);
|
| }
|
|
|
| -// FLAKY: 114386.
|
| -TEST(CFACWithChrome, DISABLED_NavigateFailed) {
|
| - MockCFDelegate cfd;
|
| +TEST_F(CFACWithChrome, NavigateFailed) {
|
| NavigationConstraintsImpl navigation_constraints;
|
| - chrome_frame_test::TimedMsgLoop loop;
|
| - const FilePath profile_path(
|
| - chrome_frame_test::GetProfilePath(L"Adam.N.Epilinter"));
|
| const std::string url = "http://127.0.0.3:65412/";
|
| const net::URLRequestStatus connection_failed(net::URLRequestStatus::FAILED,
|
| net::ERR_INVALID_URL);
|
|
|
| - scoped_refptr<ChromeFrameAutomationClient> client;
|
| - client = new ChromeFrameAutomationClient;
|
| - cfd.SetRequestDelegate(client);
|
| + cfd_.SetRequestDelegate(client_);
|
|
|
| - EXPECT_CALL(cfd, OnAutomationServerReady())
|
| + EXPECT_CALL(cfd_, OnAutomationServerReady())
|
| .WillOnce(testing::IgnoreResult(testing::InvokeWithoutArgs(CreateFunctor(
|
| - client.get(), &ChromeFrameAutomationClient::InitiateNavigation,
|
| + client_.get(), &ChromeFrameAutomationClient::InitiateNavigation,
|
| url, std::string(), &navigation_constraints))));
|
|
|
| - EXPECT_CALL(cfd, GetBounds(_)).Times(testing::AnyNumber());
|
| - EXPECT_CALL(cfd, OnNavigationStateChanged(_)).Times(testing::AnyNumber());
|
| + EXPECT_CALL(cfd_, GetBounds(_)).Times(testing::AnyNumber());
|
| + EXPECT_CALL(cfd_, OnNavigationStateChanged(_)).Times(testing::AnyNumber());
|
|
|
| - EXPECT_CALL(cfd, OnRequestStart(_, _))
|
| + EXPECT_CALL(cfd_, OnRequestStart(_, _))
|
| // Often there's another request for the error page
|
| .Times(testing::Between(1, 2))
|
| - .WillRepeatedly(testing::WithArgs<0>(testing::Invoke(CreateFunctor(&cfd,
|
| + .WillRepeatedly(testing::WithArgs<0>(testing::Invoke(CreateFunctor(&cfd_,
|
| &MockCFDelegate::Reply, connection_failed))));
|
|
|
| - EXPECT_CALL(cfd, OnUpdateTargetUrl(_)).Times(testing::AnyNumber());
|
| - EXPECT_CALL(cfd, OnLoad(_)).Times(testing::AtMost(1));
|
| + EXPECT_CALL(cfd_, OnUpdateTargetUrl(_)).Times(testing::AnyNumber());
|
| + EXPECT_CALL(cfd_, OnLoad(_)).Times(testing::AtMost(1));
|
|
|
| - EXPECT_CALL(cfd, OnNavigationFailed(_, GURL(url)))
|
| + EXPECT_CALL(cfd_, OnNavigationFailed(_, GURL(url)))
|
| .Times(1)
|
| - .WillOnce(QUIT_LOOP_SOON(loop, 2));
|
| + .WillOnce(QUIT_LOOP_SOON(loop_, 2));
|
|
|
| - GURL empty;
|
| - scoped_refptr<ChromeFrameLaunchParams> clp(new ChromeFrameLaunchParams(
|
| - empty, empty, profile_path, profile_path.BaseName().value(), L"",
|
| - false, false, false));
|
| - clp->set_launch_timeout(10000);
|
| - clp->set_version_check(false);
|
| - EXPECT_TRUE(client->Initialize(&cfd, clp));
|
| + EXPECT_TRUE(client_->Initialize(&cfd_, launch_params_));
|
|
|
| - loop.RunFor(10);
|
| - client->Uninitialize();
|
| - client = NULL;
|
| + loop_.RunFor(kChromeLaunchTimeout);
|
| }
|
|
|
| TEST_F(CFACMockTest, MockedCreateTabOk) {
|
|
|