Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: chrome/browser/chromeos/input_method/input_method_engine.cc

Issue 561223002: Updates the histograms for IMF and IMEs according to the new design. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revised per comments. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "chrome/browser/chromeos/input_method/input_method_engine.h" 5 #include "chrome/browser/chromeos/input_method/input_method_engine.h"
6 6
7 #undef FocusIn 7 #undef FocusIn
8 #undef FocusOut 8 #undef FocusOut
9 #undef RootWindow 9 #undef RootWindow
10 #include <map> 10 #include <map>
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 context_id_(0), 155 context_id_(0),
156 next_context_id_(1), 156 next_context_id_(1),
157 composition_text_(new CompositionText()), 157 composition_text_(new CompositionText()),
158 composition_cursor_(0), 158 composition_cursor_(0),
159 candidate_window_(new ui::CandidateWindow()), 159 candidate_window_(new ui::CandidateWindow()),
160 window_visible_(false), 160 window_visible_(false),
161 sent_key_event_(NULL) { 161 sent_key_event_(NULL) {
162 } 162 }
163 163
164 InputMethodEngine::~InputMethodEngine() { 164 InputMethodEngine::~InputMethodEngine() {
165 if (start_time_.ToInternalValue())
166 RecordHistogram("WorkingTime", (end_time_ - start_time_).InSeconds());
167 } 165 }
168 166
169 void InputMethodEngine::Initialize( 167 void InputMethodEngine::Initialize(
170 scoped_ptr<InputMethodEngineInterface::Observer> observer, 168 scoped_ptr<InputMethodEngineInterface::Observer> observer,
171 const char* extension_id) { 169 const char* extension_id) {
172 DCHECK(observer) << "Observer must not be null."; 170 DCHECK(observer) << "Observer must not be null.";
173 171
174 // TODO(komatsu): It is probably better to set observer out of Initialize. 172 // TODO(komatsu): It is probably better to set observer out of Initialize.
175 observer_ = observer.Pass(); 173 observer_ = observer.Pass();
176 extension_id_ = extension_id; 174 extension_id_ = extension_id;
177 } 175 }
178 176
179 void InputMethodEngine::RecordHistogram(const char* name, int count) {
180 std::string histo_name = base::StringPrintf(
181 "InputMethod.%s.%s", name, active_component_id_.c_str());
182 base::HistogramBase* counter = base::Histogram::FactoryGet(
183 histo_name, 0, 1000000, 50, base::HistogramBase::kNoFlags);
184 if (counter)
185 counter->Add(count);
186 }
187
188 const std::string& InputMethodEngine::GetActiveComponentId() const { 177 const std::string& InputMethodEngine::GetActiveComponentId() const {
189 return active_component_id_; 178 return active_component_id_;
190 } 179 }
191 180
192 bool InputMethodEngine::SetComposition( 181 bool InputMethodEngine::SetComposition(
193 int context_id, 182 int context_id,
194 const char* text, 183 const char* text,
195 int selection_start, 184 int selection_start,
196 int selection_end, 185 int selection_end,
197 int cursor, 186 int cursor,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 *error = kErrorNotActive; 252 *error = kErrorNotActive;
264 return false; 253 return false;
265 } 254 }
266 if (context_id != context_id_ || context_id_ == -1) { 255 if (context_id != context_id_ || context_id_ == -1) {
267 *error = kErrorWrongContext; 256 *error = kErrorWrongContext;
268 return false; 257 return false;
269 } 258 }
270 259
271 IMEBridge::Get()->GetInputContextHandler()->CommitText(text); 260 IMEBridge::Get()->GetInputContextHandler()->CommitText(text);
272 261
273 // Records times for using input method. 262 // Records histograms for committed characters.
274 if (!start_time_.ToInternalValue()) 263 if (!composition_text_->text().empty()) {
275 start_time_ = base::Time::Now(); 264 size_t len = GetUtf8StringLength(text);
276 end_time_ = base::Time::Now(); 265 UMA_HISTOGRAM_CUSTOM_COUNTS("InputMethod.CommitLength",
277 // Records histograms for counts of commits and committed characters. 266 len, 1, 25, 25);
278 RecordHistogram("Commit", 1); 267 }
279 RecordHistogram("CommitCharacter", GetUtf8StringLength(text));
280 return true; 268 return true;
281 } 269 }
282 270
283 bool InputMethodEngine::SendKeyEvents( 271 bool InputMethodEngine::SendKeyEvents(
284 int context_id, 272 int context_id,
285 const std::vector<KeyboardEvent>& events) { 273 const std::vector<KeyboardEvent>& events) {
286 if (!IsActive()) { 274 if (!IsActive()) {
287 return false; 275 return false;
288 } 276 }
289 // context_id == 0, means sending key events to non-input field. 277 // context_id == 0, means sending key events to non-input field.
(...skipping 29 matching lines...) Expand all
319 base::string16 key_char = base::UTF8ToUTF16(event.key); 307 base::string16 key_char = base::UTF8ToUTF16(event.key);
320 if (key_char.size() == 1) 308 if (key_char.size() == 1)
321 ui_event.set_character(key_char[0]); 309 ui_event.set_character(key_char[0]);
322 } 310 }
323 base::AutoReset<const ui::KeyEvent*> reset_sent_key(&sent_key_event_, 311 base::AutoReset<const ui::KeyEvent*> reset_sent_key(&sent_key_event_,
324 &ui_event); 312 &ui_event);
325 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&ui_event); 313 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&ui_event);
326 if (details.dispatcher_destroyed) 314 if (details.dispatcher_destroyed)
327 break; 315 break;
328 } 316 }
317
329 return true; 318 return true;
330 } 319 }
331 320
332 const InputMethodEngine::CandidateWindowProperty& 321 const InputMethodEngine::CandidateWindowProperty&
333 InputMethodEngine::GetCandidateWindowProperty() const { 322 InputMethodEngine::GetCandidateWindowProperty() const {
334 return candidate_window_property_; 323 return candidate_window_property_;
335 } 324 }
336 325
337 void InputMethodEngine::SetCandidateWindowProperty( 326 void InputMethodEngine::SetCandidateWindowProperty(
338 const CandidateWindowProperty& property) { 327 const CandidateWindowProperty& property) {
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 } 555 }
567 556
568 void InputMethodEngine::Enable(const std::string& component_id) { 557 void InputMethodEngine::Enable(const std::string& component_id) {
569 DCHECK(!component_id.empty()); 558 DCHECK(!component_id.empty());
570 active_component_id_ = component_id; 559 active_component_id_ = component_id;
571 observer_->OnActivate(component_id); 560 observer_->OnActivate(component_id);
572 current_input_type_ = IMEBridge::Get()->GetCurrentTextInputType(); 561 current_input_type_ = IMEBridge::Get()->GetCurrentTextInputType();
573 FocusIn(IMEEngineHandlerInterface::InputContext( 562 FocusIn(IMEEngineHandlerInterface::InputContext(
574 current_input_type_, ui::TEXT_INPUT_MODE_DEFAULT)); 563 current_input_type_, ui::TEXT_INPUT_MODE_DEFAULT));
575 EnableInputView(); 564 EnableInputView();
576
577 start_time_ = base::Time();
578 end_time_ = base::Time();
579 RecordHistogram("Enable", 1);
580 } 565 }
581 566
582 void InputMethodEngine::Disable() { 567 void InputMethodEngine::Disable() {
583 active_component_id_.clear(); 568 active_component_id_.clear();
584 observer_->OnDeactivated(active_component_id_); 569 observer_->OnDeactivated(active_component_id_);
585
586 if (start_time_.ToInternalValue())
587 RecordHistogram("WorkingTime", (end_time_ - start_time_).InSeconds());
588 } 570 }
589 571
590 void InputMethodEngine::PropertyActivate(const std::string& property_name) { 572 void InputMethodEngine::PropertyActivate(const std::string& property_name) {
591 observer_->OnMenuItemActivated(active_component_id_, property_name); 573 observer_->OnMenuItemActivated(active_component_id_, property_name);
592 } 574 }
593 575
594 void InputMethodEngine::Reset() { 576 void InputMethodEngine::Reset() {
595 observer_->OnReset(active_component_id_); 577 observer_->OnReset(active_component_id_);
596 } 578 }
597 579
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 // TODO(nona): Implement it. 655 // TODO(nona): Implement it.
674 break; 656 break;
675 } 657 }
676 } 658 }
677 } 659 }
678 660
679 // TODO(nona): Support item.children. 661 // TODO(nona): Support item.children.
680 } 662 }
681 663
682 } // namespace chromeos 664 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698