1// Copyright 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
5#include "chrome/browser/chromeos/input_method/accessibility.h"
6
7#include "base/logging.h"
8#include "base/strings/utf_string_conversions.h"
9#include "chrome/browser/accessibility/accessibility_events.h"
10#include "chrome/browser/chromeos/input_method/input_method_util.h"
11#include "chrome/browser/profiles/profile_manager.h"
12
13namespace chromeos {
14namespace input_method {
15
16Accessibility::Accessibility(InputMethodManager* imm)
17    : imm_(imm) {
18  DCHECK(imm_);
19  imm_->AddObserver(this);
20}
21
22Accessibility::~Accessibility() {
23  DCHECK(imm_);
24  imm_->RemoveObserver(this);
25}
26
27void Accessibility::InputMethodChanged(InputMethodManager* imm,
28                                       bool show_message) {
29  DCHECK_EQ(imm, imm_);
30  if (!show_message)
31    return;
32
33  // Get the medium name of the changed input method (e.g. US, INTL, etc.)
34  const InputMethodDescriptor descriptor = imm_->GetCurrentInputMethod();
35  const std::string medium_name = base::UTF16ToUTF8(
36      imm_->GetInputMethodUtil()->GetInputMethodMediumName(descriptor));
37
38  AccessibilityAlertInfo event(ProfileManager::GetActiveUserProfile(),
39                               medium_name);
40  SendControlAccessibilityNotification(
41      ui::AX_EVENT_ALERT, &event);
42}
43
44}  // namespace input_method
45}  // namespace chromeos
46