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

Side by Side Diff: chrome/browser/ui/webui/translate_internals/translate_internals_handler.cc

Issue 1903593002: Allows to manually change the stored permanent country in Variations from the translate-internals d… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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/ui/webui/translate_internals/translate_internals_handle r.h" 5 #include "chrome/browser/ui/webui/translate_internals/translate_internals_handle r.h"
6 6
7 #include <map> 7 #include <map>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/chrome_notification_types.h" 14 #include "chrome/browser/chrome_notification_types.h"
14 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/translate/chrome_translate_client.h" 16 #include "chrome/browser/translate/chrome_translate_client.h"
16 #include "chrome/browser/translate/translate_service.h" 17 #include "chrome/browser/translate/translate_service.h"
17 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
18 #include "components/prefs/pref_service.h" 19 #include "components/prefs/pref_service.h"
19 #include "components/translate/core/browser/translate_download_manager.h" 20 #include "components/translate/core/browser/translate_download_manager.h"
20 #include "components/translate/core/browser/translate_error_details.h" 21 #include "components/translate/core/browser/translate_error_details.h"
21 #include "components/translate/core/browser/translate_event_details.h" 22 #include "components/translate/core/browser/translate_event_details.h"
22 #include "components/translate/core/browser/translate_prefs.h" 23 #include "components/translate/core/browser/translate_prefs.h"
23 #include "components/translate/core/common/language_detection_details.h" 24 #include "components/translate/core/common/language_detection_details.h"
24 #include "components/translate/core/common/translate_pref_names.h" 25 #include "components/translate/core/common/translate_pref_names.h"
26 #include "components/variations/service/variations_service.h"
25 #include "content/public/browser/notification_details.h" 27 #include "content/public/browser/notification_details.h"
26 #include "content/public/browser/notification_service.h" 28 #include "content/public/browser/notification_service.h"
27 #include "content/public/browser/notification_source.h" 29 #include "content/public/browser/notification_source.h"
28 #include "content/public/browser/notification_types.h" 30 #include "content/public/browser/notification_types.h"
29 #include "content/public/browser/web_contents.h" 31 #include "content/public/browser/web_contents.h"
30 #include "content/public/browser/web_ui.h" 32 #include "content/public/browser/web_ui.h"
31 33
34
32 TranslateInternalsHandler::TranslateInternalsHandler() { 35 TranslateInternalsHandler::TranslateInternalsHandler() {
33 notification_registrar_.Add(this, 36 notification_registrar_.Add(this,
34 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 37 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
35 content::NotificationService::AllSources()); 38 content::NotificationService::AllSources());
36 39
37 error_subscription_ = 40 error_subscription_ =
38 translate::TranslateManager::RegisterTranslateErrorCallback( 41 translate::TranslateManager::RegisterTranslateErrorCallback(
39 base::Bind(&TranslateInternalsHandler::OnTranslateError, 42 base::Bind(&TranslateInternalsHandler::OnTranslateError,
40 base::Unretained(this))); 43 base::Unretained(this)));
41 44
(...skipping 11 matching lines...) Expand all
53 TranslateInternalsHandler::~TranslateInternalsHandler() { 56 TranslateInternalsHandler::~TranslateInternalsHandler() {
54 // |event_subscription_| and |error_subscription_| are deleted automatically 57 // |event_subscription_| and |error_subscription_| are deleted automatically
55 // and un-register the callbacks automatically. 58 // and un-register the callbacks automatically.
56 } 59 }
57 60
58 void TranslateInternalsHandler::RegisterMessages() { 61 void TranslateInternalsHandler::RegisterMessages() {
59 web_ui()->RegisterMessageCallback("removePrefItem", base::Bind( 62 web_ui()->RegisterMessageCallback("removePrefItem", base::Bind(
60 &TranslateInternalsHandler::OnRemovePrefItem, base::Unretained(this))); 63 &TranslateInternalsHandler::OnRemovePrefItem, base::Unretained(this)));
61 web_ui()->RegisterMessageCallback("requestInfo", base::Bind( 64 web_ui()->RegisterMessageCallback("requestInfo", base::Bind(
62 &TranslateInternalsHandler::OnRequestInfo, base::Unretained(this))); 65 &TranslateInternalsHandler::OnRequestInfo, base::Unretained(this)));
66 web_ui()->RegisterMessageCallback(
67 "overrideCountry",
68 base::Bind(&TranslateInternalsHandler::OnOverrideCountry,
69 base::Unretained(this)));
63 } 70 }
64 71
65 void TranslateInternalsHandler::Observe( 72 void TranslateInternalsHandler::Observe(
66 int type, 73 int type,
67 const content::NotificationSource& source, 74 const content::NotificationSource& source,
68 const content::NotificationDetails& details) { 75 const content::NotificationDetails& details) {
69 DCHECK_EQ(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, type); 76 DCHECK_EQ(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, type);
70 const translate::LanguageDetectionDetails* language_detection_details = 77 const translate::LanguageDetectionDetails* language_detection_details =
71 content::Details<const translate::LanguageDetectionDetails>(details) 78 content::Details<const translate::LanguageDetectionDetails>(details)
72 .ptr(); 79 .ptr();
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 translate_prefs->RemoveLanguagePairFromWhitelist(from, to); 169 translate_prefs->RemoveLanguagePairFromWhitelist(from, to);
163 } else if (pref_name == "too_often_denied") { 170 } else if (pref_name == "too_often_denied") {
164 translate_prefs->ResetDenialState(); 171 translate_prefs->ResetDenialState();
165 } else { 172 } else {
166 return; 173 return;
167 } 174 }
168 175
169 SendPrefsToJs(); 176 SendPrefsToJs();
170 } 177 }
171 178
179 void TranslateInternalsHandler::OnOverrideCountry(const base::ListValue* args) {
180 std::string country;
181 if (args->GetString(0, &country)) {
182 variations::VariationsService* variations_service =
183 g_browser_process->variations_service();
184 if (variations_service)
Alexei Svitkine (slow) 2016/04/20 21:46:44 Nit: {} since body is multi-line. Alternatively,
hamelphi 2016/04/21 14:25:09 Done.
185 SendCountryToJs(
186 variations_service->ForceSetStoredPermanentCountry(country));
187 }
188 }
189
172 void TranslateInternalsHandler::OnRequestInfo(const base::ListValue* /*args*/) { 190 void TranslateInternalsHandler::OnRequestInfo(const base::ListValue* /*args*/) {
173 SendPrefsToJs(); 191 SendPrefsToJs();
174 SendSupportedLanguagesToJs(); 192 SendSupportedLanguagesToJs();
193 SendCountryToJs(false);
175 } 194 }
176 195
177 void TranslateInternalsHandler::SendMessageToJs(const std::string& message, 196 void TranslateInternalsHandler::SendMessageToJs(const std::string& message,
178 const base::Value& value) { 197 const base::Value& value) {
179 const char func[] = "cr.translateInternals.messageHandler"; 198 const char func[] = "cr.translateInternals.messageHandler";
180 base::StringValue message_data(message); 199 base::StringValue message_data(message);
181 web_ui()->CallJavascriptFunction(func, message_data, value); 200 web_ui()->CallJavascriptFunction(func, message_data, value);
182 } 201 }
183 202
184 void TranslateInternalsHandler::SendPrefsToJs() { 203 void TranslateInternalsHandler::SendPrefsToJs() {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 if (translate::TranslateDownloadManager::IsAlphaLanguage(lang)) 244 if (translate::TranslateDownloadManager::IsAlphaLanguage(lang))
226 alpha_languages_list->Append(new base::StringValue(lang)); 245 alpha_languages_list->Append(new base::StringValue(lang));
227 } 246 }
228 247
229 dict.Set("languages", languages_list); 248 dict.Set("languages", languages_list);
230 dict.Set("alpha_languages", alpha_languages_list); 249 dict.Set("alpha_languages", alpha_languages_list);
231 dict.Set("last_updated", 250 dict.Set("last_updated",
232 new base::FundamentalValue(last_updated.ToJsTime())); 251 new base::FundamentalValue(last_updated.ToJsTime()));
233 SendMessageToJs("supportedLanguagesUpdated", dict); 252 SendMessageToJs("supportedLanguagesUpdated", dict);
234 } 253 }
254
255 void TranslateInternalsHandler::SendCountryToJs(bool is_update) {
256 std::string country = "";
Alexei Svitkine (slow) 2016/04/20 21:46:44 Nit: std::string default ctor is the empty string,
hamelphi 2016/04/21 14:25:09 Done.
257 variations::VariationsService* variations_service =
258 g_browser_process->variations_service();
259 if (variations_service) {
Alexei Svitkine (slow) 2016/04/20 21:46:44 Nit: No {}'s if the body is multi-line.
hamelphi 2016/04/21 14:25:09 Done.
260 country = variations_service->GetStoredPermanentCountry();
261 }
262 base::DictionaryValue dict;
263 if (!country.empty()) {
264 dict.Set("country", new base::StringValue(country));
265 dict.Set("update", new base::FundamentalValue(is_update));
266 }
267 SendMessageToJs("countryUpdated", dict);
268 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698