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

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
32 TranslateInternalsHandler::TranslateInternalsHandler() { 34 TranslateInternalsHandler::TranslateInternalsHandler() {
33 notification_registrar_.Add(this, 35 notification_registrar_.Add(this,
34 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 36 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
(...skipping 18 matching lines...) Expand all
53 TranslateInternalsHandler::~TranslateInternalsHandler() { 55 TranslateInternalsHandler::~TranslateInternalsHandler() {
54 // |event_subscription_| and |error_subscription_| are deleted automatically 56 // |event_subscription_| and |error_subscription_| are deleted automatically
55 // and un-register the callbacks automatically. 57 // and un-register the callbacks automatically.
56 } 58 }
57 59
58 void TranslateInternalsHandler::RegisterMessages() { 60 void TranslateInternalsHandler::RegisterMessages() {
59 web_ui()->RegisterMessageCallback("removePrefItem", base::Bind( 61 web_ui()->RegisterMessageCallback("removePrefItem", base::Bind(
60 &TranslateInternalsHandler::OnRemovePrefItem, base::Unretained(this))); 62 &TranslateInternalsHandler::OnRemovePrefItem, base::Unretained(this)));
61 web_ui()->RegisterMessageCallback("requestInfo", base::Bind( 63 web_ui()->RegisterMessageCallback("requestInfo", base::Bind(
62 &TranslateInternalsHandler::OnRequestInfo, base::Unretained(this))); 64 &TranslateInternalsHandler::OnRequestInfo, base::Unretained(this)));
65 web_ui()->RegisterMessageCallback(
66 "overrideCountry",
67 base::Bind(&TranslateInternalsHandler::OnOverrideCountry,
68 base::Unretained(this)));
63 } 69 }
64 70
65 void TranslateInternalsHandler::Observe( 71 void TranslateInternalsHandler::Observe(
66 int type, 72 int type,
67 const content::NotificationSource& source, 73 const content::NotificationSource& source,
68 const content::NotificationDetails& details) { 74 const content::NotificationDetails& details) {
69 DCHECK_EQ(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, type); 75 DCHECK_EQ(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, type);
70 const translate::LanguageDetectionDetails* language_detection_details = 76 const translate::LanguageDetectionDetails* language_detection_details =
71 content::Details<const translate::LanguageDetectionDetails>(details) 77 content::Details<const translate::LanguageDetectionDetails>(details)
72 .ptr(); 78 .ptr();
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 translate_prefs->RemoveLanguagePairFromWhitelist(from, to); 168 translate_prefs->RemoveLanguagePairFromWhitelist(from, to);
163 } else if (pref_name == "too_often_denied") { 169 } else if (pref_name == "too_often_denied") {
164 translate_prefs->ResetDenialState(); 170 translate_prefs->ResetDenialState();
165 } else { 171 } else {
166 return; 172 return;
167 } 173 }
168 174
169 SendPrefsToJs(); 175 SendPrefsToJs();
170 } 176 }
171 177
178 void TranslateInternalsHandler::OnOverrideCountry(const base::ListValue* args) {
179 std::string country;
180 if (args->GetString(0, &country)) {
181 variations::VariationsService* variations_service =
182 g_browser_process->variations_service();
183 if (variations_service) {
184 SendCountryToJs(
185 variations_service->OverrideStoredPermanentCountry(country));
186 }
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 was_updated) {
256 std::string country;
257 variations::VariationsService* variations_service =
258 g_browser_process->variations_service();
259 if (variations_service)
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(was_updated));
266 }
267 SendMessageToJs("countryUpdated", dict);
268 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698