// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome_frame/test/chrome_frame_automation_mock.h"
#include "chrome_frame/test/chrome_frame_test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"

const int kLongWaitTimeout = 25 * 1000;
const int kShortWaitTimeout = 5 * 1000;

// This test has been marked as flaky as it randomly times out on the CF
// builders
// http://code.google.com/p/chromium/issues/detail?id=81479
TEST(ChromeFrame, FLAKY_Launch) {
  MessageLoopForUI loop;
  AutomationMockLaunch mock_launch(&loop, kLongWaitTimeout);

  loop.PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask, kLongWaitTimeout);

  mock_launch.Navigate("about:blank");
  loop.Run(NULL);
  EXPECT_TRUE(mock_launch.launch_result());
}

TEST(ChromeFrame, Navigate) {
  MessageLoopForUI loop;
  AutomationMockNavigate mock_navigate(&loop, kLongWaitTimeout);

  loop.PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask, kLongWaitTimeout);

  mock_navigate.NavigateRelativeFile(L"postmessage_basic_frame.html");
  loop.Run(NULL);
  EXPECT_FALSE(mock_navigate.navigation_result());
}

TEST(ChromeFrame, PostMessage) {
  MessageLoopForUI loop;
  AutomationMockPostMessage mock_postmessage(&loop, kLongWaitTimeout);

  loop.PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask, kLongWaitTimeout);

  mock_postmessage.NavigateRelativeFile(L"postmessage_basic_frame.html");
  loop.Run(NULL);
  EXPECT_FALSE(mock_postmessage.postmessage_result());
}

// Marking this test as flaky as it fails randomly on the CF builders.
// http://code.google.com/p/chromium/issues/detail?id=81479
TEST(ChromeFrame, FLAKY_RequestStart) {
  MessageLoopForUI loop;
  AutomationMockHostNetworkRequestStart mock_request_start(&loop,
                                                           kLongWaitTimeout);

  loop.PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask, kLongWaitTimeout);

  mock_request_start.NavigateRelative(L"postmessage_basic_frame.html");
  loop.Run(NULL);
  EXPECT_TRUE(mock_request_start.request_start_result());
}

