OLD | NEW |
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 "chrome/browser/translate/translate_manager.h" | 5 #include "chrome/browser/translate/translate_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 // We should know about this profile since we are listening for | 402 // We should know about this profile since we are listening for |
403 // notifications on it. | 403 // notifications on it. |
404 DCHECK(count == 1u); | 404 DCHECK(count == 1u); |
405 PrefChangeRegistrar* pref_change_registrar = | 405 PrefChangeRegistrar* pref_change_registrar = |
406 pref_change_registrars_[pref_service]; | 406 pref_change_registrars_[pref_service]; |
407 count = pref_change_registrars_.erase(pref_service); | 407 count = pref_change_registrars_.erase(pref_service); |
408 DCHECK(count == 1u); | 408 DCHECK(count == 1u); |
409 delete pref_change_registrar; | 409 delete pref_change_registrar; |
410 break; | 410 break; |
411 } | 411 } |
412 case chrome::NOTIFICATION_PREF_CHANGED: { | |
413 DCHECK(*content::Details<std::string>(details).ptr() == | |
414 prefs::kAcceptLanguages); | |
415 PrefService* prefs = content::Source<PrefService>(source).ptr(); | |
416 InitAcceptLanguages(prefs); | |
417 break; | |
418 } | |
419 default: | 412 default: |
420 NOTREACHED(); | 413 NOTREACHED(); |
421 } | 414 } |
422 } | 415 } |
423 | 416 |
| 417 void TranslateManager::OnPreferenceChanged(PrefServiceBase* service, |
| 418 const std::string& pref_name) { |
| 419 DCHECK_EQ(std::string(prefs::kAcceptLanguages), pref_name); |
| 420 InitAcceptLanguages(service); |
| 421 } |
| 422 |
424 void TranslateManager::OnURLFetchComplete(const net::URLFetcher* source) { | 423 void TranslateManager::OnURLFetchComplete(const net::URLFetcher* source) { |
425 if (translate_script_request_pending_.get() != source && | 424 if (translate_script_request_pending_.get() != source && |
426 language_list_request_pending_.get() != source) { | 425 language_list_request_pending_.get() != source) { |
427 // Looks like crash on Mac is possibly caused with callback entering here | 426 // Looks like crash on Mac is possibly caused with callback entering here |
428 // with unknown fetcher when network is refreshed. | 427 // with unknown fetcher when network is refreshed. |
429 scoped_ptr<const net::URLFetcher> delete_ptr(source); | 428 scoped_ptr<const net::URLFetcher> delete_ptr(source); |
430 return; | 429 return; |
431 } | 430 } |
432 | 431 |
433 bool error = | 432 bool error = |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 pref_change_registrar->Init(pref_service); | 781 pref_change_registrar->Init(pref_service); |
783 pref_change_registrar->Add(prefs::kAcceptLanguages, this); | 782 pref_change_registrar->Add(prefs::kAcceptLanguages, this); |
784 pref_change_registrars_[pref_service] = pref_change_registrar; | 783 pref_change_registrars_[pref_service] = pref_change_registrar; |
785 | 784 |
786 iter = accept_languages_.find(pref_service); | 785 iter = accept_languages_.find(pref_service); |
787 } | 786 } |
788 | 787 |
789 return iter->second.count(language) != 0; | 788 return iter->second.count(language) != 0; |
790 } | 789 } |
791 | 790 |
792 void TranslateManager::InitAcceptLanguages(PrefService* prefs) { | 791 void TranslateManager::InitAcceptLanguages(PrefServiceBase* prefs) { |
793 // We have been asked for this profile, build the languages. | 792 // We have been asked for this profile, build the languages. |
794 std::string accept_langs_str = prefs->GetString(prefs::kAcceptLanguages); | 793 std::string accept_langs_str = prefs->GetString(prefs::kAcceptLanguages); |
795 std::vector<std::string> accept_langs_list; | 794 std::vector<std::string> accept_langs_list; |
796 LanguageSet accept_langs_set; | 795 LanguageSet accept_langs_set; |
797 base::SplitString(accept_langs_str, ',', &accept_langs_list); | 796 base::SplitString(accept_langs_str, ',', &accept_langs_list); |
798 std::vector<std::string>::const_iterator iter; | 797 std::vector<std::string>::const_iterator iter; |
799 std::string ui_lang = | 798 std::string ui_lang = |
800 GetLanguageCode(g_browser_process->GetApplicationLocale()); | 799 GetLanguageCode(g_browser_process->GetApplicationLocale()); |
801 bool is_ui_english = StartsWithASCII(ui_lang, "en-", false); | 800 bool is_ui_english = StartsWithASCII(ui_lang, "en-", false); |
802 for (iter = accept_langs_list.begin(); | 801 for (iter = accept_langs_list.begin(); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
925 | 924 |
926 for (size_t i = 0; i < infobar_helper->GetInfoBarCount(); ++i) { | 925 for (size_t i = 0; i < infobar_helper->GetInfoBarCount(); ++i) { |
927 TranslateInfoBarDelegate* delegate = | 926 TranslateInfoBarDelegate* delegate = |
928 infobar_helper->GetInfoBarDelegateAt(i)-> | 927 infobar_helper->GetInfoBarDelegateAt(i)-> |
929 AsTranslateInfoBarDelegate(); | 928 AsTranslateInfoBarDelegate(); |
930 if (delegate) | 929 if (delegate) |
931 return delegate; | 930 return delegate; |
932 } | 931 } |
933 return NULL; | 932 return NULL; |
934 } | 933 } |
OLD | NEW |