text: // Copyright (c) 2012 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.
  
  #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHOD_CONFIGURATION_H_
  #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHOD_CONFIGURATION_H_
  
  namespace chromeos {
  namespace input_method {
  
  class InputMethodManager;
  
  // Initializes the InputMethodManager. Must be called before any calls to
  // GetInstance(). We explicitly initialize and shut down the global instance,
  // rather than making it a Singleton, to ensure clean startup and shutdown.
  void Initialize();
  
  // Similar to Initialize(), but can inject an alternative
  // InputMethodManager such as MockInputMethodManager for testing.
  // The injected object will be owned by the internal pointer and deleted
  // by Shutdown().
  void InitializeForTesting(InputMethodManager* mock_manager);
  
  // Destroys the global InputMethodManager instance.
  void Shutdown();
  
  // Gets the global InputMethodManager. Initialize() or InitializeForTesting()
  // must be called first.
  InputMethodManager* GetInputMethodManager();
  
  }  // namespace input_method
  }  // namespace chromeos
  
  #endif  // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHOD_CONFIGURATION_H_
  