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

Side by Side Diff: components/spellcheck/renderer/spellcheck.cc

Issue 2680563002: Revert of Remove ScopedVector in components/spellcheck (Closed)
Patch Set: Created 3 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "components/spellcheck/renderer/spellcheck.h" 5 #include "components/spellcheck/renderer/spellcheck.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 DocumentMarkersCollector collector; 256 DocumentMarkersCollector collector;
257 content::RenderView::ForEach(&collector); 257 content::RenderView::ForEach(&collector);
258 content::RenderThread::Get()->Send( 258 content::RenderThread::Get()->Send(
259 new SpellCheckHostMsg_RespondDocumentMarkers(collector.markers())); 259 new SpellCheckHostMsg_RespondDocumentMarkers(collector.markers()));
260 } 260 }
261 261
262 // TODO(groby): Make sure we always have a spelling engine, even before 262 // TODO(groby): Make sure we always have a spelling engine, even before
263 // AddSpellcheckLanguage() is called. 263 // AddSpellcheckLanguage() is called.
264 void SpellCheck::AddSpellcheckLanguage(base::File file, 264 void SpellCheck::AddSpellcheckLanguage(base::File file,
265 const std::string& language) { 265 const std::string& language) {
266 languages_.push_back(base::MakeUnique<SpellcheckLanguage>()); 266 languages_.push_back(new SpellcheckLanguage());
267 languages_.back()->Init(std::move(file), language); 267 languages_.back()->Init(std::move(file), language);
268 } 268 }
269 269
270 bool SpellCheck::SpellCheckWord( 270 bool SpellCheck::SpellCheckWord(
271 const base::char16* text_begin, 271 const base::char16* text_begin,
272 int position_in_text, 272 int position_in_text,
273 int text_length, 273 int text_length,
274 int tag, 274 int tag,
275 int* misspelling_start, 275 int* misspelling_start,
276 int* misspelling_len, 276 int* misspelling_len,
(...skipping 23 matching lines...) Expand all
300 // skippable. 300 // skippable.
301 for (; position_in_text <= text_length; 301 for (; position_in_text <= text_length;
302 position_in_text += agreed_skippable_len) { 302 position_in_text += agreed_skippable_len) {
303 // Reseting |agreed_skippable_len| to the worst-case length each time 303 // Reseting |agreed_skippable_len| to the worst-case length each time
304 // prevents some unnecessary iterations. 304 // prevents some unnecessary iterations.
305 agreed_skippable_len = text_length; 305 agreed_skippable_len = text_length;
306 *misspelling_start = 0; 306 *misspelling_start = 0;
307 *misspelling_len = 0; 307 *misspelling_len = 0;
308 suggestions_list.clear(); 308 suggestions_list.clear();
309 309
310 for (auto language = languages_.begin(); language != languages_.end();) { 310 for (ScopedVector<SpellcheckLanguage>::iterator language =
311 languages_.begin();
312 language != languages_.end();) {
311 language_suggestions.clear(); 313 language_suggestions.clear();
312 SpellcheckLanguage::SpellcheckWordResult result = 314 SpellcheckLanguage::SpellcheckWordResult result =
313 (*language)->SpellCheckWord( 315 (*language)->SpellCheckWord(
314 text_begin, position_in_text, text_length, tag, 316 text_begin, position_in_text, text_length, tag,
315 &possible_misspelling_start, &possible_misspelling_len, 317 &possible_misspelling_start, &possible_misspelling_len,
316 optional_suggestions ? &language_suggestions : nullptr); 318 optional_suggestions ? &language_suggestions : nullptr);
317 319
318 switch (result) { 320 switch (result) {
319 case SpellcheckLanguage::SpellcheckWordResult::IS_CORRECT: 321 case SpellcheckLanguage::SpellcheckWordResult::IS_CORRECT:
320 *misspelling_start = 0; 322 *misspelling_start = 0;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 432
431 PostDelayedSpellCheckTask(pending_request_param_.release()); 433 PostDelayedSpellCheckTask(pending_request_param_.release());
432 } 434 }
433 #endif 435 #endif
434 436
435 bool SpellCheck::InitializeIfNeeded() { 437 bool SpellCheck::InitializeIfNeeded() {
436 if (languages_.empty()) 438 if (languages_.empty())
437 return true; 439 return true;
438 440
439 bool initialize_if_needed = false; 441 bool initialize_if_needed = false;
440 for (auto& language : languages_) 442 for (SpellcheckLanguage* language : languages_)
441 initialize_if_needed |= language->InitializeIfNeeded(); 443 initialize_if_needed |= language->InitializeIfNeeded();
442 444
443 return initialize_if_needed; 445 return initialize_if_needed;
444 } 446 }
445 447
446 // OSX and Android don't have |pending_request_param_| 448 // OSX and Android don't have |pending_request_param_|
447 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) 449 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
448 void SpellCheck::PostDelayedSpellCheckTask(SpellcheckRequest* request) { 450 void SpellCheck::PostDelayedSpellCheckTask(SpellcheckRequest* request) {
449 if (!request) 451 if (!request)
450 return; 452 return;
451 453
452 base::ThreadTaskRunnerHandle::Get()->PostTask( 454 base::ThreadTaskRunnerHandle::Get()->PostTask(
453 FROM_HERE, base::Bind(&SpellCheck::PerformSpellCheck, AsWeakPtr(), 455 FROM_HERE, base::Bind(&SpellCheck::PerformSpellCheck, AsWeakPtr(),
454 base::Owned(request))); 456 base::Owned(request)));
455 } 457 }
456 #endif 458 #endif
457 459
458 // Mac and Android use their platform engines instead. 460 // Mac and Android use their platform engines instead.
459 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) 461 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
460 void SpellCheck::PerformSpellCheck(SpellcheckRequest* param) { 462 void SpellCheck::PerformSpellCheck(SpellcheckRequest* param) {
461 DCHECK(param); 463 DCHECK(param);
462 464
463 if (languages_.empty() || 465 if (languages_.empty() ||
464 std::find_if(languages_.begin(), languages_.end(), 466 std::find_if(languages_.begin(), languages_.end(),
465 [](std::unique_ptr<SpellcheckLanguage>& language) { 467 [](SpellcheckLanguage* language) {
466 return !language->IsEnabled(); 468 return !language->IsEnabled();
467 }) != languages_.end()) { 469 }) != languages_.end()) {
468 param->completion()->didCancelCheckingText(); 470 param->completion()->didCancelCheckingText();
469 } else { 471 } else {
470 WebVector<blink::WebTextCheckingResult> results; 472 WebVector<blink::WebTextCheckingResult> results;
471 SpellCheckParagraph(param->text(), &results); 473 SpellCheckParagraph(param->text(), &results);
472 param->completion()->didFinishCheckingText(results); 474 param->completion()->didFinishCheckingText(results);
473 } 475 }
474 } 476 }
475 #endif 477 #endif
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 533
532 textcheck_results->assign(results); 534 textcheck_results->assign(results);
533 } 535 }
534 536
535 bool SpellCheck::IsSpellcheckEnabled() { 537 bool SpellCheck::IsSpellcheckEnabled() {
536 #if defined(OS_ANDROID) 538 #if defined(OS_ANDROID)
537 if (!spellcheck::IsAndroidSpellCheckFeatureEnabled()) return false; 539 if (!spellcheck::IsAndroidSpellCheckFeatureEnabled()) return false;
538 #endif 540 #endif
539 return spellcheck_enabled_; 541 return spellcheck_enabled_;
540 } 542 }
OLDNEW
« no previous file with comments | « components/spellcheck/renderer/spellcheck.h ('k') | components/spellcheck/renderer/spellcheck_provider_mac_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698