OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "win8/metro_driver/ime/text_service.h" | 5 #include "win8/metro_driver/ime/text_service.h" |
6 | 6 |
7 #include <msctf.h> | 7 #include <msctf.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/win/scoped_variant.h" | 10 #include "base/win/scoped_variant.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 hr = thread_compartment_manager->GetCompartment( | 104 hr = thread_compartment_manager->GetCompartment( |
105 GUID_COMPARTMENT_KEYBOARD_INPUTMODE_SENTENCE, | 105 GUID_COMPARTMENT_KEYBOARD_INPUTMODE_SENTENCE, |
106 sentence_compartment.Receive()); | 106 sentence_compartment.Receive()); |
107 if (FAILED(hr)) { | 107 if (FAILED(hr)) { |
108 LOG(ERROR) << "ITfCompartment::GetCompartment failed. hr = " << hr; | 108 LOG(ERROR) << "ITfCompartment::GetCompartment failed. hr = " << hr; |
109 return false; | 109 return false; |
110 } | 110 } |
111 | 111 |
112 base::win::ScopedVariant sentence_variant; | 112 base::win::ScopedVariant sentence_variant; |
113 sentence_variant.Set(TF_SENTENCEMODE_PHRASEPREDICT); | 113 sentence_variant.Set(TF_SENTENCEMODE_PHRASEPREDICT); |
114 hr = sentence_compartment->SetValue(client_id, &sentence_variant); | 114 hr = sentence_compartment->SetValue(client_id, sentence_variant.ptr()); |
115 if (FAILED(hr)) { | 115 if (FAILED(hr)) { |
116 LOG(ERROR) << "ITfCompartment::SetValue failed. hr = " << hr; | 116 LOG(ERROR) << "ITfCompartment::SetValue failed. hr = " << hr; |
117 return false; | 117 return false; |
118 } | 118 } |
119 return true; | 119 return true; |
120 } | 120 } |
121 | 121 |
122 // Initializes |context| as disabled context where IMEs will be disabled. | 122 // Initializes |context| as disabled context where IMEs will be disabled. |
123 bool InitializeDisabledContext(ITfContext* context, TfClientId client_id) { | 123 bool InitializeDisabledContext(ITfContext* context, TfClientId client_id) { |
124 base::win::ScopedComPtr<ITfCompartmentMgr> compartment_mgr; | 124 base::win::ScopedComPtr<ITfCompartmentMgr> compartment_mgr; |
125 HRESULT hr = compartment_mgr.QueryFrom(context); | 125 HRESULT hr = compartment_mgr.QueryFrom(context); |
126 if (FAILED(hr)) { | 126 if (FAILED(hr)) { |
127 LOG(ERROR) << "QueryFrom failed. hr = " << hr; | 127 LOG(ERROR) << "QueryFrom failed. hr = " << hr; |
128 return false; | 128 return false; |
129 } | 129 } |
130 | 130 |
131 base::win::ScopedComPtr<ITfCompartment> disabled_compartment; | 131 base::win::ScopedComPtr<ITfCompartment> disabled_compartment; |
132 hr = compartment_mgr->GetCompartment(GUID_COMPARTMENT_KEYBOARD_DISABLED, | 132 hr = compartment_mgr->GetCompartment(GUID_COMPARTMENT_KEYBOARD_DISABLED, |
133 disabled_compartment.Receive()); | 133 disabled_compartment.Receive()); |
134 if (FAILED(hr)) { | 134 if (FAILED(hr)) { |
135 LOG(ERROR) << "ITfCompartment::GetCompartment failed. hr = " << hr; | 135 LOG(ERROR) << "ITfCompartment::GetCompartment failed. hr = " << hr; |
136 return false; | 136 return false; |
137 } | 137 } |
138 | 138 |
139 base::win::ScopedVariant variant; | 139 base::win::ScopedVariant variant; |
140 variant.Set(1); | 140 variant.Set(1); |
141 hr = disabled_compartment->SetValue(client_id, &variant); | 141 hr = disabled_compartment->SetValue(client_id, variant.ptr()); |
142 if (FAILED(hr)) { | 142 if (FAILED(hr)) { |
143 LOG(ERROR) << "ITfCompartment::SetValue failed. hr = " << hr; | 143 LOG(ERROR) << "ITfCompartment::SetValue failed. hr = " << hr; |
144 return false; | 144 return false; |
145 } | 145 } |
146 | 146 |
147 base::win::ScopedComPtr<ITfCompartment> empty_context; | 147 base::win::ScopedComPtr<ITfCompartment> empty_context; |
148 hr = compartment_mgr->GetCompartment(GUID_COMPARTMENT_EMPTYCONTEXT, | 148 hr = compartment_mgr->GetCompartment(GUID_COMPARTMENT_EMPTYCONTEXT, |
149 empty_context.Receive()); | 149 empty_context.Receive()); |
150 if (FAILED(hr)) { | 150 if (FAILED(hr)) { |
151 LOG(ERROR) << "ITfCompartment::GetCompartment failed. hr = " << hr; | 151 LOG(ERROR) << "ITfCompartment::GetCompartment failed. hr = " << hr; |
152 return false; | 152 return false; |
153 } | 153 } |
154 | 154 |
155 base::win::ScopedVariant empty_context_variant; | 155 base::win::ScopedVariant empty_context_variant; |
156 empty_context_variant.Set(static_cast<int32>(1)); | 156 empty_context_variant.Set(static_cast<int32>(1)); |
157 hr = empty_context->SetValue(client_id, &empty_context_variant); | 157 hr = empty_context->SetValue(client_id, empty_context_variant.ptr()); |
158 if (FAILED(hr)) { | 158 if (FAILED(hr)) { |
159 LOG(ERROR) << "ITfCompartment::SetValue failed. hr = " << hr; | 159 LOG(ERROR) << "ITfCompartment::SetValue failed. hr = " << hr; |
160 return false; | 160 return false; |
161 } | 161 } |
162 | 162 |
163 return true; | 163 return true; |
164 } | 164 } |
165 | 165 |
166 bool IsPasswordField(const std::vector<InputScope>& input_scopes) { | 166 bool IsPasswordField(const std::vector<InputScope>& input_scopes) { |
167 return std::find(input_scopes.begin(), input_scopes.end(), IS_PASSWORD) != | 167 return std::find(input_scopes.begin(), input_scopes.end(), IS_PASSWORD) != |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 if (!InitializeSentenceMode(thread_manager.get(), client_id)) { | 480 if (!InitializeSentenceMode(thread_manager.get(), client_id)) { |
481 LOG(ERROR) << "InitializeSentenceMode failed."; | 481 LOG(ERROR) << "InitializeSentenceMode failed."; |
482 thread_manager->Deactivate(); | 482 thread_manager->Deactivate(); |
483 return scoped_ptr<TextService>(); | 483 return scoped_ptr<TextService>(); |
484 } | 484 } |
485 return scoped_ptr<TextService>(new TextServiceImpl( | 485 return scoped_ptr<TextService>(new TextServiceImpl( |
486 thread_manager.get(), client_id, window_handle, delegate)); | 486 thread_manager.get(), client_id, window_handle, delegate)); |
487 } | 487 } |
488 | 488 |
489 } // namespace metro_driver | 489 } // namespace metro_driver |
OLD | NEW |