Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / input_method / accessibility.cc
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
13 namespace chromeos {
14 namespace input_method {
15
16 Accessibility::Accessibility(InputMethodManager* imm)
17     : imm_(imm) {
18   DCHECK(imm_);
19   imm_->AddObserver(this);
20 }
21
22 Accessibility::~Accessibility() {
23   DCHECK(imm_);
24   imm_->RemoveObserver(this);
25 }
26
27 void 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 =
35       imm_->GetActiveIMEState()->GetCurrentInputMethod();
36   const std::string medium_name = base::UTF16ToUTF8(
37       imm_->GetInputMethodUtil()->GetInputMethodMediumName(descriptor));
38
39   AccessibilityAlertInfo event(ProfileManager::GetActiveUserProfile(),
40                                medium_name);
41   SendControlAccessibilityNotification(
42       ui::AX_EVENT_ALERT, &event);
43 }
44
45 }  // namespace input_method
46 }  // namespace chromeos