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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "content/public/browser/notification_service.h" | 42 #include "content/public/browser/notification_service.h" |
43 #include "content/public/browser/notification_source.h" | 43 #include "content/public/browser/notification_source.h" |
44 #include "content/public/browser/notification_types.h" | 44 #include "content/public/browser/notification_types.h" |
45 #include "content/public/browser/render_process_host.h" | 45 #include "content/public/browser/render_process_host.h" |
46 #include "content/public/browser/render_view_host.h" | 46 #include "content/public/browser/render_view_host.h" |
47 #include "content/public/browser/web_contents.h" | 47 #include "content/public/browser/web_contents.h" |
48 #include "google_apis/google_api_keys.h" | 48 #include "google_apis/google_api_keys.h" |
49 #include "grit/browser_resources.h" | 49 #include "grit/browser_resources.h" |
50 #include "net/base/escape.h" | 50 #include "net/base/escape.h" |
51 #include "net/base/load_flags.h" | 51 #include "net/base/load_flags.h" |
| 52 #include "net/base/url_util.h" |
52 #include "net/url_request/url_fetcher.h" | 53 #include "net/url_request/url_fetcher.h" |
53 #include "net/url_request/url_request_status.h" | 54 #include "net/url_request/url_request_status.h" |
54 #include "ui/base/resource/resource_bundle.h" | 55 #include "ui/base/resource/resource_bundle.h" |
55 | 56 |
56 #ifdef FILE_MANAGER_EXTENSION | 57 #ifdef FILE_MANAGER_EXTENSION |
57 #include "chrome/browser/chromeos/extensions/file_manager_util.h" | 58 #include "chrome/browser/chromeos/extensions/file_manager_util.h" |
58 #endif | 59 #endif |
59 | 60 |
60 using content::NavigationController; | 61 using content::NavigationController; |
61 using content::NavigationEntry; | 62 using content::NavigationEntry; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 135 |
135 const char* const kTranslateScriptURL = | 136 const char* const kTranslateScriptURL = |
136 "https://translate.google.com/translate_a/element.js"; | 137 "https://translate.google.com/translate_a/element.js"; |
137 const char* const kTranslateScriptQuery = | 138 const char* const kTranslateScriptQuery = |
138 "?cb=cr.googleTranslate.onTranslateElementLoad&hl=%s"; | 139 "?cb=cr.googleTranslate.onTranslateElementLoad&hl=%s"; |
139 const char* const kTranslateScriptHeader = | 140 const char* const kTranslateScriptHeader = |
140 "Google-Translate-Element-Mode: library"; | 141 "Google-Translate-Element-Mode: library"; |
141 const char* const kReportLanguageDetectionErrorURL = | 142 const char* const kReportLanguageDetectionErrorURL = |
142 "https://translate.google.com/translate_error"; | 143 "https://translate.google.com/translate_error"; |
143 const char* const kLanguageListFetchURL = | 144 const char* const kLanguageListFetchURL = |
144 "https://translate.googleapis.com/translate_a/l?client=chrome&cb=sl&hl=%s"; | 145 "https://translate.googleapis.com/translate_a/l?client=chrome&cb=sl"; |
| 146 |
| 147 const char* const kLanguageListFetchLocaleQueryName = "hl"; |
| 148 const char* const kLanguageListFetchAlphaLanguageQueryName = "alpha"; |
| 149 const char* const kLanguageListFetchAlphaLanguageQueryValue = "1"; |
| 150 |
145 const int kMaxRetryLanguageListFetch = 5; | 151 const int kMaxRetryLanguageListFetch = 5; |
146 const int kTranslateScriptExpirationDelayDays = 1; | 152 const int kTranslateScriptExpirationDelayDays = 1; |
147 | 153 |
148 void AddApiKeyToUrl(GURL* url) { | 154 void AddApiKeyToUrl(GURL* url) { |
149 std::string api_key = google_apis::GetAPIKey(); | 155 std::string api_key = google_apis::GetAPIKey(); |
150 std::string query(url->query()); | 156 std::string query(url->query()); |
151 if (!query.empty()) | 157 if (!query.empty()) |
152 query += "&"; | 158 query += "&"; |
153 query += "key=" + net::EscapeQueryParamValue(api_key, true); | 159 query += "key=" + net::EscapeQueryParamValue(api_key, true); |
154 GURL::Replacements replacements; | 160 GURL::Replacements replacements; |
(...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
769 return; | 775 return; |
770 | 776 |
771 // We don't want to do this when translate is disabled. | 777 // We don't want to do this when translate is disabled. |
772 DCHECK(prefs != NULL); | 778 DCHECK(prefs != NULL); |
773 if (CommandLine::ForCurrentProcess()->HasSwitch( | 779 if (CommandLine::ForCurrentProcess()->HasSwitch( |
774 switches::kDisableTranslate) || | 780 switches::kDisableTranslate) || |
775 (prefs != NULL && !prefs->GetBoolean(prefs::kEnableTranslate))) { | 781 (prefs != NULL && !prefs->GetBoolean(prefs::kEnableTranslate))) { |
776 return; | 782 return; |
777 } | 783 } |
778 | 784 |
779 GURL language_list_fetch_url = GURL( | 785 GURL language_list_fetch_url = GURL(kLanguageListFetchURL); |
780 base::StringPrintf( | 786 language_list_fetch_url = net::AppendQueryParameter( |
781 kLanguageListFetchURL, | 787 language_list_fetch_url, |
782 GetLanguageCode(g_browser_process->GetApplicationLocale()).c_str())); | 788 kLanguageListFetchLocaleQueryName, |
| 789 GetLanguageCode(g_browser_process->GetApplicationLocale()).c_str()); |
| 790 |
| 791 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| 792 if (command_line.HasSwitch(switches::kEnableTranslateAlphaLanguages)) { |
| 793 language_list_fetch_url = net::AppendQueryParameter( |
| 794 language_list_fetch_url, |
| 795 kLanguageListFetchAlphaLanguageQueryName, |
| 796 kLanguageListFetchAlphaLanguageQueryValue); |
| 797 } |
783 AddApiKeyToUrl(&language_list_fetch_url); | 798 AddApiKeyToUrl(&language_list_fetch_url); |
| 799 VLOG(9) << "Fetch supporting language list from: " |
| 800 << language_list_fetch_url.spec().c_str(); |
| 801 |
784 language_list_request_pending_.reset(net::URLFetcher::Create( | 802 language_list_request_pending_.reset(net::URLFetcher::Create( |
785 1, language_list_fetch_url, net::URLFetcher::GET, this)); | 803 1, language_list_fetch_url, net::URLFetcher::GET, this)); |
786 language_list_request_pending_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | | 804 language_list_request_pending_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | |
787 net::LOAD_DO_NOT_SAVE_COOKIES); | 805 net::LOAD_DO_NOT_SAVE_COOKIES); |
788 language_list_request_pending_->SetRequestContext( | 806 language_list_request_pending_->SetRequestContext( |
789 g_browser_process->system_request_context()); | 807 g_browser_process->system_request_context()); |
790 language_list_request_pending_->SetMaxRetriesOn5xx( | 808 language_list_request_pending_->SetMaxRetriesOn5xx( |
791 kMaxRetryLanguageListFetch); | 809 kMaxRetryLanguageListFetch); |
792 language_list_request_pending_->Start(); | 810 language_list_request_pending_->Start(); |
793 } | 811 } |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
854 // list or not at all if no such candidate exists | 872 // list or not at all if no such candidate exists |
855 std::vector<std::string>::iterator iter; | 873 std::vector<std::string>::iterator iter; |
856 for (iter = accept_langs_list.begin(); | 874 for (iter = accept_langs_list.begin(); |
857 iter != accept_langs_list.end(); ++iter) { | 875 iter != accept_langs_list.end(); ++iter) { |
858 std::string lang_code = GetLanguageCode(*iter); | 876 std::string lang_code = GetLanguageCode(*iter); |
859 if (IsSupportedLanguage(lang_code)) | 877 if (IsSupportedLanguage(lang_code)) |
860 return lang_code; | 878 return lang_code; |
861 } | 879 } |
862 return std::string(); | 880 return std::string(); |
863 } | 881 } |
OLD | NEW |