• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
Accessibility(InputMethodManager * imm)16 Accessibility::Accessibility(InputMethodManager* imm)
17     : imm_(imm) {
18   DCHECK(imm_);
19   imm_->AddObserver(this);
20 }
21 
~Accessibility()22 Accessibility::~Accessibility() {
23   DCHECK(imm_);
24   imm_->RemoveObserver(this);
25 }
26 
InputMethodChanged(InputMethodManager * imm,bool show_message)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
47