1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4#ifndef CHROME_FRAME_TEST_PROXY_FACTORY_MOCK_H_
5#define CHROME_FRAME_TEST_PROXY_FACTORY_MOCK_H_
6
7#include <windows.h>
8#include <string>
9
10#include "gmock/gmock.h"
11#include "chrome_frame/chrome_frame_automation.h"
12
13struct LaunchDelegateMock : public LaunchDelegate {
14  MOCK_METHOD2(LaunchComplete, void(ChromeFrameAutomationProxy*,
15      AutomationLaunchResult));
16  MOCK_METHOD0(AutomationServerDied, void());
17};
18
19class MockProxyFactory : public ProxyFactory {
20 public:
21  MOCK_METHOD3(GetAutomationServer,
22      void (LaunchDelegate*,  // NOLINT
23            ChromeFrameLaunchParams* params,
24            void** automation_server_id));
25  MOCK_METHOD2(ReleaseAutomationServer, bool(void* server_id,
26                                             LaunchDelegate* delegate));
27
28  MockProxyFactory() : thread_("mock factory worker") {
29    thread_.Start();
30    loop_ = thread_.message_loop();
31  }
32
33  // Fake implementation
34  void GetServerImpl(ChromeFrameAutomationProxy* pxy,
35                     void* proxy_id,
36                     AutomationLaunchResult result,
37                     LaunchDelegate* d,
38                     ChromeFrameLaunchParams* params,
39                     void** automation_server_id);
40
41  base::Thread thread_;
42  base::MessageLoop* loop_;
43};
44
45#endif  // CHROME_FRAME_TEST_PROXY_FACTORY_MOCK_H_
46
47