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 "chrome/browser/ui/app_list/start_page_service.h" | 5 #include "chrome/browser/ui/app_list/start_page_service.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 state_(app_list::SPEECH_RECOGNITION_READY), | 321 state_(app_list::SPEECH_RECOGNITION_READY), |
322 speech_button_toggled_manually_(false), | 322 speech_button_toggled_manually_(false), |
323 speech_result_obtained_(false), | 323 speech_result_obtained_(false), |
324 webui_finished_loading_(false), | 324 webui_finished_loading_(false), |
325 speech_auth_helper_(new SpeechAuthHelper(profile, &clock_)), | 325 speech_auth_helper_(new SpeechAuthHelper(profile, &clock_)), |
326 network_available_(true), | 326 network_available_(true), |
327 microphone_available_(true), | 327 microphone_available_(true), |
328 search_engine_is_google_(false), | 328 search_engine_is_google_(false), |
329 backoff_entry_(&kDoodleBackoffPolicy), | 329 backoff_entry_(&kDoodleBackoffPolicy), |
330 weak_factory_(this) { | 330 weak_factory_(this) { |
331 if (switches::IsExperimentalAppListEnabled()) { | 331 TemplateURLService* template_url_service = |
332 TemplateURLService* template_url_service = | 332 TemplateURLServiceFactory::GetForProfile(profile_); |
333 TemplateURLServiceFactory::GetForProfile(profile_); | 333 const TemplateURL* default_provider = |
334 const TemplateURL* default_provider = | 334 template_url_service->GetDefaultSearchProvider(); |
335 template_url_service->GetDefaultSearchProvider(); | 335 search_engine_is_google_ = |
336 search_engine_is_google_ = | 336 default_provider->GetEngineType( |
337 default_provider->GetEngineType( | 337 template_url_service->search_terms_data()) == SEARCH_ENGINE_GOOGLE; |
338 template_url_service->search_terms_data()) == | |
339 SEARCH_ENGINE_GOOGLE; | |
340 } | |
341 | 338 |
342 network_change_observer_.reset(new NetworkChangeObserver(this)); | 339 network_change_observer_.reset(new NetworkChangeObserver(this)); |
343 } | 340 } |
344 | 341 |
345 StartPageService::~StartPageService() { | 342 StartPageService::~StartPageService() { |
346 } | 343 } |
347 | 344 |
348 void StartPageService::AddObserver(StartPageObserver* observer) { | 345 void StartPageService::AddObserver(StartPageObserver* observer) { |
349 observers_.AddObserver(observer); | 346 observers_.AddObserver(observer); |
350 } | 347 } |
(...skipping 19 matching lines...) Expand all Loading... |
370 OnSpeechRecognitionStateChanged(SPEECH_RECOGNITION_READY); | 367 OnSpeechRecognitionStateChanged(SPEECH_RECOGNITION_READY); |
371 } else { | 368 } else { |
372 OnSpeechRecognitionStateChanged(network_available_ ? SPEECH_RECOGNITION_OFF | 369 OnSpeechRecognitionStateChanged(network_available_ ? SPEECH_RECOGNITION_OFF |
373 : SPEECH_RECOGNITION_NETWORK_ERROR); | 370 : SPEECH_RECOGNITION_NETWORK_ERROR); |
374 } | 371 } |
375 } | 372 } |
376 | 373 |
377 void StartPageService::Init() { | 374 void StartPageService::Init() { |
378 // Do not load the start page web contents in tests because many tests assume | 375 // Do not load the start page web contents in tests because many tests assume |
379 // no WebContents exist except the ones they make. | 376 // no WebContents exist except the ones they make. |
380 if (switches::IsExperimentalAppListEnabled() && | 377 if (base::CommandLine::ForCurrentProcess()->HasSwitch(::switches::kTestType)) |
381 !base::CommandLine::ForCurrentProcess()->HasSwitch( | 378 return; |
382 ::switches::kTestType)) { | 379 |
383 content::BrowserThread::PostDelayedTask( | 380 content::BrowserThread::PostDelayedTask( |
384 content::BrowserThread::UI, FROM_HERE, | 381 content::BrowserThread::UI, FROM_HERE, |
385 base::Bind(&StartPageService::LoadContentsIfNeeded, | 382 base::Bind(&StartPageService::LoadContentsIfNeeded, |
386 weak_factory_.GetWeakPtr()), | 383 weak_factory_.GetWeakPtr()), |
387 base::TimeDelta::FromSeconds(kLoadContentsDelaySeconds)); | 384 base::TimeDelta::FromSeconds(kLoadContentsDelaySeconds)); |
388 } | |
389 } | 385 } |
390 | 386 |
391 void StartPageService::LoadContentsIfNeeded() { | 387 void StartPageService::LoadContentsIfNeeded() { |
392 if (!contents_) | 388 if (!contents_) |
393 LoadContents(); | 389 LoadContents(); |
394 } | 390 } |
395 | 391 |
396 bool StartPageService::ShouldEnableSpeechRecognition() const { | 392 bool StartPageService::ShouldEnableSpeechRecognition() const { |
397 return microphone_available_ && network_available_; | 393 return microphone_available_ && network_available_; |
398 } | 394 } |
399 | 395 |
400 void StartPageService::AppListShown() { | 396 void StartPageService::AppListShown() { |
401 if (!contents_) { | 397 if (!contents_) { |
402 LoadContents(); | 398 LoadContents(); |
403 } else if (contents_->IsCrashed()) { | 399 } else if (contents_->IsCrashed()) { |
404 LoadStartPageURL(); | 400 LoadStartPageURL(); |
405 } else if (contents_->GetWebUI()) { | 401 } else if (contents_->GetWebUI()) { |
406 contents_->GetWebUI()->CallJavascriptFunctionUnsafe( | 402 contents_->GetWebUI()->CallJavascriptFunctionUnsafe( |
407 "appList.startPage.onAppListShown"); | 403 "appList.startPage.onAppListShown"); |
408 } | 404 } |
409 | 405 |
410 #if defined(OS_CHROMEOS) | 406 #if defined(OS_CHROMEOS) |
411 audio_status_.reset(new AudioStatus(this)); | 407 audio_status_.reset(new AudioStatus(this)); |
412 #endif | 408 #endif |
413 } | 409 } |
414 | 410 |
415 void StartPageService::AppListHidden() { | 411 void StartPageService::AppListHidden() { |
416 if (!app_list::switches::IsExperimentalAppListEnabled()) | |
417 UnloadContents(); | |
418 | |
419 if (speech_recognizer_) { | 412 if (speech_recognizer_) { |
420 StopSpeechRecognition(); | 413 StopSpeechRecognition(); |
421 } | 414 } |
422 | 415 |
423 #if defined(OS_CHROMEOS) | 416 #if defined(OS_CHROMEOS) |
424 audio_status_.reset(); | 417 audio_status_.reset(); |
425 #endif | 418 #endif |
426 } | 419 } |
427 | 420 |
428 void StartPageService::StartSpeechRecognition( | 421 void StartPageService::StartSpeechRecognition( |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 return state_ != SPEECH_RECOGNITION_OFF && | 460 return state_ != SPEECH_RECOGNITION_OFF && |
468 service && | 461 service && |
469 (service->IsSometimesOnEnabled() || service->IsAlwaysOnEnabled()) && | 462 (service->IsSometimesOnEnabled() || service->IsAlwaysOnEnabled()) && |
470 service->IsServiceAvailable(); | 463 service->IsServiceAvailable(); |
471 #else | 464 #else |
472 return false; | 465 return false; |
473 #endif | 466 #endif |
474 } | 467 } |
475 | 468 |
476 content::WebContents* StartPageService::GetStartPageContents() { | 469 content::WebContents* StartPageService::GetStartPageContents() { |
477 return app_list::switches::IsExperimentalAppListEnabled() ? contents_.get() | 470 return contents_.get(); |
478 : NULL; | |
479 } | 471 } |
480 | 472 |
481 content::WebContents* StartPageService::GetSpeechRecognitionContents() { | 473 content::WebContents* StartPageService::GetSpeechRecognitionContents() { |
482 if (app_list::switches::IsVoiceSearchEnabled()) { | 474 if (app_list::switches::IsVoiceSearchEnabled()) { |
483 if (!contents_) | 475 if (!contents_) |
484 LoadContents(); | 476 LoadContents(); |
485 return contents_.get(); | 477 return contents_.get(); |
486 } | 478 } |
487 return NULL; | 479 return NULL; |
488 } | 480 } |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 | 686 |
695 // Check for a new doodle. | 687 // Check for a new doodle. |
696 content::BrowserThread::PostDelayedTask( | 688 content::BrowserThread::PostDelayedTask( |
697 content::BrowserThread::UI, FROM_HERE, | 689 content::BrowserThread::UI, FROM_HERE, |
698 base::Bind(&StartPageService::FetchDoodleJson, | 690 base::Bind(&StartPageService::FetchDoodleJson, |
699 weak_factory_.GetWeakPtr()), | 691 weak_factory_.GetWeakPtr()), |
700 recheck_delay); | 692 recheck_delay); |
701 } | 693 } |
702 | 694 |
703 } // namespace app_list | 695 } // namespace app_list |
OLD | NEW |