15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROMEOS_DBUS_IBUS_MOCK_IBUS_CLIENT_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROMEOS_DBUS_IBUS_MOCK_IBUS_CLIENT_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/ibus/ibus_client.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockIBusClient : public IBusClient {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockIBusClient();
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockIBusClient();
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef base::Callback<void(const std::string& client_name,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const CreateInputContextCallback& callback,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const ErrorCallback& error_callback)>
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      CreateInputContextHandler;
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef base::Callback<void(const IBusComponent& ibus_component,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const RegisterComponentCallback& callback,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const ErrorCallback& error_callback)>
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RegisterComponentHandler;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IBusClient override.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CreateInputContext(const std::string& client_name,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  const CreateInputContextCallback& callback,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  const ErrorCallback& error_callback) OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IBusClient override.
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void RegisterComponent(const IBusComponent& ibus_component,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const RegisterComponentCallback& callback,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const ErrorCallback& error_callback) OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IBusClient override.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetGlobalEngine(const std::string& engine_name,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const ErrorCallback& error_callback) OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IBusClient override.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Exit(ExitOption option,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const ErrorCallback& error_callback) OVERRIDE;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Function handler for CreateInputContext. The CreateInputContext function
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // invokes |create_input_context_handler_| unless it's not null.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_create_input_context_handler(
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const CreateInputContextHandler& handler) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    create_input_context_handler_ = handler;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Function handler for RegisterComponent. The RegisterComponent function
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // invokes |register_component_handler_| unless it's not null.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_register_component_handler(
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const RegisterComponentHandler& handler) {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    register_component_handler_ = handler;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Call count of CreateInputContext().
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int create_input_context_call_count() const {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return create_input_context_call_count_;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Call count of RegisterComponent().
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int register_component_call_count() const {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return register_component_call_count_;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  int set_global_engine_call_count() const {
71a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)    return set_global_engine_call_count_;
72a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  }
73a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
74a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  const std::string& latest_global_engine_name() const {
75a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)    return latest_global_engine_name_;
76a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  }
77a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CreateInputContextHandler create_input_context_handler_;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RegisterComponentHandler register_component_handler_;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int create_input_context_call_count_;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int register_component_call_count_;
83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  int set_global_engine_call_count_;
84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  std::string latest_global_engine_name_;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockIBusClient);
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROMEOS_DBUS_IBUS_MOCK_IBUS_CLIENT_H_
92